diff options
644 files changed, 35217 insertions, 4049 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index b938fa575e8..62a4de7a10e 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1065,8 +1065,7 @@ static void fix_history(String *final_command); static COMMANDS *find_command(char *name); static COMMANDS *find_command(char cmd_name); -static bool add_line(String &buffer, char *line, ulong line_length, - char *in_string, bool *ml_comment, bool truncated); +static bool add_line(String &, char *, ulong, char *, bool *, bool); static void remove_cntrl(String &buffer); static void print_table_data(MYSQL_RES *result); static void print_table_data_html(MYSQL_RES *result); @@ -1076,7 +1075,7 @@ static void print_table_data_vertically(MYSQL_RES *result); static void print_warnings(void); static void end_timer(ulonglong start_time, char *buff); static void nice_time(double sec,char *buff,bool part_second); -extern "C" sig_handler mysql_end(int sig); +extern "C" sig_handler mysql_end(int sig) __attribute__ ((noreturn)); extern "C" sig_handler handle_sigint(int sig); #if defined(HAVE_TERMIOS_H) && defined(GWINSZ_IN_SYS_IOCTL) static sig_handler window_resize(int sig); diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake index 47daa88d0a2..5b8aa36ff0d 100644 --- a/cmake/cpack_rpm.cmake +++ b/cmake/cpack_rpm.cmake @@ -165,9 +165,14 @@ SETA(CPACK_RPM_server_PACKAGE_REQUIRES "MariaDB-client") IF(WITH_WSREP) -SETA(CPACK_RPM_server_PACKAGE_REQUIRES - "galera" "rsync" "lsof" "grep" "gawk" "iproute" - "coreutils" "findutils" "tar" "which") + SETA(CPACK_RPM_server_PACKAGE_REQUIRES + "galera" "rsync" "lsof" "grep" "gawk" "iproute" + "coreutils" "findutils" "tar") + IF (RPM MATCHES "sles11") + SETA(CPACK_RPM_server_PACKAGE_REQUIRES "util-linux") + ELSE() + SETA(CPACK_RPM_server_PACKAGE_REQUIRES "which") + ENDIF() ENDIF() SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh) diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index bb7c8862dc7..bd2cfd7097c 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -20,6 +20,11 @@ IF(have_C__Wvla) SET(MY_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wvla") ENDIF() +MY_CHECK_C_COMPILER_FLAG("-Wno-format-truncation") +IF(HAVE_C__Wno_format_truncation) + SET(MY_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wno-format-truncation") +ENDIF() + # Common warning flags for GCC and Clang SET(MY_C_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wwrite-strings -Wdeclaration-after-statement") diff --git a/cmake/mariadb_connector_c.cmake b/cmake/mariadb_connector_c.cmake index 6773314313b..fe2bcfa4a1f 100644 --- a/cmake/mariadb_connector_c.cmake +++ b/cmake/mariadb_connector_c.cmake @@ -7,10 +7,8 @@ ENDIF() SET(CONC_WITH_SIGNCODE ${SIGNCODE}) SET(SIGN_OPTIONS ${SIGNTOOL_PARAMETERS}) -IF(TARGET zlib) - GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION) -ELSE() - SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY}) +IF(NOT TARGET zlib) + SET(CONC_WITH_EXTERNAL_ZLIB ON) ENDIF() IF(SSL_DEFINES MATCHES "YASSL") diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index 87d61fcf344..02579c9534e 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -69,13 +69,9 @@ ENDMACRO() # Get mysql version and other interesting variables GET_MYSQL_VERSION() -SET(MYSQL_TCP_PORT_DEFAULT "3306") - +SET(MYSQL_TCP_PORT_DEFAULT 0) IF(NOT MYSQL_TCP_PORT) - SET(MYSQL_TCP_PORT ${MYSQL_TCP_PORT_DEFAULT}) - SET(MYSQL_TCP_PORT_DEFAULT "0") -ELSEIF(MYSQL_TCP_PORT EQUAL MYSQL_TCP_PORT_DEFAULT) - SET(MYSQL_TCP_PORT_DEFAULT "0") + SET(MYSQL_TCP_PORT 3306) ENDIF() IF(NOT COMPILATION_COMMENT) diff --git a/cmake/pcre.cmake b/cmake/pcre.cmake index 894bde38974..4c113929866 100644 --- a/cmake/pcre.cmake +++ b/cmake/pcre.cmake @@ -1,11 +1,23 @@ +INCLUDE (CheckCSourceRuns) + SET(WITH_PCRE "auto" CACHE STRING "Which pcre to use (possible values are 'bundled', 'system', or 'auto')") MACRO (CHECK_PCRE) IF(WITH_PCRE STREQUAL "system" OR WITH_PCRE STREQUAL "auto") - CHECK_LIBRARY_EXISTS(pcre pcre_stack_guard "" HAVE_PCRE) + CHECK_LIBRARY_EXISTS(pcre pcre_stack_guard "" HAVE_PCRE_STACK_GUARD) + IF(NOT CMAKE_CROSSCOMPILING) + SET(CMAKE_REQUIRED_LIBRARIES "pcre") + CHECK_C_SOURCE_RUNS(" + #include <pcre.h> + int main() { + return -pcre_exec(NULL, NULL, NULL, -999, -999, 0, NULL, 0) < 256; + }" PCRE_STACK_SIZE_OK) + SET(CMAKE_REQUIRED_LIBRARIES) + ENDIF() ENDIF() - IF(NOT HAVE_PCRE OR WITH_PCRE STREQUAL "bundled") + IF(NOT HAVE_PCRE_STACK_GUARD OR NOT PCRE_STACK_SIZE_OK OR + WITH_PCRE STREQUAL "bundled") IF (WITH_PCRE STREQUAL "system") MESSAGE(FATAL_ERROR "system pcre is not found or unusable") ENDIF() diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc index 19cb768cd01..bc37f347532 100644 --- a/extra/mariabackup/backup_copy.cc +++ b/extra/mariabackup/backup_copy.cc @@ -1707,7 +1707,8 @@ copy_back() if it exists. */ ds_data = ds_create(dst_dir, DS_TYPE_LOCAL); - if (!file_exists("ib_logfile0")) { + MY_STAT stat_arg; + if (!my_stat("ib_logfile0", &stat_arg, MYF(0)) || !stat_arg.st_size) { /* After completed --prepare, redo log files are redundant. We must delete any redo logs at the destination, so that the database will not jump to a different log sequence number @@ -1895,6 +1896,13 @@ decrypt_decompress_file(const char *filepath, uint thread_n) if (system(cmd.str().c_str()) != 0) { return(false); } + + if (opt_remove_original) { + msg_ts("[%02u] removing %s\n", thread_n, filepath); + if (my_delete(filepath, MYF(MY_WME)) != 0) { + return(false); + } + } } return(true); diff --git a/extra/mariabackup/changed_page_bitmap.cc b/extra/mariabackup/changed_page_bitmap.cc index ce769375a16..a430a6cb0af 100644 --- a/extra/mariabackup/changed_page_bitmap.cc +++ b/extra/mariabackup/changed_page_bitmap.cc @@ -535,7 +535,7 @@ xb_msg_missing_lsn_data( lsn_t missing_interval_start, /*!<in: interval start */ lsn_t missing_interval_end) /*!<in: interval end */ { - msg("xtrabackup: warning: changed page data missing for LSNs between " + msg("mariabackup: warning: changed page data missing for LSNs between " LSN_PF " and " LSN_PF "\n", missing_interval_start, missing_interval_end); } @@ -612,7 +612,7 @@ xb_page_bitmap_init(void) if (UNIV_UNLIKELY(bmp_start_lsn > bmp_end_lsn)) { - msg("xtrabackup: incremental backup LSN " LSN_PF + msg("mariabackup: incremental backup LSN " LSN_PF " is larger than than the last checkpoint LSN " LSN_PF "\n", bmp_start_lsn, bmp_end_lsn); return NULL; @@ -697,7 +697,7 @@ xb_page_bitmap_init(void) ¤t_page_end_lsn, bmp_start_lsn))) { - msg("xtrabackup: Warning: changed page bitmap file " + msg("mariabackup: Warning: changed page bitmap file " "\'%s\' corrupted\n", bitmap_file.name); rbt_free(result); free(bitmap_files.files); @@ -802,7 +802,7 @@ xb_page_bitmap_init(void) if (UNIV_UNLIKELY(!last_page_ok)) { - msg("xtrabackup: warning: changed page bitmap file " + msg("mariabackup: warning: changed page bitmap file " "\'%s\' corrupted.\n", bitmap_file.name); rbt_free(result); free(bitmap_files.files); diff --git a/extra/mariabackup/fil_cur.cc b/extra/mariabackup/fil_cur.cc index 02b2d10af2f..6e6c61e74cc 100644 --- a/extra/mariabackup/fil_cur.cc +++ b/extra/mariabackup/fil_cur.cc @@ -1,5 +1,5 @@ /****************************************************** -XtraBackup: hot backup tool for InnoDB +MariaBackup: hot backup tool for InnoDB (c) 2009-2013 Percona LLC and/or its affiliates. Originally Created 3/3/2009 Yasufumi Kinoshita Written by Alexey Kopytov, Aleksandr Kuzminsky, Stewart Smith, Vadim Tkachenko, @@ -169,7 +169,7 @@ xb_fil_cur_open( /* The following call prints an error message */ os_file_get_last_error(TRUE); - msg("[%02u] xtrabackup: error: cannot open " + msg("[%02u] mariabackup: error: cannot open " "tablespace %s\n", thread_n, cursor->abs_path); @@ -196,7 +196,7 @@ xb_fil_cur_open( cursor->file = node->handle; if (stat(cursor->abs_path, &cursor->statinfo)) { - msg("[%02u] xtrabackup: error: cannot stat %s\n", + msg("[%02u] mariabackup: error: cannot stat %s\n", thread_n, cursor->abs_path); xb_fil_cur_close(cursor); @@ -222,7 +222,7 @@ xb_fil_cur_open( if (!fsp_flags_is_valid(flags, cursor->space_id)) { ulint cflags = fsp_flags_convert_from_101(flags); if (cflags == ULINT_UNDEFINED) { - msg("[%02u] xtrabackup: Error: Invalid " + msg("[%02u] mariabackup: Error: Invalid " "tablespace flags: %x.\n", thread_n, uint(flags)); return(XB_FIL_CUR_SKIP); } @@ -294,9 +294,9 @@ xb_fil_cur_read( && offset + to_read == cursor->statinfo.st_size) { if (to_read < (ib_int64_t) page_size) { - msg("[%02u] xtrabackup: Warning: junk at the end of " + msg("[%02u] mariabackup: Warning: junk at the end of " "%s:\n", cursor->thread_n, cursor->abs_path); - msg("[%02u] xtrabackup: Warning: offset = %llu, " + msg("[%02u] mariabackup: Warning: offset = %llu, " "to_read = %llu\n", cursor->thread_n, (unsigned long long) offset, @@ -354,7 +354,7 @@ read_retry: space)) { retry_count--; if (retry_count == 0) { - msg("[%02u] xtrabackup: " + msg("[%02u] mariabackup: " "Error: failed to read page after " "10 retries. File %s seems to be " "corrupted.\n", cursor->thread_n, @@ -364,7 +364,7 @@ read_retry: } if (retry_count == 9) { - msg("[%02u] xtrabackup: " + msg("[%02u] mariabackup: " "Database page corruption detected at page " ULINTPF ", retrying...\n", cursor->thread_n, page_no); diff --git a/extra/mariabackup/write_filt.cc b/extra/mariabackup/write_filt.cc index d4728c6469a..254ecdb740d 100644 --- a/extra/mariabackup/write_filt.cc +++ b/extra/mariabackup/write_filt.cc @@ -1,5 +1,5 @@ /****************************************************** -XtraBackup: hot backup tool for InnoDB +MariaBackup: hot backup tool for InnoDB (c) 2009-2013 Percona LLC and/or its affiliates. Originally Created 3/3/2009 Yasufumi Kinoshita Written by Alexey Kopytov, Aleksandr Kuzminsky, Stewart Smith, Vadim Tkachenko, @@ -80,14 +80,14 @@ wf_incremental_init(xb_write_filt_ctxt_t *ctxt, char *dst_name, cp->delta_buf_base = static_cast<byte *>(malloc(buf_size)); memset(cp->delta_buf_base, 0, buf_size); cp->delta_buf = static_cast<byte *> - (ut_align(cp->delta_buf_base, UNIV_PAGE_SIZE_MAX)); + (ut_align(cp->delta_buf_base, cursor->page_size.physical())); /* write delta meta info */ snprintf(meta_name, sizeof(meta_name), "%s%s", dst_name, XB_DELTA_INFO_SUFFIX); const xb_delta_info_t info(cursor->page_size, cursor->space_id); if (!xb_write_delta_metadata(meta_name, &info)) { - msg("[%02u] xtrabackup: Error: " + msg("[%02u] mariabackup: Error: " "failed to write meta info for %s\n", cursor->thread_n, cursor->rel_path); return(FALSE); diff --git a/extra/mariabackup/wsrep.cc b/extra/mariabackup/wsrep.cc index 3c06c0023e0..6e02bf5ceab 100644 --- a/extra/mariabackup/wsrep.cc +++ b/extra/mariabackup/wsrep.cc @@ -194,7 +194,7 @@ xb_write_galera_info(bool incremental_prepare) fp = fopen(XB_GALERA_INFO_FILENAME, "w"); if (fp == NULL) { - msg("xtrabackup: error: " + msg("mariabackup: error: " "could not create " XB_GALERA_INFO_FILENAME ", errno = %d\n", errno); @@ -203,12 +203,12 @@ xb_write_galera_info(bool incremental_prepare) seqno = wsrep_xid_seqno(&xid); - msg("xtrabackup: Recovered WSREP position: %s:%lld\n", + msg("mariabackup: Recovered WSREP position: %s:%lld\n", uuid_str, (long long) seqno); if (fprintf(fp, "%s:%lld", uuid_str, (long long) seqno) < 0) { - msg("xtrabackup: error: " + msg("mariabackup: error: " "could not write to " XB_GALERA_INFO_FILENAME ", errno = %d\n", errno); diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index c6009fc7014..320f9bcbeba 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -1,5 +1,5 @@ /****************************************************** -XtraBackup: hot backup tool for InnoDB +MariaBackup: hot backup tool for InnoDB (c) 2009-2017 Percona LLC and/or its affiliates Originally Created 3/3/2009 Yasufumi Kinoshita Written by Alexey Kopytov, Aleksandr Kuzminsky, Stewart Smith, Vadim Tkachenko, @@ -296,6 +296,7 @@ my_bool opt_force_non_empty_dirs = FALSE; my_bool opt_noversioncheck = FALSE; my_bool opt_no_backup_locks = FALSE; my_bool opt_decompress = FALSE; +my_bool opt_remove_original; my_bool opt_lock_ddl_per_table = FALSE; @@ -527,6 +528,7 @@ enum options_xtrabackup OPT_DECOMPRESS, OPT_INCREMENTAL_HISTORY_NAME, OPT_INCREMENTAL_HISTORY_UUID, + OPT_REMOVE_ORIGINAL, OPT_LOCK_WAIT_QUERY_TYPE, OPT_KILL_LONG_QUERY_TYPE, OPT_HISTORY, @@ -809,6 +811,11 @@ struct my_option xb_client_options[] = (uchar*) &opt_incremental_history_uuid, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"remove-original", OPT_REMOVE_ORIGINAL, "Remove .qp files after decompression.", + (uchar *) &opt_remove_original, + (uchar *) &opt_remove_original, + 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"ftwrl-wait-query-type", OPT_LOCK_WAIT_QUERY_TYPE, "This option specifies which types of queries are allowed to complete " "before innobackupex will issue the global lock. Default is all.", @@ -1120,13 +1127,13 @@ debug_sync_point(const char *name) xtrabackup_target_dir); fp = fopen(pid_path, "w"); if (fp == NULL) { - msg("xtrabackup: Error: cannot open %s\n", pid_path); + msg("mariabackup: Error: cannot open %s\n", pid_path); exit(EXIT_FAILURE); } fprintf(fp, "%u\n", (uint) pid); fclose(fp); - msg("xtrabackup: DEBUG: Suspending at debug sync point '%s'. " + msg("mariabackup: DEBUG: Suspending at debug sync point '%s'. " "Resume with 'kill -SIGCONT %u'.\n", name, (uint) pid); debug_sync_resumed= 0; @@ -1136,7 +1143,7 @@ debug_sync_point(const char *name) } /* On resume */ - msg("xtrabackup: DEBUG: removing the pid file.\n"); + msg("mariabackup: DEBUG: removing the pid file.\n"); my_delete(pid_path, MYF(MY_WME)); #endif } @@ -1470,12 +1477,12 @@ innodb_init_param(void) /* Check that values don't overflow on 32-bit systems. */ if (sizeof(ulint) == 4) { if (xtrabackup_use_memory > UINT_MAX32) { - msg("xtrabackup: use-memory can't be over 4GB" + msg("mariabackup: use-memory can't be over 4GB" " on 32-bit systems\n"); } if (innobase_buffer_pool_size > UINT_MAX32) { - msg("xtrabackup: innobase_buffer_pool_size can't be " + msg("mariabackup: innobase_buffer_pool_size can't be " "over 4GB on 32-bit systems\n"); goto error; @@ -1489,9 +1496,9 @@ innodb_init_param(void) read from MySQL .cnf file */ if (xtrabackup_backup) { - msg("xtrabackup: using the following InnoDB configuration:\n"); + msg("mariabackup: using the following InnoDB configuration:\n"); } else { - msg("xtrabackup: using the following InnoDB configuration " + msg("mariabackup: using the following InnoDB configuration " "for recovery:\n"); } @@ -1501,7 +1508,7 @@ innodb_init_param(void) srv_data_home = (xtrabackup_backup && innobase_data_home_dir ? innobase_data_home_dir : default_path); - msg("xtrabackup: innodb_data_home_dir = %s\n", srv_data_home); + msg("mariabackup: innodb_data_home_dir = %s\n", srv_data_home); /* Set default InnoDB data file size to 10 MB and let it be auto-extending. Thus users can use InnoDB in >= 4.0 without having @@ -1510,7 +1517,7 @@ innodb_init_param(void) if (!innobase_data_file_path) { innobase_data_file_path = (char*) "ibdata1:10M:autoextend"; } - msg("xtrabackup: innodb_data_file_path = %s\n", + msg("mariabackup: innodb_data_file_path = %s\n", innobase_data_file_path); /* This is the first time univ_page_size is used. @@ -1537,7 +1544,7 @@ innodb_init_param(void) if (xtrabackup_prepare && xtrabackup_incremental_dir) { srv_log_group_home_dir = xtrabackup_incremental_dir; } - msg("xtrabackup: innodb_log_group_home_dir = %s\n", + msg("mariabackup: innodb_log_group_home_dir = %s\n", srv_log_group_home_dir); os_normalize_path(srv_log_group_home_dir); @@ -1635,7 +1642,7 @@ innodb_init_param(void) return(FALSE); error: - msg("xtrabackup: innodb_init_param(): Error occured.\n"); + msg("mariabackup: innodb_init_param(): Error occured.\n"); return(TRUE); } @@ -1643,7 +1650,7 @@ static bool innodb_init() { dberr_t err = innobase_start_or_create_for_mysql(); if (err != DB_SUCCESS) { - msg("xtrabackup: innodb_init() returned %d (%s).\n", + msg("mariabackup: innodb_init() returned %d (%s).\n", err, ut_strerr(err)); innodb_shutdown(); return(TRUE); @@ -1667,7 +1674,7 @@ xtrabackup_read_metadata(char *filename) fp = fopen(filename,"r"); if(!fp) { - msg("xtrabackup: Error: cannot open %s\n", filename); + msg("mariabackup: Error: cannot open %s\n", filename); return(FALSE); } @@ -1746,7 +1753,7 @@ xtrabackup_stream_metadata(ds_ctxt_t *ds_ctxt) stream = ds_open(ds_ctxt, XTRABACKUP_METADATA_FILENAME, &mystat); if (stream == NULL) { - msg("xtrabackup: Error: cannot open output stream " + msg("mariabackup: Error: cannot open output stream " "for %s\n", XTRABACKUP_METADATA_FILENAME); return(FALSE); } @@ -1779,7 +1786,7 @@ xtrabackup_write_metadata(const char *filepath) fp = fopen(filepath, "w"); if(!fp) { - msg("xtrabackup: Error: cannot open %s\n", filepath); + msg("mariabackup: Error: cannot open %s\n", filepath); return(FALSE); } if (fwrite(buf, len, 1, fp) < 1) { @@ -1828,7 +1835,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info) fclose(fp); if (page_size == ULINT_UNDEFINED) { - msg("xtrabackup: page_size is required in %s\n", filepath); + msg("mariabackup: page_size is required in %s\n", filepath); r = FALSE; } else { info->page_size = page_size_t(zip_size ? zip_size : page_size, @@ -1836,7 +1843,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info) } if (info->space_id == ULINT_UNDEFINED) { - msg("xtrabackup: Warning: This backup was taken with XtraBackup 2.0.1 " + msg("mariabackup: Warning: This backup was taken with XtraBackup 2.0.1 " "or earlier, some DDL operations between full and incremental " "backups may be handled incorrectly\n"); } @@ -1871,7 +1878,7 @@ xb_write_delta_metadata(const char *filename, const xb_delta_info_t *info) f = ds_open(ds_meta, filename, &mystat); if (f == NULL) { - msg("xtrabackup: Error: cannot open output stream for %s\n", + msg("mariabackup: Error: cannot open output stream for %s\n", filename); return(FALSE); } @@ -2237,14 +2244,14 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n) if (write_filter->init != NULL && !write_filter->init(&write_filt_ctxt, dst_name, &cursor)) { - msg("[%02u] xtrabackup: error: " + msg("[%02u] mariabackup: error: " "failed to initialize page write filter.\n", thread_n); goto error; } dstfile = ds_open(ds_data, dst_name, &cursor.statinfo); if (dstfile == NULL) { - msg("[%02u] xtrabackup: error: " + msg("[%02u] mariabackup: error: " "cannot open the destination stream for %s\n", thread_n, dst_name); goto error; @@ -2294,7 +2301,7 @@ error: if (write_filter && write_filter->deinit) { write_filter->deinit(&write_filt_ctxt);; } - msg("[%02u] xtrabackup: Error: " + msg("[%02u] mariabackup: Error: " "xtrabackup_copy_datafile() failed.\n", thread_n); return(TRUE); /*ERROR*/ @@ -2306,10 +2313,10 @@ skip: if (write_filter && write_filter->deinit) { write_filter->deinit(&write_filt_ctxt); } - msg("[%02u] xtrabackup: Warning: We assume the " + msg("[%02u] mariabackup: Warning: We assume the " "table was dropped during xtrabackup execution " "and ignore the file.\n", thread_n); - msg("[%02u] xtrabackup: Warning: skipping tablespace %s.\n", + msg("[%02u] mariabackup: Warning: skipping tablespace %s.\n", thread_n, node_name); return(FALSE); } @@ -2380,7 +2387,7 @@ xtrabackup_copy_log(copy_logfile copy, lsn_t start_lsn, lsn_t end_lsn) } if (ds_write(dst_log_file, log_sys->buf, write_size)) { - msg("xtrabackup: Error: " + msg("mariabackup: Error: " "write to logfile failed\n"); return(0); } @@ -2424,7 +2431,7 @@ xtrabackup_copy_logfile(copy_logfile copy) if (!start_lsn) { ds_close(dst_log_file); dst_log_file = NULL; - msg("xtrabackup: Error: xtrabackup_copy_logfile()" + msg("mariabackup: Error: xtrabackup_copy_logfile()" " failed.\n"); return(true); } @@ -2458,7 +2465,7 @@ static os_thread_ret_t log_copying_thread(void*) log_copying_running = false; my_thread_end(); - os_thread_exit(NULL); + os_thread_exit(); return(0); } @@ -2481,7 +2488,7 @@ static os_thread_ret_t io_watching_thread(void*) io_watching_thread_running = false; - os_thread_exit(NULL); + os_thread_exit(); return(0); } @@ -2510,7 +2517,7 @@ data_copy_thread_func( /* copy the datafile */ if(xtrabackup_copy_datafile(node, num)) { - msg("[%02u] xtrabackup: Error: " + msg("[%02u] mariabackup: Error: " "failed to copy datafile.\n", num); exit(EXIT_FAILURE); } @@ -2521,7 +2528,7 @@ data_copy_thread_func( pthread_mutex_unlock(&ctxt->count_mutex); my_thread_end(); - os_thread_exit(NULL); + os_thread_exit(); OS_THREAD_DUMMY_RETURN; } @@ -2886,7 +2893,7 @@ xb_load_tablespaces() /* create_new_db must not be true. */ if (err != DB_SUCCESS || create_new_db) { - msg("xtrabackup: could not find data files at the " + msg("mariabackup: could not find data files at the " "specified datadir\n"); return(DB_ERROR); } @@ -2895,18 +2902,18 @@ xb_load_tablespaces() &flush_lsn); if (err != DB_SUCCESS) { - msg("xtrabackup: Could not open or create data files.\n" - "xtrabackup: If you tried to add new data files, and it " + msg("mariabackup: Could not open or create data files.\n" + "mariabackup: If you tried to add new data files, and it " "failed here,\n" - "xtrabackup: you should now edit innodb_data_file_path in " + "mariabackup: you should now edit innodb_data_file_path in " "my.cnf back\n" - "xtrabackup: to what it was, and remove the new ibdata " + "mariabackup: to what it was, and remove the new ibdata " "files InnoDB created\n" - "xtrabackup: in this failed attempt. InnoDB only wrote " + "mariabackup: in this failed attempt. InnoDB only wrote " "those files full of\n" - "xtrabackup: zeros, but did not yet use them in any way. " + "mariabackup: zeros, but did not yet use them in any way. " "But be careful: do not\n" - "xtrabackup: remove old data files which contain your " + "mariabackup: remove old data files which contain your " "precious data!\n"); return(err); } @@ -2923,7 +2930,7 @@ xb_load_tablespaces() srv_undo_tablespaces_init(), because fil_is_user_tablespace_id() * relies on srv_undo_tablespaces_open to be properly initialized */ - msg("xtrabackup: Generating a list of tablespaces\n"); + msg("mariabackup: Generating a list of tablespaces\n"); err = enumerate_ibd_files(xb_load_single_table_tablespace); if (err != DB_SUCCESS) { @@ -3026,12 +3033,12 @@ xb_validate_name( /* perform only basic validation. validate length and path symbols */ if (len > NAME_LEN) { - msg("xtrabackup: name `%s` is too long.\n", name); + msg("mariabackup: name `%s` is too long.\n", name); exit(EXIT_FAILURE); } p = strpbrk(name, "/\\~"); if (p && p - name < NAME_LEN) { - msg("xtrabackup: name `%s` is not valid.\n", name); + msg("mariabackup: name `%s` is not valid.\n", name); exit(EXIT_FAILURE); } } @@ -3110,7 +3117,7 @@ xb_register_table( const char* name) /*!< in: name of table */ { if (strchr(name, '.') == NULL) { - msg("xtrabackup: `%s` is not fully qualified name.\n", name); + msg("mariabackup: `%s` is not fully qualified name.\n", name); exit(EXIT_FAILURE); } @@ -3132,7 +3139,7 @@ xb_add_regex_to_list( if (ret != 0) { regerror(ret, &compiled_regex, errbuf, sizeof(errbuf)); - msg("xtrabackup: error: %s regcomp(%s): %s\n", + msg("mariabackup: error: %s regcomp(%s): %s\n", error_context, regex, errbuf); exit(EXIT_FAILURE); } @@ -3201,7 +3208,7 @@ xb_load_list_file( /* read and store the filenames */ fp = fopen(filename, "r"); if (!fp) { - msg("xtrabackup: cannot open %s\n", + msg("mariabackup: cannot open %s\n", filename); exit(EXIT_FAILURE); } @@ -3210,7 +3217,7 @@ xb_load_list_file( if (p) { *p = '\0'; } else { - msg("xtrabackup: `%s...` name is too long", name_buf); + msg("mariabackup: `%s...` name is too long", name_buf); exit(EXIT_FAILURE); } @@ -3432,7 +3439,7 @@ static void stop_backup_threads() if (log_copying_stop) { os_event_set(log_copying_stop); - msg("xtrabackup: Stopping log copying thread.\n"); + msg("mariabackup: Stopping log copying thread.\n"); while (log_copying_running) { msg("."); os_thread_sleep(200000); /*0.2 sec*/ @@ -3466,12 +3473,12 @@ xtrabackup_backup_low() && log_sys->log.format != 0) { metadata_to_lsn = mach_read_from_8( log_sys->checkpoint_buf + LOG_CHECKPOINT_LSN); - msg("xtrabackup: The latest check point" + msg("mariabackup: The latest check point" " (for incremental): '" LSN_PF "'\n", metadata_to_lsn); } else { metadata_to_lsn = 0; - msg("xtrabackup: Error: recv_find_max_checkpoint() failed.\n"); + msg("mariabackup: Error: recv_find_max_checkpoint() failed.\n"); } log_mutex_exit(); } @@ -3499,7 +3506,7 @@ xtrabackup_backup_low() metadata_last_lsn = log_copy_scanned_lsn; if (!xtrabackup_stream_metadata(ds_meta)) { - msg("xtrabackup: Error: failed to stream metadata.\n"); + msg("mariabackup: Error: failed to stream metadata.\n"); return false; } if (xtrabackup_extra_lsndir) { @@ -3508,7 +3515,7 @@ xtrabackup_backup_low() sprintf(filename, "%s/%s", xtrabackup_extra_lsndir, XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_write_metadata(filename)) { - msg("xtrabackup: Error: failed to write metadata " + msg("mariabackup: Error: failed to write metadata " "to '%s'.\n", filename); return false; } @@ -3531,19 +3538,19 @@ xtrabackup_backup_func() data_thread_ctxt_t *data_threads; #ifdef USE_POSIX_FADVISE - msg("xtrabackup: uses posix_fadvise().\n"); + msg("mariabackup: uses posix_fadvise().\n"); #endif /* cd to datadir */ if (my_setwd(mysql_real_data_home,MYF(MY_WME))) { - msg("xtrabackup: cannot my_setwd %s\n", mysql_real_data_home); + msg("mariabackup: cannot my_setwd %s\n", mysql_real_data_home); return(false); } - msg("xtrabackup: cd to %s\n", mysql_real_data_home); + msg("mariabackup: cd to %s\n", mysql_real_data_home); - msg("xtrabackup: open files limit requested %u, set to %u\n", + msg("mariabackup: open files limit requested %u, set to %u\n", (uint) xb_open_files_limit, xb_set_max_open_files(xb_open_files_limit)); @@ -3557,7 +3564,7 @@ xtrabackup_backup_func() srv_operation = SRV_OPERATION_BACKUP; if (xb_close_files) - msg("xtrabackup: warning: close-files specified. Use it " + msg("mariabackup: warning: close-files specified. Use it " "at your own risk. If there are DDL operations like table DROP TABLE " "or RENAME TABLE during the backup, inconsistent backup will be " "produced.\n"); @@ -3587,30 +3594,24 @@ fail: } else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT")) { srv_file_flush_method = SRV_O_DIRECT; - msg("xtrabackup: using O_DIRECT\n"); + msg("mariabackup: using O_DIRECT\n"); } else if (0 == ut_strcmp(srv_file_flush_method_str, "littlesync")) { srv_file_flush_method = SRV_LITTLESYNC; } else if (0 == ut_strcmp(srv_file_flush_method_str, "nosync")) { srv_file_flush_method = SRV_NOSYNC; } else if (0 == ut_strcmp(srv_file_flush_method_str, "ALL_O_DIRECT")) { srv_file_flush_method = SRV_ALL_O_DIRECT_FSYNC; - msg("xtrabackup: using ALL_O_DIRECT\n"); + msg("mariabackup: using ALL_O_DIRECT\n"); } else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT_NO_FSYNC")) { srv_file_flush_method = SRV_O_DIRECT_NO_FSYNC; - msg("xtrabackup: using O_DIRECT_NO_FSYNC\n"); + msg("mariabackup: using O_DIRECT_NO_FSYNC\n"); } else { - msg("xtrabackup: Unrecognized value %s for " + msg("mariabackup: Unrecognized value %s for " "innodb_flush_method\n", srv_file_flush_method_str); goto fail; } - /* We can only use synchronous unbuffered IO on Windows for now */ - if (srv_file_flush_method_str != NULL) { - msg("xtrabackupp: Warning: " - "ignoring innodb_flush_method = %s on Windows.\n", srv_file_flush_method_str); - } - #ifdef _WIN32 srv_file_flush_method = SRV_ALL_O_DIRECT_FSYNC; srv_use_native_aio = TRUE; @@ -3685,12 +3686,12 @@ fail: } if ((log_opened && log_created)) { msg( - "xtrabackup: Error: all log files must be created at the same time.\n" - "xtrabackup: All log files must be created also in database creation.\n" - "xtrabackup: If you want bigger or smaller log files, shut down the\n" - "xtrabackup: database and make sure there were no errors in shutdown.\n" - "xtrabackup: Then delete the existing log files. Edit the .cnf file\n" - "xtrabackup: and start the database again.\n"); + "mariabackup: Error: all log files must be created at the same time.\n" + "mariabackup: All log files must be created also in database creation.\n" + "mariabackup: If you want bigger or smaller log files, shut down the\n" + "mariabackup: database and make sure there were no errors in shutdown.\n" + "mariabackup: Then delete the existing log files. Edit the .cnf file\n" + "mariabackup: and start the database again.\n"); goto fail; } @@ -3698,7 +3699,7 @@ fail: /* log_file_created must not be TRUE, if online */ if (log_file_created) { - msg("xtrabackup: Something wrong with source files...\n"); + msg("mariabackup: Something wrong with source files...\n"); goto fail; } @@ -3708,7 +3709,7 @@ fail: if (xtrabackup_extra_lsndir &&!my_stat(xtrabackup_extra_lsndir,&stat_info,MYF(0)) && (my_mkdir(xtrabackup_extra_lsndir,0777,MYF(0)) < 0)) { - msg("xtrabackup: Error: cannot mkdir %d: %s\n", + msg("mariabackup: Error: cannot mkdir %d: %s\n", my_errno, xtrabackup_extra_lsndir); goto fail; } @@ -3716,7 +3717,7 @@ fail: /* create target dir if not exist */ if (!xtrabackup_stream_str && !my_stat(xtrabackup_target_dir,&stat_info,MYF(0)) && (my_mkdir(xtrabackup_target_dir,0777,MYF(0)) < 0)){ - msg("xtrabackup: Error: cannot mkdir %d: %s\n", + msg("mariabackup: Error: cannot mkdir %d: %s\n", my_errno, xtrabackup_target_dir); goto fail; } @@ -3744,7 +3745,7 @@ log_fail: if (log_sys->log.format == 0) { old_format: - msg("xtrabackup: Error: cannot process redo log" + msg("mariabackup: Error: cannot process redo log" " before MariaDB 10.2.2\n"); log_mutex_exit(); goto log_fail; @@ -3790,7 +3791,7 @@ reread_log_header: memset(&stat_info, 0, sizeof(MY_STAT)); dst_log_file = ds_open(ds_redo, "ib_logfile0", &stat_info); if (dst_log_file == NULL) { - msg("xtrabackup: error: failed to open the target stream for " + msg("mariabackup: error: failed to open the target stream for " "'ib_logfile0'.\n"); goto fail; } @@ -3808,7 +3809,7 @@ reread_log_header: /* Write the log header. */ if (ds_write(dst_log_file, log_hdr, sizeof log_hdr)) { log_write_fail: - msg("xtrabackup: error: write to logfile failed\n"); + msg("mariabackup: error: write to logfile failed\n"); goto fail; } /* Adjust the checkpoint page. */ @@ -3854,7 +3855,7 @@ reread_log_header: /* Populate fil_system with tablespaces to copy */ err = xb_load_tablespaces(); if (err != DB_SUCCESS) { - msg("xtrabackup: error: xb_load_tablespaces() failed with" + msg("mariabackup: error: xb_load_tablespaces() failed with" "error code %u\n", err); goto fail; } @@ -3870,25 +3871,25 @@ reread_log_header: changed_page_bitmap = xb_page_bitmap_init(); } if (!changed_page_bitmap) { - msg("xtrabackup: using the full scan for incremental " + msg("mariabackup: using the full scan for incremental " "backup\n"); } else if (incremental_lsn != checkpoint_lsn_start) { /* Do not print that bitmaps are used when dummy bitmap is build for an empty LSN range. */ - msg("xtrabackup: using the changed page bitmap\n"); + msg("mariabackup: using the changed page bitmap\n"); } } ut_a(xtrabackup_parallel > 0); if (xtrabackup_parallel > 1) { - msg("xtrabackup: Starting %u threads for parallel data " + msg("mariabackup: Starting %u threads for parallel data " "files transfer\n", xtrabackup_parallel); } it = datafiles_iter_new(fil_system); if (it == NULL) { - msg("xtrabackup: Error: datafiles_iter_new() failed.\n"); + msg("mariabackup: Error: datafiles_iter_new() failed.\n"); goto fail; } @@ -3949,7 +3950,7 @@ reread_log_header: xtrabackup_destroy_datasinks(); - msg("xtrabackup: Redo log (from LSN " LSN_PF " to " LSN_PF + msg("mariabackup: Redo log (from LSN " LSN_PF " to " LSN_PF ") was copied.\n", checkpoint_lsn_start, log_copy_scanned_lsn); xb_filters_free(); @@ -3957,7 +3958,7 @@ reread_log_header: /* Make sure that the latest checkpoint was included */ if (metadata_to_lsn > log_copy_scanned_lsn) { - msg("xtrabackup: error: failed to copy enough redo log (" + msg("mariabackup: error: failed to copy enough redo log (" "LSN=" LSN_PF "; checkpoint LSN=" LSN_PF ").\n", log_copy_scanned_lsn, metadata_to_lsn); goto fail; @@ -4015,15 +4016,14 @@ xb_space_create_file( *file = os_file_create_simple_no_error_handling( 0, path, OS_FILE_CREATE, OS_FILE_READ_WRITE, false, &ret); if (!ret) { - msg("xtrabackup: cannot create file %s\n", path); + msg("mariabackup: cannot create file %s\n", path); return ret; } ret = os_file_set_size(path, *file, - FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE, - false); + FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE); if (!ret) { - msg("xtrabackup: cannot set size for file %s\n", path); + msg("mariabackup: cannot set size for file %s\n", path); os_file_close(*file); os_file_delete(0, path); return ret; @@ -4067,7 +4067,7 @@ xb_space_create_file( free(buf); if (!ret) { - msg("xtrabackup: could not write the first page to %s\n", + msg("mariabackup: could not write the first page to %s\n", path); os_file_close(*file); os_file_delete(0, path); @@ -4128,7 +4128,7 @@ xb_delta_open_matching_space( /* Create the database directory if it doesn't exist yet */ if (!os_file_create_directory(dest_dir, FALSE)) { - msg("xtrabackup: error: cannot create dir %s\n", dest_dir); + msg("mariabackup: error: cannot create dir %s\n", dest_dir); return file; } @@ -4142,7 +4142,7 @@ found: OS_FILE_OPEN, OS_FILE_READ_WRITE, false, success); if (!*success) { - msg("xtrabackup: Cannot open file %s\n", real_name); + msg("mariabackup: Cannot open file %s\n", real_name); } exit: log_mutex_exit(); @@ -4175,7 +4175,7 @@ exit: snprintf(tmpname, FN_REFLEN, "%s/xtrabackup_tmp_#" ULINTPF, dbname, fil_space->id); - msg("xtrabackup: Renaming %s to %s.ibd\n", + msg("mariabackup: Renaming %s to %s.ibd\n", fil_space->name, tmpname); if (!fil_rename_tablespace( @@ -4183,7 +4183,7 @@ exit: fil_space->chain.start->name, tmpname, NULL)) { - msg("xtrabackup: Cannot rename %s to %s\n", + msg("mariabackup: Cannot rename %s to %s\n", fil_space->name, tmpname); goto exit; } @@ -4192,7 +4192,7 @@ exit: if (info.space_id == ULINT_UNDEFINED) { - msg("xtrabackup: Error: Cannot handle DDL operation on tablespace " + msg("mariabackup: Error: Cannot handle DDL operation on tablespace " "%s\n", dest_space_name); exit(EXIT_FAILURE); } @@ -4204,7 +4204,7 @@ exit: strncpy(tmpname, dest_space_name, FN_REFLEN); - msg("xtrabackup: Renaming %s to %s\n", + msg("mariabackup: Renaming %s to %s\n", fil_space->name, dest_space_name); if (!fil_rename_tablespace(fil_space->id, @@ -4212,7 +4212,7 @@ exit: tmpname, NULL)) { - msg("xtrabackup: Cannot rename %s to %s\n", + msg("mariabackup: Cannot rename %s to %s\n", fil_space->name, dest_space_name); goto exit; } @@ -4240,7 +4240,7 @@ exit: *success = xb_space_create_file(real_name, info.space_id, flags, &file); } else { - msg("xtrabackup: Cannot create tablespace %s\n", + msg("mariabackup: Cannot create tablespace %s\n", dest_space_name); } @@ -4311,11 +4311,11 @@ xtrabackup_apply_delta( page_size = info.page_size.physical(); page_size_shift = get_bit_shift(page_size); - msg("xtrabackup: page size for %s is %lu bytes\n", + msg("mariabackup: page size for %s is %lu bytes\n", src_path, page_size); if (page_size_shift < 10 || page_size_shift > UNIV_PAGE_SIZE_SHIFT_MAX) { - msg("xtrabackup: error: invalid value of page_size " + msg("mariabackup: error: invalid value of page_size " "(%lu bytes) read from %s\n", page_size, meta_path); goto error; } @@ -4325,7 +4325,7 @@ xtrabackup_apply_delta( OS_FILE_OPEN, OS_FILE_READ_WRITE, false, &success); if (!success) { os_file_get_last_error(TRUE); - msg("xtrabackup: error: cannot open %s\n", src_path); + msg("mariabackup: error: cannot open %s\n", src_path); goto error; } @@ -4337,7 +4337,7 @@ xtrabackup_apply_delta( dbname, space_name, info, dst_path, sizeof(dst_path), &success); if (!success) { - msg("xtrabackup: error: cannot open %s\n", dst_path); + msg("mariabackup: error: cannot open %s\n", dst_path); goto error; } @@ -4375,7 +4375,7 @@ xtrabackup_apply_delta( last_buffer = TRUE; break; default: - msg("xtrabackup: error: %s seems not " + msg("mariabackup: error: %s seems not " ".delta file.\n", src_path); goto error; } @@ -4412,13 +4412,20 @@ xtrabackup_apply_delta( if (offset_on_page == 0xFFFFFFFFUL) break; + uchar *buf = incremental_buffer + page_in_buffer * page_size; + const os_offset_t off = os_offset_t(offset_on_page)*page_size; + + if (off == 0) { + /* Read tablespace size from page 0, + and extend the file to specified size.*/ + os_offset_t n_pages = mach_read_from_4(buf + FSP_HEADER_OFFSET + FSP_SIZE); + success = os_file_set_size(dst_path, dst_file, n_pages*page_size); + if (!success) + goto error; + } + success = os_file_write(IORequestWrite, - dst_path, dst_file, - incremental_buffer + - page_in_buffer * page_size, - (offset_on_page << - page_size_shift), - page_size); + dst_path, dst_file, buf, off, page_size); if (!success) { goto error; } @@ -4428,8 +4435,10 @@ xtrabackup_apply_delta( } free(incremental_buffer_base); - if (src_file != OS_FILE_CLOSED) + if (src_file != OS_FILE_CLOSED) { os_file_close(src_file); + os_file_delete(0,src_path); + } if (dst_file != OS_FILE_CLOSED) os_file_close(dst_file); return TRUE; @@ -4440,7 +4449,7 @@ error: os_file_close(src_file); if (dst_file != OS_FILE_CLOSED) os_file_close(dst_file); - msg("xtrabackup: Error: xtrabackup_apply_delta(): " + msg("mariabackup: Error: xtrabackup_apply_delta(): " "failed to apply %s to %s.\n", src_path, dst_path); return FALSE; } @@ -4502,7 +4511,7 @@ xb_process_datadir( handle_datadir_entry_func_t func) /*!<in: callback */ { ulint ret; - char dbpath[FN_REFLEN]; + char dbpath[OS_FILE_MAX_PATH]; os_file_dir_t dir; os_file_dir_t dbdir; os_file_stat_t dbinfo; @@ -4547,7 +4556,7 @@ next_file_item_1: os_file_closedir(dbdir); } else { - msg("xtrabackup: Cannot open dir %s\n", + msg("mariabackup: Cannot open dir %s\n", path); } @@ -4555,7 +4564,7 @@ next_file_item_1: dir = os_file_opendir(path, FALSE); if (dir == NULL) { - msg("xtrabackup: Cannot open dir %s\n", + msg("mariabackup: Cannot open dir %s\n", path); } @@ -4568,8 +4577,8 @@ next_file_item_1: goto next_datadir_item; } - sprintf(dbpath, "%s/%s", path, - dbinfo.name); + snprintf(dbpath, sizeof(dbpath), "%s/%s", path, dbinfo.name); + os_normalize_path(dbpath); dbdir = os_file_opendir(dbpath, FALSE); @@ -4651,7 +4660,7 @@ store_binlog_info(const char* filename, const char* name, ulonglong pos) FILE *fp = fopen(filename, "w"); if (!fp) { - msg("xtrabackup: failed to open '%s'\n", filename); + msg("mariabackup: failed to open '%s'\n", filename); return(false); } @@ -4672,11 +4681,11 @@ xtrabackup_prepare_func(char** argv) if (my_setwd(xtrabackup_real_target_dir,MYF(MY_WME))) { - msg("xtrabackup: cannot my_setwd %s\n", + msg("mariabackup: cannot my_setwd %s\n", xtrabackup_real_target_dir); return(false); } - msg("xtrabackup: cd to %s\n", xtrabackup_real_target_dir); + msg("mariabackup: cd to %s\n", xtrabackup_real_target_dir); int argc; for (argc = 0; argv[argc]; argc++) {} encryption_plugin_prepare_init(argc, argv); @@ -4694,31 +4703,31 @@ xtrabackup_prepare_func(char** argv) XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_read_metadata(metadata_path)) { - msg("xtrabackup: Error: failed to read metadata from '%s'\n", + msg("mariabackup: Error: failed to read metadata from '%s'\n", metadata_path); return(false); } if (!strcmp(metadata_type, "full-backuped")) { if (xtrabackup_incremental) { - msg("xtrabackup: error: applying incremental backup " + msg("mariabackup: error: applying incremental backup " "needs a prepared target.\n"); return(false); } - msg("xtrabackup: This target seems to be not prepared yet.\n"); + msg("mariabackup: This target seems to be not prepared yet.\n"); } else if (!strcmp(metadata_type, "log-applied")) { - msg("xtrabackup: This target seems to be already prepared.\n"); + msg("mariabackup: This target seems to be already prepared.\n"); } else { - msg("xtrabackup: This target does not have correct metadata.\n"); + msg("mariabackup: This target does not have correct metadata.\n"); return(false); } bool ok = !xtrabackup_incremental || metadata_to_lsn == incremental_lsn; if (!ok) { - msg("xtrabackup: error: This incremental backup seems " + msg("mariabackup: error: This incremental backup seems " "not to be proper for the target.\n" - "xtrabackup: Check 'to_lsn' of the target and " + "mariabackup: Check 'to_lsn' of the target and " "'from_lsn' of the incremental.\n"); return(false); } @@ -4753,7 +4762,7 @@ xtrabackup_prepare_func(char** argv) #endif dberr_t err = xb_data_files_init(); if (err != DB_SUCCESS) { - msg("xtrabackup: error: xb_data_files_init() failed " + msg("mariabackup: error: xb_data_files_init() failed " "with error %s\n", ut_strerr(err)); goto error_cleanup; } @@ -4783,7 +4792,8 @@ xtrabackup_prepare_func(char** argv) if (!ok) goto error_cleanup; } - srv_operation = SRV_OPERATION_RESTORE; + srv_operation = xtrabackup_export + ? SRV_OPERATION_RESTORE_EXPORT : SRV_OPERATION_RESTORE; if (innodb_init_param()) { goto error_cleanup; @@ -4795,8 +4805,8 @@ xtrabackup_prepare_func(char** argv) srv_n_write_io_threads = 4; } - msg("xtrabackup: Starting InnoDB instance for recovery.\n" - "xtrabackup: Using %lld bytes for buffer pool " + msg("mariabackup: Starting InnoDB instance for recovery.\n" + "mariabackup: Using %lld bytes for buffer pool " "(set by --use-memory parameter)\n", xtrabackup_use_memory); srv_max_buf_pool_modified_pct = (double)max_buf_pool_modified_pct; @@ -4809,7 +4819,6 @@ xtrabackup_prepare_func(char** argv) goto error_cleanup; } - if (ok) { mtr_t mtr; mtr.start(); @@ -4847,7 +4856,7 @@ xtrabackup_prepare_func(char** argv) /* Check whether the log is applied enough or not. */ if ((srv_start_lsn || fil_space_get(SRV_LOG_SPACE_FIRST_ID)) && srv_start_lsn < target_lsn) { - msg("xtrabackup: error: " + msg("mariabackup: error: " "The log was only applied up to LSN " LSN_PF ", instead of " LSN_PF "\n", srv_start_lsn, target_lsn); @@ -4876,13 +4885,13 @@ xtrabackup_prepare_func(char** argv) sprintf(filename, "%s/%s", xtrabackup_target_dir, XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_write_metadata(filename)) { - msg("xtrabackup: Error: failed to write metadata " + msg("mariabackup: Error: failed to write metadata " "to '%s'\n", filename); ok = false; } else if (xtrabackup_extra_lsndir) { sprintf(filename, "%s/%s", xtrabackup_extra_lsndir, XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_write_metadata(filename)) { - msg("xtrabackup: Error: failed to write " + msg("mariabackup: Error: failed to write " "metadata to '%s'\n", filename); ok = false; } @@ -5145,7 +5154,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server) if (optend - argv[i] == 15 && !strncmp(argv[i], "--defaults-file", optend - argv[i])) { - msg("xtrabackup: Error: --defaults-file " + msg("mariabackup: Error: --defaults-file " "must be specified first on the command " "line\n"); exit(EXIT_FAILURE); @@ -5154,7 +5163,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server) !strncmp(argv[i], "--defaults-extra-file", optend - argv[i])) { - msg("xtrabackup: Error: --defaults-extra-file " + msg("mariabackup: Error: --defaults-extra-file " "must be specified first on the command " "line\n"); exit(EXIT_FAILURE); @@ -5205,7 +5214,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server) } if (!server_option) { - msg("xtrabackup: Error:" + msg("mariabackup: Error:" " unknown argument: '%s'\n", opt); exit(EXIT_FAILURE); } @@ -5324,7 +5333,7 @@ static int main_low(char** argv) && !strcmp(mysql_data_home, "./")) { if (!xtrabackup_print_param) usage(); - msg("\nxtrabackup: Error: Please set parameter 'datadir'\n"); + msg("\nmariabackup: Error: Please set parameter 'datadir'\n"); return(EXIT_FAILURE); } @@ -5394,7 +5403,7 @@ static int main_low(char** argv) error = 1; if (error) { - msg("xtrabackup: value '%s' may be wrong format for " + msg("mariabackup: value '%s' may be wrong format for " "incremental option.\n", xtrabackup_incremental); return(EXIT_FAILURE); } @@ -5404,7 +5413,7 @@ static int main_low(char** argv) sprintf(filename, "%s/%s", xtrabackup_incremental_basedir, XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_read_metadata(filename)) { - msg("xtrabackup: error: failed to read metadata from " + msg("mariabackup: error: failed to read metadata from " "%s\n", filename); return(EXIT_FAILURE); } @@ -5417,7 +5426,7 @@ static int main_low(char** argv) sprintf(filename, "%s/%s", xtrabackup_incremental_dir, XTRABACKUP_METADATA_FILENAME); if (!xtrabackup_read_metadata(filename)) { - msg("xtrabackup: error: failed to read metadata from " + msg("mariabackup: error: failed to read metadata from " "%s\n", filename); return(EXIT_FAILURE); } @@ -5452,7 +5461,7 @@ static int main_low(char** argv) } if (xtrabackup_export && innobase_file_per_table == FALSE) { - msg("xtrabackup: auto-enabling --innodb-file-per-table due to " + msg("mariabackup: auto-enabling --innodb-file-per-table due to " "the --export option\n"); innobase_file_per_table = TRUE; } @@ -5520,4 +5529,3 @@ static int get_exepath(char *buf, size_t size, const char *argv0) return my_realpath(buf, argv0, 0); } - diff --git a/extra/mariabackup/xtrabackup.h b/extra/mariabackup/xtrabackup.h index c902e7f54ba..045294a2f9e 100644 --- a/extra/mariabackup/xtrabackup.h +++ b/extra/mariabackup/xtrabackup.h @@ -109,6 +109,7 @@ extern my_bool opt_force_non_empty_dirs; extern my_bool opt_noversioncheck; extern my_bool opt_no_backup_locks; extern my_bool opt_decompress; +extern my_bool opt_remove_original; extern char *opt_incremental_history_name; extern char *opt_incremental_history_uuid; diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index bfd0c3c635a..78940e02ca4 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -98,18 +98,23 @@ static struct my_option my_long_options[] = {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; -void cleanup_and_exit(int exit_code) +static void cleanup_and_exit(int exit_code) __attribute__ ((noreturn)); +static void cleanup_and_exit(int exit_code) { my_end(0); exit(exit_code); } -static void usage(my_bool version) +static void version() { - printf("%s Ver 1.6 for %s at %s\n",my_progname,SYSTEM_TYPE, - MACHINE_TYPE); - if (version) - return; + printf("%s Ver 1.6 for %s at %s\n",my_progname,SYSTEM_TYPE, MACHINE_TYPE); +} + + +static void usage() __attribute__ ((noreturn)); +static void usage() +{ + version(); puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n"); puts("Prints all arguments that is give to some program using the default files"); printf("Usage: %s [OPTIONS] [groups]\n", my_progname); @@ -133,12 +138,13 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), cleanup_and_exit(0); case 'I': case '?': - usage(0); + usage(); case 'v': verbose++; break; case 'V': - usage(1); + version(); + /* fall through */ case '#': DBUG_PUSH(argument ? argument : default_dbug_option); break; @@ -186,7 +192,7 @@ int main(int argc, char **argv) nargs+= array_elements(mysqld_groups); if (nargs < 2) - usage(0); + usage(); load_default_groups=(char**) my_malloc(nargs*sizeof(char*), MYF(MY_WME)); if (!load_default_groups) diff --git a/extra/replace.c b/extra/replace.c index b8c328f2902..eabf953837b 100644 --- a/extra/replace.c +++ b/extra/replace.c @@ -174,7 +174,7 @@ register char **argv[]; break; case 'V': version=1; - /* fall through */ + /* fall through */ case 'I': case '?': help=1; /* Help text written */ diff --git a/extra/yassl/README b/extra/yassl/README index a3d4f60f561..de1bf5132aa 100644 --- a/extra/yassl/README +++ b/extra/yassl/README @@ -12,6 +12,14 @@ before calling SSL_new(); *** end Note *** +yaSSL Release notes, version 2.4.4 (8/8/2017) + This release of yaSSL fixes an interop issue. A fix for detecting cipher + suites with non leading zeros is included as yaSSL only supports cipher + suites with leading zeros. Thanks for the report from Security Innovation + and Oracle. + + Users interoping with other SSL stacks should update. + yaSSL Release notes, version 2.4.2 (9/22/2016) This release of yaSSL fixes a medium security vulnerability. A fix for potential AES side channel leaks is included that a local user monitoring diff --git a/extra/yassl/include/openssl/ssl.h b/extra/yassl/include/openssl/ssl.h index ede4581fa13..f750f601d29 100644 --- a/extra/yassl/include/openssl/ssl.h +++ b/extra/yassl/include/openssl/ssl.h @@ -1,5 +1,6 @@ /* - Copyright (c) 2005, 2014, Oracle and/or its affiliates. + Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved. + Use is subject to license terms. 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 @@ -34,7 +35,7 @@ #include "rsa.h" -#define YASSL_VERSION "2.4.2" +#define YASSL_VERSION "2.4.4" #if defined(__cplusplus) diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp index a481812b3e0..971a5b6654e 100644 --- a/extra/yassl/src/yassl_imp.cpp +++ b/extra/yassl/src/yassl_imp.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2014, Oracle and/or its affiliates + Copyright (c) 2005, 2017, 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 @@ -1578,6 +1578,10 @@ void ServerHello::Process(input_buffer& input, SSL& ssl) ssl.SetError(badVersion_error); return; } + if (cipher_suite_[0] != 0x00) { + ssl.SetError(unknown_cipher); + return; + } ssl.set_pending(cipher_suite_[1]); ssl.set_random(random_, server_end); if (id_len_) diff --git a/extra/yassl/src/yassl_int.cpp b/extra/yassl/src/yassl_int.cpp index edc89df4cfa..1dc89df9d86 100644 --- a/extra/yassl/src/yassl_int.cpp +++ b/extra/yassl/src/yassl_int.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2014, Oracle and/or its affiliates + Copyright (c) 2005, 2017, 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 @@ -1399,12 +1399,17 @@ void SSL::matchSuite(const opaque* peer, uint length) // start with best, if a match we are good, Ciphers are at odd index // since all SSL and TLS ciphers have 0x00 first byte for (uint i = 1; i < secure_.get_parms().suites_size_; i += 2) - for (uint j = 1; j < length; j+= 2) - if (secure_.use_parms().suites_[i] == peer[j]) { + for (uint j = 0; (j + 1) < length; j+= 2) { + if (peer[j] != 0x00) { + continue; // only 0x00 first byte supported + } + + if (secure_.use_parms().suites_[i] == peer[j + 1]) { secure_.use_parms().suite_[0] = 0x00; - secure_.use_parms().suite_[1] = peer[j]; + secure_.use_parms().suite_[1] = peer[j + 1]; return; } + } SetError(match_error); } @@ -2702,4 +2707,3 @@ extern "C" void yaSSL_CleanUp() yaSSL::sessionsInstance = 0; yaSSL::errorsInstance = 0; } - diff --git a/libmariadb b/libmariadb -Subproject 931450c3f8793f2653f6292847cbc005b30ed3b +Subproject 7e53ab369815590ff92913b581d43eb7786f2fe diff --git a/mysql-test/README b/mysql-test/README index 28b8203b2dc..d925964fed5 100644 --- a/mysql-test/README +++ b/mysql-test/README @@ -1,74 +1,93 @@ -This directory contains a test suite for the MySQL daemon. To run -the currently existing test cases, simply execute ./mysql-test-run in -this directory. It will fire up the newly built mysqld and test it. +This directory contains test suites for the MariaDB server. To run +currently existing test cases, execute ./mysql-test-run in this directory. -Note that you do not have to have to do "make install", and you could -actually have a co-existing MySQL installation. The tests will not -conflict with it. To run the test suite in a source directory, you -must do make first. +Some tests are known to fail on some platforms or be otherwise unreliable. +The file "unstable-tests" contains the list of such tests along with +a comment for every test. +To exclude them from the test run, execute + # ./mysql-test-run --skip-test-list=unstable-tests -All tests must pass. If one or more of them fail on your system, please -read the following manual section for instructions on how to report the -problem: +In general you do not have to have to do "make install", and you can have +a co-existing MariaDB installation, the tests will not conflict with it. +To run the tests in a source directory, you must do "make" first. + +In Red Hat distributions, you should run the script as user "mysql". +The user is created with nologin shell, so the best bet is something like + # su - + # cd /usr/share/mysql-test + # su -s /bin/bash mysql -c "./mysql-test-run --skip-test-list=unstable-tests" + +This will use the installed MariaDB executables, but will run a private +copy of the server process (using data files within /usr/share/mysql-test), +so you need not start the mysqld service beforehand. + +You can omit --skip-test-list option if you want to check whether +the listed failures occur for you. + +To clean up afterwards, remove the created "var" subdirectory, e.g. + # su -s /bin/bash - mysql -c "rm -rf /usr/share/mysql-test/var" + +If one or more tests fail on your system on reasons other than listed +in lists of unstable tests, please read the following manual section +for instructions on how to report the problem: https://mariadb.com/kb/en/reporting-bugs If you want to use an already running MySQL server for specific tests, use the --extern option to mysql-test-run. Please note that in this mode, -the test suite expects you to provide the names of the tests to run. +you are expected to provide names of the tests to run. + For example, here is the command to run the "alias" and "analyze" tests with an external server: -mysql-test-run --extern socket=/tmp/mysql.sock alias analyze + # mysql-test-run --extern socket=/tmp/mysql.sock alias analyze -To match your setup, you might also need to provide --socket, --user, and -other relevant options. +To match your setup, you might need to provide other relevant options. -With no test cases named on the command line, mysql-test-run falls back -to the normal "non-extern" behavior. The reason for this is that some -tests cannot run with an external server. +With no test names on the command line, mysql-test-run will attempt +to execute the default set of tests, which will certainly fail, because +many tests cannot run with an external server (they need to control the +options with which the server is started, restart the server during +execution, etc.) You can create your own test cases. To create a test case, create a new file in the t subdirectory using a text editor. The file should have a .test extension. For example: - xemacs t/test_case_name.test + # xemacs t/test_case_name.test - In the file, put a set of SQL statements that create some tables, - load test data, and run some queries to manipulate it. +In the file, put a set of SQL statements that create some tables, +load test data, and run some queries to manipulate it. - We would appreciate it if you name your test tables t1, t2, t3 ... (to not - conflict too much with existing tables). +Your test should begin by dropping the tables you are going to create and +end by dropping them again. This ensures that you can run the test over +and over again. - Your test should begin by dropping the tables you are going to create and - end by dropping them again. This ensures that you can run the test over - and over again. - - If you are using mysqltest commands (like result file names) in your - test case, you should create the result file as follows: +If you are using mysqltest commands in your test case, you should create +the result file as follows: - mysql-test-run --record test_case_name + # mysql-test-run --record test_case_name - or + or - mysqltest --record < t/test_case_name.test + # mysqltest --record < t/test_case_name.test - If you only have a simple test cases consisting of SQL statements and - comments, you can create the test case in one of the following ways: +If you only have a simple test case consisting of SQL statements and +comments, you can create the result file in one of the following ways: - mysql-test-run --record test_case_name + # mysql-test-run --record test_case_name - mysql test < t/test_case_name.test > r/test_case_name.result + # mysql test < t/test_case_name.test > r/test_case_name.result - mysqltest --record --database test --result-file=r/test_case_name.result < t/test_case_name.test + # mysqltest --record --database test --result-file=r/test_case_name.result < t/test_case_name.test - When this is done, take a look at r/test_case_name.result - - If the result is incorrect, you have found a bug. In this case, you should - edit the test result to the correct results so that we can verify - that the bug is corrected in future releases. +When this is done, take a look at r/test_case_name.result . +If the result is incorrect, you have found a bug. In this case, you should +edit the test result to the correct results so that we can verify that +the bug is corrected in future releases. If you want to submit your test case you can send it -to maria-developers@lists.launchpad.com or attach it to a bug report on +to maria-developers@lists.launchpad.net or attach it to a bug report on http://mariadb.org/jira/. If the test case is really big or if it contains 'not public' data, diff --git a/mysql-test/include/empty_string_literal.inc b/mysql-test/include/empty_string_literal.inc new file mode 100644 index 00000000000..f02b626a484 --- /dev/null +++ b/mysql-test/include/empty_string_literal.inc @@ -0,0 +1,113 @@ +SET SESSION character_set_connection=latin2; +SET SESSION character_set_client=cp1250; + +--echo # +--echo # Test litteral +--echo # +SET sql_mode=@mode; +select @@sql_mode; +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); +SELECT CHARSET(NULLIF('','')),NULLIF('',''); +SET sql_mode=default; +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); +SELECT CHARSET(NULLIF('','')),NULLIF('',''); + +--echo # +--echo # Test NCHAR litteral +--echo # +SET sql_mode=@mode; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); +SET sql_mode=default; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); + +--echo # +--echo # Test CHARSET prefix litteral +--echo # +SET sql_mode=@mode; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); +SET sql_mode=default; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); + + +SET sql_mode=@mode; + +--echo # +--echo # Test litteral concat +--echo # +SELECT 'a' 'b'; +SELECT 'a' ''; +SELECT '' 'b'; +SELECT '' ''; +SELECT '' 'b' 'c'; +SELECT '' '' 'c'; +SELECT 'a' '' 'c'; +SELECT 'a' '' ''; +SELECT '' '' ''; + +SELECT '' '' '',CHARSET('' '' ''); +SELECT _latin1'' '' '',CHARSET(_latin1'' '' ''); +SELECT N'' '' '',CHARSET(N'' '' ''); + +--echo # +--echo # UNION - implicit group by +--echo # +SELECT 1, null +UNION +SELECT 1 , '' +ORDER BY 1; + +SELECT 1, null +UNION +SELECT 1 , N'' +ORDER BY 1; + +SELECT 1, null +UNION +SELECT 1 , _cp1250 '' +ORDER BY 1; + +SELECT NULLIF(_cp1250 '',_cp1250 '') +UNION +SELECT NULLIF(N'',N''); + +--error ER_CANT_AGGREGATE_2COLLATIONS +SELECT 1 , _latin2 '' +UNION +SELECT 1 , _cp1250 ''; + +SELECT 1, null +UNION +SELECT 1 , '' +UNION +SELECT 1 , N''; + +CREATE TABLE t1 (c1 INT,c2 VARCHAR(10)); +INSERT INTO t1 VALUES (1,'one'); +INSERT INTO t1 VALUES (1,''); +INSERT INTO t1 VALUES (1,null); + +--echo # +--echo # Test in a view +--echo # +CREATE VIEW v1 + AS SELECT c1, c2 + FROM t1 + UNION + SELECT c1 , '' + FROM t1 + ORDER BY 1,2; +SELECT * FROM v1; + +SHOW CREATE VIEW v1; + +DROP VIEW v1; +DROP TABLE t1; + +EXPLAIN EXTENDED SELECT ''; +EXPLAIN EXTENDED SELECT _latin1''; +EXPLAIN EXTENDED SELECT N''; +EXPLAIN EXTENDED SELECT '' ''; diff --git a/mysql-test/include/innodb_gis_row_format_basic.inc b/mysql-test/include/innodb_gis_row_format_basic.inc new file mode 100644 index 00000000000..e6d7d3f2783 --- /dev/null +++ b/mysql-test/include/innodb_gis_row_format_basic.inc @@ -0,0 +1,420 @@ +--source include/have_innodb.inc +--source include/not_embedded.inc + +eval SET GLOBAL innodb_file_per_table=$file_per_table; +eval SET GLOBAL innodb_file_format=$file_format; + +# +# This test is the same as innodb_gis_rollback +# + +eval CREATE TABLE t1 ( + id bigint(12) unsigned NOT NULL auto_increment, + c2 varchar(15) collate utf8_bin DEFAULT NULL, + c1 varchar(15) collate utf8_bin DEFAULT NULL, + c3 varchar(10) collate utf8_bin DEFAULT NULL, + spatial_point point NOT NULL, + PRIMARY KEY(id), + SPATIAL KEY (spatial_point) +) ROW_FORMAT=$row_format ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES + ('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), + ('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), + ('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), + ('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), + ('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), + ('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), + ('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), + ('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), + ('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), + ('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), + ('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), + ('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), + ('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), + ('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), + ('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), + ('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), + ('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), + ('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), + ('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), + ('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), + ('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), + ('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), + ('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), + ('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), + ('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), + ('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), + ('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), + ('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), + ('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), + ('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), + ('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), + ('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), + ('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), + ('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), + ('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), + ('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), + ('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), + ('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), + ('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), + ('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), + ('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), + ('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), + ('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), + ('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), + ('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), + ('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), + ('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), + ('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), + ('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), + ('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), + ('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), + ('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), + ('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), + ('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), + ('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), + ('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), + ('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), + ('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), + ('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), + ('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), + ('b', 's', 's', ST_GeomFromText('POINT(223 211)')), + ('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), + ('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), + ('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), + ('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), + ('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), + ('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), + ('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), + ('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), + ('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), + ('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), + ('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), + ('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), + ('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), + ('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), + ('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), + ('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), + ('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), + ('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), + ('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), + ('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), + ('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), + ('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), + ('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), + ('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), + ('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), + ('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), + ('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), + ('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), + ('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), + ('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), + ('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), + ('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), + ('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), + ('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), + ('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), + ('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), + ('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES + ('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), + ('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), + ('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), + ('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), + ('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), + ('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), + ('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), + ('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), + ('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), + ('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), + ('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), + ('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), + ('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), + ('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), + ('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), + ('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), + ('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), + ('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), + ('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), + ('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), + ('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), + ('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), + ('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), + ('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), + ('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), + ('z', 't', 't', ST_GeomFromText('POINT(99 134)')), + ('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), + ('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), + ('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), + ('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), + ('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), + ('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), + ('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), + ('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), + ('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), + ('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), + ('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), + ('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), + ('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), + ('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), + ('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), + ('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), + ('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), + ('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), + ('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), + ('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), + ('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), + ('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), + ('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), + ('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), + ('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), + ('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), + ('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), + ('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), + ('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), + ('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), + ('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), + ('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), + ('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), + ('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), + ('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), + ('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), + ('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), + ('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), + ('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), + ('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), + ('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), + ('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), + ('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), + ('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), + ('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), + ('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), + ('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), + ('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), + ('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), + ('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), + ('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), + ('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), + ('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), + ('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), + ('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), + ('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), + ('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), + ('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), + ('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), + ('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), + ('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), + ('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), + ('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), + ('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), + ('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), + ('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), + ('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), + ('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), + ('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), + ('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), + ('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), + ('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), + ('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), + ('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), + ('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), + ('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), + ('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), + ('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), + ('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), + ('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), + ('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), + ('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), + ('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), + ('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), + ('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), + ('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), + ('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), + ('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), + ('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), + ('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), + ('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), + ('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), + ('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), + ('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), + ('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), + ('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), + ('m', 's', 's', ST_GeomFromText('POINT(172 149)')), + ('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), + ('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), + ('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), + ('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), + ('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), + ('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), + ('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), + ('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), + ('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), + ('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), + ('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), + ('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), + ('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), + ('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), + ('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), + ('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), + ('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), + ('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), + ('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), + ('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES + ('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), + ('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), + ('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), + ('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), + ('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), + ('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), + ('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), + ('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), + ('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), + ('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), + ('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), + ('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), + ('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), + ('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), + ('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), + ('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), + ('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), + ('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), + ('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), + ('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), + ('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), + ('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), + ('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), + ('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), + ('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), + ('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), + ('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), + ('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), + ('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), + ('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), + ('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), + ('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), + ('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), + ('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), + ('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), + ('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), + ('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), + ('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), + ('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), + ('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), + ('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), + ('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), + ('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), + ('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), + ('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), + ('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), + ('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), + ('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), + ('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), + ('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), + ('l', 's', 't', ST_GeomFromText('POINT(83 18)')), + ('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), + ('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), + ('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), + ('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), + ('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), + ('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), + ('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), + ('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), + ('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), + ('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), + ('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), + ('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), + ('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), + ('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), + ('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), + ('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), + ('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), + ('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), + ('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), + ('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), + ('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), + ('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), + ('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), + ('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), + ('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), + ('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), + ('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), + ('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), + ('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), + ('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), + ('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), + ('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), + ('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), + ('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), + ('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), + ('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), + ('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), + ('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), + ('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), + ('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), + ('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), + ('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), + ('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), + ('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), + ('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); + +START TRANSACTION; + +# following INSERTion will result in a node split +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES + ('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); + +# Test rollback, this will result above split being rolled back, btr_compress +# gets called +ROLLBACK; + +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES + ('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); + +# create overlap on the bounding box in parent +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); + +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); + +# Add a row in the cross section of the 2 bounding box +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); + +# Delete this new poINT +DELETE FROM t1 WHERE id = 1280; + +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); + +START TRANSACTION; +DELETE FROM t1 WHERE id = 1280; +ROLLBACK; + +# Test MBR increase +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +ROLLBACK; + +SELECT COUNT(*) FROM t1; +UPDATE t1 SET spatial_point = ST_GeomFromText('POINT(123 456)') WHERE id < 2000; +SET @g1 = ST_GeomFromText('Polygon((123 456, 123 678, 456 678,456 456,123 456))'); +DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point); +SELECT COUNT(*) FROM t1; + +DROP TABLE t1; + +SET GLOBAL innodb_file_per_table=default; +SET GLOBAL innodb_file_format=default; + diff --git a/mysql-test/include/innodb_gis_undo.inc b/mysql-test/include/innodb_gis_undo.inc new file mode 100644 index 00000000000..075c7d1274e --- /dev/null +++ b/mysql-test/include/innodb_gis_undo.inc @@ -0,0 +1,83 @@ + +eval CREATE TABLE t1 ( + p INT NOT NULL AUTO_INCREMENT, + g LINESTRING NOT NULL, + PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=$row_format; + +if ($index == 'spatial_none') { + eval ALTER TABLE t1 ADD INDEX prefix_idx (g($prefix_size)); +} + +if ($index == 'spatial_only') { + ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +} + +if ($index == 'spatial_mixed') { + ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); + eval ALTER TABLE t1 ADD INDEX prefix_idx (g($prefix_size)); +} + +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; + +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; + +ROLLBACK; + +connection con1; +--echo # disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; SELECT * FROM t0; + +connection default; +DELETE FROM t1 WHERE p = 3; + +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; + +if ($index == 'spatial_none') { + ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +} + +if ($index == 'spatial_only') { + eval ALTER TABLE t1 ADD INDEX prefix_idx (g($prefix_size)); +} + +if ($index == 'spatial_mixed') { + ALTER TABLE t1 DROP INDEX spatial_idx, DROP INDEX prefix_idx; +} + +connection con1; +--echo # enable purge +COMMIT; + +connection default; +DELETE FROM t1 WHERE p = 2; + +--echo # wait for purge to process the update_undo records. +--source include/wait_innodb_all_purged.inc + +eval CREATE TABLE t2 ( + p INT PRIMARY KEY, + g1 POINT NOT NULL, + g2 POINT NOT NULL, + g3 LINESTRING NOT NULL, + g4 LINESTRING NOT NULL, + g5 GEOMETRY NOT NULL, + g6 GEOMETRY NOT NULL, + SPATIAL KEY (g1), + SPATIAL KEY (g2), + SPATIAL KEY (g3), + SPATIAL KEY (g4), + SPATIAL KEY (g5), + SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=$row_format; + +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; diff --git a/mysql-test/include/kill_and_restart_mysqld.inc b/mysql-test/include/kill_and_restart_mysqld.inc new file mode 100644 index 00000000000..b67fb7350b4 --- /dev/null +++ b/mysql-test/include/kill_and_restart_mysqld.inc @@ -0,0 +1,15 @@ +if (!$restart_parameters) +{ + let $restart_parameters = restart; +} + +--let $_server_id= `SELECT @@server_id` +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect + +--echo # Kill and $restart_parameters +--exec echo "$restart_parameters" > $_expect_file_name +--shutdown_server 0 +--source include/wait_until_disconnected.inc +--enable_reconnect +--source include/wait_until_connected_again.inc +--disable_reconnect diff --git a/mysql-test/include/wait_innodb_all_purged.inc b/mysql-test/include/wait_innodb_all_purged.inc new file mode 100644 index 00000000000..c5edc5937da --- /dev/null +++ b/mysql-test/include/wait_innodb_all_purged.inc @@ -0,0 +1,60 @@ +# include/wait_innodb_all_purged.inc +# +# SUMMARY +# +# Waits until purged all undo records of innodb, or operation times out. +# +# USAGE +# +# --source include/wait_innodb_all_purged.inc +# +--source include/have_innodb.inc +--source include/have_debug.inc + +--disable_query_log + +let $wait_counter_init= 300; +if ($wait_timeout) +{ + let $wait_counter_init= `SELECT $wait_timeout * 10`; +} +# Reset $wait_timeout so that its value won't be used on subsequent +# calls, and default will be used instead. +let $wait_timeout= 0; + +let $wait_counter= $wait_counter_init; + +# Keep track of how many times the wait condition is tested +let $wait_condition_reps= 0; +let $prev_trx_age= 0; +while ($wait_counter) +{ +--disable_warnings + let $trx_age = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS +WHERE VARIABLE_NAME = 'INNODB_PURGE_TRX_ID_AGE';`; +--enable_warnings + + if ($trx_age != $prev_trx_age) + { + let $wait_counter= $wait_counter_init; + let $prev_trx_age= $trx_age; + } + + let $success= `SELECT $trx_age < 1`; + inc $wait_condition_reps; + if ($success) + { + let $wait_counter= 0; + } + if (!$success) + { + real_sleep 0.1; + dec $wait_counter; + } +} +if (!$success) +{ + echo Timeout in wait_innodb_all_purged.inc for INNODB_PURGE_TRX_ID_AGE = $trx_age; +} + +--enable_query_log diff --git a/mysql-test/lib/My/SafeProcess.pm b/mysql-test/lib/My/SafeProcess.pm index f3ee772cca3..3260a6ed593 100644 --- a/mysql-test/lib/My/SafeProcess.pm +++ b/mysql-test/lib/My/SafeProcess.pm @@ -336,9 +336,14 @@ sub start_kill { sub dump_core { my ($self)= @_; - return if IS_WINDOWS; my $pid= $self->{SAFE_PID}; die "Can't get core from not started process" unless defined $pid; + + if (IS_WINDOWS) { + system("$safe_kill $pid dump"); + return 1; + } + _verbose("Sending ABRT to $self"); kill ("ABRT", $pid); return 1; diff --git a/mysql-test/lib/My/SafeProcess/CMakeLists.txt b/mysql-test/lib/My/SafeProcess/CMakeLists.txt index ec93f94a3e8..ff842f3468f 100644 --- a/mysql-test/lib/My/SafeProcess/CMakeLists.txt +++ b/mysql-test/lib/My/SafeProcess/CMakeLists.txt @@ -25,6 +25,7 @@ SET(INSTALL_ARGS IF (WIN32) MYSQL_ADD_EXECUTABLE(my_safe_process safe_process_win.cc ${INSTALL_ARGS}) MYSQL_ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc ${INSTALL_ARGS}) + TARGET_LINK_LIBRARIES(my_safe_kill dbghelp psapi) ELSE() MYSQL_ADD_EXECUTABLE(my_safe_process safe_process.cc ${INSTALL_ARGS}) ENDIF() diff --git a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc index 2ac29c61bc7..bb884cba11e 100644 --- a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc +++ b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc @@ -25,6 +25,137 @@ #include <stdio.h> #include <signal.h> #include <stdlib.h> +#include <psapi.h> +#include <dbghelp.h> +#include <tlhelp32.h> +#include <vector> + + +static std::vector<DWORD> find_children(DWORD pid) +{ + HANDLE h= NULL; + PROCESSENTRY32 pe={ 0 }; + std::vector<DWORD> children; + + pe.dwSize = sizeof(PROCESSENTRY32); + h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if(h == INVALID_HANDLE_VALUE) + return children; + + for (BOOL ret = Process32First(h, &pe); ret; ret = Process32Next(h, &pe)) + { + if (pe.th32ParentProcessID == pid) + children.push_back(pe.th32ProcessID); + } + CloseHandle(h); + return children; +} + +void dump_single_process(DWORD pid) +{ + HANDLE file = 0; + HANDLE process= 0; + DWORD size= MAX_PATH; + char path[MAX_PATH]; + char working_dir[MAX_PATH]; + char tmpname[MAX_PATH]; + + process= OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid); + if (!process) + { + fprintf(stderr, "safe_kill : cannot open process pid=%u to create dump, last error %u\n", + pid, GetLastError()); + goto exit; + } + + if (QueryFullProcessImageName(process, 0, path, &size) == 0) + { + fprintf(stderr, "safe_kill : cannot read process path for pid %u, last error %u\n", + pid, GetLastError()); + goto exit; + } + + char *filename= strrchr(path, '\\'); + if (filename) + { + filename++; + // We are not interested in dump of some proceses (my_safe_process.exe,cmd.exe) + // since they are only used to start up other programs. + // We're interested however in their children; + const char *exclude_programs[] = {"my_safe_process.exe","cmd.exe", 0}; + for(size_t i=0; exclude_programs[i]; i++) + if (_stricmp(filename, exclude_programs[i]) == 0) + goto exit; + } + else + filename= path; + + // Add .dmp extension + char *p; + if ((p= strrchr(filename, '.')) == 0) + p= filename + strlen(filename); + + strncpy(p, ".dmp", path + MAX_PATH - p); + + // Íf file with this name exist, generate unique name with .dmp extension + if (GetFileAttributes(filename) != INVALID_FILE_ATTRIBUTES) + { + if (!GetTempFileName(".", filename, 0, tmpname)) + { + fprintf(stderr, "GetTempFileName failed, last error %u", GetLastError()); + goto exit; + } + strncat(tmpname, ".dmp", sizeof(tmpname)); + filename= tmpname; + } + + + if (!GetCurrentDirectory(MAX_PATH, working_dir)) + { + fprintf(stderr, "GetCurrentDirectory failed, last error %u", GetLastError()); + goto exit; + } + + file= CreateFile(filename, GENERIC_READ | GENERIC_WRITE, + 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); + + if (file == INVALID_HANDLE_VALUE) + { + fprintf(stderr, "safe_kill : CreateFile() failed for file %s, working dir %s, last error = %u\n", + filename, working_dir, GetLastError()); + goto exit; + } + + if (!MiniDumpWriteDump(process, pid, file, MiniDumpNormal, 0, 0, 0)) + { + fprintf(stderr, "Failed to write minidump to %s, working dir %s, last error %u\n", + filename, working_dir, GetLastError()); + goto exit; + } + + fprintf(stderr, "Minidump written to %s, directory %s\n", filename, working_dir); + +exit: + if (process != 0 && process != INVALID_HANDLE_VALUE) + CloseHandle(process); + + if (file != 0 && file != INVALID_HANDLE_VALUE) + CloseHandle(file); +} + + +static int create_dump(DWORD pid, int recursion_depth= 5) +{ + if (recursion_depth < 0) + return 0; + + dump_single_process(pid); + std::vector<DWORD> children= find_children(pid); + for(size_t i=0; i < children.size(); i++) + create_dump(children[i], recursion_depth -1); + return 0; +} + int main(int argc, const char** argv ) { @@ -37,12 +168,16 @@ int main(int argc, const char** argv ) signal(SIGBREAK, SIG_IGN); signal(SIGTERM, SIG_IGN); - if (argc != 2) { - fprintf(stderr, "safe_kill <pid>\n"); + if ((argc != 2 && argc != 3) || (argc == 3 && strcmp(argv[2],"dump"))) { + fprintf(stderr, "safe_kill <pid> [dump]\n"); exit(2); } pid= atoi(argv[1]); + if (argc == 3) + { + return create_dump(pid); + } _snprintf(safe_process_name, sizeof(safe_process_name), "safe_process[%d]", pid); diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index 13fbe00f2e3..b8f51ee25ad 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -1359,6 +1359,58 @@ rename table t2 to t1; execute stmt1; deallocate prepare stmt1; drop table t2; +# +# MDEV-8960 Can't refer the same column twice in one ALTER TABLE +# +CREATE TABLE t1 ( +`a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, +ALTER COLUMN `consultant_id` DROP DEFAULT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `consultant_id` int(11) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, +ALTER COLUMN `consultant_id` SET DEFAULT 2; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `consultant_id` int(11) NOT NULL DEFAULT 2 +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, +ALTER COLUMN `consultant_id` DROP DEFAULT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `consultant_id` int(11) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, +ALTER COLUMN `consultant_id` DROP DEFAULT, +MODIFY COLUMN `consultant_id` BIGINT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `consultant_id` bigint(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +DROP TABLE t1; CREATE TABLE t1 ( id INT(11) NOT NULL, x_param INT(11) DEFAULT NULL, @@ -2125,59 +2177,7 @@ t1 CREATE TABLE `t1` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DROP TABLE t1; # -# MDEV-8960 Can't refer the same column twice in one ALTER TABLE -# -CREATE TABLE t1 ( -`a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, -ALTER COLUMN `consultant_id` DROP DEFAULT; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL, - `consultant_id` int(11) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8 -DROP TABLE t1; -CREATE TABLE t1 ( -`a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, -ALTER COLUMN `consultant_id` SET DEFAULT 2; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL, - `consultant_id` int(11) NOT NULL DEFAULT 2 -) ENGINE=MyISAM DEFAULT CHARSET=utf8 -DROP TABLE t1; -CREATE TABLE t1 ( -`a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, -ALTER COLUMN `consultant_id` DROP DEFAULT; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL, - `consultant_id` int(11) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8 -DROP TABLE t1; -CREATE TABLE t1 ( -`a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, -ALTER COLUMN `consultant_id` DROP DEFAULT, -MODIFY COLUMN `consultant_id` BIGINT; -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL, - `consultant_id` bigint(20) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8 -DROP TABLE t1; -# -# Start of 10.1 tests +# End of 10.0 tests # # # MDEV-7374 : Losing connection to MySQL while running ALTER TABLE @@ -2201,6 +2201,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; # +# End of 10.1 tests +# +# # MDEV-10421 duplicate CHECK CONSTRAINTs # CREATE TABLE t1 (a INT, b INT) engine=myisam; @@ -2272,3 +2275,6 @@ t1 CREATE TABLE `t1` ( `c` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; +# +# End of 10.2 tests +# diff --git a/mysql-test/r/cache_temporal_4265.result b/mysql-test/r/cache_temporal_4265.result index 980bb957e19..7f215de43fb 100644 --- a/mysql-test/r/cache_temporal_4265.result +++ b/mysql-test/r/cache_temporal_4265.result @@ -7,7 +7,6 @@ a 2002-03-04 Warnings: Note 1003 2000-01-01 -Note 1003 2000-01-06 set debug_dbug=''; drop table t1; create table t1 (id int not null, ut timestamp(6) not null); diff --git a/mysql-test/r/case.result b/mysql-test/r/case.result index ee2db76e517..08fa5a79743 100644 --- a/mysql-test/r/case.result +++ b/mysql-test/r/case.result @@ -228,6 +228,22 @@ a d 3 11120436154190595086 drop table t1, t2; End of 5.0 tests +# +# Bug#19875294 ASSERTION `SRC' FAILED IN MY_STRNXFRM_UNICODE +# (SIG 6 -STRINGS/CTYPE-UTF8.C:5151) +# +set @@sql_mode=''; +CREATE TABLE t1(c1 SET('','')CHARACTER SET ucs2); +Warnings: +Note 1291 Column 'c1' has duplicated value '' in SET +INSERT INTO t1 VALUES(990101.102); +Warnings: +Warning 1265 Data truncated for column 'c1' at row 1 +SELECT COALESCE(c1)FROM t1 ORDER BY 1; +COALESCE(c1) + +DROP TABLE t1; +set @@sql_mode=default; CREATE TABLE t1(a YEAR); SELECT 1 FROM t1 WHERE a=1 AND CASE 1 WHEN a THEN 1 ELSE 1 END; 1 diff --git a/mysql-test/r/cte_nonrecursive.result b/mysql-test/r/cte_nonrecursive.result index 2fceebd1971..3ad6fb8fabe 100644 --- a/mysql-test/r/cte_nonrecursive.result +++ b/mysql-test/r/cte_nonrecursive.result @@ -86,7 +86,7 @@ select * from t2,t where t2.c=t.a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where 1 PRIMARY <derived2> ref key0 key0 5 test.t2.c 2 -2 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort explain select * from t2, (select a, count(*) from t1 where b >= 'c' group by a) as t where t2.c=t.a; @@ -176,7 +176,7 @@ select * from t2 where c in (select c from t); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where 1 PRIMARY <derived2> ref key0 key0 8 test.t2.c 2 Using where; FirstMatch(t2) -2 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort explain select * from t2 where c in (select c from (select count(*) as c from t1 @@ -245,8 +245,8 @@ select * from t as r1, t as r2 where r1.a=r2.a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 8 Using where 1 PRIMARY <derived3> ref key0 key0 5 r1.a 2 -3 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary -2 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary +3 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary explain select * from (select distinct a from t1 where b >= 'c') as r1, (select distinct a from t1 where b >= 'c') as r2 @@ -370,7 +370,7 @@ select * from t2,t where t2.c=t.a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where 1 PRIMARY <derived2> ref key0 key0 5 test.t2.c 2 -2 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where +2 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where 3 UNION t2 ALL NULL NULL NULL NULL 4 Using where NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL explain @@ -598,7 +598,7 @@ select * from v2; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where 1 PRIMARY <derived3> ref key0 key0 5 test.t2.c 2 -3 SUBQUERY t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort +3 DERIVED t1 ALL NULL NULL NULL NULL 8 Using where; Using temporary; Using filesort # with clause in the specification of a view that whose definition # table alias for a with table create view v3 as @@ -1055,3 +1055,27 @@ deallocate prepare stmt1; deallocate prepare stmt2; drop view v1,v2; drop table t1,t2; +# +# MDEV-13796: UNION of two materialized CTEs +# +CREATE TABLE t1 (id int, k int); +CREATE TABLE t2 (id int); +INSERT INTO t1 VALUES (3,5), (1,7), (4,3); +INSERT INTO t2 VALUES (4), (3), (2); +WITH d1 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id), +d2 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id) +SELECT * FROM d1 UNION SELECT * FROM d2; +SUM(k) +8 +explain WITH d1 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id), +d2 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id) +SELECT * FROM d1 UNION SELECT * FROM d2; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY <derived2> ALL NULL NULL NULL NULL 9 +2 DERIVED t1 ALL NULL NULL NULL NULL 3 +2 DERIVED t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join) +4 UNION <derived3> ALL NULL NULL NULL NULL 9 +3 DERIVED t1 ALL NULL NULL NULL NULL 3 +3 DERIVED t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join) +NULL UNION RESULT <union1,4> ALL NULL NULL NULL NULL NULL +DROP TABLE t1,t2; diff --git a/mysql-test/r/cte_recursive.result b/mysql-test/r/cte_recursive.result index 946ba16ac5c..a4f32927cf1 100644 --- a/mysql-test/r/cte_recursive.result +++ b/mysql-test/r/cte_recursive.result @@ -86,7 +86,7 @@ select t2.a from t1,t2 where t1.a+1=t2.a select * from t1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 30 -2 SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where +2 DERIVED t2 ALL NULL NULL NULL NULL 5 Using where 3 UNION t1 ALL NULL NULL NULL NULL 5 3 UNION t2 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL @@ -114,7 +114,7 @@ select t2.a from t1,t2 where t1.a+1=t2.a select * from t1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5 -2 SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where +2 DERIVED t2 ALL NULL NULL NULL NULL 5 Using where 3 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 5 3 RECURSIVE UNION t2 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL @@ -691,13 +691,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 100.00 Using where 1 PRIMARY <derived3> ref key0 key0 5 c.h_id 2 100.00 1 PRIMARY <derived3> ref key0 key0 5 c.w_id 2 100.00 -3 SUBQUERY folks ALL NULL NULL NULL NULL 12 100.00 Using where +3 DERIVED folks ALL NULL NULL NULL NULL 12 100.00 Using where 4 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 2 100.00 4 RECURSIVE UNION p ALL NULL NULL NULL NULL 12 100.00 Using where; Using join buffer (flat, BNL join) 5 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 2 100.00 5 RECURSIVE UNION p ALL NULL NULL NULL NULL 12 100.00 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union3,4,5> ALL NULL NULL NULL NULL NULL NULL -2 UNCACHEABLE SUBQUERY <derived3> ALL NULL NULL NULL NULL 12 100.00 Using where +2 DERIVED <derived3> ALL NULL NULL NULL NULL 12 100.00 Using where Warnings: Note 1003 with recursive ancestor_couple_ids as (/* select#2 */ select `a`.`father` AS `h_id`,`a`.`mother` AS `w_id` from `coupled_ancestors` `a` where `a`.`father` is not null and `a`.`mother` is not null), coupled_ancestors as (/* select#3 */ select `test`.`folks`.`id` AS `id`,`test`.`folks`.`name` AS `name`,`test`.`folks`.`dob` AS `dob`,`test`.`folks`.`father` AS `father`,`test`.`folks`.`mother` AS `mother` from `test`.`folks` where `test`.`folks`.`name` = 'Me' union all /* select#4 */ select `test`.`p`.`id` AS `id`,`test`.`p`.`name` AS `name`,`test`.`p`.`dob` AS `dob`,`test`.`p`.`father` AS `father`,`test`.`p`.`mother` AS `mother` from `test`.`folks` `p` join `ancestor_couple_ids` `fa` where `test`.`p`.`id` = `fa`.`h_id` union all /* select#5 */ select `test`.`p`.`id` AS `id`,`test`.`p`.`name` AS `name`,`test`.`p`.`dob` AS `dob`,`test`.`p`.`father` AS `father`,`test`.`p`.`mother` AS `mother` from `test`.`folks` `p` join `ancestor_couple_ids` `ma` where `test`.`p`.`id` = `ma`.`w_id`)/* select#1 */ select `h`.`name` AS `name`,`h`.`dob` AS `dob`,`w`.`name` AS `name`,`w`.`dob` AS `dob` from `ancestor_couple_ids` `c` join `coupled_ancestors` `h` join `coupled_ancestors` `w` where `h`.`id` = `c`.`h_id` and `w`.`id` = `c`.`w_id` # simple mutual recursion @@ -877,7 +877,7 @@ where p.id = a.father or p.id = a.mother select * from ancestors; id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 12 100.00 -2 SUBQUERY folks ALL NULL NULL NULL NULL 12 100.00 Using where +2 DERIVED folks ALL NULL NULL NULL NULL 12 100.00 Using where 3 RECURSIVE UNION p ALL NULL NULL NULL NULL 12 100.00 3 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 12 100.00 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL @@ -1236,7 +1236,7 @@ where p.id = ma.mother select * from ancestors; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 12 -2 SUBQUERY folks ALL NULL NULL NULL NULL 12 Using where +2 DERIVED folks ALL NULL NULL NULL NULL 12 Using where 3 RECURSIVE UNION p ALL PRIMARY NULL NULL NULL 12 3 RECURSIVE UNION <derived2> ref key0 key0 5 test.p.id 2 4 RECURSIVE UNION p ALL PRIMARY NULL NULL NULL 12 @@ -1300,14 +1300,14 @@ from prev_gen select ancestors.name, ancestors.dob from ancestors; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived4> ALL NULL NULL NULL NULL 24 -4 SUBQUERY folks ALL NULL NULL NULL NULL 12 Using where +4 DERIVED folks ALL NULL NULL NULL NULL 12 Using where 6 RECURSIVE UNION <derived3> ALL NULL NULL NULL NULL 12 -5 RECURSIVE UNION <derived4> ALL NULL NULL NULL NULL 24 -NULL UNION RESULT <union4,6,5> ALL NULL NULL NULL NULL NULL -3 SUBQUERY folks ALL NULL NULL NULL NULL 12 Using where +3 DERIVED folks ALL NULL NULL NULL NULL 12 Using where 2 RECURSIVE UNION folks ALL PRIMARY NULL NULL NULL 12 2 RECURSIVE UNION <derived3> ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union3,2> ALL NULL NULL NULL NULL NULL +5 RECURSIVE UNION <derived4> ALL NULL NULL NULL NULL 24 +NULL UNION RESULT <union4,6,5> ALL NULL NULL NULL NULL NULL explain FORMAT=JSON with recursive prev_gen @@ -1353,7 +1353,6 @@ EXPLAIN { "query_block": { "select_id": 4, - "operation": "UNION", "table": { "table_name": "folks", "access_type": "ALL", @@ -1382,7 +1381,6 @@ EXPLAIN { "query_block": { "select_id": 3, - "operation": "UNION", "table": { "table_name": "folks", "access_type": "ALL", @@ -1489,7 +1487,6 @@ EXPLAIN { "query_block": { "select_id": 3, - "operation": "UNION", "table": { "table_name": "v", "access_type": "ALL", @@ -1757,7 +1754,6 @@ EXPLAIN { "query_block": { "select_id": 2, - "operation": "UNION", "table": { "table_name": "t1", "access_type": "ALL", @@ -1840,7 +1836,7 @@ select t2.a from t1,t2 where t1.a+1=t2.a select * from t1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5 -2 SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where +2 DERIVED t2 ALL NULL NULL NULL NULL 5 Using where 4 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 5 4 RECURSIVE UNION t2 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join) NULL UNION RESULT <union2,4> ALL NULL NULL NULL NULL NULL @@ -2387,7 +2383,6 @@ ANALYZE { "query_block": { "select_id": 2, - "operation": "UNION", "table": { "message": "No tables used" } @@ -2794,7 +2789,7 @@ SELECT c1 FROM t, cte ) SELECT COUNT(*) FROM cte; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 -2 SUBQUERY t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 +2 DERIVED t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 3 RECURSIVE UNION t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 3 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 Using join buffer (flat, BNL join) NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL 0.00 NULL NULL @@ -2812,7 +2807,7 @@ SELECT c2 FROM t, cte ) SELECT COUNT(*) FROM cte; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra 1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 -2 SUBQUERY t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 +2 DERIVED t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 3 RECURSIVE UNION t ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 3 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 4 4.00 100.00 100.00 Using join buffer (flat, BNL join) NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL 0.00 NULL NULL diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result index a6cea80fef5..5244d6eb333 100644 --- a/mysql-test/r/ctype_gbk.result +++ b/mysql-test/r/ctype_gbk.result @@ -5078,6 +5078,24 @@ E05B DROP TABLE t1; # Start of ctype_E05C.inc # +# MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant +# +SET NAMES latin1; +CREATE TABLE t1 (a TEXT CHARACTER SET gbk); +INSERT INTO t1 VALUES (0xEE5D); +SELECT a<>0xEE5D AS a FROM t1; +a +0 +CREATE VIEW v1 AS SELECT a<>0xEE5D AS a FROM t1; +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` <> 0xee5d AS `a` from `t1` latin1 latin1_swedish_ci +SELECT * FROM v1; +a +0 +DROP VIEW v1; +DROP TABLE t1; +# # End of 10.0 tests # # diff --git a/mysql-test/r/ctype_latin1.result b/mysql-test/r/ctype_latin1.result index 94b25849a2a..f9e0ae5a455 100644 --- a/mysql-test/r/ctype_latin1.result +++ b/mysql-test/r/ctype_latin1.result @@ -8005,6 +8005,24 @@ SELECT _latin1 0x7E, _latin1 X'7E', _latin1 B'01111110'; _latin1 0x7E _latin1 X'7E' _latin1 B'01111110' ~ ~ ~ # +# MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant +# +SET NAMES latin1; +CREATE TABLE t1 (a TEXT CHARACTER SET latin1); +INSERT INTO t1 VALUES (0xC0); +SELECT a<>0xEE5D AS a FROM t1; +a +1 +CREATE VIEW v1 AS SELECT a<>0xC0 AS a FROM t1; +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` <> 0xc0 AS `a` from `t1` latin1 latin1_swedish_ci +SELECT * FROM v1; +a +0 +DROP VIEW v1; +DROP TABLE t1; +# # End of 10.0 tests # # diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result index 5b914258515..fcc8f27010c 100644 --- a/mysql-test/r/ctype_ucs.result +++ b/mysql-test/r/ctype_ucs.result @@ -4564,6 +4564,38 @@ NO_ENGINE_SUBSTITUTION SET sql_mode=DEFAULT; SET NAMES utf8; # +# MDEV-13972 crash in Item_func_sec_to_time::get_date +# +SELECT SEC_TO_TIME(CONVERT(900*24*60*60 USING ucs2)); +SEC_TO_TIME(CONVERT(900*24*60*60 USING ucs2)) +838:59:59.999999 +Warnings: +Warning 1292 Truncated incorrect time value: '77760000' +# +# MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +# +set sql_mode=""; +CREATE TABLE t1 (c1 VARCHAR(32766) CHARACTER SET ucs2); +DESCRIBE t1; +Field Type Null Key Default Extra +c1 varchar(32766) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(32767) CHARACTER SET ucs2); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 text YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(32768) CHARACTER SET ucs2); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 mediumtext YES NULL +DROP TABLE t1; +set sql_mode=default; +# # End of 5.5 tests # # diff --git a/mysql-test/r/ctype_utf32.result b/mysql-test/r/ctype_utf32.result index 0a4a49dd39e..59ce4c2f445 100644 --- a/mysql-test/r/ctype_utf32.result +++ b/mysql-test/r/ctype_utf32.result @@ -1680,6 +1680,23 @@ NO_ENGINE_SUBSTITUTION SET sql_mode=DEFAULT; SET NAMES utf8; # +# MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +# +set sql_mode=''; +CREATE TABLE t1 (c1 VARCHAR(16383) CHARACTER SET utf32); +DESCRIBE t1; +Field Type Null Key Default Extra +c1 varchar(16383) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(16384) CHARACTER SET utf32); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 mediumtext YES NULL +DROP TABLE t1; +set sql_mode=default; +# # End of 5.5 tests # # diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index ae5466ea776..7381c1c4004 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -6278,6 +6278,30 @@ Warnings: SET sql_mode=DEFAULT; DROP TABLE t1; # +# MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +# +SET sql_mode=''; +CREATE TABLE t1 (c1 VARCHAR(21844) CHARACTER SET utf8); +DESCRIBE t1; +Field Type Null Key Default Extra +c1 varchar(21844) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(21845) CHARACTER SET utf8); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 text YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(21846) CHARACTER SET utf8); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 mediumtext YES NULL +DROP TABLE t1; +SET sql_mode=default; +# # End of 5.5 tests # # diff --git a/mysql-test/r/delete_returning.result b/mysql-test/r/delete_returning.result index 0618b495a53..3a95de0cdca 100644 --- a/mysql-test/r/delete_returning.result +++ b/mysql-test/r/delete_returning.result @@ -199,3 +199,15 @@ i 2 DROP PROCEDURE p1; DROP TABLE t1; +# +# MDEV-13776: DELETE ... RETURNING with sql_mode='ONLY_FULL_GROUP_BY' +# +set @sql_mode_save= @@sql_mode; +set sql_mode='ONLY_FULL_GROUP_BY'; +CREATE TABLE t1 (id INT); +INSERT INTO t1 VALUE(1),(2),(3); +DELETE FROM t1 WHERE id > 2 RETURNING *; +id +3 +set sql_mode=@sql_mode_save; +DROP TABLE t1; diff --git a/mysql-test/r/empty_string_literal.result b/mysql-test/r/empty_string_literal.result new file mode 100644 index 00000000000..2ca491a7dd8 --- /dev/null +++ b/mysql-test/r/empty_string_literal.result @@ -0,0 +1,181 @@ +USE test; +# +# MDEV-14013 : sql_mode=EMPTY_STRING_IS_NULL +# +set @mode='EMPTY_STRING_IS_NULL'; +SET SESSION character_set_connection=latin2; +SET SESSION character_set_client=cp1250; +# +# Test litteral +# +SET sql_mode=@mode; +select @@sql_mode; +@@sql_mode +EMPTY_STRING_IS_NULL +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); +NULL CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x') +NULL latin2 NULL binary NULL latin2 x latin2 +SELECT CHARSET(NULLIF('','')),NULLIF('',''); +CHARSET(NULLIF('','')) NULLIF('','') +latin2 NULL +SET sql_mode=default; +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); + CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x') + latin2 NULL binary NULL latin2 x latin2 +SELECT CHARSET(NULLIF('','')),NULLIF('',''); +CHARSET(NULLIF('','')) NULLIF('','') +latin2 NULL +# +# Test NCHAR litteral +# +SET sql_mode=@mode; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); +NULL CHARSET(N'') x CHARSET(N'x') +NULL utf8 x utf8 +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); +CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'') +utf8 NULL +SET sql_mode=default; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); + CHARSET(N'') x CHARSET(N'x') + utf8 x utf8 +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); +CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'') +utf8 NULL +# +# Test CHARSET prefix litteral +# +SET sql_mode=@mode; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); +NULL CHARSET(_cp1250 '') x CHARSET(_cp1250 'x') +NULL cp1250 x cp1250 +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); +CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '') +cp1250 NULL +SET sql_mode=default; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); + CHARSET(_cp1250 '') x CHARSET(_cp1250 'x') + cp1250 x cp1250 +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); +CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '') +cp1250 NULL +SET sql_mode=@mode; +# +# Test litteral concat +# +SELECT 'a' 'b'; +a +ab +SELECT 'a' ''; +a +a +SELECT '' 'b'; +b +b +SELECT '' ''; +NULL +NULL +SELECT '' 'b' 'c'; +b +bc +SELECT '' '' 'c'; +c +c +SELECT 'a' '' 'c'; +a +ac +SELECT 'a' '' ''; +a +a +SELECT '' '' ''; +NULL +NULL +SELECT '' '' '',CHARSET('' '' ''); +NULL CHARSET('' '' '') +NULL latin2 +SELECT _latin1'' '' '',CHARSET(_latin1'' '' ''); +NULL CHARSET(_latin1'' '' '') +NULL latin1 +SELECT N'' '' '',CHARSET(N'' '' ''); +NULL CHARSET(N'' '' '') +NULL utf8 +# +# UNION - implicit group by +# +SELECT 1, null +UNION +SELECT 1 , '' +ORDER BY 1; +1 NULL +1 NULL +SELECT 1, null +UNION +SELECT 1 , N'' +ORDER BY 1; +1 NULL +1 NULL +SELECT 1, null +UNION +SELECT 1 , _cp1250 '' +ORDER BY 1; +1 NULL +1 NULL +SELECT NULLIF(_cp1250 '',_cp1250 '') +UNION +SELECT NULLIF(N'',N''); +NULLIF(_cp1250 '',_cp1250 '') +NULL +SELECT 1 , _latin2 '' +UNION +SELECT 1 , _cp1250 ''; +ERROR HY000: Illegal mix of collations (latin2_general_ci,IGNORABLE) and (cp1250_general_ci,IGNORABLE) for operation 'UNION' +SELECT 1, null +UNION +SELECT 1 , '' +UNION +SELECT 1 , N''; +1 NULL +1 NULL +CREATE TABLE t1 (c1 INT,c2 VARCHAR(10)); +INSERT INTO t1 VALUES (1,'one'); +INSERT INTO t1 VALUES (1,''); +INSERT INTO t1 VALUES (1,null); +# +# Test in a view +# +CREATE VIEW v1 +AS SELECT c1, c2 +FROM t1 +UNION +SELECT c1 , '' + FROM t1 +ORDER BY 1,2; +SELECT * FROM v1; +c1 c2 +1 NULL +1 one +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`c1` AS `c1`,`t1`.`c2` AS `c2` from `t1` union select `t1`.`c1` AS `c1`,NULL AS `NULL` from `t1` order by 1,2 cp1250 latin2_general_ci +DROP VIEW v1; +DROP TABLE t1; +EXPLAIN EXTENDED SELECT ''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS `NULL` +EXPLAIN EXTENDED SELECT _latin1''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS `NULL` +EXPLAIN EXTENDED SELECT N''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS `NULL` +EXPLAIN EXTENDED SELECT '' ''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS `NULL` diff --git a/mysql-test/r/errors.result b/mysql-test/r/errors.result index 3c849d5a649..bcc171e404d 100644 --- a/mysql-test/r/errors.result +++ b/mysql-test/r/errors.result @@ -27,7 +27,7 @@ create table t1 (a int(256)); ERROR 42000: Display width out of range for 'a' (max = 255) set sql_mode='traditional'; create table t1 (a varchar(66000)); -ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead +ERROR 42000: Column length too big for column 'a' (max = 65532); use BLOB or TEXT instead set sql_mode=default; CREATE TABLE t1 (a INT); SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0))); diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result index f12fc40e9aa..692806c7cac 100644 --- a/mysql-test/r/func_in.result +++ b/mysql-test/r/func_in.result @@ -813,9 +813,17 @@ PREPARE s FROM "SELECT 1 FROM t1 WHERE 1 < ALL (SELECT @:= (1 IN (SELECT 1 FROM EXECUTE s; 1 DROP TABLE t1; +# # End of 5.3 tests # -# Start of 10.0 tests +create table t1 (a int); +insert t1 values (1),(2),(3); +select * from t1 where 1 in (a, name_const('a', null)); +a +1 +drop table t1; +# +# End of 5.5 tests # # # MDEV-10020 InnoDB NOT IN Query Crash When One Item Is NULL @@ -831,7 +839,7 @@ SELECT * FROM t1 WHERE b NOT IN (NULL, '', 'A'); a b DROP TABLE t1; # -# Start of 10.1 tests +# End of 10.0 tests # # # MDEV-8755 Equal field propagation is not performed any longer for the IN list when multiple comparison types diff --git a/mysql-test/r/func_json.result b/mysql-test/r/func_json.result index b1d3d96aa73..15e4fbec605 100644 --- a/mysql-test/r/func_json.result +++ b/mysql-test/r/func_json.result @@ -152,6 +152,9 @@ json_contains('[{"abc":"def", "def":"abc"}]', '["foo","bar"]') select json_contains('[{"abc":"def", "def":"abc"}, "bar"]', '["bar", {}]'); json_contains('[{"abc":"def", "def":"abc"}, "bar"]', '["bar", {}]') 1 +select json_contains('[{"a":"b"},{"c":"d"}]','{"c":"d"}'); +json_contains('[{"a":"b"},{"c":"d"}]','{"c":"d"}') +1 select json_contains_path('{"key1":1, "key2":[2,3]}', "oNE", "$.key2[1]"); json_contains_path('{"key1":1, "key2":[2,3]}', "oNE", "$.key2[1]") 1 @@ -402,6 +405,13 @@ abc select json_unquote('abc'); json_unquote('abc') abc +create table t1 (c VARCHAR(8)) DEFAULT CHARSET=latin1; +insert into t1 values ('abc'),('def'); +select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1; +fld +{"foo": "{\"bar\": \"abc\"}", "qux": "abc"} +{"foo": "{\"bar\": \"def\"}", "qux": "def"} +drop table t1; select json_object("a", json_object("b", "abcd")); json_object("a", json_object("b", "abcd")) {"a": {"b": "abcd"}} @@ -443,6 +453,11 @@ json_length('{"a": 1, "b": {"c": 30}}', '$.b') select json_length('{"a": 1, "b": {"c": 30}}'); json_length('{"a": 1, "b": {"c": 30}}') 2 +select json_length('{}{'); +json_length('{}{') +NULL +Warnings: +Warning 4038 Syntax error in JSON text in argument 1 to function 'json_length' at position 3 create table json (j INT); show create table json; Table Create Table @@ -705,6 +720,11 @@ json_data SELECT JSON_OBJECT("user","Jožko MrkviÄká") as json_data; json_data {"user": "Jožko MrkviÄká"} +select json_contains_path('{"foo":"bar"}', 'one', '$[]'); +json_contains_path('{"foo":"bar"}', 'one', '$[]') +NULL +Warnings: +Warning 4042 Syntax error in JSON path in argument 3 to function 'json_contains_path' at position 3 # # Start of 10.3 tests # diff --git a/mysql-test/r/func_regexp_pcre.result b/mysql-test/r/func_regexp_pcre.result index ece2019ef83..e030df99756 100644 --- a/mysql-test/r/func_regexp_pcre.result +++ b/mysql-test/r/func_regexp_pcre.result @@ -885,32 +885,32 @@ SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral, 1 Warnings: Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp -SELECT CONCAT(REPEAT('100,',133),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; -CONCAT(REPEAT('100,',133),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$' +SELECT CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; +CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$' 1 SELECT CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$' 0 Warnings: Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp -SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); -REGEXP_INSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$') +SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); +REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$') 1 SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$') 0 Warnings: Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp -SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); -LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')) -535 +SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); +LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')) +243 SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')) 0 Warnings: Warning 1139 Got error 'pcre_exec: recursion limit of NUM exceeded' from regexp -SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); -LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')) +SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); +LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')) 0 SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')) diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 9da6caef8e6..e710f3ac438 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -2772,7 +2772,33 @@ SELECT 1 MOD ADDTIME( '13:58:57', '00:00:01' ) + 2; 1 MOD ADDTIME( '13:58:57', '00:00:01' ) + 2 3 # -# Start of 10.0 tests +# MDEV-11819 NO_ZERO_IN_DATE: Incorrect generated column value +# +SET sql_mode='NO_ZERO_IN_DATE'; +CREATE TABLE t1 (a TIME(6)); +INSERT INTO t1 SELECT timediff(timestamp'2008-12-31 23:59:59.000001',timestamp'2008-12-30 01:01:01.000002'); +SELECT * FROM t1; +a +46:58:57.999999 +DROP TABLE t1; +SET sql_mode=DEFAULT; +# +# MDEV-13972 crash in Item_func_sec_to_time::get_date +# +DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(UUID())))); +DO TO_DAYS(SEC_TO_TIME(MAKEDATE('',RAND(~(''))))); +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '' +Warning 1292 Truncated incorrect INTEGER value: '' +Warning 1292 Truncated incorrect INTEGER value: '' +Warning 1292 Truncated incorrect time value: '20000101' +SELECT SEC_TO_TIME(MAKEDATE(0,RAND(~0))); +SEC_TO_TIME(MAKEDATE(0,RAND(~0))) +838:59:59 +Warnings: +Warning 1292 Truncated incorrect time value: '20000101' +# +# End of 5.5 tests # # # MDEV-8205 timediff returns null when comparing decimal time to time string value diff --git a/mysql-test/r/gis-precise.result b/mysql-test/r/gis-precise.result index f816278a0ba..292dfe0462c 100644 --- a/mysql-test/r/gis-precise.result +++ b/mysql-test/r/gis-precise.result @@ -485,6 +485,25 @@ ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')); ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')) 0 +SELECT ST_RELATE( +ST_DIFFERENCE( +GEOMETRYFROMTEXT(' + MULTILINESTRING( + ( 12841 36140, 8005 31007, 26555 31075, 52765 41191, + 28978 6548, 45720 32057, 53345 3221 ), + ( 8304 59107, 25233 31592, 40502 25303, 8205 42940 ), + ( 7829 7305, 58841 56759, 64115 8512, 37562 54145, 2210 14701 ), + ( 20379 2805, 40807 27770, 28147 14883, 26439 29383, 55663 5086 ), + ( 35944 64702, 14433 23728, 49317 26241, 790 16941 ) + ) + '), +GEOMETRYFROMTEXT('POINT(46061 13545)') +), +GEOMETRYFROMTEXT('POINT(4599 60359)'), +'F*FFFF**F' + ) as relate_res; +relate_res +0 DROP TABLE IF EXISTS p1; CREATE PROCEDURE p1(dist DOUBLE, geom TEXT) BEGIN diff --git a/mysql-test/r/gis2.result b/mysql-test/r/gis2.result index 214431e1d2d..c0b476e080b 100644 --- a/mysql-test/r/gis2.result +++ b/mysql-test/r/gis2.result @@ -12,3 +12,27 @@ WHERE ST_Contains(point_data, GeomFromText('Point(38.0248492 23.8512726)')); id 2 DROP TABLE t1; +create table t1 (p point default "qwer"); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +create table t1 (p point default 0); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +create table t1 (p point not null default st_geometryfromtext('point 0)')); +ERROR 42000: Invalid default value for 'p' +create table t1 (p point not null default st_geometryfromtext('point(0 0)')); +insert into t1 values(default); +select st_astext(p) from t1; +st_astext(p) +POINT(0 0) +drop table t1; +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))); +set timestamp=10; +insert into t1 values(default); +ERROR 22007: Incorrect POINT value: 'GEOMETRYCOLLECTION' for column 'p' at row 1 +drop table t1; +SET timestamp=default; +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))); +set timestamp=10; +alter table t1 add column i int; +ERROR 22007: Incorrect POINT value: 'GEOMETRYCOLLECTION' for column 'p' at row 1 +drop table t1; +SET timestamp=default; diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 00ec9d9f39c..1c073881a9d 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -659,7 +659,7 @@ proc body longblob proc definer char(141) proc created timestamp proc modified timestamp -proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') +proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') proc comment text proc character_set_client char(32) proc collation_connection char(32) @@ -2140,3 +2140,35 @@ drop database db1; connection default; disconnect con1; set global sql_mode=default; +USE test; +# +# End of 10.0 tests +# +# +# Start of 10.1 tests +# +# +# MDEV-13242 Wrong results for queries with row constructors and information_schema +# +CREATE TABLE tt1(c1 INT); +CREATE TABLE tt2(c2 INT); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt1', 'c1')); +count(*) +1 +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt2', 'c2')); +count(*) +1 +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')); +count(*) +2 +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (SELECT 'tt1','c1' FROM dual UNION SELECT 'tt2', 'c2' FROM dual); +count(*) +2 +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name='tt1' AND column_name='c1') OR (table_name='tt2' AND column_name='c2'); +count(*) +2 +SELECT column_name FROM information_schema.columns WHERE (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')) ORDER BY column_name; +column_name +c1 +c2 +DROP TABLE tt1, tt2; diff --git a/mysql-test/r/mdev13607.result b/mysql-test/r/mdev13607.result new file mode 100644 index 00000000000..08848bc645b --- /dev/null +++ b/mysql-test/r/mdev13607.result @@ -0,0 +1,469 @@ +# +# Bug mdev-13607: overflow of current_record_count +# +CREATE TABLE t1 (id INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1),(2),(3),(4),(5),(6),(7),(8),(9),(10), +(11),(12),(13),(14),(15),(16),(17),(18),(19),(20), +(21),(22),(23),(24),(25),(26),(27),(28),(29),(30), +(31),(32),(33),(34),(35),(36),(37),(38),(39),(40), +(41),(42),(43),(44),(45),(46),(47),(48),(49),(50); +CREATE TABLE t2 (id INT) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2); +CREATE TABLE t3 (id INT) ENGINE=InnoDB; +INSERT INTO t3 VALUES (1),(2); +ANALYZE TABLE t1, t2, t3; +Table Op Msg_type Msg_text +test.t1 analyze status OK +test.t2 analyze status OK +test.t3 analyze status OK +explain SELECT * FROM +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_1 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_2 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_3 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_4 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_5 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_6 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_7 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_8 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_9 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_10 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_11 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_12 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_13 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_14 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_15 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_16 +; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY r1 ALL NULL NULL NULL NULL 2 +1 PRIMARY d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +1 PRIMARY r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +1 PRIMARY <derived3> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived4> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived5> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived6> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived7> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived8> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived9> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived10> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived11> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived12> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived13> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived14> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived15> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived16> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +1 PRIMARY <derived17> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join) +17 DERIVED r1 ALL NULL NULL NULL NULL 2 +17 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +17 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +17 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r1 ALL NULL NULL NULL NULL 2 +16 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +16 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +16 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r1 ALL NULL NULL NULL NULL 2 +15 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +15 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +15 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r1 ALL NULL NULL NULL NULL 2 +14 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +14 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +14 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r1 ALL NULL NULL NULL NULL 2 +13 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +13 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +13 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r1 ALL NULL NULL NULL NULL 2 +12 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +12 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +12 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r1 ALL NULL NULL NULL NULL 2 +11 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +11 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +11 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r1 ALL NULL NULL NULL NULL 2 +10 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +10 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +10 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r1 ALL NULL NULL NULL NULL 2 +9 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +9 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +9 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r1 ALL NULL NULL NULL NULL 2 +8 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +8 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +8 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r1 ALL NULL NULL NULL NULL 2 +7 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +7 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +7 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r1 ALL NULL NULL NULL NULL 2 +6 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +6 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +6 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r1 ALL NULL NULL NULL NULL 2 +5 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +5 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +5 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r1 ALL NULL NULL NULL NULL 2 +4 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +4 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +4 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r1 ALL NULL NULL NULL NULL 2 +3 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +3 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d5 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d6 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED r8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED d8 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p1 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p2 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p3 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p4 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p5 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p6 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +3 DERIVED p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join) +DROP TABLE t1,t2,t3; diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 78eb374b142..f20a08d690a 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -1717,8 +1717,16 @@ t1 CREATE TABLE `t1` ( `v` mediumtext CHARACTER SET utf8 DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; +set statement sql_mode='' for create table t1 (v varchar(65535)); -ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs +Warnings: +Note 1246 Converting column 'v' from VARCHAR to TEXT +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `v` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; set storage_engine=MyISAM; set @save_concurrent_insert=@@concurrent_insert; set global concurrent_insert=1; diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index 13f7507d4cb..0037511b741 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -1145,7 +1145,8 @@ The following options may be given as the first argument: NO_ZERO_DATE, ALLOW_INVALID_DATES, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER, HIGH_NOT_PRECEDENCE, - NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH + NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH, + EMPTY_STRING_IS_NULL --stack-trace Print a symbolic stack trace on failure (Defaults to on; use --skip-stack-trace to disable.) --standard-compliant-cte diff --git a/mysql-test/r/partition_datatype.result b/mysql-test/r/partition_datatype.result index f0921a2097c..2e518c194f0 100644 --- a/mysql-test/r/partition_datatype.result +++ b/mysql-test/r/partition_datatype.result @@ -312,14 +312,18 @@ select * from t1 where a = 'bbbb'; a bbbb drop table t1; +set sql_mode=''; create table t1 (a varchar(3070)) partition by key (a); ERROR HY000: The total length of the partitioning fields is too large +create table t1 (a varchar(65532) not null) partition by key (a); +ERROR HY000: The total length of the partitioning fields is too large create table t1 (a varchar(65533)) partition by key (a); -ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs +ERROR HY000: A BLOB field is not allowed in partition function create table t1 (a varchar(65534) not null) partition by key (a); -ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs +ERROR HY000: A BLOB field is not allowed in partition function create table t1 (a varchar(65535)) partition by key (a); -ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs +ERROR HY000: A BLOB field is not allowed in partition function +set sql_mode=default; create table t1 (a bit(27), primary key (a)) engine=myisam partition by hash (a) (partition p0, partition p1, partition p2); diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index 567be0d0d3f..4cb5bb79982 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -4202,6 +4202,149 @@ Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`c` AS `c` from `test`.`t1` where 0 deallocate prepare stmt2; drop table t1; +# +# MDEV-9208: Function->Function->View = Mysqld segfault +# (Server crashes in Dependency_marker::visit_field on 2nd +# execution with merged subquery) +# +CREATE TABLE t1 (i1 INT); +insert into t1 values(1),(2); +CREATE TABLE t2 (i2 INT); +insert into t2 values(1),(2); +prepare stmt from " + select 1 from ( + select + if (i1<0, 0, 0) as f1, + (select f1) as f2 + from t1, t2 + ) sq +"; +execute stmt; +1 +1 +1 +1 +1 +execute stmt; +1 +1 +1 +1 +1 +drop table t1,t2; +# +# MDEV-9619: Assertion `null_ref_table' failed in virtual +# table_map Item_direct_view_ref::used_tables() const on 2nd +# execution of PS +# +CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM; +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1; +INSERT INTO t1 VALUES ('a'),('b'); +CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM; +INSERT INTO t2 VALUES ('c'),('d'); +PREPARE stmt FROM "SELECT * FROM v1 WHERE f1 = SOME ( SELECT f2 FROM t2 )"; +EXECUTE stmt; +f1 +EXECUTE stmt; +f1 +insert into t1 values ('c'); +EXECUTE stmt; +f1 +c +EXECUTE stmt; +f1 +c +deallocate prepare stmt; +drop view v1; +drop table t1,t2; +CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM; +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1; +INSERT INTO t1 VALUES ('a'),('b'); +CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM; +INSERT INTO t2 VALUES ('c'),('d'); +PREPARE stmt FROM "SELECT * FROM v1 WHERE (f1,f1) = SOME ( SELECT f2,f2 FROM t2 )"; +EXECUTE stmt; +f1 +EXECUTE stmt; +f1 +insert into t1 values ('c'); +EXECUTE stmt; +f1 +c +EXECUTE stmt; +f1 +c +deallocate prepare stmt; +drop view v1; +drop table t1,t2; +CREATE TABLE t1 (column1 INT) ENGINE=MyISAM; +INSERT INTO t1 VALUES (3),(9); +CREATE TABLE t2 (column2 INT) ENGINE=MyISAM; +INSERT INTO t2 VALUES (1),(4); +CREATE TABLE t3 (column3 INT) ENGINE=MyISAM; +INSERT INTO t3 VALUES (6),(8); +CREATE TABLE t4 (column4 INT) ENGINE=MyISAM; +INSERT INTO t4 VALUES (2),(5); +PREPARE stmt FROM " +SELECT ( + SELECT MAX( table1.column1 ) AS field1 + FROM t1 AS table1 + WHERE (111,table3.column3) IN ( SELECT 111,table2.column2 AS field2 FROM t2 AS table2 ) +) AS sq +FROM t3 AS table3, t4 AS table4 GROUP BY sq +"; +EXECUTE stmt; +sq +NULL +EXECUTE stmt; +sq +NULL +deallocate prepare stmt; +drop table t1,t2,t3,t4; +create table t1 (a int, b int, c int); +create table t2 (x int, y int, z int); +create table t3 as select * from t1; +insert into t1 values (1,2,3),(4,5,6),(100,200,300),(400,500,600); +insert into t2 values (1,2,3),(7,8,9),(100,200,300),(400,500,600); +insert into t3 values (1,2,3),(11,12,13),(100,0,0),(400,500,600); +set @optimizer_switch_save=@@optimizer_switch; +set @join_cache_level_save=@@join_cache_level; +set optimizer_switch='materialization=off'; +set join_cache_level=0; +select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z); +a b c +1 2 3 +400 500 600 +prepare stmt from "select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z)"; +EXECUTE stmt; +a b c +1 2 3 +400 500 600 +EXECUTE stmt; +a b c +1 2 3 +400 500 600 +create view v1 as select * from t1; +create view v2 as select * from t2; +create view v3 as select * from t3; +select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z); +a b c +1 2 3 +400 500 600 +prepare stmt from "select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z)"; +EXECUTE stmt; +a b c +1 2 3 +400 500 600 +EXECUTE stmt; +a b c +1 2 3 +400 500 600 +set optimizer_switch=@optimizer_switch_save; +set join_cache_level=@join_cache_level_save; +deallocate prepare stmt; +drop view v1,v2,v3; +drop table t1,t2,t3; # End of 5.5 tests # # Start of 10.2 tests diff --git a/mysql-test/r/range_vs_index_merge.result b/mysql-test/r/range_vs_index_merge.result index 6813c40a5cf..bc46a4fdd0b 100644 --- a/mysql-test/r/range_vs_index_merge.result +++ b/mysql-test/r/range_vs_index_merge.result @@ -1807,4 +1807,85 @@ id state capital 7 Pennsylvania Harrisburg 8 Virginia Richmond DROP TABLE t1; +# +# mdev-11574: do not build index merge of two indexes when +# one index is an infix of the other index +# +set names utf8; +CREATE DATABASE world; +use world; +CREATE TABLE Country ( +Code char(3) NOT NULL default '', +Name char(52) NOT NULL default '', +SurfaceArea float(10,2) NOT NULL default '0.00', +Population int(11) NOT NULL default '0', +Capital int(11) default NULL, +PRIMARY KEY (Code), +UNIQUE INDEX (Name) +); +CREATE TABLE City ( +ID int(11) NOT NULL auto_increment, +Name char(35) NOT NULL default '', +Country char(3) NOT NULL default '', +Population int(11) NOT NULL default '0', +PRIMARY KEY (ID), +INDEX (Population), +INDEX (Country) +); +CREATE TABLE CountryLanguage ( +Country char(3) NOT NULL default '', +Language char(30) NOT NULL default '', +Percentage float(3,1) NOT NULL default '0.0', +PRIMARY KEY (Country, Language), +INDEX (Percentage) +); +DROP INDEX Country ON City; +CREATE INDEX CountryName ON City(Country,Name); +CREATE INDEX Name ON City(Name); +select * from City +where +Country='FIN' AND Name IN ('Lahti','Imatra') OR +Country='RUS' AND Name IN ('St Petersburg', 'Moscow') OR +Country='SWE' AND Name IN ('Stockholm', 'Uppsala') OR +Country='DEU' AND Name IN ('Berlin', 'Bonn') OR +Country='BEL' AND Name IN ('Antwerpen', 'Gent') OR +Country='PRT' AND Name IN ('Braga', 'Porto') OR +Country='FRA' AND Name IN ('Paris', 'Marcel') OR +Country='POL' AND Name IN ('Warszawa', 'Wroclaw') OR +Country='NOR' AND Name IN ('Oslo', 'Bergen') OR +Country='ITA' AND Name IN ('Napoli', 'Venezia'); +ID Name Country Population +175 Antwerpen BEL 446525 +176 Gent BEL 224180 +3068 Berlin DEU 3386667 +3087 Bonn DEU 301048 +3242 Lahti FIN 96921 +2974 Paris FRA 2125246 +1466 Napoli ITA 1002619 +1474 Venezia ITA 277305 +2808 Bergen NOR 230948 +2807 Oslo NOR 508726 +2928 Warszawa POL 1615369 +2931 Wroclaw POL 636765 +2918 Braga PRT 90535 +2915 Porto PRT 273060 +3580 Moscow RUS 8389200 +3581 St Petersburg RUS 4694000 +3048 Stockholm SWE 750348 +3051 Uppsala SWE 189569 +explain select * from City +where +Country='FIN' AND Name IN ('Lahti','Imatra') OR +Country='RUS' AND Name IN ('St Petersburg', 'Moscow') OR +Country='SWE' AND Name IN ('Stockholm', 'Uppsala') OR +Country='DEU' AND Name IN ('Berlin', 'Bonn') OR +Country='BEL' AND Name IN ('Antwerpen', 'Gent') OR +Country='PRT' AND Name IN ('Braga', 'Porto') OR +Country='FRA' AND Name IN ('Paris', 'Marcel') OR +Country='POL' AND Name IN ('Warszawa', 'Wroclaw') OR +Country='NOR' AND Name IN ('Oslo', 'Bergen') OR +Country='ITA' AND Name IN ('Napoli', 'Venezia'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE City range CountryName,Name CountryName 38 NULL 22 Using index condition; Using where +DROP DATABASE world; set session optimizer_switch='index_merge_sort_intersection=default'; diff --git a/mysql-test/r/range_vs_index_merge_innodb.result b/mysql-test/r/range_vs_index_merge_innodb.result index 0c3b682b197..ce90f522d6e 100644 --- a/mysql-test/r/range_vs_index_merge_innodb.result +++ b/mysql-test/r/range_vs_index_merge_innodb.result @@ -1808,5 +1808,86 @@ id state capital 7 Pennsylvania Harrisburg 8 Virginia Richmond DROP TABLE t1; +# +# mdev-11574: do not build index merge of two indexes when +# one index is an infix of the other index +# +set names utf8; +CREATE DATABASE world; +use world; +CREATE TABLE Country ( +Code char(3) NOT NULL default '', +Name char(52) NOT NULL default '', +SurfaceArea float(10,2) NOT NULL default '0.00', +Population int(11) NOT NULL default '0', +Capital int(11) default NULL, +PRIMARY KEY (Code), +UNIQUE INDEX (Name) +); +CREATE TABLE City ( +ID int(11) NOT NULL auto_increment, +Name char(35) NOT NULL default '', +Country char(3) NOT NULL default '', +Population int(11) NOT NULL default '0', +PRIMARY KEY (ID), +INDEX (Population), +INDEX (Country) +); +CREATE TABLE CountryLanguage ( +Country char(3) NOT NULL default '', +Language char(30) NOT NULL default '', +Percentage float(3,1) NOT NULL default '0.0', +PRIMARY KEY (Country, Language), +INDEX (Percentage) +); +DROP INDEX Country ON City; +CREATE INDEX CountryName ON City(Country,Name); +CREATE INDEX Name ON City(Name); +select * from City +where +Country='FIN' AND Name IN ('Lahti','Imatra') OR +Country='RUS' AND Name IN ('St Petersburg', 'Moscow') OR +Country='SWE' AND Name IN ('Stockholm', 'Uppsala') OR +Country='DEU' AND Name IN ('Berlin', 'Bonn') OR +Country='BEL' AND Name IN ('Antwerpen', 'Gent') OR +Country='PRT' AND Name IN ('Braga', 'Porto') OR +Country='FRA' AND Name IN ('Paris', 'Marcel') OR +Country='POL' AND Name IN ('Warszawa', 'Wroclaw') OR +Country='NOR' AND Name IN ('Oslo', 'Bergen') OR +Country='ITA' AND Name IN ('Napoli', 'Venezia'); +ID Name Country Population +175 Antwerpen BEL 446525 +176 Gent BEL 224180 +3068 Berlin DEU 3386667 +3087 Bonn DEU 301048 +3242 Lahti FIN 96921 +2974 Paris FRA 2125246 +1466 Napoli ITA 1002619 +1474 Venezia ITA 277305 +2808 Bergen NOR 230948 +2807 Oslo NOR 508726 +2928 Warszawa POL 1615369 +2931 Wroclaw POL 636765 +2918 Braga PRT 90535 +2915 Porto PRT 273060 +3580 Moscow RUS 8389200 +3581 St Petersburg RUS 4694000 +3048 Stockholm SWE 750348 +3051 Uppsala SWE 189569 +explain select * from City +where +Country='FIN' AND Name IN ('Lahti','Imatra') OR +Country='RUS' AND Name IN ('St Petersburg', 'Moscow') OR +Country='SWE' AND Name IN ('Stockholm', 'Uppsala') OR +Country='DEU' AND Name IN ('Berlin', 'Bonn') OR +Country='BEL' AND Name IN ('Antwerpen', 'Gent') OR +Country='PRT' AND Name IN ('Braga', 'Porto') OR +Country='FRA' AND Name IN ('Paris', 'Marcel') OR +Country='POL' AND Name IN ('Warszawa', 'Wroclaw') OR +Country='NOR' AND Name IN ('Oslo', 'Bergen') OR +Country='ITA' AND Name IN ('Napoli', 'Venezia'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE City range CountryName,Name CountryName 38 NULL 20 Using index condition; Using where +DROP DATABASE world; set session optimizer_switch='index_merge_sort_intersection=default'; SET SESSION STORAGE_ENGINE=DEFAULT; diff --git a/mysql-test/r/read_only.result b/mysql-test/r/read_only.result index 2037dcac182..2029413c0f0 100644 --- a/mysql-test/r/read_only.result +++ b/mysql-test/r/read_only.result @@ -51,6 +51,9 @@ delete t1 from t1,t3 where t1.a=t3.a; drop table t1; insert into t1 values(1); ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement +drop temporary table if exists t1; +Warnings: +Note 1051 Unknown table 'test.t1' connection default; set global read_only=0; lock table t1 write; diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 38a7bd8e1c2..d17469abae5 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -972,7 +972,7 @@ def information_schema COLUMNS COLUMNS TABLE_CATALOG TABLE_CATALOG 253 1536 3 N def information_schema COLUMNS COLUMNS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 1 0 33 def information_schema COLUMNS COLUMNS TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33 def information_schema COLUMNS COLUMNS COLUMN_NAME COLUMN_NAME 253 192 1 N 1 0 33 -def information_schema COLUMNS COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589815 0 Y 16 0 33 +def information_schema COLUMNS COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589788 0 Y 16 0 33 def information_schema COLUMNS COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 1 0 33 def information_schema COLUMNS COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 1 0 33 def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 0 0 33 @@ -997,7 +997,7 @@ def information_schema COLUMNS COLUMNS COLUMN_NAME Field 253 192 1 N 1 0 33 def information_schema COLUMNS COLUMNS COLUMN_TYPE Type 252 589815 7 N 17 0 33 def information_schema COLUMNS COLUMNS IS_NULLABLE Null 253 9 2 N 1 0 33 def information_schema COLUMNS COLUMNS COLUMN_KEY Key 253 9 3 N 1 0 33 -def information_schema COLUMNS COLUMNS COLUMN_DEFAULT Default 252 589815 0 Y 16 0 33 +def information_schema COLUMNS COLUMNS COLUMN_DEFAULT Default 252 589788 0 Y 16 0 33 def information_schema COLUMNS COLUMNS EXTRA Extra 253 90 0 N 1 0 33 Field Type Null Key Default Extra c int(11) NO PRI NULL diff --git a/mysql-test/r/show_function_with_pad_char_to_full_length.result b/mysql-test/r/show_function_with_pad_char_to_full_length.result new file mode 100644 index 00000000000..785cab7b3e6 --- /dev/null +++ b/mysql-test/r/show_function_with_pad_char_to_full_length.result @@ -0,0 +1,24 @@ +create function f() returns int return 1; +show function status; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +T f T T T T T T T T T +set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; +show function status; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +T f T T T T T T T T T +drop function f; +select @@sql_mode; +@@sql_mode +PAD_CHAR_TO_FULL_LENGTH +create function f() returns int return 1; +select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f'; +ROUTINE_NAME +f +set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; +select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f'; +ROUTINE_NAME +f +drop function f; +select @@sql_mode; +@@sql_mode +PAD_CHAR_TO_FULL_LENGTH diff --git a/mysql-test/r/sp-anchor-row-type-cursor.result b/mysql-test/r/sp-anchor-row-type-cursor.result index a2435e17f9f..add771c534c 100644 --- a/mysql-test/r/sp-anchor-row-type-cursor.result +++ b/mysql-test/r/sp-anchor-row-type-cursor.result @@ -1001,3 +1001,33 @@ t1 CREATE TABLE `t1` ( `rec1.a` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP PROCEDURE p1; +# +# MDEV-14139 Anchored data types for variables +# +BEGIN NOT ATOMIC +DECLARE c1 CURSOR FOR SELECT 10 AS a, 'bbb' AS b, TIME'10:20:30' AS c; +BEGIN +DECLARE row1 ROW TYPE OF c1; +DECLARE a_row1 TYPE OF row1; +DECLARE aa_row1 TYPE OF a_row1; +CREATE TABLE t2 AS SELECT a_row1.a AS a, a_row1.b AS b, a_row1.c AS c; +SHOW CREATE TABLE t2; +DROP TABLE t2; +CREATE TABLE t2 AS SELECT aa_row1.a AS a, aa_row1.b AS b, aa_row1.c AS c; +SHOW CREATE TABLE t2; +DROP TABLE t2; +END; +END; +$$ +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) DEFAULT NULL, + `b` varchar(3) DEFAULT NULL, + `c` time DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) DEFAULT NULL, + `b` varchar(3) DEFAULT NULL, + `c` time DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 diff --git a/mysql-test/r/sp-anchor-row-type-table.result b/mysql-test/r/sp-anchor-row-type-table.result index e3ad1aa831e..28a5180e6c9 100644 --- a/mysql-test/r/sp-anchor-row-type-table.result +++ b/mysql-test/r/sp-anchor-row-type-table.result @@ -781,3 +781,30 @@ DROP PROCEDURE p1; DROP FUNCTION f2; DROP FUNCTION f1; DROP DATABASE db1; +# +# MDEV-14139 Anchored data types for variables +# +CREATE TABLE t1 (int11 INT, text0 TEXT); +BEGIN NOT ATOMIC +DECLARE row1 ROW TYPE OF t1; +DECLARE a_row1 TYPE OF row1; +DECLARE aa_row1 TYPE OF a_row1; +CREATE TABLE t2 AS SELECT a_row1.int11 AS int11, a_row1.text0 AS text0; +SHOW CREATE TABLE t2; +DROP TABLE t2; +CREATE TABLE t2 AS SELECT aa_row1.int11 AS int11, aa_row1.text0 AS text0; +SHOW CREATE TABLE t2; +DROP TABLE t2; +END; +$$ +Table Create Table +t2 CREATE TABLE `t2` ( + `int11` int(11) DEFAULT NULL, + `text0` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +Table Create Table +t2 CREATE TABLE `t2` ( + `int11` int(11) DEFAULT NULL, + `text0` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; diff --git a/mysql-test/r/sp-anchor-type.result b/mysql-test/r/sp-anchor-type.result index 44f67531b2f..b2de14bca1c 100644 --- a/mysql-test/r/sp-anchor-type.result +++ b/mysql-test/r/sp-anchor-type.result @@ -965,3 +965,109 @@ DROP TABLE t1; # # End of MDEV-12461 TYPE OF and ROW TYPE OF anchored data types # +# +# MDEV-14139 Anchored data types for variables +# +BEGIN NOT ATOMIC +DECLARE a TYPE OF a; +END; +$$ +ERROR 42000: Undeclared variable: a +BEGIN NOT ATOMIC +DECLARE int11 INT; +DECLARE dec103 DECIMAL(10,3); +DECLARE flt0 FLOAT; +DECLARE dbl0 DOUBLE; +DECLARE enum0 ENUM('a','b'); +DECLARE bit3 BIT(3); +DECLARE varchar10 VARCHAR(10); +DECLARE text1 TEXT; +DECLARE tinytext1 TINYTEXT; +DECLARE mediumtext1 MEDIUMTEXT; +DECLARE longtext1 LONGTEXT; +DECLARE time3 TIME(3); +DECLARE datetime4 DATETIME(4); +DECLARE timestamp5 TIMESTAMP(5); +DECLARE date0 DATE; +DECLARE a_int11 TYPE OF int11; +DECLARE a_dec103 TYPE OF dec103; +DECLARE a_flt0 TYPE OF flt0; +DECLARE a_dbl0 TYPE OF dbl0; +DECLARE a_bit3 TYPE OF bit3; +DECLARE a_enum0 TYPE OF enum0; +DECLARE a_varchar10 TYPE OF varchar10; +DECLARE a_text1 TYPE OF text1; +DECLARE a_tinytext1 TYPE OF tinytext1; +DECLARE a_mediumtext1 TYPE OF mediumtext1; +DECLARE a_longtext1 TYPE OF longtext1; +DECLARE a_time3 TYPE OF time3; +DECLARE a_datetime4 TYPE OF datetime4; +DECLARE a_timestamp5 TYPE OF timestamp5; +DECLARE a_date0 TYPE OF date0; +DECLARE aa_int11 TYPE OF a_int11; +DECLARE aa_dec103 TYPE OF a_dec103; +DECLARE aa_flt0 TYPE OF a_flt0; +DECLARE aa_dbl0 TYPE OF a_dbl0; +DECLARE aa_bit3 TYPE OF a_bit3; +DECLARE aa_enum0 TYPE OF a_enum0; +DECLARE aa_varchar10 TYPE OF a_varchar10; +DECLARE aa_text1 TYPE OF a_text1; +DECLARE aa_tinytext1 TYPE OF a_tinytext1; +DECLARE aa_mediumtext1 TYPE OF a_mediumtext1; +DECLARE aa_longtext1 TYPE OF a_longtext1; +DECLARE aa_time3 TYPE OF a_time3; +DECLARE aa_datetime4 TYPE OF a_datetime4; +DECLARE aa_timestamp5 TYPE OF a_timestamp5; +DECLARE aa_date0 TYPE OF a_date0; +CREATE TABLE t1 AS +SELECT a_int11,a_dec103,a_flt0,a_dbl0,a_bit3, +a_enum0,a_varchar10, +a_text1,a_tinytext1,a_mediumtext1,a_longtext1, +a_time3,a_datetime4,a_timestamp5,a_date0; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT aa_int11,aa_dec103,aa_flt0,aa_dbl0,aa_bit3, +aa_enum0,aa_varchar10, +aa_text1,aa_tinytext1,aa_mediumtext1,aa_longtext1, +aa_time3,aa_datetime4,aa_timestamp5,aa_date0; +SHOW CREATE TABLE t1; +DROP TABLE t1; +END; +$$ +Table Create Table +t1 CREATE TABLE `t1` ( + `a_int11` int(11) DEFAULT NULL, + `a_dec103` decimal(10,3) DEFAULT NULL, + `a_flt0` float DEFAULT NULL, + `a_dbl0` double DEFAULT NULL, + `a_bit3` bit(3) DEFAULT NULL, + `a_enum0` varchar(1) DEFAULT NULL, + `a_varchar10` varchar(10) DEFAULT NULL, + `a_text1` text DEFAULT NULL, + `a_tinytext1` tinytext DEFAULT NULL, + `a_mediumtext1` mediumtext DEFAULT NULL, + `a_longtext1` longtext DEFAULT NULL, + `a_time3` time(3) DEFAULT NULL, + `a_datetime4` datetime(4) DEFAULT NULL, + `a_timestamp5` timestamp(5) NULL DEFAULT NULL, + `a_date0` date DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +Table Create Table +t1 CREATE TABLE `t1` ( + `aa_int11` int(11) DEFAULT NULL, + `aa_dec103` decimal(10,3) DEFAULT NULL, + `aa_flt0` float DEFAULT NULL, + `aa_dbl0` double DEFAULT NULL, + `aa_bit3` bit(3) DEFAULT NULL, + `aa_enum0` varchar(1) DEFAULT NULL, + `aa_varchar10` varchar(10) DEFAULT NULL, + `aa_text1` text DEFAULT NULL, + `aa_tinytext1` tinytext DEFAULT NULL, + `aa_mediumtext1` mediumtext DEFAULT NULL, + `aa_longtext1` longtext DEFAULT NULL, + `aa_time3` time(3) DEFAULT NULL, + `aa_datetime4` datetime(4) DEFAULT NULL, + `aa_timestamp5` timestamp(5) NULL DEFAULT NULL, + `aa_date0` date DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 diff --git a/mysql-test/r/sp-row.result b/mysql-test/r/sp-row.result index 61c0660cf71..adb67030feb 100644 --- a/mysql-test/r/sp-row.result +++ b/mysql-test/r/sp-row.result @@ -2256,3 +2256,28 @@ END; $$ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +# +# MDEV-14139 Anchored data types for variables +# +BEGIN NOT ATOMIC +DECLARE row1 ROW(int11 INT,text1 TEXT); +DECLARE a_row1 TYPE OF row1; +DECLARE aa_row1 TYPE OF a_row1; +CREATE TABLE t1 AS SELECT a_row1.int11 AS int11, a_row1.text1 AS text1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 AS SELECT aa_row1.int11 AS int11, aa_row1.text1 AS text1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +END; +$$ +Table Create Table +t1 CREATE TABLE `t1` ( + `int11` int(11) DEFAULT NULL, + `text1` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +Table Create Table +t1 CREATE TABLE `t1` ( + `int11` int(11) DEFAULT NULL, + `text1` text DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 diff --git a/mysql-test/r/sql_mode.result b/mysql-test/r/sql_mode.result index 7c881fd5ad5..c6c241413d6 100644 --- a/mysql-test/r/sql_mode.result +++ b/mysql-test/r/sql_mode.result @@ -475,8 +475,8 @@ set sql_mode=16384+(65536*4); select @@sql_mode; @@sql_mode REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI -set sql_mode=2147483648*2; -ERROR 42000: Variable 'sql_mode' can't be set to the value of '4294967296' +set sql_mode=2147483648*2*2; +ERROR 42000: Variable 'sql_mode' can't be set to the value of '8589934592' select @@sql_mode; @@sql_mode REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_TABLE_OPTIONS,ANSI diff --git a/mysql-test/r/strict.result b/mysql-test/r/strict.result index 025782a365d..315bb9dc1b5 100644 --- a/mysql-test/r/strict.result +++ b/mysql-test/r/strict.result @@ -1240,9 +1240,9 @@ Warning 1364 Field 'i' doesn't have a default value DROP TABLE t1; set @@sql_mode='traditional'; create table t1(a varchar(65537)); -ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead +ERROR 42000: Column length too big for column 'a' (max = 65532); use BLOB or TEXT instead create table t1(a varbinary(65537)); -ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead +ERROR 42000: Column length too big for column 'a' (max = 65532); use BLOB or TEXT instead set @@sql_mode='traditional'; create table t1(a int, b date not null); alter table t1 modify a bigint unsigned not null; diff --git a/mysql-test/r/subselect_mat_cost_bugs.result b/mysql-test/r/subselect_mat_cost_bugs.result index 68e664c2a22..b4feb8de200 100644 --- a/mysql-test/r/subselect_mat_cost_bugs.result +++ b/mysql-test/r/subselect_mat_cost_bugs.result @@ -502,3 +502,20 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 index idx idx 5 NULL 5 Using where; Using index 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away drop table t1; +# +# MDEV-13135: subquery with ON expression subject to +# semi-join optimizations +# +CREATE TABLE t1 (a INT); +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a AS v_a FROM t1; +INSERT INTO t1 VALUES (1),(3); +CREATE TABLE t2 (b INT, KEY(b)); +INSERT INTO t2 VALUES (3),(4); +SELECT * FROM t1 WHERE a NOT IN ( +SELECT b FROM t2 INNER JOIN v1 ON (b IN ( SELECT a FROM t1 )) +WHERE v_a = b +); +a +1 +DROP VIEW v1; +DROP TABLE t1,t2; diff --git a/mysql-test/r/system_mysql_db.result b/mysql-test/r/system_mysql_db.result index b88497dbd9b..7ba77e60e42 100644 --- a/mysql-test/r/system_mysql_db.result +++ b/mysql-test/r/system_mysql_db.result @@ -214,7 +214,7 @@ proc CREATE TABLE `proc` ( `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, @@ -239,7 +239,7 @@ event CREATE TABLE `event` ( `ends` datetime DEFAULT NULL, `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `originator` int(10) unsigned NOT NULL, `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', diff --git a/mysql-test/r/system_mysql_db_fix40123.result b/mysql-test/r/system_mysql_db_fix40123.result index b88497dbd9b..7ba77e60e42 100644 --- a/mysql-test/r/system_mysql_db_fix40123.result +++ b/mysql-test/r/system_mysql_db_fix40123.result @@ -214,7 +214,7 @@ proc CREATE TABLE `proc` ( `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, @@ -239,7 +239,7 @@ event CREATE TABLE `event` ( `ends` datetime DEFAULT NULL, `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `originator` int(10) unsigned NOT NULL, `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', diff --git a/mysql-test/r/system_mysql_db_fix50030.result b/mysql-test/r/system_mysql_db_fix50030.result index 14905ab81a0..ad74cf6a09d 100644 --- a/mysql-test/r/system_mysql_db_fix50030.result +++ b/mysql-test/r/system_mysql_db_fix50030.result @@ -214,7 +214,7 @@ proc CREATE TABLE `proc` ( `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, @@ -239,7 +239,7 @@ event CREATE TABLE `event` ( `ends` datetime DEFAULT NULL, `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `originator` int(10) unsigned NOT NULL, `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', diff --git a/mysql-test/r/system_mysql_db_fix50117.result b/mysql-test/r/system_mysql_db_fix50117.result index b88497dbd9b..7ba77e60e42 100644 --- a/mysql-test/r/system_mysql_db_fix50117.result +++ b/mysql-test/r/system_mysql_db_fix50117.result @@ -214,7 +214,7 @@ proc CREATE TABLE `proc` ( `definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, @@ -239,7 +239,7 @@ event CREATE TABLE `event` ( `ends` datetime DEFAULT NULL, `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED', `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP', - `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', + `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NOT NULL DEFAULT '', `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `originator` int(10) unsigned NOT NULL, `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result index 9a92ff21e9f..57cdd1561df 100644 --- a/mysql-test/r/type_float.result +++ b/mysql-test/r/type_float.result @@ -772,5 +772,31 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table if exists t1; # +# MDEV-11586 UNION of FLOAT type results in erroneous precision +# +CREATE TABLE t1 (f FLOAT); +INSERT INTO t1 VALUES (1.1); +SELECT f FROM t1 UNION SELECT 1; +f +1.100000023841858 +1 +SELECT 1 UNION SELECT f FROM t1; +1 +1 +1.100000023841858 +SELECT f FROM t1 UNION SELECT 2147483647; +f +1.100000023841858 +2147483647 +SELECT 2147483647 UNION SELECT f FROM t1; +2147483647 +2147483647 +1.100000023841858 +SELECT CASE WHEN 0 THEN (SELECT f FROM t1) ELSE 2147483647 END AS c1, +CASE WHEN 1 THEN 2147483647 ELSE (SELECT f FROM t1) END AS c2; +c1 c2 +2147483647 2147483647 +DROP TABLE t1; +# # End of 10.2 tests # diff --git a/mysql-test/r/type_varchar.result b/mysql-test/r/type_varchar.result index 110c07c37a9..0b2a5b54d08 100644 --- a/mysql-test/r/type_varchar.result +++ b/mysql-test/r/type_varchar.result @@ -513,7 +513,80 @@ Warning 1292 Truncated incorrect DOUBLE value: 's ' Warning 1292 Truncated incorrect DOUBLE value: ' ' DROP TABLE t1; # -# Start of 10.0 tests +# MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +# +set sql_mode=''; +CREATE TABLE t1 (c1 VARBINARY(65532)); +DESCRIBE t1; +Field Type Null Key Default Extra +c1 varbinary(65532) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARBINARY(65533)); +Warnings: +Note 1246 Converting column 'c1' from VARBINARY to BLOB +DESCRIBE t1; +Field Type Null Key Default Extra +c1 blob YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARBINARY(65534)); +Warnings: +Note 1246 Converting column 'c1' from VARBINARY to BLOB +DESCRIBE t1; +Field Type Null Key Default Extra +c1 blob YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARBINARY(65535)); +Warnings: +Note 1246 Converting column 'c1' from VARBINARY to BLOB +DESCRIBE t1; +Field Type Null Key Default Extra +c1 blob YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARBINARY(65536)); +Warnings: +Note 1246 Converting column 'c1' from VARBINARY to BLOB +DESCRIBE t1; +Field Type Null Key Default Extra +c1 mediumblob YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(65532)); +DESCRIBE t1; +Field Type Null Key Default Extra +c1 varchar(65532) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(65533)); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 text YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(65534)); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 text YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(65535)); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 text YES NULL +DROP TABLE t1; +CREATE TABLE t1 (c1 VARCHAR(65536)); +Warnings: +Note 1246 Converting column 'c1' from VARCHAR to TEXT +DESCRIBE t1; +Field Type Null Key Default Extra +c1 mediumtext YES NULL +DROP TABLE t1; +set sql_mode=default; +CREATE TABLE t1 (c1 VARCHAR(65536)); +ERROR 42000: Column length too big for column 'c1' (max = 65532); use BLOB or TEXT instead +# +# End of 5.5 tests # # # MDEV-6950 Bad results with joins comparing DATE and INT/ENUM/VARCHAR columns diff --git a/mysql-test/suite/compat/oracle/r/empty_string_literal.result b/mysql-test/suite/compat/oracle/r/empty_string_literal.result new file mode 100644 index 00000000000..6bd268e7138 --- /dev/null +++ b/mysql-test/suite/compat/oracle/r/empty_string_literal.result @@ -0,0 +1,181 @@ +USE test; +# +# MDEV-14013 : sql_mode=EMPTY_STRING_IS_NULL +# +set @mode='ORACLE,EMPTY_STRING_IS_NULL'; +SET SESSION character_set_connection=latin2; +SET SESSION character_set_client=cp1250; +# +# Test litteral +# +SET sql_mode=@mode; +select @@sql_mode; +@@sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,EMPTY_STRING_IS_NULL +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); +NULL CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x') +NULL latin2 NULL binary NULL latin2 x latin2 +SELECT CHARSET(NULLIF('','')),NULLIF('',''); +CHARSET(NULLIF('','')) NULLIF('','') +latin2 NULL +SET sql_mode=default; +SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); + CHARSET('') NULL CHARSET(null) CAST(null as char(10)) CHARSET(CAST(null as char(10))) x CHARSET('x') + latin2 NULL binary NULL latin2 x latin2 +SELECT CHARSET(NULLIF('','')),NULLIF('',''); +CHARSET(NULLIF('','')) NULLIF('','') +latin2 NULL +# +# Test NCHAR litteral +# +SET sql_mode=@mode; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); +NULL CHARSET(N'') x CHARSET(N'x') +NULL utf8 x utf8 +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); +CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'') +utf8 NULL +SET sql_mode=default; +SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); + CHARSET(N'') x CHARSET(N'x') + utf8 x utf8 +SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); +CHARSET(NULLIF(N'',N'')) NULLIF(N'',N'') +utf8 NULL +# +# Test CHARSET prefix litteral +# +SET sql_mode=@mode; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); +NULL CHARSET(_cp1250 '') x CHARSET(_cp1250 'x') +NULL cp1250 x cp1250 +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); +CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '') +cp1250 NULL +SET sql_mode=default; +SELECT _cp1250 '',CHARSET(_cp1250 ''), _cp1250 'x', CHARSET(_cp1250 'x'); + CHARSET(_cp1250 '') x CHARSET(_cp1250 'x') + cp1250 x cp1250 +SELECT CHARSET(NULLIF(_cp1250 '',_cp1250 '')),NULLIF(_cp1250 '',_cp1250 ''); +CHARSET(NULLIF(_cp1250 '',_cp1250 '')) NULLIF(_cp1250 '',_cp1250 '') +cp1250 NULL +SET sql_mode=@mode; +# +# Test litteral concat +# +SELECT 'a' 'b'; +a +ab +SELECT 'a' ''; +a +a +SELECT '' 'b'; +b +b +SELECT '' ''; +NULL +NULL +SELECT '' 'b' 'c'; +b +bc +SELECT '' '' 'c'; +c +c +SELECT 'a' '' 'c'; +a +ac +SELECT 'a' '' ''; +a +a +SELECT '' '' ''; +NULL +NULL +SELECT '' '' '',CHARSET('' '' ''); +NULL CHARSET('' '' '') +NULL latin2 +SELECT _latin1'' '' '',CHARSET(_latin1'' '' ''); +NULL CHARSET(_latin1'' '' '') +NULL latin1 +SELECT N'' '' '',CHARSET(N'' '' ''); +NULL CHARSET(N'' '' '') +NULL utf8 +# +# UNION - implicit group by +# +SELECT 1, null +UNION +SELECT 1 , '' +ORDER BY 1; +1 NULL +1 NULL +SELECT 1, null +UNION +SELECT 1 , N'' +ORDER BY 1; +1 NULL +1 NULL +SELECT 1, null +UNION +SELECT 1 , _cp1250 '' +ORDER BY 1; +1 NULL +1 NULL +SELECT NULLIF(_cp1250 '',_cp1250 '') +UNION +SELECT NULLIF(N'',N''); +NULLIF(_cp1250 '',_cp1250 '') +NULL +SELECT 1 , _latin2 '' +UNION +SELECT 1 , _cp1250 ''; +ERROR HY000: Illegal mix of collations (latin2_general_ci,IGNORABLE) and (cp1250_general_ci,IGNORABLE) for operation 'UNION' +SELECT 1, null +UNION +SELECT 1 , '' +UNION +SELECT 1 , N''; +1 NULL +1 NULL +CREATE TABLE t1 (c1 INT,c2 VARCHAR(10)); +INSERT INTO t1 VALUES (1,'one'); +INSERT INTO t1 VALUES (1,''); +INSERT INTO t1 VALUES (1,null); +# +# Test in a view +# +CREATE VIEW v1 +AS SELECT c1, c2 +FROM t1 +UNION +SELECT c1 , '' + FROM t1 +ORDER BY 1,2; +SELECT * FROM v1; +c1 c2 +1 NULL +1 one +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW "v1" AS select "t1"."c1" AS "c1","t1"."c2" AS "c2" from "t1" union select "t1"."c1" AS "c1",NULL AS "NULL" from "t1" order by 1,2 cp1250 latin2_general_ci +DROP VIEW v1; +DROP TABLE t1; +EXPLAIN EXTENDED SELECT ''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS "NULL" +EXPLAIN EXTENDED SELECT _latin1''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS "NULL" +EXPLAIN EXTENDED SELECT N''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS "NULL" +EXPLAIN EXTENDED SELECT '' ''; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select NULL AS "NULL" diff --git a/mysql-test/suite/compat/oracle/r/func_substr.result b/mysql-test/suite/compat/oracle/r/func_substr.result new file mode 100644 index 00000000000..eca5f480191 --- /dev/null +++ b/mysql-test/suite/compat/oracle/r/func_substr.result @@ -0,0 +1,50 @@ +SET sql_mode=ORACLE; +SELECT SUBSTR('abc',2,1),SUBSTR('abc',1,1), SUBSTR('abc',0,1) FROM dual; +SUBSTR('abc',2,1) SUBSTR('abc',1,1) SUBSTR('abc',0,1) +b a a +SELECT SUBSTR('abc',2),SUBSTR('abc',1), SUBSTR('abc',0) FROM dual; +SUBSTR('abc',2) SUBSTR('abc',1) SUBSTR('abc',0) +bc abc abc +SELECT SUBSTR(null,2,1),SUBSTR(null,1), SUBSTR(null,0) FROM dual; +SUBSTR(null,2,1) SUBSTR(null,1) SUBSTR(null,0) +NULL NULL NULL +SELECT SUBSTR('abc',-2),SUBSTR('abc',-1), SUBSTR('abc',-0) FROM dual; +SUBSTR('abc',-2) SUBSTR('abc',-1) SUBSTR('abc',-0) +bc c abc +SELECT SUBSTR('abc',-2,1),SUBSTR('abc',-1,1), SUBSTR('abc',-0,1) FROM dual; +SUBSTR('abc',-2,1) SUBSTR('abc',-1,1) SUBSTR('abc',-0,1) +b c a +SELECT SUBSTR('abc',null) FROM dual; +SUBSTR('abc',null) +NULL +SELECT SUBSTR('abc',2,null),SUBSTR('abc',1,null), SUBSTR('abc',0,null) FROM dual; +SUBSTR('abc',2,null) SUBSTR('abc',1,null) SUBSTR('abc',0,null) +NULL NULL NULL +SELECT SUBSTR('abc',2,0),SUBSTR('abc',1,0), SUBSTR('abc',0,0) FROM dual; +SUBSTR('abc',2,0) SUBSTR('abc',1,0) SUBSTR('abc',0,0) + +create table t1 (c1 varchar(10),start integer, length integer); +INSERT INTO t1 VALUES ('abc', 1, 1); +INSERT INTO t1 VALUES ('abc', 0, 1); +INSERT INTO t1 VALUES (null, 1, 1); +INSERT INTO t1 VALUES (null, 0, 1); +select substr(c1,start,length) from t1; +substr(c1,start,length) +a +a +NULL +NULL +drop table t1; +EXPLAIN EXTENDED SELECT SUBSTR('abc',2,1) ; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used +Warnings: +Note 1003 select substr_oracle('abc',2,1) AS "SUBSTR('abc',2,1)" +CREATE VIEW v1 AS SELECT SUBSTR('abc',2,1) ; +SHOW CREATE VIEW v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW "v1" AS select substr_oracle('abc',2,1) AS "SUBSTR('abc',2,1)" latin1 latin1_swedish_ci +SELECT * FROM v1; +SUBSTR('abc',2,1) +b +DROP VIEW v1; diff --git a/mysql-test/suite/compat/oracle/r/sp-anchor-row-type-table.result b/mysql-test/suite/compat/oracle/r/sp-anchor-row-type-table.result index f2c8429a54d..b878042174b 100644 --- a/mysql-test/suite/compat/oracle/r/sp-anchor-row-type-table.result +++ b/mysql-test/suite/compat/oracle/r/sp-anchor-row-type-table.result @@ -101,3 +101,31 @@ DROP PROCEDURE p1; DROP FUNCTION f2; DROP FUNCTION f1; DROP DATABASE db1; +# +# MDEV-14139 Anchored data types for variables +# +CREATE TABLE t1 (int11 INT, text0 TEXT); +DECLARE +row1 t1%ROWTYPE; +a_row1 row1%TYPE; +aa_row1 a_row1%TYPE; +BEGIN +CREATE TABLE t2 AS SELECT a_row1.int11 AS int11, a_row1.text0 AS text0; +SHOW CREATE TABLE t2; +DROP TABLE t2; +CREATE TABLE t2 AS SELECT aa_row1.int11 AS int11, aa_row1.text0 AS text0; +SHOW CREATE TABLE t2; +DROP TABLE t2; +END; +$$ +Table Create Table +t2 CREATE TABLE "t2" ( + "int11" int(11) DEFAULT NULL, + "text0" text DEFAULT NULL +) +Table Create Table +t2 CREATE TABLE "t2" ( + "int11" int(11) DEFAULT NULL, + "text0" text DEFAULT NULL +) +DROP TABLE t1; diff --git a/mysql-test/suite/compat/oracle/r/sp-code.result b/mysql-test/suite/compat/oracle/r/sp-code.result index 1087e10552b..f1dd4180854 100644 --- a/mysql-test/suite/compat/oracle/r/sp-code.result +++ b/mysql-test/suite/compat/oracle/r/sp-code.result @@ -1030,8 +1030,8 @@ Pos Instruction 0 cpush cur1@0 1 cpush cur2@1 2 cursor_copy_struct cur1 rec1@0 -3 set rec1@0 NULL -4 cursor_copy_struct cur1 rec2@1 +3 cursor_copy_struct cur1 rec2@1 +4 set rec1@0 NULL 5 set rec2@1 NULL 6 cursor_copy_struct cur2 rec3@2 7 set rec3@2 NULL diff --git a/mysql-test/suite/compat/oracle/r/sp-cursor-rowtype.result b/mysql-test/suite/compat/oracle/r/sp-cursor-rowtype.result index 726f8bcf9ca..3030a3dc658 100644 --- a/mysql-test/suite/compat/oracle/r/sp-cursor-rowtype.result +++ b/mysql-test/suite/compat/oracle/r/sp-cursor-rowtype.result @@ -1330,3 +1330,32 @@ rec2.a rec2.b 2012 bbbb3 DROP PROCEDURE p1; DROP TABLE t1; +# +# MDEV-14139 Anchored data types for variables +# +DECLARE +CURSOR c1 IS SELECT 10 AS a, 'bbb' AS b, TIME'10:20:30' AS c; +row1 c1%ROWTYPE; +a_row1 row1%TYPE; +aa_row1 a_row1%TYPE; +BEGIN +CREATE TABLE t2 AS SELECT a_row1.a AS a, a_row1.b AS b, a_row1.c AS c; +SHOW CREATE TABLE t2; +DROP TABLE t2; +CREATE TABLE t2 AS SELECT aa_row1.a AS a, aa_row1.b AS b, aa_row1.c AS c; +SHOW CREATE TABLE t2; +DROP TABLE t2; +END; +$$ +Table Create Table +t2 CREATE TABLE "t2" ( + "a" int(11) DEFAULT NULL, + "b" varchar(3) DEFAULT NULL, + "c" time DEFAULT NULL +) +Table Create Table +t2 CREATE TABLE "t2" ( + "a" int(11) DEFAULT NULL, + "b" varchar(3) DEFAULT NULL, + "c" time DEFAULT NULL +) diff --git a/mysql-test/suite/compat/oracle/r/sp-param.result b/mysql-test/suite/compat/oracle/r/sp-param.result index 301c0f09fc5..93db24709d0 100644 --- a/mysql-test/suite/compat/oracle/r/sp-param.result +++ b/mysql-test/suite/compat/oracle/r/sp-param.result @@ -259,10 +259,12 @@ END; / CALL p2(65535); LENGTH(f1(str,padlen)) -65535 +65532 +Warnings: +Warning 1265 Data truncated for column 'pin' at row 1 CALL p2(65536); LENGTH(f1(str,padlen)) -65535 +65532 Warnings: Warning 1265 Data truncated for column 'pin' at row 1 DROP PROCEDURE p2; @@ -288,8 +290,7 @@ CALL p2(21844); length(pout) 21844 CALL p2(21845); -length(pout) -21845 +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(21846); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; @@ -311,9 +312,11 @@ p1(pout,str); SELECT length(pout); END; / -CALL p2(21845); +CALL p2(21844); length(pout) -21845 +21844 +CALL p2(21845); +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(21846); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; @@ -332,9 +335,15 @@ BEGIN SELECT LENGTH(f1(str,padlen)); END; / -CALL p2(65535); +CALL p2(65532); LENGTH(f1(str,padlen)) -65535 +65532 +CALL p2(65533); +ERROR 22001: Data too long for column 'pin' at row 1 +CALL p2(65534); +ERROR 22001: Data too long for column 'pin' at row 1 +CALL p2(65535); +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(65536); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; @@ -353,9 +362,11 @@ BEGIN SELECT LENGTH(f1(str,padlen)); END; / -CALL p2(21845); +CALL p2(21844); LENGTH(f1(str,padlen)) -21845 +21844 +CALL p2(21845); +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(21846); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; @@ -374,9 +385,11 @@ BEGIN SELECT LENGTH(f1(str,padlen)); END; / -CALL p2(21845); +CALL p2(21844); LENGTH(f1(str,padlen)) -21845 +21844 +CALL p2(21845); +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(21846); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; @@ -395,9 +408,15 @@ BEGIN SELECT LENGTH(f1(str,padlen)); END; / -CALL p2(65535); +CALL p2(65532); LENGTH(f1(str,padlen)) -65535 +65532 +CALL p2(65533); +ERROR 22001: Data too long for column 'pin' at row 1 +CALL p2(65534); +ERROR 22001: Data too long for column 'pin' at row 1 +CALL p2(65535); +ERROR 22001: Data too long for column 'pin' at row 1 CALL p2(65536); ERROR 22001: Data too long for column 'pin' at row 1 DROP PROCEDURE p2; diff --git a/mysql-test/suite/compat/oracle/r/sp-row.result b/mysql-test/suite/compat/oracle/r/sp-row.result index 16421cd45ac..f95817420f1 100644 --- a/mysql-test/suite/compat/oracle/r/sp-row.result +++ b/mysql-test/suite/compat/oracle/r/sp-row.result @@ -3081,3 +3081,29 @@ END; $$ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +# +# MDEV-14139 Anchored data types for variables +# +DECLARE +row1 ROW(int11 INT,text1 TEXT); +a_row1 row1%TYPE; +aa_row1 a_row1%TYPE; +BEGIN +CREATE TABLE t1 AS SELECT a_row1.int11 AS int11, a_row1.text1 AS text1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 AS SELECT aa_row1.int11 AS int11, aa_row1.text1 AS text1; +SHOW CREATE TABLE t1; +DROP TABLE t1; +END; +$$ +Table Create Table +t1 CREATE TABLE "t1" ( + "int11" int(11) DEFAULT NULL, + "text1" text DEFAULT NULL +) +Table Create Table +t1 CREATE TABLE "t1" ( + "int11" int(11) DEFAULT NULL, + "text1" text DEFAULT NULL +) diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result index 97d637c6e1a..53411e80251 100644 --- a/mysql-test/suite/compat/oracle/r/sp.result +++ b/mysql-test/suite/compat/oracle/r/sp.result @@ -2297,3 +2297,110 @@ SELECT exception FROM v1; exception DROP VIEW v1; DROP TABLE t1; +# +# MDEV-14139 Anchored data types for variables +# +BEGIN NOT ATOMIC +DECLARE a a%TYPE; +END; +$$ +ERROR 42000: Undeclared variable: a +DECLARE +int11 INT; +dec103 DECIMAL(10,3); +flt0 FLOAT; +dbl0 DOUBLE; +enum0 ENUM('a','b'); +bit3 BIT(3); +varchar10 VARCHAR(10); +text1 TEXT; +tinytext1 TINYTEXT; +mediumtext1 MEDIUMTEXT; +longtext1 LONGTEXT; +time3 TIME(3); +datetime4 DATETIME(4); +timestamp5 TIMESTAMP(5); +date0 DATE; +a_int11 int11%TYPE; +a_dec103 dec103%TYPE; +a_flt0 flt0%TYPE; +a_dbl0 dbl0%TYPE; +a_bit3 bit3%TYPE; +a_enum0 enum0%TYPE; +a_varchar10 varchar10%TYPE; +a_text1 text1%TYPE; +a_tinytext1 tinytext1%TYPE; +a_mediumtext1 mediumtext1%TYPE; +a_longtext1 longtext1%TYPE; +a_time3 time3%TYPE; +a_datetime4 datetime4%TYPE; +a_timestamp5 timestamp5%TYPE; +a_date0 date0%TYPE; +aa_int11 a_int11%TYPE; +aa_dec103 a_dec103%TYPE; +aa_flt0 a_flt0%TYPE; +aa_dbl0 a_dbl0%TYPE; +aa_bit3 a_bit3%TYPE; +aa_enum0 a_enum0%TYPE; +aa_varchar10 a_varchar10%TYPE; +aa_text1 a_text1%TYPE; +aa_tinytext1 a_tinytext1%TYPE; +aa_mediumtext1 a_mediumtext1%TYPE; +aa_longtext1 a_longtext1%TYPE; +aa_time3 a_time3%TYPE; +aa_datetime4 a_datetime4%TYPE; +aa_timestamp5 a_timestamp5%TYPE; +aa_date0 a_date0%TYPE; +BEGIN +CREATE TABLE t1 AS +SELECT a_int11,a_dec103,a_flt0,a_dbl0,a_bit3, +a_enum0,a_varchar10, +a_text1,a_tinytext1,a_mediumtext1,a_longtext1, +a_time3,a_datetime4,a_timestamp5,a_date0; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 AS +SELECT aa_int11,aa_dec103,aa_flt0,aa_dbl0,aa_bit3, +aa_enum0,aa_varchar10, +aa_text1,aa_tinytext1,aa_mediumtext1,aa_longtext1, +aa_time3,aa_datetime4,aa_timestamp5,aa_date0; +SHOW CREATE TABLE t1; +DROP TABLE t1; +END; +$$ +Table Create Table +t1 CREATE TABLE "t1" ( + "a_int11" int(11) DEFAULT NULL, + "a_dec103" decimal(10,3) DEFAULT NULL, + "a_flt0" float DEFAULT NULL, + "a_dbl0" double DEFAULT NULL, + "a_bit3" bit(3) DEFAULT NULL, + "a_enum0" varchar(1) DEFAULT NULL, + "a_varchar10" varchar(10) DEFAULT NULL, + "a_text1" text DEFAULT NULL, + "a_tinytext1" tinytext DEFAULT NULL, + "a_mediumtext1" mediumtext DEFAULT NULL, + "a_longtext1" longtext DEFAULT NULL, + "a_time3" time(3) DEFAULT NULL, + "a_datetime4" datetime(4) DEFAULT NULL, + "a_timestamp5" timestamp(5) NULL DEFAULT NULL, + "a_date0" datetime DEFAULT NULL +) +Table Create Table +t1 CREATE TABLE "t1" ( + "aa_int11" int(11) DEFAULT NULL, + "aa_dec103" decimal(10,3) DEFAULT NULL, + "aa_flt0" float DEFAULT NULL, + "aa_dbl0" double DEFAULT NULL, + "aa_bit3" bit(3) DEFAULT NULL, + "aa_enum0" varchar(1) DEFAULT NULL, + "aa_varchar10" varchar(10) DEFAULT NULL, + "aa_text1" text DEFAULT NULL, + "aa_tinytext1" tinytext DEFAULT NULL, + "aa_mediumtext1" mediumtext DEFAULT NULL, + "aa_longtext1" longtext DEFAULT NULL, + "aa_time3" time(3) DEFAULT NULL, + "aa_datetime4" datetime(4) DEFAULT NULL, + "aa_timestamp5" timestamp(5) NULL DEFAULT NULL, + "aa_date0" datetime DEFAULT NULL +) diff --git a/mysql-test/suite/compat/oracle/t/empty_string_literal.test b/mysql-test/suite/compat/oracle/t/empty_string_literal.test new file mode 100644 index 00000000000..3c612f72c20 --- /dev/null +++ b/mysql-test/suite/compat/oracle/t/empty_string_literal.test @@ -0,0 +1,8 @@ +USE test; +--echo # +--echo # MDEV-14013 : sql_mode=EMPTY_STRING_IS_NULL +--echo # + +set @mode='ORACLE,EMPTY_STRING_IS_NULL'; + +--source include/empty_string_literal.inc diff --git a/mysql-test/suite/compat/oracle/t/func_substr.test b/mysql-test/suite/compat/oracle/t/func_substr.test new file mode 100644 index 00000000000..5d5ec78abdd --- /dev/null +++ b/mysql-test/suite/compat/oracle/t/func_substr.test @@ -0,0 +1,28 @@ +# +# MDEV-14012 - sql_mode=Oracle: substr(): treat position 0 as position 1 +# + +SET sql_mode=ORACLE; +SELECT SUBSTR('abc',2,1),SUBSTR('abc',1,1), SUBSTR('abc',0,1) FROM dual; +SELECT SUBSTR('abc',2),SUBSTR('abc',1), SUBSTR('abc',0) FROM dual; +SELECT SUBSTR(null,2,1),SUBSTR(null,1), SUBSTR(null,0) FROM dual; +SELECT SUBSTR('abc',-2),SUBSTR('abc',-1), SUBSTR('abc',-0) FROM dual; +SELECT SUBSTR('abc',-2,1),SUBSTR('abc',-1,1), SUBSTR('abc',-0,1) FROM dual; +SELECT SUBSTR('abc',null) FROM dual; +SELECT SUBSTR('abc',2,null),SUBSTR('abc',1,null), SUBSTR('abc',0,null) FROM dual; +SELECT SUBSTR('abc',2,0),SUBSTR('abc',1,0), SUBSTR('abc',0,0) FROM dual; + +create table t1 (c1 varchar(10),start integer, length integer); +INSERT INTO t1 VALUES ('abc', 1, 1); +INSERT INTO t1 VALUES ('abc', 0, 1); +INSERT INTO t1 VALUES (null, 1, 1); +INSERT INTO t1 VALUES (null, 0, 1); +select substr(c1,start,length) from t1; +drop table t1; + +EXPLAIN EXTENDED SELECT SUBSTR('abc',2,1) ; + +CREATE VIEW v1 AS SELECT SUBSTR('abc',2,1) ; +SHOW CREATE VIEW v1; +SELECT * FROM v1; +DROP VIEW v1; diff --git a/mysql-test/suite/compat/oracle/t/sp-anchor-row-type-table.test b/mysql-test/suite/compat/oracle/t/sp-anchor-row-type-table.test index b904cc39139..6e13a6164a9 100644 --- a/mysql-test/suite/compat/oracle/t/sp-anchor-row-type-table.test +++ b/mysql-test/suite/compat/oracle/t/sp-anchor-row-type-table.test @@ -99,3 +99,26 @@ DROP PROCEDURE p1; DROP FUNCTION f2; DROP FUNCTION f1; DROP DATABASE db1; + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +CREATE TABLE t1 (int11 INT, text0 TEXT); +DELIMITER $$; +DECLARE + row1 t1%ROWTYPE; + a_row1 row1%TYPE; + aa_row1 a_row1%TYPE; +BEGIN + CREATE TABLE t2 AS SELECT a_row1.int11 AS int11, a_row1.text0 AS text0; + SHOW CREATE TABLE t2; + DROP TABLE t2; + CREATE TABLE t2 AS SELECT aa_row1.int11 AS int11, aa_row1.text0 AS text0; + SHOW CREATE TABLE t2; + DROP TABLE t2; +END; +$$ +DELIMITER ;$$ +DROP TABLE t1; diff --git a/mysql-test/suite/compat/oracle/t/sp-cursor-rowtype.test b/mysql-test/suite/compat/oracle/t/sp-cursor-rowtype.test index 3c37a732d8c..19a50eacca1 100644 --- a/mysql-test/suite/compat/oracle/t/sp-cursor-rowtype.test +++ b/mysql-test/suite/compat/oracle/t/sp-cursor-rowtype.test @@ -1422,3 +1422,25 @@ DELIMITER ;$$ CALL p1(); DROP PROCEDURE p1; DROP TABLE t1; + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +DECLARE + CURSOR c1 IS SELECT 10 AS a, 'bbb' AS b, TIME'10:20:30' AS c; + row1 c1%ROWTYPE; + a_row1 row1%TYPE; + aa_row1 a_row1%TYPE; +BEGIN + CREATE TABLE t2 AS SELECT a_row1.a AS a, a_row1.b AS b, a_row1.c AS c; + SHOW CREATE TABLE t2; + DROP TABLE t2; + CREATE TABLE t2 AS SELECT aa_row1.a AS a, aa_row1.b AS b, aa_row1.c AS c; + SHOW CREATE TABLE t2; + DROP TABLE t2; +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/suite/compat/oracle/t/sp-param.test b/mysql-test/suite/compat/oracle/t/sp-param.test index 769aeca93d4..b887858d736 100644 --- a/mysql-test/suite/compat/oracle/t/sp-param.test +++ b/mysql-test/suite/compat/oracle/t/sp-param.test @@ -199,6 +199,7 @@ END; / DELIMITER ;/ CALL p2(21844); +--error ER_DATA_TOO_LONG CALL p2(21845); --error ER_DATA_TOO_LONG CALL p2(21846); @@ -229,6 +230,8 @@ BEGIN END; / DELIMITER ;/ +CALL p2(21844); +--error ER_DATA_TOO_LONG CALL p2(21845); --error ER_DATA_TOO_LONG CALL p2(21846); @@ -256,6 +259,12 @@ BEGIN END; / DELIMITER ;/ +CALL p2(65532); +--error ER_DATA_TOO_LONG +CALL p2(65533); +--error ER_DATA_TOO_LONG +CALL p2(65534); +--error ER_DATA_TOO_LONG CALL p2(65535); --error ER_DATA_TOO_LONG CALL p2(65536); @@ -283,6 +292,8 @@ BEGIN END; / DELIMITER ;/ +CALL p2(21844); +--error ER_DATA_TOO_LONG CALL p2(21845); --error ER_DATA_TOO_LONG CALL p2(21846); @@ -310,6 +321,8 @@ BEGIN END; / DELIMITER ;/ +CALL p2(21844); +--error ER_DATA_TOO_LONG CALL p2(21845); --error ER_DATA_TOO_LONG CALL p2(21846); @@ -337,6 +350,12 @@ BEGIN END; / DELIMITER ;/ +CALL p2(65532); +--error ER_DATA_TOO_LONG +CALL p2(65533); +--error ER_DATA_TOO_LONG +CALL p2(65534); +--error ER_DATA_TOO_LONG CALL p2(65535); --error ER_DATA_TOO_LONG CALL p2(65536); diff --git a/mysql-test/suite/compat/oracle/t/sp-row.test b/mysql-test/suite/compat/oracle/t/sp-row.test index 94cc5db9802..b26cae5a5c6 100644 --- a/mysql-test/suite/compat/oracle/t/sp-row.test +++ b/mysql-test/suite/compat/oracle/t/sp-row.test @@ -2388,3 +2388,24 @@ BEGIN END; $$ DELIMITER ;$$ + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +DECLARE + row1 ROW(int11 INT,text1 TEXT); + a_row1 row1%TYPE; + aa_row1 a_row1%TYPE; +BEGIN + CREATE TABLE t1 AS SELECT a_row1.int11 AS int11, a_row1.text1 AS text1; + SHOW CREATE TABLE t1; + DROP TABLE t1; + CREATE TABLE t1 AS SELECT aa_row1.int11 AS int11, aa_row1.text1 AS text1; + SHOW CREATE TABLE t1; + DROP TABLE t1; +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/suite/compat/oracle/t/sp.test b/mysql-test/suite/compat/oracle/t/sp.test index 7e9e76d379f..61a37459483 100644 --- a/mysql-test/suite/compat/oracle/t/sp.test +++ b/mysql-test/suite/compat/oracle/t/sp.test @@ -2146,3 +2146,90 @@ CREATE VIEW v1 AS SELECT c1 exception FROM t1; SELECT exception FROM v1; DROP VIEW v1; DROP TABLE t1; + + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +--error ER_SP_UNDECLARED_VAR +BEGIN NOT ATOMIC + DECLARE a a%TYPE; +END; +$$ +DELIMITER ;$$ + + +DELIMITER $$; +DECLARE + int11 INT; + dec103 DECIMAL(10,3); + flt0 FLOAT; + dbl0 DOUBLE; + enum0 ENUM('a','b'); + bit3 BIT(3); + + varchar10 VARCHAR(10); + text1 TEXT; + tinytext1 TINYTEXT; + mediumtext1 MEDIUMTEXT; + longtext1 LONGTEXT; + + time3 TIME(3); + datetime4 DATETIME(4); + timestamp5 TIMESTAMP(5); + date0 DATE; + + a_int11 int11%TYPE; + a_dec103 dec103%TYPE; + a_flt0 flt0%TYPE; + a_dbl0 dbl0%TYPE; + a_bit3 bit3%TYPE; + a_enum0 enum0%TYPE; + a_varchar10 varchar10%TYPE; + a_text1 text1%TYPE; + a_tinytext1 tinytext1%TYPE; + a_mediumtext1 mediumtext1%TYPE; + a_longtext1 longtext1%TYPE; + a_time3 time3%TYPE; + a_datetime4 datetime4%TYPE; + a_timestamp5 timestamp5%TYPE; + a_date0 date0%TYPE; + + aa_int11 a_int11%TYPE; + aa_dec103 a_dec103%TYPE; + aa_flt0 a_flt0%TYPE; + aa_dbl0 a_dbl0%TYPE; + aa_bit3 a_bit3%TYPE; + aa_enum0 a_enum0%TYPE; + aa_varchar10 a_varchar10%TYPE; + aa_text1 a_text1%TYPE; + aa_tinytext1 a_tinytext1%TYPE; + aa_mediumtext1 a_mediumtext1%TYPE; + aa_longtext1 a_longtext1%TYPE; + aa_time3 a_time3%TYPE; + aa_datetime4 a_datetime4%TYPE; + aa_timestamp5 a_timestamp5%TYPE; + aa_date0 a_date0%TYPE; +BEGIN + CREATE TABLE t1 AS + SELECT a_int11,a_dec103,a_flt0,a_dbl0,a_bit3, + a_enum0,a_varchar10, + a_text1,a_tinytext1,a_mediumtext1,a_longtext1, + a_time3,a_datetime4,a_timestamp5,a_date0; + SHOW CREATE TABLE t1; + DROP TABLE t1; + + CREATE TABLE t1 AS + SELECT aa_int11,aa_dec103,aa_flt0,aa_dbl0,aa_bit3, + aa_enum0,aa_varchar10, + aa_text1,aa_tinytext1,aa_mediumtext1,aa_longtext1, + aa_time3,aa_datetime4,aa_timestamp5,aa_date0; + SHOW CREATE TABLE t1; + DROP TABLE t1; + +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result index d021c73b339..21ffae902a4 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result @@ -60,7 +60,7 @@ def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NUL def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) PRI select,insert,update,references NEVER NULL def mysql event on_completion 14 'DROP' NO enum 8 24 NULL NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') select,insert,update,references NEVER NULL def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned select,insert,update,references NEVER NULL -def mysql event sql_mode 15 '' NO set 494 1482 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references NEVER NULL +def mysql event sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') select,insert,update,references NEVER NULL def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references NEVER NULL def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references NEVER NULL @@ -151,7 +151,7 @@ def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL def mysql proc security_type 8 'DEFINER' NO enum 7 21 NULL NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') select,insert,update,references NEVER NULL def mysql proc specific_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references NEVER NULL def mysql proc sql_data_access 6 'CONTAINS_SQL' NO enum 17 51 NULL NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') select,insert,update,references NEVER NULL -def mysql proc sql_mode 15 '' NO set 494 1482 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') select,insert,update,references NEVER NULL +def mysql proc sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') select,insert,update,references NEVER NULL def mysql proc type 3 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI select,insert,update,references NEVER NULL def mysql procs_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references NEVER NULL def mysql procs_priv Grantor 6 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL select,insert,update,references NEVER NULL @@ -391,7 +391,7 @@ NULL mysql event starts datetime NULL NULL NULL NULL datetime NULL mysql event ends datetime NULL NULL NULL NULL datetime 3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') 3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE') -3.0000 mysql event sql_mode set 494 1482 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') +3.0000 mysql event sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') 3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64) NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned 1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64) @@ -482,7 +482,7 @@ NULL mysql innodb_table_stats sum_of_other_index_sizes bigint NULL NULL NULL NUL 3.0000 mysql proc definer char 141 423 utf8 utf8_bin char(141) NULL mysql proc created timestamp NULL NULL NULL NULL timestamp NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp -3.0000 mysql proc sql_mode set 494 1482 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') +3.0000 mysql proc sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') 1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text 3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32) 3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32) diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result index 22b4ddfc311..c7d10790325 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result @@ -60,7 +60,7 @@ def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NUL def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) PRI NEVER NULL def mysql event on_completion 14 'DROP' NO enum 8 24 NULL NULL NULL utf8 utf8_general_ci enum('DROP','PRESERVE') NEVER NULL def mysql event originator 17 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned NEVER NULL -def mysql event sql_mode 15 '' NO set 494 1482 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NEVER NULL +def mysql event sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NEVER NULL def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NEVER NULL def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) NEVER NULL @@ -137,7 +137,7 @@ def mysql proc returns 10 NULL NO longblob 4294967295 4294967295 NULL NULL NULL def mysql proc security_type 8 'DEFINER' NO enum 7 21 NULL NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER') NEVER NULL def mysql proc specific_name 4 '' NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) NEVER NULL def mysql proc sql_data_access 6 'CONTAINS_SQL' NO enum 17 51 NULL NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NEVER NULL -def mysql proc sql_mode 15 '' NO set 494 1482 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NEVER NULL +def mysql proc sql_mode 15 '' NO set 515 1545 NULL NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') NEVER NULL def mysql proc type 3 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI NEVER NULL def mysql procs_priv Db 2 '' NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI NEVER NULL def mysql procs_priv Grantor 6 '' NO char 141 423 NULL NULL NULL utf8 utf8_bin char(141) MUL NEVER NULL @@ -389,7 +389,7 @@ NULL mysql event starts datetime NULL NULL NULL NULL datetime NULL mysql event ends datetime NULL NULL NULL NULL datetime 3.0000 mysql event status enum 18 54 utf8 utf8_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') 3.0000 mysql event on_completion enum 8 24 utf8 utf8_general_ci enum('DROP','PRESERVE') -3.0000 mysql event sql_mode set 494 1482 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') +3.0000 mysql event sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') 3.0000 mysql event comment char 64 192 utf8 utf8_bin char(64) NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned 1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64) @@ -466,7 +466,7 @@ NULL mysql index_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4) 3.0000 mysql proc definer char 141 423 utf8 utf8_bin char(141) NULL mysql proc created timestamp NULL NULL NULL NULL timestamp NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp -3.0000 mysql proc sql_mode set 494 1482 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') +3.0000 mysql proc sql_mode set 515 1545 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') 1.0000 mysql proc comment text 65535 65535 utf8 utf8_bin text 3.0000 mysql proc character_set_client char 32 96 utf8 utf8_bin char(32) 3.0000 mysql proc collation_connection char 32 96 utf8 utf8_bin char(32) diff --git a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf index fe3bcb1e8ff..91aa53ad7b1 100644 --- a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf +++ b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf @@ -14,6 +14,9 @@ wsrep-causal-reads=ON wsrep-sync-wait=15 [mysqld.1] +#galera_port=@OPT.port +#ist_port=@OPT.port +#sst_port=@OPT.port wsrep-cluster-address='gcomm://' wsrep_provider_options='base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' diff --git a/mysql-test/suite/innodb/disabled.def b/mysql-test/suite/innodb/disabled.def index 9a92e99df2e..35c941f8af7 100644 --- a/mysql-test/suite/innodb/disabled.def +++ b/mysql-test/suite/innodb/disabled.def @@ -10,14 +10,4 @@ # ############################################################################## -innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment -innodb.defrag_mdl-9155 : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defrag_concurrent : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defrag_stats : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defrag_stats_many_tables : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defragment : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defragment_fill_factor : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defragment_small : MDEV-11336 Fix and enable innodb_defragment -innodb.innodb_defrag_binlog : MDEV-11336 Fix and enable innodb_defragment -innodb-wl5980-alter : MDEV-9469 / MDEV-13668 extra crash in 10.2 create-index-debug : MDEV-13680 InnoDB may crash when btr_page_alloc() fails diff --git a/mysql-test/suite/innodb/r/alter_table.result b/mysql-test/suite/innodb/r/alter_table.result index 304bc865f75..8a0717aa677 100644 --- a/mysql-test/suite/innodb/r/alter_table.result +++ b/mysql-test/suite/innodb/r/alter_table.result @@ -11,3 +11,14 @@ t1 CREATE TABLE `t1` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC drop table t1; set @@sql_mode=default; +create table t1 ( +id1 int(11) not null auto_increment, +id2 varchar(30) not null, +id3 datetime not null default current_timestamp, +primary key (id1), +unique key unique_id2 (id2) +) engine=innodb; +alter table t1 change column id2 id4 varchar(100) not null; +select * from t1 where id4 like 'a'; +id1 id4 id3 +drop table t1; diff --git a/mysql-test/suite/innodb/r/innodb-16k.result b/mysql-test/suite/innodb/r/innodb-16k.result index 7435089cec3..07b40269e8f 100644 --- a/mysql-test/suite/innodb/r/innodb-16k.result +++ b/mysql-test/suite/innodb/r/innodb-16k.result @@ -329,9 +329,10 @@ CREATE INDEX t1e ON t1 (e(767)); UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c; CREATE INDEX t1f ON t1 (f(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -364,8 +365,9 @@ UPDATE t1 SET r=@e; CREATE INDEX t1s ON t1 (s(767)); UPDATE t1 SET s=@e; CREATE INDEX t1t ON t1 (t(767)); +BEGIN; UPDATE t1 SET t=@e; -ERROR HY000: Undo log record is too big +ROLLBACK; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -534,11 +536,11 @@ PRIMARY KEY (b(10), a), INDEX (c(767)), INDEX(b(767)) ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; INSERT INTO bug12547647 VALUES (5,REPEAT('khdfo5AlOq',1900),REPEAT('g',7751)); COMMIT; +BEGIN; UPDATE bug12547647 SET c = REPEAT('b',16928); -ERROR HY000: Undo log record is too big SHOW WARNINGS; Level Code Message -Error 1713 Undo log record is too big +ROLLBACK; DROP TABLE bug12547647; SET SESSION innodb_strict_mode = on; CREATE TABLE t1( diff --git a/mysql-test/suite/innodb/r/innodb-32k.result b/mysql-test/suite/innodb/r/innodb-32k.result index 140b9b87c2f..f4a3c835c5c 100644 --- a/mysql-test/suite/innodb/r/innodb-32k.result +++ b/mysql-test/suite/innodb/r/innodb-32k.result @@ -223,13 +223,14 @@ aa=@c,ba=@c,ca=@c,da=@c,ea=@c,fa=@c,ga=@c,ha=@c,ia=@c,ja=@c, ka=@c,la=@c,ma=@c,na=@c,oa=@c,pa=@c,qa=@c,ra=@c,sa=@c,ta=@c,ua=@c, va=@c,wa=@c,xa=@c,ya=@c,za=@c; CREATE INDEX t1f17 ON t1 (v(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d, v=@d,w=@d,x=@d,y=@d,z=@d, aa=@d,ba=@d,ca=@d,da=@d,ea=@d,fa=@d,ga=@d,ha=@d,ia=@d,ja=@d, ka=@d,la=@d,ma=@d,na=@d,oa=@d,pa=@d,qa=@d,ra=@d,sa=@d,ta=@d,ua=@d, va=@d,wa=@d,xa=@d,ya=@d,za=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d; diff --git a/mysql-test/suite/innodb/r/innodb-64k.result b/mysql-test/suite/innodb/r/innodb-64k.result index 0bc256aaf02..379235c510c 100644 --- a/mysql-test/suite/innodb/r/innodb-64k.result +++ b/mysql-test/suite/innodb/r/innodb-64k.result @@ -258,6 +258,7 @@ kc=@c,lc=@c,mc=@c,nc=@c,oc=@c,pc=@c,qc=@c,rc=@c,sc=@c,tc=@c,uc=@c, vc=@c,wc=@c,xc=@c,yc=@c,zc=@c; COMMIT; CREATE INDEX tg1f2 ON t1 (ia(767),ja(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d, v=@d,w=@d,x=@d,y=@d,z=@d, @@ -270,7 +271,7 @@ vb=@d,wb=@d,xb=@d,yb=@d,zb=@d, ac=@d,bc=@d,cc=@d,dc=@d,ec=@d,fc=@d,gc=@d,hc=@d,ic=@d,jc=@d, kc=@d,lc=@d,mc=@d,nc=@d,oc=@d,pc=@d,qc=@d,rc=@d,sc=@d,tc=@d,uc=@d, vc=@d,wc=@d,xc=@d,yc=@d,zc=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d; diff --git a/mysql-test/suite/innodb/r/innodb-alter-table.result b/mysql-test/suite/innodb/r/innodb-alter-table.result index 6045b6d70a0..0d5afab6bae 100644 --- a/mysql-test/suite/innodb/r/innodb-alter-table.result +++ b/mysql-test/suite/innodb/r/innodb-alter-table.result @@ -185,3 +185,44 @@ ticket CREATE TABLE `ticket` ( KEY `org_id` (`org_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DROP TABLE ticket; +CREATE TABLE t ( +id bigint(20) unsigned NOT NULL auto_increment, +d date NOT NULL, +a bigint(20) unsigned NOT NULL, +b smallint(5) unsigned DEFAULT NULL, +PRIMARY KEY (id,d) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs STATS_SAMPLE_PAGES=2 +PARTITION BY RANGE COLUMNS(d) +( +PARTITION p20170914 VALUES LESS THAN ('2017-09-15') ENGINE = InnoDB, +PARTITION p99991231 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB); +insert into t(d,a,b) values ('2017-09-15',rand()*10000,rand()*10); +insert into t(d,a,b) values ('2017-09-15',rand()*10000,rand()*10); +replace into t(d,a,b) select '2017-09-15',rand()*10000,rand()*10 from t t1, t t2, t t3, t t4; +select count(*) from t where d ='2017-09-15'; +count(*) +18 +ALTER TABLE t CHANGE b c smallint(5) unsigned , ADD KEY idx_d_a (d, a); +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `d` date NOT NULL, + `a` bigint(20) unsigned NOT NULL, + `c` smallint(5) unsigned DEFAULT NULL, + PRIMARY KEY (`id`,`d`), + KEY `idx_d_a` (`d`,`a`) +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs STATS_SAMPLE_PAGES=2 + PARTITION BY RANGE COLUMNS(`d`) +(PARTITION `p20170914` VALUES LESS THAN ('2017-09-15') ENGINE = InnoDB, + PARTITION `p99991231` VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) +analyze table t; +Table Op Msg_type Msg_text +test.t analyze status OK +select count(*) from t where d ='2017-09-15'; +count(*) +18 +select count(*) from t force index(primary) where d ='2017-09-15'; +count(*) +18 +DROP TABLE t; diff --git a/mysql-test/suite/innodb/r/innodb-alter.result b/mysql-test/suite/innodb/r/innodb-alter.result index aa78f55c78f..8bf66bb8914 100644 --- a/mysql-test/suite/innodb/r/innodb-alter.result +++ b/mysql-test/suite/innodb/r/innodb-alter.result @@ -540,9 +540,6 @@ ERROR 42000: Key column 'c2' doesn't exist in table ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=COPY; ERROR 42000: Key column 'c2' doesn't exist in table ALTER TABLE t1n ADD INDEX(c4), CHANGE c2 c4 INT, ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY -ALTER TABLE t1n CHANGE c2 c4 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c4), LOCK=NONE; SHOW CREATE TABLE t1n; Table Create Table t1n CREATE TABLE `t1n` ( @@ -559,9 +556,6 @@ ALTER TABLE t1n DROP INDEX c4; ALTER TABLE t1n CHANGE c4 c1 INT, ADD INDEX(c1), ALGORITHM=INPLACE; ERROR 42S21: Duplicate column name 'c1' ALTER TABLE t1n CHANGE c4 c11 INT, ADD INDEX(c11), ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY -ALTER TABLE t1n CHANGE c4 c11 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c11), LOCK=NONE; SHOW CREATE TABLE t1n; Table Create Table t1n CREATE TABLE `t1n` ( @@ -640,10 +634,8 @@ CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL; ALTER TABLE t1o DROP INDEX ct, DROP INDEX FTS_DOC_ID_INDEX, CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL; ALTER TABLE t1o ADD UNIQUE INDEX FTS_DOC_ID_INDEX(foo_id); -call mtr.add_suppression("InnoDB: No matching column for `FTS_DOC_ID` in index `ct` of table `test`\\.`t1o`"); ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ADD FULLTEXT INDEX(ct); -ERROR HY000: Index for table 't1o' is corrupt; try to repair it DROP TABLE sys_indexes; CREATE TABLE sys_indexes SELECT i.* FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES i INNER JOIN sys_tables st ON i.TABLE_ID=st.TABLE_ID; @@ -651,9 +643,16 @@ SELECT i.NAME,i.POS,i.MTYPE,i.PRTYPE,i.LEN FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS i INNER JOIN sys_tables st ON i.TABLE_ID=st.TABLE_ID; NAME POS MTYPE PRTYPE LEN +FTS_DOC_ID 0 6 1800 8 +c2 1 6 1027 4 +ct 2 5 524540 10 +cu 3 5 524540 10 SELECT si.NAME,i.POS,i.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS i INNER JOIN sys_indexes si ON i.INDEX_ID=si.INDEX_ID; NAME POS NAME +PRIMARY 0 FTS_DOC_ID +FTS_DOC_ID_INDEX 0 FTS_DOC_ID +ct 0 ct SELECT i.* FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS i INNER JOIN sys_foreign sf ON i.ID = sf.ID; ID FOR_COL_NAME REF_COL_NAME POS @@ -857,3 +856,33 @@ DROP TABLE dest_db.t1; DROP TABLE source_db.t1; DROP DATABASE source_db; DROP DATABASE dest_db; +USE test; +# +# MDEV-14038 ALTER TABLE does not exit on error with InnoDB + bad default function +# +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +ALTER TABLE t1 ADD b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0); +ERROR 22003: Out of range value for column 'b' at row 1 +SELECT * FROM t1; +a +10 +DROP TABLE t1; +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +ALTER TABLE t1 ADD b DATE NOT NULL DEFAULT if(unix_timestamp()>1,TIMESTAMP'2001-01-01 10:20:30',0); +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +SELECT * FROM t1; +a b +10 2001-01-01 +DROP TABLE t1; +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +ALTER TABLE t1 ADD b TIME NOT NULL DEFAULT if(unix_timestamp()>1,TIMESTAMP'2001-01-01 10:20:30',0); +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +SELECT * FROM t1; +a b +10 10:20:30 +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-get-fk.result b/mysql-test/suite/innodb/r/innodb-get-fk.result index ee17f262854..aa1bff8f134 100644 --- a/mysql-test/suite/innodb/r/innodb-get-fk.result +++ b/mysql-test/suite/innodb/r/innodb-get-fk.result @@ -40,6 +40,9 @@ crew_role_assigned CREATE TABLE `crew_role_assigned` ( CONSTRAINT `fk_crewRoleAssigned_crewId` FOREIGN KEY (`crew_id`) REFERENCES `crew` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `pilot` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This is a comment about tables' +SET GLOBAL innodb_buffer_pool_load_now = ON; +SET GLOBAL innodb_buffer_pool_dump_now = ON; +SET GLOBAL innodb_buffer_pool_load_abort = ON; ALTER TABLE `repro`.`crew_role_assigned` COMMENT = "This is a new comment about tables"; SHOW CREATE TABLE `repro`.`crew_role_assigned`; Table Create Table diff --git a/mysql-test/suite/innodb/r/innodb-online-alter-gis.result b/mysql-test/suite/innodb/r/innodb-online-alter-gis.result index c7daac48e48..79c0f2386aa 100644 --- a/mysql-test/suite/innodb/r/innodb-online-alter-gis.result +++ b/mysql-test/suite/innodb/r/innodb-online-alter-gis.result @@ -37,3 +37,13 @@ Level Code Message show errors; Level Code Message drop table t1; +# +# MDEV-14038 ALTER TABLE does not exit on error with InnoDB + bad default function +# +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +ALTER TABLE t1 ADD COLUMN b LINESTRING DEFAULT POINT(1,1); +ERROR 22007: Incorrect LINESTRING value: 'POINT' for column 'b' at row 1 +DESCRIBE t1; +Field Type Null Key Default Extra +a int(11) YES NULL +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-wl5980-alter.result b/mysql-test/suite/innodb/r/innodb-wl5980-alter.result index edd101efebb..27866b68303 100644 --- a/mysql-test/suite/innodb/r/innodb-wl5980-alter.result +++ b/mysql-test/suite/innodb/r/innodb-wl5980-alter.result @@ -48,8 +48,8 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, - `c2` int(11) DEFAULT '1', - `ct` text, + `c2` int(11) DEFAULT 1, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c2` (`c2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -59,7 +59,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, `c2` int(11), - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c2` (`c2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -267,7 +267,7 @@ Table Create Table t3 CREATE TABLE `t3` ( `c1` int(11) NOT NULL, `c3` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c2` (`c3`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -309,7 +309,7 @@ Table Create Table t3 CREATE TABLE `t3` ( `c1` int(11) NOT NULL, `1234567890123456789012345678901234567890123456789012345678901234` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c2` (`1234567890123456789012345678901234567890123456789012345678901234`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -360,9 +360,9 @@ t3.isl t1c.ibd t3.ibd ALTER TABLE t3 CHANGE c3 ðŒ€ðŒðŒ‚ðŒƒðŒ„ðŒ…ðŒ†ðŒ‡ðŒˆðŒ‰ðŒŠðŒ‹ðŒŒðŒðŒŽðŒðŒðŒ‘ðŒ’ðŒ“ðŒ”ðŒ•ðŒ–ðŒ—ðŒ˜ðŒ™ðŒšðŒ›ðŒœ INT; -ERROR HY000: Invalid utf8 character string: '\xF0\x90\x8C\x80\xF0\x90\x8C\x81\xF0\x90\x8C\x82\xF0\x90\x8C\x83' +ERROR HY000: Invalid utf8mb4 character string: '\xF0\x90\x8C\x80\xF0\x90\x8C\x81\xF0\x90\x8C\x82\xF0\x90\x8C\x83' ALTER TABLE t3 CHANGE c3 😲 INT; -ERROR HY000: Invalid utf8 character string: '\xF0\x9F\x98\xB2' +ERROR HY000: Invalid utf8mb4 character string: '\xF0\x9F\x98\xB2' ALTER TABLE t3 RENAME TO t2; ### files in MYSQL_DATA_DIR/test sys_foreign.frm @@ -390,7 +390,7 @@ Table Create Table t2 CREATE TABLE `t2` ( `c1` int(11) NOT NULL, `c3` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c2` (`c3`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -436,17 +436,17 @@ test/t1c3 c3 c2 0 ALTER TABLE t1 DROP INDEX c2; ERROR HY000: Cannot drop index 'c2': needed in a foreign key constraint ALTER TABLE t1 DROP INDEX c4; -ERROR 42000: Can't DROP 'c4'; check that column/key exists +ERROR 42000: Can't DROP INDEX `c4`; check that it exists ALTER TABLE t1c DROP FOREIGN KEY c2; -ERROR 42000: Can't DROP 'c2'; check that column/key exists +ERROR 42000: Can't DROP FOREIGN KEY `c2`; check that it exists ALTER TABLE t1c DROP FOREIGN KEY t1c2, DROP FOREIGN KEY c2; -ERROR 42000: Can't DROP 'c2'; check that column/key exists +ERROR 42000: Can't DROP FOREIGN KEY `c2`; check that it exists ALTER TABLE t1c DROP FOREIGN KEY t1c2, DROP FOREIGN KEY c2, DROP INDEX c2; -ERROR 42000: Can't DROP 'c2'; check that column/key exists +ERROR 42000: Can't DROP FOREIGN KEY `c2`; check that it exists ALTER TABLE t1c DROP INDEX c2; ERROR HY000: Cannot drop index 'c2': needed in a foreign key constraint ALTER TABLE t1c DROP FOREIGN KEY ẗ1C2; -ERROR 42000: Can't DROP 'ẗ1C2'; check that column/key exists +ERROR 42000: Can't DROP FOREIGN KEY `ẗ1C2`; check that it exists SHOW CREATE TABLE t1c; Table Create Table t1c CREATE TABLE `t1c` ( @@ -680,24 +680,24 @@ CREATE TABLE t1o LIKE t1; ALTER TABLE t1 ADD FULLTEXT INDEX (ct), CHANGE c1 pk INT, ALTER c2 SET DEFAULT 42, RENAME TO tt, ALGORITHM=INPLACE, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED. +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE t1 ADD FULLTEXT INDEX (ct), CHANGE c1 pk INT, ALTER c2 SET DEFAULT 42, RENAME TO tt, ALGORITHM=INPLACE, LOCK=SHARED; Warnings: Warning 124 InnoDB rebuilding table to add column FTS_DOC_ID ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl sys_foreign.frm sys_foreign.ibd sys_indexes.frm @@ -713,6 +713,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -730,8 +741,8 @@ SHOW CREATE TABLE tt; Table Create Table tt CREATE TABLE `tt` ( `pk` int(11) NOT NULL, - `c2` int(11) DEFAULT '42', - `ct` text, + `c2` int(11) DEFAULT 42, + `ct` text DEFAULT NULL, PRIMARY KEY (`pk`), FULLTEXT KEY `ct` (`ct`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/' @@ -755,23 +766,23 @@ ERROR 42000: Incorrect column name 'FTS_Doc_ID' ALTER TABLE t1o ADD FULLTEXT INDEX(ct), CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY CREATE TABLE t1n LIKE t1o; ALTER TABLE t1n ADD FULLTEXT INDEX(ct); Warnings: Warning 124 InnoDB rebuilding table to add column FTS_DOC_ID ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -800,17 +811,6 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -t1c.ibd -t1p.ibd -tt.ibd -ALTER TABLE t1n CHANGE c1 Fts_DOC_ID INT, ALGORITHM=INPLACE; -ERROR 42000: Incorrect column name 'FTS_DOC_ID' -ALTER TABLE t1n CHANGE c1 Fts_DOC_ID INT, ALGORITHM=COPY; -ERROR 42000: Incorrect column name 'Fts_DOC_ID' -ALTER TABLE t1n CHANGE FTS_DOC_ID c11 INT, ALGORITHM=INPLACE; -ERROR 42S22: Unknown column 'FTS_DOC_ID' in 't1n' -ALTER TABLE t1n CHANGE c1 FTS_DOC_ïD INT, ALGORITHM=INPLACE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -822,6 +822,28 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +t1c.ibd +t1p.ibd +tt.ibd +ALTER TABLE t1n CHANGE c1 Fts_DOC_ID INT, ALGORITHM=INPLACE; +ERROR 42000: Incorrect column name 'FTS_DOC_ID' +ALTER TABLE t1n CHANGE c1 Fts_DOC_ID INT, ALGORITHM=COPY; +ERROR 42000: Incorrect column name 'Fts_DOC_ID' +ALTER TABLE t1n CHANGE FTS_DOC_ID c11 INT, ALGORITHM=INPLACE; +ERROR 42S22: Unknown column 'FTS_DOC_ID' in 't1n' +ALTER TABLE t1n CHANGE c1 FTS_DOC_ïD INT, ALGORITHM=INPLACE; +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -850,11 +872,6 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -t1c.ibd -t1p.ibd -tt.ibd -ALTER TABLE t1n CHANGE FTS_DOC_ÃD c1 INT, ALGORITHM=INPLACE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -866,6 +883,22 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +t1c.ibd +t1p.ibd +tt.ibd +ALTER TABLE t1n CHANGE FTS_DOC_ÃD c1 INT, ALGORITHM=INPLACE; +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -894,12 +927,6 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -t1c.ibd -t1p.ibd -tt.ibd -ALTER TABLE t1n CHANGE c1 c2 INT, CHANGE c2 ct INT, CHANGE ct c1 TEXT, -ALGORITHM=INPLACE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -911,6 +938,23 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +t1c.ibd +t1p.ibd +tt.ibd +ALTER TABLE t1n CHANGE c1 c2 INT, CHANGE c2 ct INT, CHANGE ct c1 TEXT, +ALGORITHM=INPLACE; +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -939,6 +983,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -947,24 +1002,24 @@ Table Create Table t1n CREATE TABLE `t1n` ( `c2` int(11) NOT NULL, `ct` int(11) DEFAULT NULL, - `c1` text, + `c1` text DEFAULT NULL, PRIMARY KEY (`c2`), FULLTEXT KEY `ct` (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE t1n CHANGE c2 c1 INT, CHANGE ct c2 INT, CHANGE c1 ct TEXT, ALGORITHM=COPY; ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -993,6 +1048,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -1001,7 +1067,7 @@ Table Create Table t1n CREATE TABLE `t1n` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), FULLTEXT KEY `ct` (`ct`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 @@ -1010,21 +1076,18 @@ ERROR 42000: Key column 'c2' doesn't exist in table ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=COPY; ERROR 42000: Key column 'c2' doesn't exist in table ALTER TABLE t1n ADD INDEX(c4), CHANGE c2 c4 INT, ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY. -ALTER TABLE t1n CHANGE c2 c4 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c4), LOCK=NONE; ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1053,6 +1116,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -1061,24 +1135,24 @@ Table Create Table t1n CREATE TABLE `t1n` ( `c1` int(11) NOT NULL, `c4` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c4` (`c4`), FULLTEXT KEY `ct` (`ct`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE t1n DROP INDEX c4; ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1107,16 +1181,6 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -t1c.ibd -t1p.ibd -tt.ibd -ALTER TABLE t1n CHANGE c4 c1 INT, ADD INDEX(c1), ALGORITHM=INPLACE; -ERROR 42S21: Duplicate column name 'c1' -ALTER TABLE t1n CHANGE c4 c11 INT, ADD INDEX(c11), ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY. -ALTER TABLE t1n CHANGE c4 c11 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c11), LOCK=NONE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1128,6 +1192,24 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +t1c.ibd +t1p.ibd +tt.ibd +ALTER TABLE t1n CHANGE c4 c1 INT, ADD INDEX(c1), ALGORITHM=INPLACE; +ERROR 42S21: Duplicate column name 'c1' +ALTER TABLE t1n CHANGE c4 c11 INT, ADD INDEX(c11), ALGORITHM=INPLACE; +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1156,6 +1238,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -1164,7 +1257,7 @@ Table Create Table t1n CREATE TABLE `t1n` ( `c1` int(11) NOT NULL, `c11` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`c1`), KEY `c11` (`c11`), FULLTEXT KEY `ct` (`ct`) @@ -1172,17 +1265,17 @@ t1n CREATE TABLE `t1n` ( DROP TABLE t1n; ALTER TABLE t1o MODIFY c1 BIGINT UNSIGNED NOT NULL; ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl sys_foreign.frm sys_foreign.ibd sys_indexes.frm @@ -1198,18 +1291,6 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -t1c.ibd -t1p.ibd -tt.ibd -call mtr.add_suppression("Error: no matching column for .FTS_DOC_ID. in index .ct.--temporary-- of table .test...t1o"); -ALTER TABLE t1o ADD FULLTEXT INDEX(ct), -CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, -ALGORITHM=INPLACE; -ERROR HY000: Incorrect key file for table 't1o'; try to repair it -# The following would crash 10.2. Re-enable this and test after merge! -ALTER TABLE t1o CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, LOCK=NONE; -ALTER TABLE t1o ADD FULLTEXT INDEX(ct), ALGORITHM=INPLACE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1221,6 +1302,24 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +t1c.ibd +t1p.ibd +tt.ibd +ALTER TABLE t1o ADD FULLTEXT INDEX(ct), +CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, +ALGORITHM=INPLACE; +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1247,9 +1346,23 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd +ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, +LOCK=NONE; +ERROR 0A000: LOCK=NONE is not supported. Reason: Cannot drop or rename FTS_DOC_ID. Try LOCK=SHARED SELECT sc.pos FROM information_schema.innodb_sys_columns sc INNER JOIN information_schema.innodb_sys_tables st ON sc.TABLE_ID=st.TABLE_ID @@ -1261,24 +1374,24 @@ Table Create Table t1o CREATE TABLE `t1o` ( `FTS_DOC_ID` bigint(20) unsigned NOT NULL, `c2` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`FTS_DOC_ID`), FULLTEXT KEY `ct` (`ct`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, DROP INDEX ct, LOCK=NONE; ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl sys_foreign.frm sys_foreign.ibd sys_indexes.frm @@ -1294,6 +1407,17 @@ t1p.isl tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd t1c.ibd t1p.ibd tt.ibd @@ -1302,7 +1426,7 @@ Table Create Table t1o CREATE TABLE `t1o` ( `foo_id` bigint(20) unsigned NOT NULL, `c2` int(11) DEFAULT NULL, - `ct` text, + `ct` text DEFAULT NULL, PRIMARY KEY (`foo_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DROP TABLE t1c, t1p, sys_tables, sys_indexes, sys_foreign; @@ -1328,17 +1452,17 @@ INNER JOIN sys_foreign sf ON i.ID = sf.ID; ID FOR_COL_NAME REF_COL_NAME POS ALTER TABLE t1o ADD UNIQUE INDEX FTS_DOC_ID_INDEX(foo_id); ### files in MYSQL_DATA_DIR/test -FTS_AUX_INDEX_1.ibd -FTS_AUX_INDEX_2.ibd -FTS_AUX_INDEX_3.ibd -FTS_AUX_INDEX_4.ibd -FTS_AUX_INDEX_5.ibd -FTS_AUX_INDEX_6.ibd -FTS_AUX_BEING_DELETED.ibd -FTS_AUX_BEING_DELETED_CACHE.ibd -FTS_AUX_CONFIG.ibd -FTS_AUX_DELETED.ibd -FTS_AUX_DELETED_CACHE.ibd +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl sys_foreign.frm sys_foreign.ibd sys_indexes.frm @@ -1350,13 +1474,6 @@ t1o.ibd tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test -tt.ibd -ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, -ADD FULLTEXT INDEX(ct); -ERROR HY000: Incorrect key file for table 't1o'; try to repair it -ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, LOCK=NONE; -ALTER TABLE t1o ADD FULLTEXT INDEX(ct), ALGORITHM=INPLACE; -### files in MYSQL_DATA_DIR/test FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1368,6 +1485,21 @@ FTS_AUX_BEING_DELETED_CACHE.ibd FTS_AUX_CONFIG.ibd FTS_AUX_DELETED.ibd FTS_AUX_DELETED_CACHE.ibd +tt.ibd +ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, +ADD FULLTEXT INDEX(ct); +### files in MYSQL_DATA_DIR/test +FTS_AUX_INDEX_1.isl +FTS_AUX_INDEX_2.isl +FTS_AUX_INDEX_3.isl +FTS_AUX_INDEX_4.isl +FTS_AUX_INDEX_5.isl +FTS_AUX_INDEX_6.isl +FTS_AUX_BEING_DELETED.isl +FTS_AUX_BEING_DELETED_CACHE.isl +FTS_AUX_CONFIG.isl +FTS_AUX_DELETED.isl +FTS_AUX_DELETED_CACHE.isl FTS_AUX_INDEX_1.ibd FTS_AUX_INDEX_2.ibd FTS_AUX_INDEX_3.ibd @@ -1390,6 +1522,17 @@ t1o.ibd tt.frm tt.isl ### files in MYSQL_TMP_DIR/alt_dir/test +FTS_AUX_INDEX_1.ibd +FTS_AUX_INDEX_2.ibd +FTS_AUX_INDEX_3.ibd +FTS_AUX_INDEX_4.ibd +FTS_AUX_INDEX_5.ibd +FTS_AUX_INDEX_6.ibd +FTS_AUX_BEING_DELETED.ibd +FTS_AUX_BEING_DELETED_CACHE.ibd +FTS_AUX_CONFIG.ibd +FTS_AUX_DELETED.ibd +FTS_AUX_DELETED_CACHE.ibd tt.ibd ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL; ERROR HY000: Index 'FTS_DOC_ID_INDEX' is of wrong type for an InnoDB FULLTEXT index diff --git a/mysql-test/suite/innodb/r/innodb_defrag_concurrent.result b/mysql-test/suite/innodb/r/innodb_defrag_concurrent.result index ff32bf694cb..d10727b95b4 100644 --- a/mysql-test/suite/innodb/r/innodb_defrag_concurrent.result +++ b/mysql-test/suite/innodb/r/innodb_defrag_concurrent.result @@ -3,7 +3,15 @@ select @@global.innodb_stats_persistent; @@global.innodb_stats_persistent 0 set global innodb_defragment_stats_accuracy = 80; -CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(256), c INT, KEY second(a, b),KEY third(c)) ENGINE=INNODB; +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, +b VARCHAR(256), +c INT, +g GEOMETRY NOT NULL, +t VARCHAR(256), +KEY second(a, b), +KEY third(c), +SPATIAL gk(g), +FULLTEXT INDEX fti(t)) ENGINE=INNODB; connect con1,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK; connect con2,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK; connect con3,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK; @@ -40,9 +48,9 @@ count(stat_value) > 0 connection con1; optimize table t1;; connection default; -INSERT INTO t1 VALUES (400000, REPEAT('A', 256),300000);; +INSERT INTO t1 VALUES (400000, REPEAT('A', 256),300000, Point(1,1),'More like a test but different.');; connection con2; -INSERT INTO t1 VALUES (500000, REPEAT('A', 256),400000);; +INSERT INTO t1 VALUES (500000, REPEAT('A', 256),400000, Point(1,1),'Totally different text book.');; connection con3; DELETE FROM t1 where a between 1 and 100;; connection con4; @@ -59,6 +67,9 @@ disconnect con4; optimize table t1; Table Op Msg_type Msg_text test.t1 optimize status OK +check table t1 extended; +Table Op Msg_type Msg_text +test.t1 check status OK select count(*) from t1; count(*) 15723 diff --git a/mysql-test/suite/innodb/r/log_file_size.result b/mysql-test/suite/innodb/r/log_file_size.result index b576061e74b..e049b34ad81 100644 --- a/mysql-test/suite/innodb/r/log_file_size.result +++ b/mysql-test/suite/innodb/r/log_file_size.result @@ -1,4 +1,12 @@ CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; +SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +FOUND 1 /InnoDB: Log file .*ib_logfile0 size 0 is too small/ in mysqld.1.err +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK BEGIN; INSERT INTO t1 VALUES (42); SELECT * FROM t1; diff --git a/mysql-test/suite/innodb/r/table_definition_cache_debug.result b/mysql-test/suite/innodb/r/table_definition_cache_debug.result new file mode 100644 index 00000000000..afceec731b0 --- /dev/null +++ b/mysql-test/suite/innodb/r/table_definition_cache_debug.result @@ -0,0 +1,21 @@ +SET @save_tdc= @@GLOBAL.table_definition_cache; +SET @save_toc= @@GLOBAL.table_open_cache; +SET GLOBAL table_definition_cache= 400; +SET GLOBAL table_open_cache= 1024; +CREATE TABLE to_be_evicted(a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB; +INSERT INTO to_be_evicted VALUES(1,2),(2,1); +connect ddl,localhost,root,,; +SET DEBUG_SYNC = 'row_log_apply_before SIGNAL scanned WAIT_FOR got_duplicate'; +ALTER TABLE to_be_evicted ADD UNIQUE INDEX(b); +connection default; +SET DEBUG_SYNC = 'now WAIT_FOR scanned'; +BEGIN; +INSERT INTO to_be_evicted VALUES(3, 2); +SET DEBUG_SYNC = 'now SIGNAL got_duplicate'; +connection ddl; +ERROR 23000: Duplicate entry '2' for key 'b' +disconnect ddl; +connection default; +COMMIT; +SET DEBUG_SYNC = RESET; +FLUSH TABLES; diff --git a/mysql-test/suite/innodb/r/undo_log.result b/mysql-test/suite/innodb/r/undo_log.result new file mode 100644 index 00000000000..a40c6b5b3bf --- /dev/null +++ b/mysql-test/suite/innodb/r/undo_log.result @@ -0,0 +1,142 @@ +CREATE TABLE test_tab ( +a_str_18 mediumtext, +b_str_3 varchar(32) DEFAULT NULL, +a_str_13 mediumtext, +b_str_5 varchar(40) DEFAULT NULL, +b_str_6 varchar(50) DEFAULT NULL, +b_str_7 char(32) DEFAULT NULL, +b_str_8 varchar(32) DEFAULT NULL, +b_str_9 varchar(255) DEFAULT NULL, +a_str_28 char(255) DEFAULT NULL, +a_str_27 varchar(255) DEFAULT NULL, +b_str_10 varchar(32) DEFAULT NULL, +a_str_26 varchar(255) DEFAULT NULL, +a_str_6 varchar(50) DEFAULT NULL, +b_str_11 varchar(32) DEFAULT NULL, +b_str_12 varchar(255) DEFAULT NULL, +b_str_13 char(32) DEFAULT NULL, +b_str_14 varchar(32) DEFAULT NULL, +b_str_15 char(32) DEFAULT NULL, +b_str_16 char(32) DEFAULT NULL, +b_str_17 varchar(32) DEFAULT NULL, +b_str_18 varchar(32) DEFAULT NULL, +a_str_25 varchar(40) DEFAULT NULL, +b_str_19 varchar(255) DEFAULT NULL, +a_str_23 varchar(40) DEFAULT NULL, +b_str_20 varchar(32) DEFAULT NULL, +a_str_21 varchar(255) DEFAULT NULL, +a_str_20 varchar(255) DEFAULT NULL, +a_str_39 varchar(255) DEFAULT NULL, +a_str_38 varchar(255) DEFAULT NULL, +a_str_37 varchar(255) DEFAULT NULL, +b_str_21 char(32) DEFAULT NULL, +b_str_23 varchar(80) DEFAULT NULL, +b_str_24 varchar(32) DEFAULT NULL, +b_str_25 varchar(32) DEFAULT NULL, +b_str_26 char(32) NOT NULL DEFAULT '', +b_str_27 varchar(255) DEFAULT NULL, +a_str_36 varchar(255) DEFAULT NULL, +a_str_33 varchar(100) DEFAULT NULL, +a_ref_10 char(32) DEFAULT NULL, +b_str_28 char(32) DEFAULT NULL, +b_str_29 char(32) DEFAULT NULL, +a_ref_6 char(32) DEFAULT NULL, +a_ref_12 varchar(32) DEFAULT NULL, +a_ref_11 varchar(32) DEFAULT NULL, +a_str_49 varchar(40) DEFAULT NULL, +b_str_30 varchar(32) DEFAULT NULL, +a_ref_3 varchar(32) DEFAULT NULL, +a_str_48 varchar(40) DEFAULT NULL, +a_ref_1 char(32) DEFAULT NULL, +b_str_31 varchar(32) DEFAULT NULL, +b_str_32 varchar(255) DEFAULT NULL, +b_str_33 char(32) DEFAULT NULL, +b_str_34 varchar(32) DEFAULT NULL, +a_str_47 varchar(40) DEFAULT NULL, +b_str_36 varchar(255) DEFAULT NULL, +a_str_46 varchar(40) DEFAULT NULL, +a_str_45 varchar(255) DEFAULT NULL, +b_str_38 varchar(32) DEFAULT NULL, +b_str_39 char(32) DEFAULT NULL, +b_str_40 varchar(32) DEFAULT NULL, +a_str_41 varchar(255) DEFAULT NULL, +b_str_41 varchar(32) DEFAULT NULL, +PRIMARY KEY (b_str_26), +UNIQUE KEY a_str_47 (a_str_47), +UNIQUE KEY a_str_49 (a_str_49), +UNIQUE KEY a_str_33 (a_str_33), +UNIQUE KEY a_str_46 (a_str_46), +UNIQUE KEY a_str_48 (a_str_48), +KEY b_str_18 (b_str_18), +KEY a_str_26 (a_str_26), +KEY b_str_27 (b_str_27,b_str_19), +KEY b_str_41 (b_str_41), +KEY b_str_15 (b_str_15), +KEY a_str_20 (a_str_20), +KEY b_str_17 (b_str_17), +KEY b_str_40 (b_str_40), +KEY b_str_24 (b_str_24), +KEY b_str_10 (b_str_10), +KEY b_str_16 (b_str_16), +KEY b_str_29 (b_str_29), +KEY a_str_41 (a_str_41), +KEY b_str_7 (b_str_7), +KEY a_str_45 (a_str_45), +KEY a_str_28 (a_str_28), +KEY a_str_37 (a_str_37), +KEY b_str_6 (b_str_6), +KEY a_ref_6 (a_ref_6), +KEY b_str_34 (b_str_34), +KEY b_str_38 (b_str_38), +KEY a_ref_10 (a_ref_10), +KEY b_str_21 (b_str_21), +KEY b_str_23 (b_str_23,b_str_19), +KEY b_str_33 (b_str_33), +KEY a_ref_12 (a_ref_12), +KEY a_str_18 (a_str_18(255)), +KEY a_str_39 (a_str_39), +KEY a_str_27 (a_str_27), +KEY a_str_25 (a_str_25), +KEY b_str_9 (b_str_9), +KEY a_str_23 (a_str_23), +KEY b_str_8 (b_str_8), +KEY a_str_21 (a_str_21), +KEY b_str_3 (b_str_3), +KEY b_str_30 (b_str_30), +KEY b_str_12 (b_str_12), +KEY b_str_25 (b_str_25), +KEY b_str_13 (b_str_13), +KEY a_str_38 (a_str_38), +KEY a_str_13 (a_str_13(255)), +KEY a_str_36 (a_str_36), +KEY b_str_28 (b_str_28), +KEY b_str_19 (b_str_19), +KEY b_str_11 (b_str_11), +KEY a_ref_1 (a_ref_1), +KEY b_str_20 (b_str_20), +KEY b_str_14 (b_str_14), +KEY a_ref_3 (a_ref_3), +KEY b_str_39 (b_str_39), +KEY b_str_32 (b_str_32), +KEY a_str_6 (a_str_6), +KEY b_str_5 (b_str_5), +KEY b_str_31 (b_str_31), +KEY a_ref_11 (a_ref_11) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; +BEGIN; +INSERT INTO test_tab (b_str_26, a_str_13, a_str_18) VALUES +('a', REPEAT('f',4031), REPEAT('g', 4031)); +UPDATE test_tab SET a_str_13=REPEAT('h',4032), a_str_18=REPEAT('i',4032); +SELECT 'Reducing length to 4030'; +Reducing length to 4030 +Reducing length to 4030 +UPDATE test_tab SET a_str_13=REPEAT('j',4030), a_str_18=REPEAT('k',4030); +UPDATE test_tab SET a_str_13=REPEAT('l',4031), a_str_18=REPEAT('m',4031); +ROLLBACK; +SELECT COUNT(*) FROM test_tab; +COUNT(*) +0 +CHECK TABLE test_tab; +Table Op Msg_type Msg_text +test.test_tab check status OK +DROP TABLE test_tab; diff --git a/mysql-test/suite/innodb/t/alter_table.test b/mysql-test/suite/innodb/t/alter_table.test index 13fb574972a..474035436e5 100644 --- a/mysql-test/suite/innodb/t/alter_table.test +++ b/mysql-test/suite/innodb/t/alter_table.test @@ -8,3 +8,17 @@ create index idx1 on t1(a(3073)); show create table t1; drop table t1; set @@sql_mode=default; + +# +# MDEV-14081 ALTER TABLE CHANGE COLUMN Corrupts Index Leading to Crashes in 10.2 +# +create table t1 ( + id1 int(11) not null auto_increment, + id2 varchar(30) not null, + id3 datetime not null default current_timestamp, + primary key (id1), + unique key unique_id2 (id2) +) engine=innodb; +alter table t1 change column id2 id4 varchar(100) not null; +select * from t1 where id4 like 'a'; +drop table t1; diff --git a/mysql-test/suite/innodb/t/innodb-16k.test b/mysql-test/suite/innodb/t/innodb-16k.test index 099edec4ec6..a3a92bdec6a 100644 --- a/mysql-test/suite/innodb/t/innodb-16k.test +++ b/mysql-test/suite/innodb/t/innodb-16k.test @@ -318,10 +318,10 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, # because the UNDO records will be smaller. CREATE INDEX t1f ON t1 (f(767)); ---error 1713 +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; - +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -361,8 +361,9 @@ UPDATE t1 SET s=@e; # that CANNOT be updated. CREATE INDEX t1t ON t1 (t(767)); ---error 1713 +BEGIN; UPDATE t1 SET t=@e; +ROLLBACK; SHOW CREATE TABLE t1; DROP TABLE t1; @@ -490,9 +491,10 @@ INSERT INTO bug12547647 VALUES (5,REPEAT('khdfo5AlOq',1900),REPEAT('g',7751)); COMMIT; # The following used to cause a hang while doing infinite undo log allocation. ---error 1713 +BEGIN; UPDATE bug12547647 SET c = REPEAT('b',16928); SHOW WARNINGS; +ROLLBACK; DROP TABLE bug12547647; SET SESSION innodb_strict_mode = on; diff --git a/mysql-test/suite/innodb/t/innodb-32k.test b/mysql-test/suite/innodb/t/innodb-32k.test index 80a05c350d0..a0e314aea03 100644 --- a/mysql-test/suite/innodb/t/innodb-32k.test +++ b/mysql-test/suite/innodb/t/innodb-32k.test @@ -282,13 +282,14 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, CREATE INDEX t1f17 ON t1 (v(767)); ---error 1713 +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d, v=@d,w=@d,x=@d,y=@d,z=@d, aa=@d,ba=@d,ca=@d,da=@d,ea=@d,fa=@d,ga=@d,ha=@d,ia=@d,ja=@d, ka=@d,la=@d,ma=@d,na=@d,oa=@d,pa=@d,qa=@d,ra=@d,sa=@d,ta=@d,ua=@d, va=@d,wa=@d,xa=@d,ya=@d,za=@d; +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; diff --git a/mysql-test/suite/innodb/t/innodb-64k.test b/mysql-test/suite/innodb/t/innodb-64k.test index 2e08645f5b0..b091eee6d57 100644 --- a/mysql-test/suite/innodb/t/innodb-64k.test +++ b/mysql-test/suite/innodb/t/innodb-64k.test @@ -292,7 +292,7 @@ COMMIT; CREATE INDEX tg1f2 ON t1 (ia(767),ja(767)); ---error 1713 +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d, v=@d,w=@d,x=@d,y=@d,z=@d, @@ -305,6 +305,7 @@ UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, ac=@d,bc=@d,cc=@d,dc=@d,ec=@d,fc=@d,gc=@d,hc=@d,ic=@d,jc=@d, kc=@d,lc=@d,mc=@d,nc=@d,oc=@d,pc=@d,qc=@d,rc=@d,sc=@d,tc=@d,uc=@d, vc=@d,wc=@d,xc=@d,yc=@d,zc=@d; +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; diff --git a/mysql-test/suite/innodb/t/innodb-alter-table.test b/mysql-test/suite/innodb/t/innodb-alter-table.test index 97f0075f344..0cf456ad146 100644 --- a/mysql-test/suite/innodb/t/innodb-alter-table.test +++ b/mysql-test/suite/innodb/t/innodb-alter-table.test @@ -1,4 +1,5 @@ --source include/innodb_page_size.inc +--source include/have_partition.inc # # MMDEV-8386: MariaDB creates very big tmp file and hangs on xtradb @@ -171,3 +172,35 @@ ALTER TABLE ticket SHOW CREATE TABLE ticket; DROP TABLE ticket; + +# +# MDEV-13838: Wrong result after altering a partitioned table +# + +CREATE TABLE t ( +id bigint(20) unsigned NOT NULL auto_increment, +d date NOT NULL, +a bigint(20) unsigned NOT NULL, +b smallint(5) unsigned DEFAULT NULL, +PRIMARY KEY (id,d) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs STATS_SAMPLE_PAGES=2 +PARTITION BY RANGE COLUMNS(d) +( +PARTITION p20170914 VALUES LESS THAN ('2017-09-15') ENGINE = InnoDB, +PARTITION p99991231 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB); + +insert into t(d,a,b) values ('2017-09-15',rand()*10000,rand()*10); +insert into t(d,a,b) values ('2017-09-15',rand()*10000,rand()*10); + +replace into t(d,a,b) select '2017-09-15',rand()*10000,rand()*10 from t t1, t t2, t t3, t t4; + +select count(*) from t where d ='2017-09-15'; + +ALTER TABLE t CHANGE b c smallint(5) unsigned , ADD KEY idx_d_a (d, a); +SHOW CREATE TABLE t; +analyze table t; + +select count(*) from t where d ='2017-09-15'; +select count(*) from t force index(primary) where d ='2017-09-15'; + +DROP TABLE t; diff --git a/mysql-test/suite/innodb/t/innodb-alter.test b/mysql-test/suite/innodb/t/innodb-alter.test index 5e681f96b4a..9d84e95b88d 100644 --- a/mysql-test/suite/innodb/t/innodb-alter.test +++ b/mysql-test/suite/innodb/t/innodb-alter.test @@ -298,21 +298,12 @@ SHOW CREATE TABLE t1n; ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=INPLACE; --error ER_KEY_COLUMN_DOES_NOT_EXITS ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=COPY; -# FIXME: MDEV-13668 InnoDB unnecessarily rebuilds table -# when renaming a column and adding index ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1n ADD INDEX(c4), CHANGE c2 c4 INT, ALGORITHM=INPLACE; -ALTER TABLE t1n CHANGE c2 c4 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c4), LOCK=NONE; SHOW CREATE TABLE t1n; ALTER TABLE t1n DROP INDEX c4; --error ER_DUP_FIELDNAME ALTER TABLE t1n CHANGE c4 c1 INT, ADD INDEX(c1), ALGORITHM=INPLACE; -# FIXME: MDEV-13668 ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1n CHANGE c4 c11 INT, ADD INDEX(c11), ALGORITHM=INPLACE; -ALTER TABLE t1n CHANGE c4 c11 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c11), LOCK=NONE; SHOW CREATE TABLE t1n; DROP TABLE t1n; @@ -370,16 +361,8 @@ CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL; ALTER TABLE t1o ADD UNIQUE INDEX FTS_DOC_ID_INDEX(foo_id); -# FIXME: MDEV-9469 'Incorrect key file' on ALTER TABLE -call mtr.add_suppression("InnoDB: No matching column for `FTS_DOC_ID` in index `ct` of table `test`\\.`t1o`"); ---error ER_NOT_KEYFILE ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ADD FULLTEXT INDEX(ct); -# FIXME: MDEV-9469 (enable this) -#--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON -#ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, -#ALGORITHM=INPLACE; -#end of MDEV-9469 FIXME DROP TABLE sys_indexes; CREATE TABLE sys_indexes SELECT i.* FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES i @@ -494,6 +477,41 @@ eval ALTER TABLE $source_db.t1 DROP INDEX index2, algorithm=inplace; eval DROP TABLE $source_db.t1; eval DROP DATABASE $source_db; eval DROP DATABASE $dest_db; +USE test; +# +# End of 10.1 tests +# +--echo # +--echo # MDEV-14038 ALTER TABLE does not exit on error with InnoDB + bad default function +--echo # +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +--error ER_WARN_DATA_OUT_OF_RANGE +ALTER TABLE t1 ADD b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0); +SELECT * FROM t1; +DROP TABLE t1; + +# DATETIME-to-DATE truncation is OK +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +--enable_info +ALTER TABLE t1 ADD b DATE NOT NULL DEFAULT if(unix_timestamp()>1,TIMESTAMP'2001-01-01 10:20:30',0); +--disable_info +SELECT * FROM t1; +DROP TABLE t1; + +# DATETIME-to-TIME truncation is OK +CREATE TABLE t1 (a INT NOT NULL DEFAULT 0) ENGINE=InnoDB; +iNSERT INTO t1 VALUES (10); +--enable_info +ALTER TABLE t1 ADD b TIME NOT NULL DEFAULT if(unix_timestamp()>1,TIMESTAMP'2001-01-01 10:20:30',0); +--disable_info +SELECT * FROM t1; +DROP TABLE t1; + +# +# End of 10.2 tests +# diff --git a/mysql-test/suite/innodb/t/innodb-get-fk.test b/mysql-test/suite/innodb/t/innodb-get-fk.test index 339a7968623..46eb7dd0273 100644 --- a/mysql-test/suite/innodb/t/innodb-get-fk.test +++ b/mysql-test/suite/innodb/t/innodb-get-fk.test @@ -40,6 +40,11 @@ CONSTRAINT `fk_crewRoleAssigned_pilotId` FOREIGN KEY (`crew_id`) REFERENCES `rep ALTER TABLE `repro`.`crew_role_assigned` COMMENT = 'innodb_read_only'; SHOW CREATE TABLE `repro`.`crew_role_assigned`; +# These should be ignored in innodb_read_only mode. +SET GLOBAL innodb_buffer_pool_load_now = ON; +SET GLOBAL innodb_buffer_pool_dump_now = ON; +SET GLOBAL innodb_buffer_pool_load_abort = ON; + -- let $restart_parameters= -- source include/restart_mysqld.inc diff --git a/mysql-test/suite/innodb/t/innodb-online-alter-gis.test b/mysql-test/suite/innodb/t/innodb-online-alter-gis.test index 64d07ba23aa..2cb88d398bb 100644 --- a/mysql-test/suite/innodb/t/innodb-online-alter-gis.test +++ b/mysql-test/suite/innodb/t/innodb-online-alter-gis.test @@ -19,3 +19,13 @@ ALTER ONLINE TABLE t1 ADD PRIMARY KEY(a),DROP INDEX d, LOCK=SHARED; show warnings; show errors; drop table t1; + +--echo # +--echo # MDEV-14038 ALTER TABLE does not exit on error with InnoDB + bad default function +--echo # + +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD +ALTER TABLE t1 ADD COLUMN b LINESTRING DEFAULT POINT(1,1); +DESCRIBE t1; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb-wl5980-alter.test b/mysql-test/suite/innodb/t/innodb-wl5980-alter.test index 4b26661793c..a0d80ea8374 100644 --- a/mysql-test/suite/innodb/t/innodb-wl5980-alter.test +++ b/mysql-test/suite/innodb/t/innodb-wl5980-alter.test @@ -8,7 +8,7 @@ --disable_query_log # These values can change during the test LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`; -LET $regexp=/FTS_([0-9a-f_]+)([A-Z0-9_]+)\.ibd/FTS_AUX_\2.ibd/; +LET $regexp=/FTS_[0-9a-f_]+([A-Z0-9_]+)\.([islbd]{3})/FTS_AUX_\1.\2/; # Set up some variables LET $MYSQL_DATA_DIR = `select @@datadir`; @@ -447,12 +447,7 @@ ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=INPLACE; --error ER_KEY_COLUMN_DOES_NOT_EXITS ALTER TABLE t1n ADD INDEX(c2), CHANGE c2 c4 INT, ALGORITHM=COPY; -# FIXME: MDEV-13668 InnoDB unnecessarily rebuilds table -# when renaming a column and adding index ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1n ADD INDEX(c4), CHANGE c2 c4 INT, ALGORITHM=INPLACE; -ALTER TABLE t1n CHANGE c2 c4 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c4), LOCK=NONE; --echo ### files in MYSQL_DATA_DIR/test --replace_regex $regexp @@ -474,11 +469,7 @@ ALTER TABLE t1n DROP INDEX c4; --error ER_DUP_FIELDNAME ALTER TABLE t1n CHANGE c4 c1 INT, ADD INDEX(c1), ALGORITHM=INPLACE; -# FIXME: MDEV-13668 ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1n CHANGE c4 c11 INT, ADD INDEX(c11), ALGORITHM=INPLACE; -ALTER TABLE t1n CHANGE c4 c11 INT, LOCK=NONE; -ALTER TABLE t1n ADD INDEX(c11), LOCK=NONE; --echo ### files in MYSQL_DATA_DIR/test --replace_regex $regexp @@ -500,18 +491,10 @@ ALTER TABLE t1o MODIFY c1 BIGINT UNSIGNED NOT NULL; --replace_regex $regexp --list_files $MYSQL_TMP_DIR/alt_dir/test -# FIXME: MDEV-9469 'Incorrect key file' on ALTER TABLE -call mtr.add_suppression("Error: no matching column for .FTS_DOC_ID. in index .ct.--temporary-- of table .test...t1o"); ---error ER_NOT_KEYFILE ALTER TABLE t1o ADD FULLTEXT INDEX(ct), CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; ---echo # The following would crash 10.2. Re-enable this and test after merge! -ALTER TABLE t1o CHANGE c1 FTS_DOC_ID BIGINT UNSIGNED NOT NULL, LOCK=NONE; -ALTER TABLE t1o ADD FULLTEXT INDEX(ct), ALGORITHM=INPLACE; -# end of MDEV-9469 FIXME - --echo ### files in MYSQL_DATA_DIR/test --replace_regex $regexp --list_files $MYSQL_DATA_DIR/test @@ -520,11 +503,9 @@ ALTER TABLE t1o ADD FULLTEXT INDEX(ct), ALGORITHM=INPLACE; --list_files $MYSQL_TMP_DIR/alt_dir/test # This would create a hidden FTS_DOC_ID column, which cannot be done online. -# FIXME: MDEV-9469 (enable this) -#--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON -#ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, -#LOCK=NONE; -#end of MDEV-9469 FIXME +--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON +ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, +LOCK=NONE; # This should not show duplicates. SELECT sc.pos FROM information_schema.innodb_sys_columns sc @@ -535,7 +516,6 @@ WHERE st.NAME='test/t1o' AND sc.NAME='FTS_DOC_ID'; --replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR SHOW CREATE TABLE t1o; -# FIXME: MDEV-13668 ALTER TABLE t1o CHANGE FTS_DOC_ID foo_id BIGINT UNSIGNED NOT NULL, DROP INDEX ct, LOCK=NONE; @@ -573,15 +553,9 @@ ALTER TABLE t1o ADD UNIQUE INDEX FTS_DOC_ID_INDEX(foo_id); --replace_regex $regexp --list_files $MYSQL_TMP_DIR/alt_dir/test -# FIXME: MDEV-9469 'Incorrect key file' on ALTER TABLE ---error ER_NOT_KEYFILE ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ADD FULLTEXT INDEX(ct); -ALTER TABLE t1o CHANGE foo_id FTS_DOC_ID BIGINT UNSIGNED NOT NULL, LOCK=NONE; -ALTER TABLE t1o ADD FULLTEXT INDEX(ct), ALGORITHM=INPLACE; -#end of MDEV-9469 FIXME - --echo ### files in MYSQL_DATA_DIR/test --replace_regex $regexp --list_files $MYSQL_DATA_DIR/test diff --git a/mysql-test/suite/innodb/t/innodb_defrag_concurrent.test b/mysql-test/suite/innodb/t/innodb_defrag_concurrent.test index f596fab2a15..bbcd72f1a3a 100644 --- a/mysql-test/suite/innodb/t/innodb_defrag_concurrent.test +++ b/mysql-test/suite/innodb/t/innodb_defrag_concurrent.test @@ -16,7 +16,26 @@ select @@global.innodb_stats_persistent; set global innodb_defragment_stats_accuracy = 80; # Create table. -CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(256), c INT, KEY second(a, b),KEY third(c)) ENGINE=INNODB; +# +# TODO: Currently we do not defragment spatial indexes, +# because doing it properly would require +# appropriate logic around the SSN (split +# sequence number). +# +# Also do not defragment auxiliary tables related to FULLTEXT INDEX. +# +# Both types added to this test to make sure they do not cause +# problems. +# +CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, +b VARCHAR(256), +c INT, +g GEOMETRY NOT NULL, +t VARCHAR(256), +KEY second(a, b), +KEY third(c), +SPATIAL gk(g), +FULLTEXT INDEX fti(t)) ENGINE=INNODB; connect (con1,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); connect (con2,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); @@ -36,7 +55,7 @@ let $i = $data_size; while ($i) { eval - INSERT INTO t1 VALUES ($data_size + 1 - $i, REPEAT('A', 256), $i); + INSERT INTO t1 VALUES ($data_size + 1 - $i, REPEAT('A', 256), $i, Point($i,$i), 'This is a test message.'); dec $i; } --enable_query_log @@ -69,10 +88,10 @@ connection con1; --send optimize table t1; connection default; ---send INSERT INTO t1 VALUES (400000, REPEAT('A', 256),300000); +--send INSERT INTO t1 VALUES (400000, REPEAT('A', 256),300000, Point(1,1),'More like a test but different.'); connection con2; ---send INSERT INTO t1 VALUES (500000, REPEAT('A', 256),400000); +--send INSERT INTO t1 VALUES (500000, REPEAT('A', 256),400000, Point(1,1),'Totally different text book.'); connection con3; --send DELETE FROM t1 where a between 1 and 100; @@ -103,6 +122,7 @@ disconnect con3; disconnect con4; optimize table t1; +check table t1 extended; select count(*) from t1; select count(*) from t1 force index (second); diff --git a/mysql-test/suite/innodb/t/log_file_size.test b/mysql-test/suite/innodb/t/log_file_size.test index 206444115fc..140198de4ab 100644 --- a/mysql-test/suite/innodb/t/log_file_size.test +++ b/mysql-test/suite/innodb/t/log_file_size.test @@ -23,14 +23,33 @@ call mtr.add_suppression("InnoDB: Log file .*ib_logfile[01].* size"); call mtr.add_suppression("InnoDB: Unable to open .*ib_logfile0. to check native AIO read support"); FLUSH TABLES; --enable_query_log +let MYSQLD_DATADIR= `select @@datadir`; +CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; + +--source include/shutdown_mysqld.inc +--move_file $MYSQLD_DATADIR/ib_logfile0 $MYSQLD_DATADIR/ib_logfile.old +write_file $MYSQLD_DATADIR/ib_logfile0; +EOF +let $check_no_innodb=SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); --let $restart_parameters= --innodb-thread-concurrency=1 --innodb-log-file-size=1m --innodb-log-files-in-group=2 ---source include/restart_mysqld.inc +--source include/start_mysqld.inc + +eval $check_no_innodb; +--remove_file $MYSQLD_DATADIR/ib_logfile0 +--move_file $MYSQLD_DATADIR/ib_logfile.old $MYSQLD_DATADIR/ib_logfile.0 +--source include/shutdown_mysqld.inc +let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; +let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile0 size 0 is too small; +--source include/search_pattern_in_file.inc +--source include/start_mysqld.inc +CHECK TABLE t1; --let $restart_parameters= --innodb-thread-concurrency=100 --innodb-log-file-size=10M --innodb-log-files-in-group=2 --source include/restart_mysqld.inc -CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES (42); @@ -52,9 +71,7 @@ SELECT * FROM t1; INSERT INTO t1 VALUES (0),(123); -let MYSQLD_DATADIR= `select @@datadir`; let SEARCH_ABORT = NOT FOUND; -let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; BEGIN; DELETE FROM t1 WHERE a>0; diff --git a/mysql-test/suite/innodb/t/table_definition_cache_debug.opt b/mysql-test/suite/innodb/t/table_definition_cache_debug.opt new file mode 100644 index 00000000000..6195e055dc8 --- /dev/null +++ b/mysql-test/suite/innodb/t/table_definition_cache_debug.opt @@ -0,0 +1 @@ +--innodb-open-files=13 diff --git a/mysql-test/suite/innodb/t/table_definition_cache_debug.test b/mysql-test/suite/innodb/t/table_definition_cache_debug.test new file mode 100644 index 00000000000..57d64d6844e --- /dev/null +++ b/mysql-test/suite/innodb/t/table_definition_cache_debug.test @@ -0,0 +1,66 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +SET @save_tdc= @@GLOBAL.table_definition_cache; +SET @save_toc= @@GLOBAL.table_open_cache; + +# InnoDB plugin essentially ignores table_definition_cache size +# and hard-wires it to 400, which also is the minimum allowed value. +SET GLOBAL table_definition_cache= 400; +SET GLOBAL table_open_cache= 1024; + +CREATE TABLE to_be_evicted(a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB; +INSERT INTO to_be_evicted VALUES(1,2),(2,1); + +connect(ddl,localhost,root,,); +SET DEBUG_SYNC = 'row_log_apply_before SIGNAL scanned WAIT_FOR got_duplicate'; +--send +ALTER TABLE to_be_evicted ADD UNIQUE INDEX(b); + +connection default; +SET DEBUG_SYNC = 'now WAIT_FOR scanned'; + +# During the ADD UNIQUE INDEX, start a transaction that inserts a duplicate +# and then hogs the table lock, so that the unique index cannot be dropped. +BEGIN; +INSERT INTO to_be_evicted VALUES(3, 2); +SET DEBUG_SYNC = 'now SIGNAL got_duplicate'; + +connection ddl; +--error ER_DUP_ENTRY +reap; + +disconnect ddl; +connection default; +# Release the table lock. +COMMIT; +SET DEBUG_SYNC = RESET; + +# Allow cache eviction. +FLUSH TABLES; +--disable_query_log + +# Pollute the cache with many tables, so that our table will be evicted. +let $N=1000; +let $loop=$N; +while ($loop) +{ + eval CREATE TABLE t_$loop(id INT)ENGINE=InnoDB; + dec $loop; +} + +# Hopefully let InnoDB evict the tables. +sleep 10; + +let $loop=$N; +while ($loop) +{ + eval DROP TABLE t_$loop; + dec $loop; +} + +SET GLOBAL table_definition_cache= @save_tdc; +SET GLOBAL table_open_cache= @save_toc; + +DROP TABLE to_be_evicted; diff --git a/mysql-test/suite/innodb/t/undo_log.test b/mysql-test/suite/innodb/t/undo_log.test new file mode 100644 index 00000000000..c1a98793d91 --- /dev/null +++ b/mysql-test/suite/innodb/t/undo_log.test @@ -0,0 +1,139 @@ +--source include/have_innodb.inc +CREATE TABLE test_tab ( +a_str_18 mediumtext, +b_str_3 varchar(32) DEFAULT NULL, +a_str_13 mediumtext, +b_str_5 varchar(40) DEFAULT NULL, +b_str_6 varchar(50) DEFAULT NULL, +b_str_7 char(32) DEFAULT NULL, +b_str_8 varchar(32) DEFAULT NULL, +b_str_9 varchar(255) DEFAULT NULL, +a_str_28 char(255) DEFAULT NULL, +a_str_27 varchar(255) DEFAULT NULL, +b_str_10 varchar(32) DEFAULT NULL, +a_str_26 varchar(255) DEFAULT NULL, +a_str_6 varchar(50) DEFAULT NULL, +b_str_11 varchar(32) DEFAULT NULL, +b_str_12 varchar(255) DEFAULT NULL, +b_str_13 char(32) DEFAULT NULL, +b_str_14 varchar(32) DEFAULT NULL, +b_str_15 char(32) DEFAULT NULL, +b_str_16 char(32) DEFAULT NULL, +b_str_17 varchar(32) DEFAULT NULL, +b_str_18 varchar(32) DEFAULT NULL, +a_str_25 varchar(40) DEFAULT NULL, +b_str_19 varchar(255) DEFAULT NULL, +a_str_23 varchar(40) DEFAULT NULL, +b_str_20 varchar(32) DEFAULT NULL, +a_str_21 varchar(255) DEFAULT NULL, +a_str_20 varchar(255) DEFAULT NULL, +a_str_39 varchar(255) DEFAULT NULL, +a_str_38 varchar(255) DEFAULT NULL, +a_str_37 varchar(255) DEFAULT NULL, +b_str_21 char(32) DEFAULT NULL, +b_str_23 varchar(80) DEFAULT NULL, +b_str_24 varchar(32) DEFAULT NULL, +b_str_25 varchar(32) DEFAULT NULL, +b_str_26 char(32) NOT NULL DEFAULT '', +b_str_27 varchar(255) DEFAULT NULL, +a_str_36 varchar(255) DEFAULT NULL, +a_str_33 varchar(100) DEFAULT NULL, +a_ref_10 char(32) DEFAULT NULL, +b_str_28 char(32) DEFAULT NULL, +b_str_29 char(32) DEFAULT NULL, +a_ref_6 char(32) DEFAULT NULL, +a_ref_12 varchar(32) DEFAULT NULL, +a_ref_11 varchar(32) DEFAULT NULL, +a_str_49 varchar(40) DEFAULT NULL, +b_str_30 varchar(32) DEFAULT NULL, +a_ref_3 varchar(32) DEFAULT NULL, +a_str_48 varchar(40) DEFAULT NULL, +a_ref_1 char(32) DEFAULT NULL, +b_str_31 varchar(32) DEFAULT NULL, +b_str_32 varchar(255) DEFAULT NULL, +b_str_33 char(32) DEFAULT NULL, +b_str_34 varchar(32) DEFAULT NULL, +a_str_47 varchar(40) DEFAULT NULL, +b_str_36 varchar(255) DEFAULT NULL, +a_str_46 varchar(40) DEFAULT NULL, +a_str_45 varchar(255) DEFAULT NULL, +b_str_38 varchar(32) DEFAULT NULL, +b_str_39 char(32) DEFAULT NULL, +b_str_40 varchar(32) DEFAULT NULL, +a_str_41 varchar(255) DEFAULT NULL, +b_str_41 varchar(32) DEFAULT NULL, +PRIMARY KEY (b_str_26), +UNIQUE KEY a_str_47 (a_str_47), +UNIQUE KEY a_str_49 (a_str_49), +UNIQUE KEY a_str_33 (a_str_33), +UNIQUE KEY a_str_46 (a_str_46), +UNIQUE KEY a_str_48 (a_str_48), +KEY b_str_18 (b_str_18), +KEY a_str_26 (a_str_26), +KEY b_str_27 (b_str_27,b_str_19), +KEY b_str_41 (b_str_41), +KEY b_str_15 (b_str_15), +KEY a_str_20 (a_str_20), +KEY b_str_17 (b_str_17), +KEY b_str_40 (b_str_40), +KEY b_str_24 (b_str_24), +KEY b_str_10 (b_str_10), +KEY b_str_16 (b_str_16), +KEY b_str_29 (b_str_29), +KEY a_str_41 (a_str_41), +KEY b_str_7 (b_str_7), +KEY a_str_45 (a_str_45), +KEY a_str_28 (a_str_28), +KEY a_str_37 (a_str_37), +KEY b_str_6 (b_str_6), +KEY a_ref_6 (a_ref_6), +KEY b_str_34 (b_str_34), +KEY b_str_38 (b_str_38), +KEY a_ref_10 (a_ref_10), +KEY b_str_21 (b_str_21), +KEY b_str_23 (b_str_23,b_str_19), +KEY b_str_33 (b_str_33), +KEY a_ref_12 (a_ref_12), +KEY a_str_18 (a_str_18(255)), +KEY a_str_39 (a_str_39), +KEY a_str_27 (a_str_27), +KEY a_str_25 (a_str_25), +KEY b_str_9 (b_str_9), +KEY a_str_23 (a_str_23), +KEY b_str_8 (b_str_8), +KEY a_str_21 (a_str_21), +KEY b_str_3 (b_str_3), +KEY b_str_30 (b_str_30), +KEY b_str_12 (b_str_12), +KEY b_str_25 (b_str_25), +KEY b_str_13 (b_str_13), +KEY a_str_38 (a_str_38), +KEY a_str_13 (a_str_13(255)), +KEY a_str_36 (a_str_36), +KEY b_str_28 (b_str_28), +KEY b_str_19 (b_str_19), +KEY b_str_11 (b_str_11), +KEY a_ref_1 (a_ref_1), +KEY b_str_20 (b_str_20), +KEY b_str_14 (b_str_14), +KEY a_ref_3 (a_ref_3), +KEY b_str_39 (b_str_39), +KEY b_str_32 (b_str_32), +KEY a_str_6 (a_str_6), +KEY b_str_5 (b_str_5), +KEY b_str_31 (b_str_31), +KEY a_ref_11 (a_ref_11) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; + +BEGIN; +INSERT INTO test_tab (b_str_26, a_str_13, a_str_18) VALUES +('a', REPEAT('f',4031), REPEAT('g', 4031)); + +UPDATE test_tab SET a_str_13=REPEAT('h',4032), a_str_18=REPEAT('i',4032); +SELECT 'Reducing length to 4030'; +UPDATE test_tab SET a_str_13=REPEAT('j',4030), a_str_18=REPEAT('k',4030); +UPDATE test_tab SET a_str_13=REPEAT('l',4031), a_str_18=REPEAT('m',4031); +ROLLBACK; +SELECT COUNT(*) FROM test_tab; +CHECK TABLE test_tab; +DROP TABLE test_tab; diff --git a/mysql-test/suite/innodb_fts/r/concurrent_insert.result b/mysql-test/suite/innodb_fts/r/concurrent_insert.result new file mode 100644 index 00000000000..5644075038a --- /dev/null +++ b/mysql-test/suite/innodb_fts/r/concurrent_insert.result @@ -0,0 +1,11 @@ +CREATE TABLE t1(a VARCHAR(5),FULLTEXT KEY(a)) ENGINE=InnoDB; +SET DEBUG_SYNC = 'get_next_FTS_DOC_ID SIGNAL prepared WAIT_FOR race'; +REPLACE INTO t1(a) values('aaa'); +connect dml, localhost, root, ,; +SET DEBUG_SYNC = 'now WAIT_FOR prepared'; +REPLACE INTO t1(a) VALUES('aaa'); +SET DEBUG_SYNC = 'now SIGNAL race'; +disconnect dml; +connection default; +SET DEBUG_SYNC = 'RESET'; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/r/fulltext.result b/mysql-test/suite/innodb_fts/r/fulltext.result index f096f1c7dd5..42e294b3293 100644 --- a/mysql-test/suite/innodb_fts/r/fulltext.result +++ b/mysql-test/suite/innodb_fts/r/fulltext.result @@ -1,4 +1,3 @@ -drop table if exists t1,t2,t3; CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)) ENGINE = InnoDB; INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'), ('Full-text indexes', 'are called collections'), @@ -637,3 +636,58 @@ EXECUTE stmt; DEALLOCATE PREPARE stmt; DROP TABLE t1; End of 5.1 tests +CREATE TABLE z(a INTEGER) engine=innodb; +CREATE TABLE q(b TEXT CHARSET latin1, fulltext(b)) engine=innodb; +EXPLAIN SELECT 1 FROM q WHERE (SELECT MATCH(b) AGAINST ('*') FROM z); +ERROR 42000: syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or '*' +SELECT 1 FROM q WHERE (SELECT MATCH(b) AGAINST ('*') FROM z); +ERROR 42000: syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or '*' +EXPLAIN SELECT MATCH(b) AGAINST ('*') FROM z; +ERROR 42S22: Unknown column 'b' in 'field list' +SELECT MATCH(b) AGAINST ('*') FROM z; +ERROR 42S22: Unknown column 'b' in 'field list' +EXPLAIN SELECT MATCH(a) AGAINST ('*') FROM z; +ERROR HY000: Can't find FULLTEXT index matching the column list +SELECT MATCH(a) AGAINST ('*') FROM z; +ERROR HY000: Can't find FULLTEXT index matching the column list +EXPLAIN SELECT MATCH(b) AGAINST ('*') FROM q; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE q ALL NULL NULL NULL NULL 1 +SELECT MATCH(b) AGAINST ('*') FROM q; +ERROR 42000: syntax error, unexpected $end, expecting FTS_TERM or FTS_NUMB or '*' +DROP TABLE z, q; +create table t ( +FTS_DOC_ID BIGINT UNSIGNED PRIMARY KEY, t TEXT, FULLTEXT KEY (t) +) ENGINE=InnoDB; +INSERT INTO t values (1, 'foo bar'), (2, 'foo bar'), (3, 'foo'); +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 0; +FTS_DOC_ID t +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 1; +FTS_DOC_ID t +1 foo bar +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 2; +FTS_DOC_ID t +1 foo bar +2 foo bar +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 3; +FTS_DOC_ID t +1 foo bar +2 foo bar +3 foo +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 4; +FTS_DOC_ID t +1 foo bar +2 foo bar +3 foo +SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) +LIMIT 5; +FTS_DOC_ID t +1 foo bar +2 foo bar +3 foo +DROP TABLE t; diff --git a/mysql-test/suite/innodb_fts/r/sync.result b/mysql-test/suite/innodb_fts/r/sync.result new file mode 100644 index 00000000000..82959cfea96 --- /dev/null +++ b/mysql-test/suite/innodb_fts/r/sync.result @@ -0,0 +1,145 @@ +connect con1,localhost,root,,; +connection default; +# Case 1: Test select and insert(row in both disk and cache) +CREATE TABLE t1 ( +FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +FULLTEXT(title) +) ENGINE = InnoDB; +INSERT INTO t1(title) VALUES('mysql'); +INSERT INTO t1(title) VALUES('database'); +connection con1; +SET @old_dbug = @@SESSION.debug_dbug; +SET debug_dbug = '+d,fts_instrument_sync_debug'; +SET DEBUG_SYNC= 'fts_write_node SIGNAL written WAIT_FOR selected'; +INSERT INTO t1(title) VALUES('mysql database'); +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR written'; +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +database 2 3 2 2 0 +database 2 3 2 3 6 +mysql 1 3 2 1 0 +mysql 1 3 2 3 0 +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +SET GLOBAL innodb_ft_aux_table=default; +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +FTS_DOC_ID title +1 mysql +2 database +SET DEBUG_SYNC= 'now SIGNAL selected'; +connection con1; +SET @old_dbug = @@SESSION.debug_dbug; +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +database 2 3 2 2 0 +database 2 3 2 3 6 +mysql 1 3 2 1 0 +mysql 1 3 2 3 0 +SET GLOBAL innodb_ft_aux_table=default; +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +FTS_DOC_ID title +3 mysql database +1 mysql +2 database +connection default; +DROP TABLE t1; +# Case 2: Test insert and insert(sync) +CREATE TABLE t1 ( +FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +FULLTEXT(title) +) ENGINE = InnoDB; +INSERT INTO t1(title) VALUES('mysql'); +INSERT INTO t1(title) VALUES('database'); +connection con1; +SET debug_dbug = '+d,fts_instrument_sync_debug'; +SET DEBUG_SYNC= 'fts_write_node SIGNAL written WAIT_FOR inserted'; +INSERT INTO t1(title) VALUES('mysql database'); +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR written'; +INSERT INTO t1(title) VALUES('mysql database'); +SET DEBUG_SYNC= 'now SIGNAL inserted'; +connection con1; +SET debug_dbug = @old_dbug; +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +database 2 3 2 2 0 +database 2 3 2 3 6 +database 4 4 1 4 6 +mysql 1 4 3 1 0 +mysql 1 4 3 3 0 +mysql 1 4 3 4 0 +SET GLOBAL innodb_ft_aux_table=default; +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +FTS_DOC_ID title +3 mysql database +4 mysql database +1 mysql +2 database +connection default; +disconnect con1; +DROP TABLE t1; +# Case 3: Test insert crash recovery +CREATE TABLE t1 ( +FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +FULLTEXT(title) +) ENGINE = InnoDB; +INSERT INTO t1(title) VALUES('database'); +SET debug_dbug = '+d,fts_instrument_sync_debug,fts_write_node_crash'; +INSERT INTO t1(title) VALUES('mysql'); +ERROR HY000: Lost connection to MySQL server during query +After restart +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database'); +FTS_DOC_ID title +1 database +SET @old_dbug = @@SESSION.debug_dbug; +SET debug_dbug = '+d,fts_instrument_sync_debug'; +INSERT INTO t1(title) VALUES('mysql'); +SET debug_dbug = @old_dbug; +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database'); +FTS_DOC_ID title +1 database +2 mysql +DROP TABLE t1; +# Case 4: Test sync commit & rollback in background +CREATE TABLE t1( +id INT AUTO_INCREMENT, +title VARCHAR(100), +FULLTEXT(title), +PRIMARY KEY(id)) ENGINE=InnoDB; +SET debug_dbug = '+d,fts_instrument_sync'; +INSERT INTO t1(title) VALUES('mysql'); +SET debug_dbug = @old_dbug; +SET @old_global_dbug = @@GLOBAL.debug_dbug; +SET @old_dbug = @@SESSION.debug_dbug; +SET GLOBAL debug_dbug='+d,fts_instrument_sync,fts_instrument_sync_interrupted'; +INSERT INTO t1(title) VALUES('database'); +SET GLOBAL debug_dbug = @old_global_dbug; +SET debug_dbug = '+d,fts_instrument_sync_debug'; +INSERT INTO t1(title) VALUES('good'); +SET debug_dbug = @old_dbug; +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +database 2 2 1 2 0 +good 3 3 1 3 0 +mysql 1 1 1 1 0 +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION +SET GLOBAL innodb_ft_aux_table=default; +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database good'); +id title +1 mysql +2 database +3 good +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/r/sync_block.result b/mysql-test/suite/innodb_fts/r/sync_block.result new file mode 100644 index 00000000000..f9f695c42f4 --- /dev/null +++ b/mysql-test/suite/innodb_fts/r/sync_block.result @@ -0,0 +1,83 @@ +SET @old_log_output = @@global.log_output; +SET @old_slow_query_log = @@global.slow_query_log; +SET @old_general_log = @@global.general_log; +SET @old_long_query_time = @@global.long_query_time; +SET @old_debug = @@global.debug_dbug; +SET GLOBAL log_output = 'TABLE'; +SET GLOBAL general_log = 1; +SET GLOBAL slow_query_log = 1; +SET GLOBAL long_query_time = 1; +connect con1,localhost,root,,; +connect con2,localhost,root,,; +connection default; +# Case 1: Sync blocks DML(insert) on the same table. +CREATE TABLE t1 ( +FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +FULLTEXT(title) +) ENGINE = InnoDB; +connection con1; +SET GLOBAL debug_dbug='+d,fts_instrument_sync_debug,fts_instrument_sync_sleep'; +SET DEBUG_SYNC= 'fts_sync_begin SIGNAL begin WAIT_FOR continue'; +INSERT INTO t1(title) VALUES('mysql database'); +connection con2; +SET DEBUG_SYNC= 'now WAIT_FOR begin'; +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +connection default; +SET DEBUG_SYNC= 'now SIGNAL continue'; +connection con1; +/* connection con1 */ INSERT INTO t1(title) VALUES('mysql database'); +connection con2; +/* conneciton con2 */ SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +FTS_DOC_ID title +connection default; +# make con1 & con2 show up in mysql.slow_log +SELECT SLEEP(2); +SLEEP(2) +0 +# slow log results should only contain INSERT INTO t1. +SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02'; +sql_text +INSERT INTO t1(title) VALUES('mysql database') +SET GLOBAL debug_dbug = @old_debug_dbug; +TRUNCATE TABLE mysql.slow_log; +DROP TABLE t1; +# Case 2: Sync blocks DML(insert) on other tables. +CREATE TABLE t1 ( +FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +FULLTEXT(title) +) ENGINE = InnoDB; +CREATE TABLE t2(id INT); +connection con1; +SET GLOBAL debug_dbug='+d,fts_instrument_sync_request,fts_instrument_sync_sleep'; +SET DEBUG_SYNC= 'fts_instrument_sync_request SIGNAL begin WAIT_FOR continue'; +INSERT INTO t1(title) VALUES('mysql database'); +connection con2; +SET DEBUG_SYNC= 'now WAIT_FOR begin'; +INSERT INTO t2 VALUES(1); +connection default; +SET DEBUG_SYNC= 'now SIGNAL continue'; +connection con1; +/* connection con1 */ INSERT INTO t1(title) VALUES('mysql database'); +connection con2; +/* conneciton con2 */ INSERT INTO t2 VALUES(1); +connection default; +SET DEBUG_SYNC = 'RESET'; +# make con1 & con2 show up in mysql.slow_log +SELECT SLEEP(2); +SLEEP(2) +0 +# slow log results should be empty here. +SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02'; +sql_text +SET GLOBAL debug_dbug = @old_debug_dbug; +TRUNCATE TABLE mysql.slow_log; +DROP TABLE t1,t2; +disconnect con1; +disconnect con2; +# Restore slow log settings. +SET GLOBAL log_output = @old_log_output; +SET GLOBAL general_log = @old_general_log; +SET GLOBAL slow_query_log = @old_slow_query_log; +SET GLOBAL long_query_time = @old_long_query_time; diff --git a/mysql-test/suite/innodb_fts/r/truncate.result b/mysql-test/suite/innodb_fts/r/truncate.result new file mode 100644 index 00000000000..0e21717a4d3 --- /dev/null +++ b/mysql-test/suite/innodb_fts/r/truncate.result @@ -0,0 +1,31 @@ +# +# Bug#25053705 - INVALID I/O ON TABLE AFTER TRUNCATE +# +CREATE TABLE t1 (a INT, d INT, b VARCHAR(198), c CHAR(158), FULLTEXT fts1(c,b), +FULLTEXT fts2(c)); +TRUNCATE TABLE t1; +INSERT INTO t1 (a,d,b,c) VALUES ( +'79795','6',repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorc +cuullucocraloracurooulrooauuar','1')); +CREATE TABLE t2 (a INT, d INT, b VARCHAR(198), c CHAR(158), FULLTEXT fts1(c,b)); +INSERT INTO t2 VALUES (1, 1, repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorccuullucocraloracurooulrooauuar','1')); +create procedure insert_t2(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t2 select * from t2; +set i = i + 1; +end while; +end| +CALL insert_t2(15); +SET @save_dbug = @@SESSION.DEBUG_DBUG; +SET DEBUG_DBUG = '+d,innodb_invalid_read_after_truncate'; +INSERT INTO t1 (a,d,b,c) VALUES ( +'7795','6',repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorc +cuullucocraloracurooulrooauuar','1')); +SET DEBUG_DBUG = @save_dbug; +DROP PROCEDURE insert_t2; +DROP TABLE t1,t2; diff --git a/mysql-test/suite/innodb_fts/t/concurrent_insert.test b/mysql-test/suite/innodb_fts/t/concurrent_insert.test new file mode 100644 index 00000000000..e5d61cd8b05 --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/concurrent_insert.test @@ -0,0 +1,20 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +CREATE TABLE t1(a VARCHAR(5),FULLTEXT KEY(a)) ENGINE=InnoDB; +SET DEBUG_SYNC = 'get_next_FTS_DOC_ID SIGNAL prepared WAIT_FOR race'; +--send +REPLACE INTO t1(a) values('aaa'); + +connect(dml, localhost, root, ,); +SET DEBUG_SYNC = 'now WAIT_FOR prepared'; +REPLACE INTO t1(a) VALUES('aaa'); +SET DEBUG_SYNC = 'now SIGNAL race'; +disconnect dml; + +connection default; +reap; +SET DEBUG_SYNC = 'RESET'; + +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/t/fulltext.test b/mysql-test/suite/innodb_fts/t/fulltext.test index 90d5d5c71e0..663b202265b 100644 --- a/mysql-test/suite/innodb_fts/t/fulltext.test +++ b/mysql-test/suite/innodb_fts/t/fulltext.test @@ -4,10 +4,6 @@ --source include/have_innodb.inc ---disable_warnings -drop table if exists t1,t2,t3; ---enable_warnings - CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)) ENGINE = InnoDB; INSERT INTO t1 VALUES('MySQL has now support', 'for full-text search'), ('Full-text indexes', 'are called collections'), @@ -679,3 +675,45 @@ DEALLOCATE PREPARE stmt; DROP TABLE t1; --echo End of 5.1 tests + +# This is an adapted and extended version of an Oracle test for +# Bug#21140111: Explain ... match against: Assertion failed: ret ... +# No bug was repeatable for MariaDB. + +CREATE TABLE z(a INTEGER) engine=innodb; +CREATE TABLE q(b TEXT CHARSET latin1, fulltext(b)) engine=innodb; + +--error ER_PARSE_ERROR +EXPLAIN SELECT 1 FROM q WHERE (SELECT MATCH(b) AGAINST ('*') FROM z); +--error ER_PARSE_ERROR +SELECT 1 FROM q WHERE (SELECT MATCH(b) AGAINST ('*') FROM z); +--error ER_BAD_FIELD_ERROR +EXPLAIN SELECT MATCH(b) AGAINST ('*') FROM z; +--error ER_BAD_FIELD_ERROR +SELECT MATCH(b) AGAINST ('*') FROM z; +--error ER_FT_MATCHING_KEY_NOT_FOUND +EXPLAIN SELECT MATCH(a) AGAINST ('*') FROM z; +--error ER_FT_MATCHING_KEY_NOT_FOUND +SELECT MATCH(a) AGAINST ('*') FROM z; +EXPLAIN SELECT MATCH(b) AGAINST ('*') FROM q; +--error ER_PARSE_ERROR +SELECT MATCH(b) AGAINST ('*') FROM q; + +DROP TABLE z, q; + +create table t ( + FTS_DOC_ID BIGINT UNSIGNED PRIMARY KEY, t TEXT, FULLTEXT KEY (t) +) ENGINE=InnoDB; + +INSERT INTO t values (1, 'foo bar'), (2, 'foo bar'), (3, 'foo'); +let $limit=0; +let $N=6; +while ($N) +{ + eval SELECT * FROM t WHERE MATCH(t) AGAINST ('foo bar' IN BOOLEAN MODE) + LIMIT $limit; + inc $limit; + dec $N; +} + +DROP TABLE t; diff --git a/mysql-test/suite/innodb_fts/t/sync.opt b/mysql-test/suite/innodb_fts/t/sync.opt new file mode 100644 index 00000000000..7724f97647f --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/sync.opt @@ -0,0 +1,2 @@ +--innodb-ft-index-cache +--innodb-ft-index-table diff --git a/mysql-test/suite/innodb_fts/t/sync.test b/mysql-test/suite/innodb_fts/t/sync.test new file mode 100644 index 00000000000..2ad5423d73b --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/sync.test @@ -0,0 +1,170 @@ +# +# BUG#22516559 MYSQL INSTANCE STALLS WHEN SYNCING FTS INDEX +# + +--source include/have_innodb.inc +--source include/have_debug_sync.inc +--source include/not_valgrind.inc +--source include/not_embedded.inc +--source include/not_crashrep.inc + +connect (con1,localhost,root,,); +connection default; + +--echo # Case 1: Test select and insert(row in both disk and cache) +CREATE TABLE t1 ( + FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + FULLTEXT(title) +) ENGINE = InnoDB; + +INSERT INTO t1(title) VALUES('mysql'); +INSERT INTO t1(title) VALUES('database'); + +connection con1; + +SET @old_dbug = @@SESSION.debug_dbug; +SET debug_dbug = '+d,fts_instrument_sync_debug'; + +SET DEBUG_SYNC= 'fts_write_node SIGNAL written WAIT_FOR selected'; + +send INSERT INTO t1(title) VALUES('mysql database'); + +connection default; + +SET DEBUG_SYNC= 'now WAIT_FOR written'; + +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +SET GLOBAL innodb_ft_aux_table=default; + +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); + +SET DEBUG_SYNC= 'now SIGNAL selected'; + +connection con1; +--reap + +SET @old_dbug = @@SESSION.debug_dbug; + +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +SET GLOBAL innodb_ft_aux_table=default; + +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); + +connection default; + +DROP TABLE t1; + +--echo # Case 2: Test insert and insert(sync) +CREATE TABLE t1 ( + FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + FULLTEXT(title) +) ENGINE = InnoDB; + +INSERT INTO t1(title) VALUES('mysql'); +INSERT INTO t1(title) VALUES('database'); + +connection con1; + +SET debug_dbug = '+d,fts_instrument_sync_debug'; + +SET DEBUG_SYNC= 'fts_write_node SIGNAL written WAIT_FOR inserted'; + +send INSERT INTO t1(title) VALUES('mysql database'); + +connection default; + +SET DEBUG_SYNC= 'now WAIT_FOR written'; + +INSERT INTO t1(title) VALUES('mysql database'); + +SET DEBUG_SYNC= 'now SIGNAL inserted'; + +connection con1; +--reap + +SET debug_dbug = @old_dbug; + +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +SET GLOBAL innodb_ft_aux_table=default; + +SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); + +connection default; +disconnect con1; + +DROP TABLE t1; + +--echo # Case 3: Test insert crash recovery +--let $_expect_file_name=$MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect + +CREATE TABLE t1 ( + FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + FULLTEXT(title) +) ENGINE = InnoDB; + +INSERT INTO t1(title) VALUES('database'); + +--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect + +SET debug_dbug = '+d,fts_instrument_sync_debug,fts_write_node_crash'; + +--error 2013 +INSERT INTO t1(title) VALUES('mysql'); + +--source include/start_mysqld.inc + +-- echo After restart +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database'); + +SET @old_dbug = @@SESSION.debug_dbug; + +SET debug_dbug = '+d,fts_instrument_sync_debug'; + +INSERT INTO t1(title) VALUES('mysql'); + +SET debug_dbug = @old_dbug; + +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database'); + +DROP TABLE t1; + +--echo # Case 4: Test sync commit & rollback in background +CREATE TABLE t1( + id INT AUTO_INCREMENT, + title VARCHAR(100), + FULLTEXT(title), + PRIMARY KEY(id)) ENGINE=InnoDB; + +SET debug_dbug = '+d,fts_instrument_sync'; +INSERT INTO t1(title) VALUES('mysql'); +SET debug_dbug = @old_dbug; + +--source include/restart_mysqld.inc + +SET @old_global_dbug = @@GLOBAL.debug_dbug; +SET @old_dbug = @@SESSION.debug_dbug; +SET GLOBAL debug_dbug='+d,fts_instrument_sync,fts_instrument_sync_interrupted'; +INSERT INTO t1(title) VALUES('database'); +SET GLOBAL debug_dbug = @old_global_dbug; + +SET debug_dbug = '+d,fts_instrument_sync_debug'; +INSERT INTO t1(title) VALUES('good'); +SET debug_dbug = @old_dbug; + +SET GLOBAL innodb_ft_aux_table="test/t1"; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; +SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; +SET GLOBAL innodb_ft_aux_table=default; + +SELECT * FROM t1 WHERE MATCH(title) AGAINST ('mysql database good'); + +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/t/sync_block.test b/mysql-test/suite/innodb_fts/t/sync_block.test new file mode 100644 index 00000000000..1dd3c2bc38e --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/sync_block.test @@ -0,0 +1,124 @@ +# +# BUG#22516559 MYSQL INSTANCE STALLS WHEN SYNCING FTS INDEX +# + +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/have_log_bin.inc +--source include/count_sessions.inc + +SET @old_log_output = @@global.log_output; +SET @old_slow_query_log = @@global.slow_query_log; +SET @old_general_log = @@global.general_log; +SET @old_long_query_time = @@global.long_query_time; +SET @old_debug = @@global.debug_dbug; + +SET GLOBAL log_output = 'TABLE'; +SET GLOBAL general_log = 1; +SET GLOBAL slow_query_log = 1; +SET GLOBAL long_query_time = 1; + +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); +connection default; + +--echo # Case 1: Sync blocks DML(insert) on the same table. +CREATE TABLE t1 ( + FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + FULLTEXT(title) +) ENGINE = InnoDB; + +connection con1; + +SET GLOBAL debug_dbug='+d,fts_instrument_sync_debug,fts_instrument_sync_sleep'; + +SET DEBUG_SYNC= 'fts_sync_begin SIGNAL begin WAIT_FOR continue'; + +send INSERT INTO t1(title) VALUES('mysql database'); + +connection con2; + +SET DEBUG_SYNC= 'now WAIT_FOR begin'; + +send SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); + +connection default; +SET DEBUG_SYNC= 'now SIGNAL continue'; + +connection con1; +--echo /* connection con1 */ INSERT INTO t1(title) VALUES('mysql database'); +--reap + +connection con2; +--echo /* conneciton con2 */ SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database'); +--reap + +connection default; +-- echo # make con1 & con2 show up in mysql.slow_log +SELECT SLEEP(2); +-- echo # slow log results should only contain INSERT INTO t1. +SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02'; + +SET GLOBAL debug_dbug = @old_debug_dbug; +TRUNCATE TABLE mysql.slow_log; + +DROP TABLE t1; + +--echo # Case 2: Sync blocks DML(insert) on other tables. +CREATE TABLE t1 ( + FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + FULLTEXT(title) +) ENGINE = InnoDB; + +CREATE TABLE t2(id INT); + +connection con1; + +SET GLOBAL debug_dbug='+d,fts_instrument_sync_request,fts_instrument_sync_sleep'; + +SET DEBUG_SYNC= 'fts_instrument_sync_request SIGNAL begin WAIT_FOR continue'; + +send INSERT INTO t1(title) VALUES('mysql database'); + +connection con2; + +SET DEBUG_SYNC= 'now WAIT_FOR begin'; + +send INSERT INTO t2 VALUES(1); + +connection default; +SET DEBUG_SYNC= 'now SIGNAL continue'; + +connection con1; +--echo /* connection con1 */ INSERT INTO t1(title) VALUES('mysql database'); +--reap + +connection con2; +--echo /* conneciton con2 */ INSERT INTO t2 VALUES(1); +--reap + +connection default; +SET DEBUG_SYNC = 'RESET'; +-- echo # make con1 & con2 show up in mysql.slow_log +SELECT SLEEP(2); +-- echo # slow log results should be empty here. +SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02'; + +SET GLOBAL debug_dbug = @old_debug_dbug; +TRUNCATE TABLE mysql.slow_log; + +DROP TABLE t1,t2; + +disconnect con1; +disconnect con2; + +--source include/wait_until_count_sessions.inc + +-- echo # Restore slow log settings. +SET GLOBAL log_output = @old_log_output; +SET GLOBAL general_log = @old_general_log; +SET GLOBAL slow_query_log = @old_slow_query_log; +SET GLOBAL long_query_time = @old_long_query_time; diff --git a/mysql-test/suite/innodb_fts/t/truncate.opt b/mysql-test/suite/innodb_fts/t/truncate.opt new file mode 100644 index 00000000000..d143088d352 --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/truncate.opt @@ -0,0 +1 @@ +--innodb-random-read-ahead=1 diff --git a/mysql-test/suite/innodb_fts/t/truncate.test b/mysql-test/suite/innodb_fts/t/truncate.test new file mode 100644 index 00000000000..46ba732b019 --- /dev/null +++ b/mysql-test/suite/innodb_fts/t/truncate.test @@ -0,0 +1,50 @@ +--source include/have_innodb.inc +--source include/have_debug.inc + +--echo # +--echo # Bug#25053705 - INVALID I/O ON TABLE AFTER TRUNCATE +--echo # + +CREATE TABLE t1 (a INT, d INT, b VARCHAR(198), c CHAR(158), FULLTEXT fts1(c,b), +FULLTEXT fts2(c)); + +TRUNCATE TABLE t1; + +INSERT INTO t1 (a,d,b,c) VALUES ( +'79795','6',repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorc +cuullucocraloracurooulrooauuar','1')); + +# The following CREATE TABLE and INSERTs are used to remove the pages related to table t1 +# from the buffer pool. +CREATE TABLE t2 (a INT, d INT, b VARCHAR(198), c CHAR(158), FULLTEXT fts1(c,b)); + +INSERT INTO t2 VALUES (1, 1, repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorccuullucocraloracurooulrooauuar','1')); + +delimiter |; +create procedure insert_t2(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t2 select * from t2; + set i = i + 1; + end while; +end| +delimiter ;| + +CALL insert_t2(15); + +SET @save_dbug = @@SESSION.DEBUG_DBUG; +SET DEBUG_DBUG = '+d,innodb_invalid_read_after_truncate'; + +INSERT INTO t1 (a,d,b,c) VALUES ( +'7795','6',repeat('uololoaroolccaaruolraloouuoocorrcorurlu','1'), +repeat('orouculcaocuocloooolooloooaorlroclouulrrucclulalouaulrluorooaclllluuorc +cuullucocraloracurooulrooauuar','1')); + +SET DEBUG_DBUG = @save_dbug; + +DROP PROCEDURE insert_t2; + +DROP TABLE t1,t2; diff --git a/mysql-test/suite/innodb_gis/disabled.def b/mysql-test/suite/innodb_gis/disabled.def new file mode 100644 index 00000000000..4ffc0607a90 --- /dev/null +++ b/mysql-test/suite/innodb_gis/disabled.def @@ -0,0 +1,26 @@ +############################################################################## +# +# List the test cases that are to be disabled temporarily. +# +# Separate the test case name and the comment with ':'. +# +# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment> +# +# Do not use any TAB characters for whitespace. +# +############################################################################## + +gis_split_inf : MDEV-14057 InnoDB GIS tests fail +row_format : MDEV-14057 InnoDB GIS tests fail +rtree_estimate : MDEV-14057 InnoDB GIS tests fail +rtree_multi_pk : MDEV-14057 InnoDB GIS tests fail +rtree_recovery : MDEV-14058 InnoDB Assertion failure !leaf on rem0rec.cc line 566 on test innodb_gis.rtree_recovery +tree_search : MDEV-14057 InnoDB GIS tests fail +rtree_concurrent_srch: MDEV-14059 InnoDB assertion failure offset >= ((38U + 36 + 2 * 10) + 5) at page0page.h line 318 +point_big : MDEV-14057 InnoDB GIS tests fail +geometry : MDEV-14057 InnoDB GIS tests fail +bug17057168 : MDEV-14057 InnoDB GIS tests fail +bug16236208 : MDEV-14057 InnoDB GIS tests fail +bug16266012 : MDEV-14057 InnoDB GIS tests fail +rtree_search : MDEV-14057 InnoDB GIS tests fail +rtree_old : MDEV-14057 InnoDB GIS tests fail diff --git a/mysql-test/suite/innodb_gis/r/alter_spatial_index.result b/mysql-test/suite/innodb_gis/r/alter_spatial_index.result index 625eac13959..b4859c799d1 100644 --- a/mysql-test/suite/innodb_gis/r/alter_spatial_index.result +++ b/mysql-test/suite/innodb_gis/r/alter_spatial_index.result @@ -743,3 +743,19 @@ ALTER TABLE t1 ADD SPATIAL INDEX(p); ALTER TABLE t1 FORCE, LOCK=NONE; ERROR 0A000: LOCK=NONE is not supported. Reason: Do not support online operation on table with GIS index. Try LOCK=SHARED DROP TABLE t1; +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb; +set timestamp=10; +insert into t1 values(default); +ERROR 22007: Incorrect POINT value: 'GEOMETRYCOLLECTION' for column 'p' at row 1 +drop table t1; +SET timestamp=default; +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb; +set timestamp=10; +alter table t1 add column i int; +ERROR 22007: Incorrect POINT value: 'GEOMETRYCOLLECTION' for column 'p' at row 1 +drop table t1; +SET timestamp=default; +CREATE OR REPLACE TABLE t1 (a INT) ENGINE=InnoDB; +ALTER TABLE t1 ADD COLUMN b POINT DEFAULT '0'; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_gis/r/bug16236208.result b/mysql-test/suite/innodb_gis/r/bug16236208.result new file mode 100644 index 00000000000..a2b81e612a9 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/bug16236208.result @@ -0,0 +1,43 @@ +DROP TABLE IF EXISTS linestring; +CREATE TABLE linestring (pk INTEGER NOT NULL PRIMARY KEY, linestring_key +GEOMETRY NOT NULL, linestring_nokey GEOMETRY NOT NULL) ENGINE=InnoDB ; +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (1, +ST_GeomFromText('POINT(10 10) '), ST_GeomFromText('POINT(10 10) ')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (2, +ST_GeomFromText('LINESTRING(10 10,20 20,30 30)'), ST_GeomFromText('LINESTRING(10 +10,20 20,30 30)')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (3, +ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 +10))'), ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 +40,10 10))')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (4, +ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) '), ST_GeomFromText('MULTIPOINT(0 +0,5 5,10 10,20 20) ')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (5, +ST_GeomFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'), +ST_GeomFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (6, +ST_GeomFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 +9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'), +ST_GeomFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 +9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')); +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (7, +ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'), +ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')); +CREATE INDEX linestring_index ON linestring(linestring_nokey(5)); +ALTER TABLE linestring ADD KEY (linestring_key(5)); +SELECT ST_AsText(linestring_nokey) FROM linestring FORCE KEY ( +linestring_key ) WHERE ST_CONTAINS( ST_GeomFromText('POLYGON( ( 3923 2815 , 4246 +2122 , 4028 2971 , 4017 3019 , 3923 2815 ) )') , linestring_key ) AND +ST_WITHIN( ST_GeomFromText('POLYGON( ( 4135 3009 , 4914 3087 , 4236 3194 , 4091 +3036 , 4022 3004 , 4087 3004 , 3853 2825 , 3490 3118 , 3784 3141 , 4052 3072 +, 4205 2787 , 4024 2951 , 4076 3036 , 4041 3053 , 3789 3401 , 4080 3100 , +4169 2867 , 4056 3029 , 4715 3943 , 4052 3098 , 4035 3080 , 4013 3077 , 4218 +2915 , 3789 2980 , 4058 3046 , 4042 3043 , 4135 3009 ) )') , linestring_nokey +) AND ST_CONTAINS( ST_GeomFromText('POLYGON( ( 4082 2842 , 3678 3647 , 3420 3068 +, 4018 3030 , 4082 2842 ) )') , linestring_key ) OR ST_INTERSECTS( +ST_GeomFromText('MULTILINESTRING( ( 4147 2871 , 4072 3042 , 4081 3099 , 3796 +3021 , 4007 3463 ) , ( 4042 2808 , 4109 2816 , 3730 3673 ) )') , +linestring_key ) AND ST_Length( linestring_nokey ) > 1; +ERROR 22023: Invalid GIS data provided to function st_within. +DROP TABLE linestring; diff --git a/mysql-test/suite/innodb_gis/r/bug16266012.result b/mysql-test/suite/innodb_gis/r/bug16266012.result new file mode 100644 index 00000000000..9e62563f752 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/bug16266012.result @@ -0,0 +1,9 @@ +SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING( 5 9 , 3 4 , 4 1 , 4 +4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT(' +POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) , +MULTIPOLYGONFROMTEXT(' +MULTIPOLYGON( ( ( 0 0 , 7 1 , 6 8 , 0 0 ) ) , ( ( 9 9 , 4 0 , 4 7 , 9 9) ) ) +') ) , ST_SYMDIFFERENCE( POLYGONFROMTEXT(' POLYGON( ( 9 9 , 6 5 , 2 3 , 9 9 +) ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( ( 2 2 , 5 2 , 5 2 , 2 6 , 2 +2 ) ) , ( ( 7 7 , 3 7 , 2 9 , 7 1 , 7 7 ) ) ) ') ) ) ); +ERROR HY000: Geometry overlay calculation error: geometry data is invalid in function st_union. diff --git a/mysql-test/suite/innodb_gis/r/bug17057168.result b/mysql-test/suite/innodb_gis/r/bug17057168.result new file mode 100644 index 00000000000..885989f12e3 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/bug17057168.result @@ -0,0 +1,24 @@ +CREATE DATABASE geotest; +use geotest; +CREATE TABLE tmp (id int unsigned NOT NULL PRIMARY KEY); +INSERT INTO tmp VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); +INSERT INTO tmp SELECT 10+id FROM tmp; +INSERT INTO tmp SELECT 20+id FROM tmp; +INSERT INTO tmp SELECT 40+id FROM tmp; +INSERT INTO tmp SELECT 80+id FROM tmp; +CREATE TABLE t1 (id int unsigned NOT NULL auto_increment PRIMARY KEY, +location point, INDEX (location)) ENGINE=InnoDB; +INSERT INTO t1 (location) SELECT POINT(tmp1.id, tmp2.id) FROM tmp tmp1, +tmp tmp2 ORDER BY tmp1.id, tmp2.id; +EXPLAIN SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1, +2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref location location 28 const 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `geotest`.`t1`.`id` AS `id`,st_astext(`geotest`.`t1`.`location`) AS `ST_AsText(location)` from `geotest`.`t1` where (`geotest`.`t1`.`location` = <cache>(point(1,2))) +SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1, 2); +id ST_AsText(location) +163 POINT(1 2) +DROP TABLE t1; +DROP TABLE tmp; +DROP DATABASE geotest; diff --git a/mysql-test/suite/innodb_gis/r/geometry.result b/mysql-test/suite/innodb_gis/r/geometry.result new file mode 100644 index 00000000000..60c5f80f69b --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/geometry.result @@ -0,0 +1,1150 @@ +SET default_storage_engine=InnoDB; +SET innodb_strict_mode=OFF; +SET SESSION debug="+d,row_print_geometry_data"; +SHOW VARIABLES LIKE '%engine%'; +Variable_name Value +default_storage_engine InnoDB +default_tmp_storage_engine InnoDB +disabled_storage_engines +internal_tmp_disk_storage_engine InnoDB +USE test; +DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon; +DROP TABLE IF EXISTS gis_multi_point, gis_multi_line, gis_multi_polygon; +DROP TABLE IF EXISTS gis_geometrycollection, gis_geometry; +DROP TABLE IF EXISTS tab,tab2,tab3,parent,emp2; +DROP PROCEDURE IF EXISTS geominout; +DROP PROCEDURE IF EXISTS geom_insert; +DROP TRIGGER IF EXISTS geom_trigger; +DROP PROCEDURE IF EXISTS geom_cursor; +CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT) ENGINE=InnoDB; +CREATE TABLE gis_line (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING) ENGINE=InnoDB; +CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON) ENGINE=InnoDB; +CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT) ENGINE=InnoDB; +CREATE TABLE gis_multi_line (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING) ENGINE=InnoDB; +CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON) ENGINE=InnoDB; +CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION) ENGINE=InnoDB; +CREATE TABLE gis_geometry (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY) ENGINE=InnoDB; +SHOW FIELDS FROM gis_point; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g point YES NULL +SHOW FIELDS FROM gis_line; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g linestring YES NULL +SHOW FIELDS FROM gis_polygon; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g polygon YES NULL +SHOW FIELDS FROM gis_multi_point; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g multipoint YES NULL +SHOW FIELDS FROM gis_multi_line; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g multilinestring YES NULL +SHOW FIELDS FROM gis_multi_polygon; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g multipolygon YES NULL +SHOW FIELDS FROM gis_geometrycollection; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g geometrycollection YES NULL +SHOW FIELDS FROM gis_geometry; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL +g geometry YES NULL +#INSERT using all WKT & WKB functions +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); +INSERT INTO gis_line VALUES +(105, ST_LineFromText('LINESTRING(0 0,0 10,10 0)')), +(106, ST_LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')), +(107, ST_LineStringFromWKB(ST_AsWKB(LineString(Point(10, 10), Point(40, 10))))); +INSERT INTO gis_polygon VALUES +(108, ST_PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')), +(109, ST_PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')), +(110, ST_PolyFromWKB(ST_AsWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))))); +INSERT INTO gis_multi_point VALUES +(111, ST_MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')), +(112, ST_MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')), +(113, ST_MPointFromWKB(ST_AsWKB(MultiPoint(Point(3, 6), Point(4, 10))))); +INSERT INTO gis_multi_line VALUES +(114, ST_MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')), +(115, ST_MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')), +(116, ST_MLineFromWKB(ST_AsWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))))); +INSERT INTO gis_multi_polygon VALUES +(117, ST_MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)), +((59 18,67 18,67 13,59 13,59 18)))')), +(118, ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26), +(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')), +(119, ST_MPolyFromWKB(ST_AsWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))))); +INSERT INTO gis_geometrycollection VALUES +(120, ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), +(121, ST_GeometryCollectionFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))')), +(122, ST_GeometryFromWKB(ST_AsWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))))); +#check INSERT using SELECT query +INSERT into gis_geometry SELECT * FROM gis_point; +INSERT into gis_geometry SELECT * FROM gis_line; +INSERT into gis_geometry SELECT * FROM gis_polygon; +INSERT into gis_geometry SELECT * FROM gis_multi_point; +INSERT into gis_geometry SELECT * FROM gis_multi_line; +INSERT into gis_geometry SELECT * FROM gis_multi_polygon; +INSERT into gis_geometry SELECT * FROM gis_geometrycollection; +#check format coversion functions & spatial values +SELECT fid, ST_AsText(g) FROM gis_point; +fid ST_AsText(g) +101 POINT(10 10) +102 POINT(20 10) +103 POINT(20 20) +104 POINT(10 20) +SELECT fid, ST_AsText(g) FROM gis_line; +fid ST_AsText(g) +105 LINESTRING(0 0,0 10,10 0) +106 LINESTRING(10 10,20 10,20 20,10 20,10 10) +107 LINESTRING(10 10,40 10) +SELECT fid, ST_AsText(g) FROM gis_polygon; +fid ST_AsText(g) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10)) +110 POLYGON((0 0,30 0,30 30,0 0)) +SELECT fid, ST_AsText(g) FROM gis_multi_point; +fid ST_AsText(g) +111 MULTIPOINT((0 0),(10 10),(10 20),(20 20)) +112 MULTIPOINT((1 1),(11 11),(11 21),(21 21)) +113 MULTIPOINT((3 6),(4 10)) +SELECT fid, ST_AsText(g) FROM gis_multi_line; +fid ST_AsText(g) +114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48)) +115 MULTILINESTRING((10 48,10 21,10 0)) +116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) +SELECT fid, ST_AsText(g) FROM gis_multi_polygon; +fid ST_AsText(g) +117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +119 MULTIPOLYGON(((0 3,3 3,3 0,0 3))) +SELECT fid, ST_AsText(g) FROM gis_geometrycollection; +fid ST_AsText(g) +120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +121 GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20)) +122 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) +SELECT fid, ST_AsText(g) FROM gis_geometry; +fid ST_AsText(g) +101 POINT(10 10) +102 POINT(20 10) +103 POINT(20 20) +104 POINT(10 20) +105 LINESTRING(0 0,0 10,10 0) +106 LINESTRING(10 10,20 10,20 20,10 20,10 10) +107 LINESTRING(10 10,40 10) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10)) +110 POLYGON((0 0,30 0,30 30,0 0)) +111 MULTIPOINT((0 0),(10 10),(10 20),(20 20)) +112 MULTIPOINT((1 1),(11 11),(11 21),(21 21)) +113 MULTIPOINT((3 6),(4 10)) +114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48)) +115 MULTILINESTRING((10 48,10 21,10 0)) +116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) +117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +119 MULTIPOLYGON(((0 3,3 3,3 0,0 3))) +120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +121 GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20)) +122 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) +#2.1 check DDL functionality on GIS datatypes +CREATE TABLE tab(c1 POINT,c2 LINESTRING,c3 POLYGON,C4 MULTIPOINT,c5 MULTILINESTRING , +c6 MULTIPOLYGON,c7 GEOMETRYCOLLECTION ,c8 GEOMETRY) ENGINE=InnoDB; +#check information schema for all the columns refer to 14, except POINT which is 15 +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/tab' +ORDER BY sc.name; +name pos mtype +c1 0 14 +c2 1 14 +c3 2 14 +C4 3 14 +c5 4 14 +c6 5 14 +c7 6 14 +c8 7 14 +#check Perform convesrion before INSERT using WKT functions +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +#Insert the spatial values +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +#check index on GIS datatypes +CREATE INDEX idx1 on tab(c2(5) DESC) USING BTREE; +CREATE INDEX idx3 on tab(c3(5) ASC) USING BTREE; +CREATE UNIQUE INDEX idx2 on tab(c8(5) ASC) ; +#check equality predicate on the index columns +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL ref idx1 idx1 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c2` = <cache>(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)'))) +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL ref idx1 idx1 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)'))))) +#check index with WKT function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL ref idx3 idx3 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))) +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab +WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL ref idx3 idx3 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab`.`c8`) AS `ST_AsText(c8)` from `test`.`tab` where (`test`.`tab`.`c3` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))))) +#check index with WKT function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL const idx2 idx2 8 const # 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select st_astext(' +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab NULL const idx2 idx2 8 const # 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select st_astext(' +#check range predicate on the index columns +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +ERROR HY000: Incorrect arguments to >= +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +ERROR HY000: Incorrect arguments to >= +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +ERROR HY000: Incorrect arguments to >= +#check index with DELETE operation +EXPLAIN DELETE FROM tab +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 DELETE tab NULL range idx2 idx2 8 const # 100.00 Using where +#check the spatial values +SELECT ST_AsText(c1) FROM tab; +ST_AsText(c1) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#check by modify the column type +ALTER TABLE tab MODIFY COLUMN c1 Geometry; +ALTER TABLE tab MODIFY COLUMN c2 Geometry; +ALTER TABLE tab MODIFY COLUMN c3 Geometry; +ALTER TABLE tab MODIFY COLUMN c4 Geometry; +ALTER TABLE tab MODIFY COLUMN c5 Geometry; +ALTER TABLE tab MODIFY COLUMN c6 Geometry; +ALTER TABLE tab MODIFY COLUMN c7 Geometry; +#check column datatypes +SHOW FIELDS FROM tab; +Field Type Null Key Default Extra +c1 geometry YES NULL +c2 geometry YES MUL NULL +c3 geometry YES MUL NULL +c4 geometry YES NULL +c5 geometry YES NULL +c6 geometry YES NULL +c7 geometry YES NULL +c8 geometry YES UNI NULL +#check the data after modify +SELECT ST_AsText(c1) FROM tab; +ST_AsText(c1) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#check by modify the column type +ALTER TABLE tab MODIFY COLUMN c1 POINT; +ALTER TABLE tab MODIFY COLUMN c2 LINESTRING; +ALTER TABLE tab MODIFY COLUMN c3 POLYGON; +ALTER TABLE tab MODIFY COLUMN c4 MULTIPOINT; +ALTER TABLE tab MODIFY COLUMN c5 MULTILINESTRING; +ALTER TABLE tab MODIFY COLUMN c6 MULTIPOLYGON; +ALTER TABLE tab MODIFY COLUMN c7 GEOMETRYCOLLECTION; +#check column datatypes +SHOW FIELDS FROM tab; +Field Type Null Key Default Extra +c1 point YES NULL +c2 linestring YES MUL NULL +c3 polygon YES MUL NULL +c4 multipoint YES NULL +c5 multilinestring YES NULL +c6 multipolygon YES NULL +c7 geometrycollection YES NULL +c8 geometry YES UNI NULL +#check the data after modify +SELECT ST_AsText(c1) FROM tab; +ST_AsText(c1) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#check change the column type +ALTER TABLE tab MODIFY COLUMN c1 BLOB; +#check column datatypes +SHOW CREATE TABLE tab; +Table Create Table +tab CREATE TABLE `tab` ( + `c1` blob, + `c2` linestring DEFAULT NULL, + `c3` polygon DEFAULT NULL, + `c4` multipoint DEFAULT NULL, + `c5` multilinestring DEFAULT NULL, + `c6` multipolygon DEFAULT NULL, + `c7` geometrycollection DEFAULT NULL, + `c8` geometry DEFAULT NULL, + UNIQUE KEY `idx2` (`c8`(5)), + KEY `idx1` (`c2`(5)) USING BTREE, + KEY `idx3` (`c3`(5)) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +#check the data after modify +SELECT ST_AsText(c1) FROM tab; +ST_AsText(c1) +POINT(10 10) +#change the column name +ALTER TABLE tab CHANGE COLUMN c1 c0 GEOMETRY ; +#check column datatypes +SHOW FIELDS FROM tab; +Field Type Null Key Default Extra +c0 geometry YES NULL +c2 linestring YES MUL NULL +c3 polygon YES MUL NULL +c4 multipoint YES NULL +c5 multilinestring YES NULL +c6 multipolygon YES NULL +c7 geometrycollection YES NULL +c8 geometry YES UNI NULL +#add primary key +ALTER TABLE tab ADD PRIMARY KEY pk2(c8(5)); +#check columns +SHOW FIELDS FROM tab; +Field Type Null Key Default Extra +c0 geometry YES NULL +c2 linestring YES MUL NULL +c3 polygon YES MUL NULL +c4 multipoint YES NULL +c5 multilinestring YES NULL +c6 multipolygon YES NULL +c7 geometrycollection YES NULL +c8 geometry NO PRI NULL +#drop key +ALTER TABLE tab DROP PRIMARY KEY; +#check columns +SHOW FIELDS FROM tab; +Field Type Null Key Default Extra +c0 geometry YES NULL +c2 linestring YES MUL NULL +c3 polygon YES MUL NULL +c4 multipoint YES NULL +c5 multilinestring YES NULL +c6 multipolygon YES NULL +c7 geometrycollection YES NULL +c8 geometry NO UNI NULL +#cleanup the table +TRUNCATE TABLE tab; +#check with procedures +#crate proc with INOUT params +CREATE PROCEDURE geom_insert(IN c1 POINT,IN c2 LINESTRING,IN c3 POLYGON, +IN c4 MULTIPOINT,IN c5 MULTILINESTRING, IN c6 MULTIPOLYGON,IN c7 GEOMETRYCOLLECTION, +IN c8 GEOMETRY) +BEGIN +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +END | +#set the spatial values +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +#call the proc +CALL geom_insert(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +#check the values ofter proc call +SELECT ST_AsText(c0) FROM tab; +ST_AsText(c0) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#set the input spatial value +SET @c9=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +#crate a proc with INOUT params and pass a value. +CREATE PROCEDURE geominout(INOUT c9 GEOMETRY) +BEGIN +SELECT ST_AsText(@c9); +SET c9=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))'); +END| +#call the proc and then change the spatial value of c8 +CALL geominout(@c9); +ST_AsText(@c9) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#now check the out spatial values should be changed to new values +SELECT ST_AsText(@c9); +ST_AsText(@c9) +GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(20 20,30 30)) +#delete the records +TRUNCATE TABLE tab; +#create another table same as tab +CREATE TABLE tab2 AS SELECT * FROM tab; +#check the table definition +SHOW CREATE TABLE tab2; +Table Create Table +tab2 CREATE TABLE `tab2` ( + `c0` geometry DEFAULT NULL, + `c2` linestring DEFAULT NULL, + `c3` polygon DEFAULT NULL, + `c4` multipoint DEFAULT NULL, + `c5` multilinestring DEFAULT NULL, + `c6` multipolygon DEFAULT NULL, + `c7` geometrycollection DEFAULT NULL, + `c8` geometry NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +#create a tigger and populate the values into tab2 +CREATE TRIGGER geom_trigger AFTER INSERT ON tab +FOR EACH ROW +BEGIN +INSERT INTO tab2 VALUES (@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +END| +#set the spatial values +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +#Insert the spatial values +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +#check the values whether populated +SELECT ST_AsText(c0) FROM tab2; +ST_AsText(c0) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab2; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab2; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab2; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab2; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab2; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab2; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab2; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#check Cursor with Geometry +CREATE PROCEDURE geom_cursor() +BEGIN +DECLARE v GEOMETRY; +DECLARE c CURSOR FOR SELECT c8 FROM tab2; +OPEN c; +FETCH c INTO v; +CLOSE c; +SELECT ST_AsText(v); +END| +# the following line was commented due the Bug#16282246 +# Once it is fixed, the comment will be removed. +# right now bug fixing date is unknown. +check self join +SELECT ST_AsText(a.c0),ST_AsText(a.c2),ST_AsText(a.c3) +FROM tab a,tab2 b WHERE a.c0=b.c0 AND a.c2=b.c2 +AND a.c3=b.c3 AND a.c4=b.c4 AND a.c5=b.c5 AND a.c6=b.c6 +AND a.c7=b.c7 AND a.c8=b.c8; +ST_AsText(a.c0) ST_AsText(a.c2) ST_AsText(a.c3) +POINT(10 10) LINESTRING(10 10,20 20,30 30) POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +#check equi join +SELECT ST_AsText(a.c2),ST_AsText(b.c2) FROM tab a,tab2 b WHERE a.c2=b.c2; +ST_AsText(a.c2) ST_AsText(b.c2) +LINESTRING(10 10,20 20,30 30) LINESTRING(10 10,20 20,30 30) +#check DELETE stmt with Where clause and a constant predicate +DELETE FROM tab +Where c8=c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); +#check the data, should 0 +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +#check UPDATE stmt with Where clause and a constant predicate +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))'); +UPDATE tab2 SET c8=@c8 +WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); +#check the column should be modified to LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c8) From tab2; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(20 20,30 30)) +#check GIS datatypes with aggregate functions +SELECT COUNT(ST_AsText(g)) FROM gis_point; +COUNT(ST_AsText(g)) +4 +SELECT COUNT(ST_AsText(g)) FROM gis_line; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_polygon; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_multi_point; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_multi_line; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_multi_polygon; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_geometrycollection; +COUNT(ST_AsText(g)) +3 +SELECT COUNT(ST_AsText(g)) FROM gis_geometry; +COUNT(ST_AsText(g)) +22 +SELECT SUM(ST_AsText(g)) FROM gis_point; +SUM(ST_AsText(g)) +0 +SELECT SUM(ST_AsText(g)) FROM gis_line; +SUM(ST_AsText(g)) +0 +SELECT AVG(ST_AsText(g)) FROM gis_polygon; +AVG(ST_AsText(g)) +0 +#here it show some string value no meaning +SELECT MAX(ST_AsText(g)) FROM gis_multi_point; +MAX(ST_AsText(g)) +MULTIPOINT((3 6),(4 10)) +#here it show some string value no meaning +SELECT MIN(ST_AsText(g)) FROM gis_multi_line; +MIN(ST_AsText(g)) +MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) +SELECT STD(ST_AsText(g)) FROM gis_multi_polygon; +STD(ST_AsText(g)) +0 +SELECT COUNT(ST_AsText(g)) FROM gis_geometrycollection; +COUNT(ST_AsText(g)) +3 +SELECT AVG(ST_AsText(g)) FROM gis_geometry; +AVG(ST_AsText(g)) +0 +#check Datatypes with compression tables +CREATE TABLE tab3(c1 POINT,c2 LINESTRING,c3 POLYGON,C4 MULTIPOINT,c5 MULTILINESTRING , +c6 MULTIPOLYGON,c7 GEOMETRYCOLLECTION ,c8 GEOMETRY) ENGINE=InnoDB +KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED; +#check file format +SHOW CREATE TABLE tab3; +Table Create Table +tab3 CREATE TABLE `tab3` ( + `c1` point DEFAULT NULL, + `c2` linestring DEFAULT NULL, + `c3` polygon DEFAULT NULL, + `C4` multipoint DEFAULT NULL, + `c5` multilinestring DEFAULT NULL, + `c6` multipolygon DEFAULT NULL, + `c7` geometrycollection DEFAULT NULL, + `c8` geometry DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 +ALTER TABLE tab3 KEY_BLOCK_SIZE=16 ROW_FORMAT=Dynamic; +#check file format +SHOW CREATE TABLE tab3; +Table Create Table +tab3 CREATE TABLE `tab3` ( + `c1` point DEFAULT NULL, + `c2` linestring DEFAULT NULL, + `c3` polygon DEFAULT NULL, + `C4` multipoint DEFAULT NULL, + `c5` multilinestring DEFAULT NULL, + `c6` multipolygon DEFAULT NULL, + `c7` geometrycollection DEFAULT NULL, + `c8` geometry DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16 +#check information schema for all the columns refer to 14, except POINT which is 15 +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/tab3' +ORDER BY sc.name; +name pos mtype +c1 0 14 +c2 1 14 +c3 2 14 +C4 3 14 +c5 4 14 +c6 5 14 +c7 6 14 +c8 7 14 +#check Perform convesrion before INSERT using WKT functions +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +#Insert the spatial values +INSERT INTO tab3 VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +#check index on GIS datatypes +CREATE INDEX idx1 on tab3(c2(5) DESC) USING BTREE; +CREATE INDEX idx3 on tab3(c3(5) ASC) USING BTREE; +CREATE UNIQUE INDEX idx2 on tab3(c8(5) ASC) ; +#check equality predicate on the index columns +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)'))) +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)'))))) +#check index with WKT function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))) +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 +WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))))) +#check index with WKT function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL const idx2 idx2 8 const # 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select st_astext(' +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL const idx2 idx2 8 const # 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select st_astext(' +#check range predicate on the index columns +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +ERROR HY000: Incorrect arguments to >= +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +ERROR HY000: Incorrect arguments to >= +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); +ERROR HY000: Incorrect arguments to >= +#check index with DELETE operation +EXPLAIN DELETE FROM tab3 +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 DELETE tab3 NULL range idx2 idx2 8 const # 100.00 Using where +#check the spatial values +SELECT ST_AsText(c1) FROM tab3; +ST_AsText(c1) +POINT(10 10) +SELECT ST_AsText(c2) FROM tab3; +ST_AsText(c2) +LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c3) FROM tab3; +ST_AsText(c3) +POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10)) +SELECT ST_AsText(c4) FROM tab3; +ST_AsText(c4) +MULTIPOINT((0 0),(5 5),(10 10),(20 20)) +SELECT ST_AsText(c5) FROM tab3; +ST_AsText(c5) +MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) +SELECT ST_AsText(c6) FROM tab3; +ST_AsText(c6) +MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +SELECT ST_AsText(c7) FROM tab3; +ST_AsText(c7) +GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +SELECT ST_AsText(c8) From tab3; +ST_AsText(c8) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +#check with Row_format = Dynamic +ALTER TABLE tab3 ROW_FORMAT=Dynamic; +#check file format +SHOW CREATE TABLE tab3; +Table Create Table +tab3 CREATE TABLE `tab3` ( + `c1` point DEFAULT NULL, + `c2` linestring DEFAULT NULL, + `c3` polygon DEFAULT NULL, + `C4` multipoint DEFAULT NULL, + `c5` multilinestring DEFAULT NULL, + `c6` multipolygon DEFAULT NULL, + `c7` geometrycollection DEFAULT NULL, + `c8` geometry DEFAULT NULL, + UNIQUE KEY `idx2` (`c8`(5)), + KEY `idx1` (`c2`(5)) USING BTREE, + KEY `idx3` (`c3`(5)) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16 +#check index with WKB function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx1 idx1 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c2` = <cache>(st_geometryfromwkb(st_aswkb(st_geometryfromtext('LINESTRING(10 10,20 20,30 30)'))))) +#check index with WKT function +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE tab3 NULL ref idx3 idx3 8 const # 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`tab3`.`c1`) AS `ST_ASText(c1)`,st_astext(`test`.`tab3`.`c2`) AS `ST_AsText(c2)`,st_astext(`test`.`tab3`.`c8`) AS `ST_AsText(c8)` from `test`.`tab3` where (`test`.`tab3`.`c3` = <cache>(st_geometryfromtext('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))) +#check the Geometry property functions +SELECT fid, ST_Dimension(g) FROM gis_geometry; +fid ST_Dimension(g) +101 0 +102 0 +103 0 +104 0 +105 1 +106 1 +107 1 +108 2 +109 2 +110 2 +111 0 +112 0 +113 0 +114 1 +115 1 +116 1 +117 2 +118 2 +119 2 +120 1 +121 1 +122 1 +SELECT fid, ST_GeometryType(g) FROM gis_geometry; +fid ST_GeometryType(g) +101 POINT +102 POINT +103 POINT +104 POINT +105 LINESTRING +106 LINESTRING +107 LINESTRING +108 POLYGON +109 POLYGON +110 POLYGON +111 MULTIPOINT +112 MULTIPOINT +113 MULTIPOINT +114 MULTILINESTRING +115 MULTILINESTRING +116 MULTILINESTRING +117 MULTIPOLYGON +118 MULTIPOLYGON +119 MULTIPOLYGON +120 GEOMETRYCOLLECTION +121 GEOMETRYCOLLECTION +122 GEOMETRYCOLLECTION +SELECT fid, ST_IsEmpty(g) FROM gis_geometry; +fid ST_IsEmpty(g) +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +122 0 +SELECT fid, ST_AsText(ST_Envelope(g)) FROM gis_geometry; +fid ST_AsText(ST_Envelope(g)) +101 POINT(10 10) +102 POINT(20 10) +103 POINT(20 20) +104 POINT(10 20) +105 POLYGON((0 0,10 0,10 10,0 10,0 0)) +106 POLYGON((10 10,20 10,20 20,10 20,10 10)) +107 LINESTRING(10 10,40 10) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0)) +110 POLYGON((0 0,30 0,30 30,0 30,0 0)) +111 POLYGON((0 0,20 0,20 20,0 20,0 0)) +112 POLYGON((1 1,21 1,21 21,1 21,1 1)) +113 POLYGON((3 6,4 6,4 10,3 10,3 6)) +114 POLYGON((10 0,16 0,16 48,10 48,10 0)) +115 LINESTRING(10 0,10 48) +116 POLYGON((1 2,21 2,21 8,1 8,1 2)) +117 POLYGON((28 0,84 0,84 42,28 42,28 0)) +118 POLYGON((28 0,84 0,84 42,28 42,28 0)) +119 POLYGON((0 0,3 0,3 3,0 3,0 0)) +120 POLYGON((0 0,10 0,10 10,0 10,0 0)) +121 POLYGON((10 10,20 10,20 20,10 20,10 10)) +122 POLYGON((3 6,44 6,44 9,3 9,3 6)) +explain extended select ST_Dimension(g), ST_GeometryType(g), ST_IsEmpty(g), ST_AsText(ST_Envelope(g)) from gis_geometry; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_geometry NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select st_dimension(`test`.`gis_geometry`.`g`) AS `ST_Dimension(g)`,st_geometrytype(`test`.`gis_geometry`.`g`) AS `ST_GeometryType(g)`,st_isempty(`test`.`gis_geometry`.`g`) AS `ST_IsEmpty(g)`,st_astext(st_envelope(`test`.`gis_geometry`.`g`)) AS `ST_AsText(ST_Envelope(g))` from `test`.`gis_geometry` +#check Geometry point functions +SELECT fid, ST_X(g) FROM gis_point; +fid ST_X(g) +101 10 +102 20 +103 20 +104 10 +SELECT fid, ST_Y(g) FROM gis_point; +fid ST_Y(g) +101 10 +102 10 +103 20 +104 20 +explain extended select ST_X(g),ST_Y(g) FROM gis_point; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_point NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select st_x(`test`.`gis_point`.`g`) AS `ST_X(g)`,st_y(`test`.`gis_point`.`g`) AS `ST_Y(g)` from `test`.`gis_point` +SELECT fid, ST_AsText(ST_StartPoint(g)) FROM gis_line; +fid ST_AsText(ST_StartPoint(g)) +105 POINT(0 0) +106 POINT(10 10) +107 POINT(10 10) +SELECT fid, ST_AsText(ST_EndPoint(g)) FROM gis_line; +fid ST_AsText(ST_EndPoint(g)) +105 POINT(10 0) +106 POINT(10 10) +107 POINT(40 10) +SELECT fid, ST_Length(g) FROM gis_line; +fid ST_Length(g) +105 24.14213562373095 +106 40 +107 30 +SELECT fid, ST_NumPoints(g) FROM gis_line; +fid ST_NumPoints(g) +105 3 +106 5 +107 2 +SELECT fid, ST_AsText(ST_PointN(g, 2)) FROM gis_line; +fid ST_AsText(ST_PointN(g, 2)) +105 POINT(0 10) +106 POINT(20 10) +107 POINT(40 10) +SELECT fid, ST_IsClosed(g) FROM gis_line; +fid ST_IsClosed(g) +105 0 +106 1 +107 0 +explain extended select ST_AsText(ST_StartPoint(g)),ST_AsText(ST_EndPoint(g)), +ST_Length(g),ST_NumPoints(g),ST_AsText(ST_PointN(g, 2)),ST_IsClosed(g) FROM gis_line; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_line NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select st_astext(st_startpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_StartPoint(g))`,st_astext(st_endpoint(`test`.`gis_line`.`g`)) AS `ST_AsText(ST_EndPoint(g))`,st_length(`test`.`gis_line`.`g`) AS `ST_Length(g)`,st_numpoints(`test`.`gis_line`.`g`) AS `ST_NumPoints(g)`,st_astext(st_pointn(`test`.`gis_line`.`g`,2)) AS `ST_AsText(ST_PointN(g, 2))`,st_isclosed(`test`.`gis_line`.`g`) AS `ST_IsClosed(g)` from `test`.`gis_line` +SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_polygon; +fid ST_AsText(ST_Centroid(g)) +108 POINT(15 15) +109 POINT(25.416666666666668 25.416666666666668) +110 POINT(20 10) +SELECT fid, ST_Area(g) FROM gis_polygon; +fid ST_Area(g) +108 100 +109 2400 +110 450 +SELECT fid, ST_AsText(ST_ExteriorRing(g)) FROM gis_polygon; +fid ST_AsText(ST_ExteriorRing(g)) +108 LINESTRING(10 10,20 10,20 20,10 20,10 10) +109 LINESTRING(0 0,50 0,50 50,0 50,0 0) +110 LINESTRING(0 0,30 0,30 30,0 0) +SELECT fid, ST_NumInteriorRings(g) FROM gis_polygon; +fid ST_NumInteriorRings(g) +108 0 +109 1 +110 0 +SELECT fid, ST_AsText(ST_InteriorRingN(g, 1)) FROM gis_polygon; +fid ST_AsText(ST_InteriorRingN(g, 1)) +108 NULL +109 LINESTRING(10 10,20 10,20 20,10 20,10 10) +110 NULL +explain extended select ST_AsText(ST_Centroid(g)),ST_Area(g),ST_AsText(ST_ExteriorRing(g)), +ST_NumInteriorRings(g),ST_AsText(ST_InteriorRingN(g, 1)) FROM gis_polygon; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_polygon NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select st_astext(st_centroid(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_Centroid(g))`,st_area(`test`.`gis_polygon`.`g`) AS `ST_Area(g)`,st_astext(st_exteriorring(`test`.`gis_polygon`.`g`)) AS `ST_AsText(ST_ExteriorRing(g))`,st_numinteriorrings(`test`.`gis_polygon`.`g`) AS `ST_NumInteriorRings(g)`,st_astext(st_interiorringn(`test`.`gis_polygon`.`g`,1)) AS `ST_AsText(ST_InteriorRingN(g, 1))` from `test`.`gis_polygon` +SELECT fid, ST_IsClosed(g) FROM gis_multi_line; +fid ST_IsClosed(g) +114 0 +115 0 +116 0 +SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_multi_polygon; +fid ST_AsText(ST_Centroid(g)) +117 POINT(57.98031067576927 17.854754130800437) +118 POINT(57.98031067576927 17.854754130800437) +119 POINT(2 2) +SELECT fid, ST_Area(g) FROM gis_multi_polygon; +fid ST_Area(g) +117 1684.5 +118 1684.5 +119 4.5 +SELECT fid, ST_NumGeometries(g) from gis_multi_point; +fid ST_NumGeometries(g) +111 4 +112 4 +113 2 +SELECT fid, ST_NumGeometries(g) from gis_multi_line; +fid ST_NumGeometries(g) +114 2 +115 1 +116 2 +SELECT fid, ST_NumGeometries(g) from gis_multi_polygon; +fid ST_NumGeometries(g) +117 2 +118 2 +119 1 +SELECT fid, ST_NumGeometries(g) from gis_geometrycollection; +fid ST_NumGeometries(g) +120 2 +121 2 +122 2 +explain extended SELECT fid, ST_NumGeometries(g) from gis_multi_point; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_multi_point NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select `test`.`gis_multi_point`.`fid` AS `fid`,st_numgeometries(`test`.`gis_multi_point`.`g`) AS `ST_NumGeometries(g)` from `test`.`gis_multi_point` +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point; +fid ST_AsText(ST_GeometryN(g, 2)) +111 POINT(10 10) +112 POINT(11 11) +113 POINT(4 10) +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_line; +fid ST_AsText(ST_GeometryN(g, 2)) +114 LINESTRING(16 0,16 23,16 48) +115 NULL +116 LINESTRING(2 5,5 8,21 7) +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_polygon; +fid ST_AsText(ST_GeometryN(g, 2)) +117 POLYGON((59 18,67 18,67 13,59 13,59 18)) +118 POLYGON((59 18,67 18,67 13,59 13,59 18)) +119 NULL +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_geometrycollection; +fid ST_AsText(ST_GeometryN(g, 2)) +120 LINESTRING(0 0,10 10) +121 LINESTRING(10 10,20 20) +122 LINESTRING(3 6,7 9) +SELECT fid, ST_AsText(ST_GeometryN(g, 1)) from gis_geometrycollection; +fid ST_AsText(ST_GeometryN(g, 1)) +120 POINT(0 0) +121 POINT(10 10) +122 POINT(44 6) +explain extended SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_multi_point NULL ALL NULL NULL NULL NULL # 100.00 NULL +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select `test`.`gis_multi_point`.`fid` AS `fid`,st_astext(st_geometryn(`test`.`gis_multi_point`.`g`,2)) AS `ST_AsText(ST_GeometryN(g, 2))` from `test`.`gis_multi_point` +SELECT g1.fid as first, g2.fid as second, +MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g) as o, +MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t, +MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; +first second w c o e d t i r +120 120 1 1 0 1 0 0 1 0 +120 121 0 0 0 0 0 1 1 0 +120 122 0 0 1 0 0 0 1 0 +121 120 0 0 0 0 0 1 1 0 +121 121 1 1 0 1 0 0 1 0 +121 122 0 0 0 0 1 0 0 0 +122 120 0 0 1 0 0 0 1 0 +122 121 0 0 0 0 1 0 0 0 +122 122 1 1 0 1 0 0 1 0 +explain extended SELECT g1.fid as first, g2.fid as second, +MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g) as o, +MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t, +MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE g1 NULL ALL NULL NULL NULL NULL # 100.00 Using temporary; Using filesort +1 SIMPLE g2 NULL ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop) +Warnings: +Warning 1681 'EXTENDED' is deprecated and will be removed in a future release. +Note 1003 /* select#1 */ select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,mbrwithin(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,mbrcontains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,mbroverlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,mbrequals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,mbrdisjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,st_touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,mbrintersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,st_crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `first`,`second` +# check support of Foreign Key constraint +CREATE TABLE parent (id GEOMETRY NOT NULL,PRIMARY KEY (id(10))) ENGINE=INNODB; +CREATE TABLE child (id GEOMETRY, parent_id GEOMETRY, +INDEX par_ind (parent_id(10)), +FOREIGN KEY (parent_id(10)) REFERENCES parent(id) +ON DELETE CASCADE +) ENGINE=INNODB; +ERROR HY000: Cannot add foreign key constraint +#check partition table support +CREATE TABLE emp2( +id GEOMETRY NOT NULL, +store_name VARCHAR(30), +parts VARCHAR(30), +store_id GEOMETRY +) +PARTITION BY LIST(store_id) ( +PARTITION pNorth VALUES IN (10,20,30) , +PARTITION pEast VALUES IN (40,50,60) , +PARTITION pWest VALUES IN (70,80,100) +); +ERROR 42000: The storage engine for the table doesn't support GEOMETRY +#check start transaction commit & Rollback +START TRANSACTION; +DELETE FROM tab3; +ROLLBACK; +SELECT COUNT(*) FROM tab3; +COUNT(*) +1 +START TRANSACTION; +DELETE FROM tab3; +COMMIT; +SELECT COUNT(*) FROM tab3; +COUNT(*) +0 +DROP TABLE IF EXISTS gis_point, gis_line, gis_polygon, gis_multi_point; +DROP TABLE IF EXISTS gis_multi_line, gis_multi_polygon; +DROP TABLE IF EXISTS gis_geometrycollection, gis_geometry; +DROP TABLE IF EXISTS tab,tab2,tab3,parent,emp2; +Warnings: +Note 1051 Unknown table 'test.emp2' +DROP PROCEDURE IF EXISTS geominout; +DROP PROCEDURE IF EXISTS geom_insert; +DROP TRIGGER IF EXISTS geom_trigger; +Warnings: +Note 1360 Trigger does not exist +DROP PROCEDURE IF EXISTS geom_cursor; diff --git a/mysql-test/suite/innodb_gis/r/gis_split_inf.result b/mysql-test/suite/innodb_gis/r/gis_split_inf.result new file mode 100644 index 00000000000..624c982b553 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/gis_split_inf.result @@ -0,0 +1,23 @@ +create table t1(a geometrycollection not null,spatial key(a))engine=innodb; +insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-14,98), point(-14,98)), linestring(point(-97,64), point(-70,99), point(-97,64)), linestring(point(143851215403059150000000000000000000000.000000,13040009882500140000000000000000000000.000000), point(-73,85), point(-88,-29)))), multipolygon(polygon(linestring(point(41,95), point(4294967298,2050)), linestring(point(-61,85), point(-75,93), point(14,-2), point(1,84), point(-61,85)), linestring(point(-62,52), point(39,5), point(-18,12), point(-62,52))), polygon(linestring(point(-77,1), point(66,61), point(-77,1)), linestring(point(18446744073709551615,1125899906842622), point(-72,49), point(24,-66), point(82,73), point(68,22))), polygon(linestring(point(1048576,17179869181), point(-18,95), point(-90,-3), point(-33,82), point(20,-85)), linestring(point(-43,-97), point(-7,-3), point(39,-82), point(-65,-58), point(-43,-97)), linestring(point(44,-34), point(-69,58), point(44,-34)), linestring(point(57,-13), point(-17,74), point(57,-13)), linestring(point(3,71), point(-58,81), point(3,71)), linestring(point(9,25), point(77,-71), point(8388607,67108864), point(46,46), point(9,25)), linestring(point(98,-82), point(98,-82))))) ) ; +ERROR 22023: Invalid GIS data provided to function polygon. +insert into t1(a) values( geometrycollection(multilinestring(linestring(point(39,-60), point(-62,-11), point(-24,35), point(54,1)), linestring(point(-4,69), point(-22,-64), point(1.694824e+308,5.688896e+307), point(-33,-58), point(-64,-80), point(-15,-44), point(40,54)), linestring(point(-86,-54), point(11,41), point(-46,-38), point(-21,-8), point(10,70), point(-81,22), point(-46,-100)), linestring(point(-30,-48), point(50,58), point(-53,92), point(10,41), point(-46,-8)), linestring(point(-65,34), point(-92,93), point(-33,-74), point(75,-28)), linestring(point(25,-55), point(22,-10), point(-42,0), point(-86,-59), point(2,-37), point(63,-44), point(-55,-22)), linestring(point(28,0), point(-94,99), point(-32,-86)), linestring(point(9,-12), point(16,9), point(80,-73)), linestring(point(6,-55), point(83,-4)), linestring(point(-15,21), point(144115188075855876,16777212), point(-85,-31), point(-90,-50)), linestring(point(-33,33), point(21,90), point(-89,32)), linestring(point(16,24), point(73,-13), point(25,-48), point(71,52), point(-54,-78), point(-84,59), point(53,29)), linestring(point(-15,-81), point(83,43), point(-71,33), point(-8,0), point(84,-54), point(-35,38), point(-10,-50)), linestring(point(38,-50), point(20,-2), point(-57,-92)), linestring(point(5,-93), point(231601833467477080000000000000000000000.000000,51914987457169239000000000000000000000.000000), point(-94,62))), point(2,0)) ) ; +insert into t1(a) values( geometrycollection(multilinestring(linestring(point(80,-15), point(65,-57), point(-59,16), point(22,-67)), linestring(point(20,-55), point(-38,-64), point(19,-53), point(-63,-36), point(56,-37)), linestring(point(27,-8), point(-85,-75), point(4398046511106,2251799813685245)), linestring(point(45,32), point(-79,46))), multilinestring(linestring(point(8,-4), point(40,-38), point(100,95), point(5,-80), point(82,88)), linestring(point(-14,30), point(-94,51), point(-16,-29), point(37,-97), point(-26,92)), linestring(point(32,34), point(83,-23), point(-55,57), point(-15,90), point(32,-50), point(-20,-73), point(77,28)), linestring(point(4,88), point(87,74), point(-67,-58)), linestring(point(5.660747e+307,6.385657e+307), point(-58,-15), point(1.172095e+308,1.448533e+308)), linestring(point(-21,-37), point(-52,79), point(-16,-76), point(-65,-94), point(36,7), point(37,74), point(100,-57)), linestring(point(-23,-82), point(-73,23), point(18,-34)), linestring(point(20,-51), point(93,62), point(-65,84)), linestring(point(-48,31), point(-69,-96)), linestring(point(-5,78), point(10,-99), point(36,-33)), linestring(point(-84,55), point(96,1), point(-98,-29), point(-15,81), point(-27,-6), point(58,-32), point(54,-16)), linestring(point(2,5), point(2199023255553,8192)), linestring(point(12,-78), point(-97,-83)), linestring(point(-74,79), point(35,-56), point(50,95)), linestring(point(28,16), point(-39,-40), point(48,-3)), linestring(point(2199023255550,-65539), point(62,-25), point(94,-62)), linestring(point(-74,83), point(-18,75), point(91,17), point(-11,-48), point(30,100)), linestring(point(57,-13), point(88,-45)), linestring(point(20,-64), point(-37,13), point(20,35))), point(-3,-4)) ) ; +insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-34,19), point(-25,92), point(61921390294166805000000000000000000000.000000,319674749161701840000000000000000000000.000000), point(56,50), point(-34,19)), linestring(point(-26,-58), point(99,-50), point(34,-20), point(-26,-58)), linestring(point(-42,45), point(-63,-7), point(5,-89), point(-97,36), point(-42,45)), linestring(point(94,11), point(-71,4), point(94,11)), linestring(point(16,25), point(4,-33), point(-45,-33), point(-64,-77), point(16,25)), linestring(point(19,45), point(36,45), point(-83,-96), point(19,45)), linestring(point(85,-31), point(-87,52), point(85,-31))), polygon(linestring(point(55,-88), point(63,-12), point(55,-88)), linestring(point(-49,10), point(-49,10)), linestring(point(-51,-32), point(-51,-32)))), multipolygon(polygon(linestring(point(-21,-8), point(66,-58), point(100,-27), point(-21,-8)), linestring(point(-29,-13), point(-29,-13))), polygon(linestring(point(91307574660224730000000000000000000000.000000,101214152547755520000000000000000000000.000000), point(89,64), point(77,87), point(66,29), point(-71,-53)), linestring(point(38,-78), point(-43,-90), point(37,20), point(81,65), point(38,-78))), polygon(linestring(point(51,0), point(-62,8), point(-11,22), point(51,0)), linestring(point(-4,-44), point(6,82), point(-19,-90), point(131,32)))), point(-4,-7)) ) ; +ERROR 22023: Invalid GIS data provided to function polygon. +insert into t1(a) values( geometrycollection(point(10,9), linestring(point(2305843009213693955,-1125899906842621), point(78,15)), multipoint(point(-1,3), point(4,-6))) ) ; +insert into t1(a) values( geometrycollection(polygon(linestring(point(0,13), point(-12,5), point(0,13)), linestring(point(11,-2), point(6,6), point(20,-14), point(-3,-10), point(1.330588e+308,2.666476e+307)), linestring(point(16382,67), point(7,4)), linestring(point(2,7), point(-14,15), point(2,7)), linestring(point(-14,12), point(-8,-8), point(-17,-2), point(-14,12)), linestring(point(-20,-10), point(-8,-13), point(-19,-17), point(13,-3), point(-20,-10)), linestring(point(-5,13), point(7,-9), point(6,8), point(-5,13))), linestring(point(-87,19), point(-64,51), point(-16,12)), multipoint(point(-1,-10), point(2,-10), point(3.670354e+307,2.501459e+307))) ) ; +ERROR 22023: Invalid GIS data provided to function polygon. +insert into t1(a) values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) ) ; +ERROR 22023: Invalid GIS data provided to function polygon. +insert into t1(a) values( geometrycollection(linestring(point(85,-29), point(15,84), point(39,-92), point(-99,19)), multilinestring(linestring(point(63,10), point(-47,95), point(10,-49), point(16,-65), point(-98,40), point(25,44), point(-55,-92)), linestring(point(5.266810e+307,6.648813e+307), point(47,33), point(-15,-13), point(-92,-58), point(36,73)), linestring(point(77,-56), point(-53,-10), point(-28,76), point(-51,6), point(51,-31), point(-95,81), point(92,26)), linestring(point(-91,7), point(58,53)), linestring(point(18,5), point(18,40), point(71,89), point(7.898707e+307,1.202585e+308), point(53,100)), linestring(point(-60,-18), point(-10,-31), point(-6,-25), point(-57,-95), point(16,77)))) ) ; +insert into t1(a) values( geometrycollection(polygon(linestring(point(-9,0), point(-17,-15), point(-9,0)), linestring(point(-11,1), point(18,12), point(15,3), point(7,0), point(-11,1)), linestring(point(19,5), point(19,5)), linestring(point(17,-11), point(8,4), point(17,-11)), linestring(point(14914539334033432000000000000000000000.000000,127247994336690690000000000000000000000.000000), point(-14,-7), point(13,-2))), point(-4,-7), polygon(linestring(point(-18,9), point(11,-1), point(-18,9)), linestring(point(9,-3), point(9,-3)), linestring(point(-7,-9), point(9,-11), point(11,14), point(1.663324e+308,1.572127e+308)), linestring(point(-15,4), point(18,12), point(7,2), point(-15,4)), linestring(point(-15,-18), point(-20,-15), point(1152921504606846972,34359738370))), polygon(linestring(point(-5,-19), point(-11,11), point(10,5), point(-7,13), point(-5,-19)), linestring(point(-8,-6), point(-4,16), point(-8,-6)), linestring(point(-6,-10), point(3,-12), point(-6,-10)), linestring(point(-16,1), point(20,-12), point(-16,1)), linestring(point(-8,5), point(-20,-4), point(4,1), point(-6,-6), point(-8,5)), linestring(point(-8,-11), point(-5,-14), point(-8,-11)), linestring(point(3,-16), point(-15,-13), point(1.166708e+308,1.901147e+307), point(-8,6), point(3,-16))), point(0,-5)) ) ; +ERROR 22023: Invalid GIS data provided to function polygon. +insert into t1(a) values( geometrycollection(linestring(point(-33,99), point(99,-87), point(38,-79), point(33,-39), point(-91,-8), point(46,-87))) ) ; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/gis_split_nan.result b/mysql-test/suite/innodb_gis/r/gis_split_nan.result new file mode 100644 index 00000000000..5d3d5c89108 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/gis_split_nan.result @@ -0,0 +1,292 @@ +# Creating the spatial objects +USE test; +CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT); +CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING); +CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON); +CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT); +CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING); +CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON); +CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION); +# Inserting POINT Geometry Values +INSERT INTO gis_point VALUES +(101, ST_POINTFROMTEXT('POINT(0 0)')), +(102, ST_POINTFROMTEXT('POINT(1 0)')), +(103, ST_POINTFROMTEXT('POINT(0 1)')), +(104, ST_POINTFROMTEXT('POINT(1 1)')), +(105, ST_POINTFROMTEXT('POINT(-1 1)')); +INSERT INTO gis_point VALUES +(106, ST_POINTFROMWKB(POINT(0,0))), +(107, ST_POINTFROMWKB(POINT(10,0))), +(108, ST_POINTFROMWKB(POINT(0,10))), +(109, ST_POINTFROMWKB(POINT(-10,0))), +(110, ST_POINTFROMWKB(POINT(0,-10))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_point VALUES +(111, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1 1)')))), +(112, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 1e308)')))), +(113, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 -1e308)')))), +(114, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 1e308)')))), +(115, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 -1e308)')))); +# Inserting LINESTRING Geometry Values +INSERT INTO gis_linestring VALUES +(201, ST_LINEFROMTEXT('LINESTRING(0 0,5 5)')), +(202, ST_LINEFROMTEXT('LINESTRING(0 0,2 2,4 4)')), +(203, ST_LINEFROMTEXT('LINESTRING(0 0,5 5,10 10)')); +INSERT INTO gis_linestring VALUES +(204, ST_LINESTRINGFROMTEXT('LINESTRING(10 10,5 5)')), +(205, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,12 12,24 24)')), +(206, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,50 50,100 100)')); +INSERT INTO gis_linestring VALUES +(207, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(5,5)))), +(208, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,10)))), +(209, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_linestring VALUES +(210, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(5,5)))), +(211, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(-50,-50), POINT(10,-10)))), +(212, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(1e308,1e308), POINT(1e308,-1e308)))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_linestring VALUES +(213, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1e308 1e308,1e308 -1e308)')))), +(214, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)')))), +(215, ST_LINESTRINGFROMWKB(ST_ASWKB(ST_LINESTRINGFROMTEXT('LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10)')))); +# Inserting POLYGON Geometry Values +INSERT INTO gis_polygon VALUES +(301, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,0 0))')), +(302, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')), +(303, ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')); +INSERT INTO gis_polygon VALUES +(304, ST_POLYGONFROMTEXT('POLYGON((0 0,0 50,50 50,50 0,0 0))')), +(305, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4))')), +(306, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')); +INSERT INTO gis_polygon VALUES +(307, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), +(308, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0))))), +(309, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_polygon VALUES +(310, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), +(311, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,15), POINT(15,15), POINT(15,10), POINT(10,10))))), +(312, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,20), POINT(20,20), POINT(20,10), POINT(10,10)), +LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_polygon VALUES +(313, ST_POLYFROMWKB(ST_ASWKB(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,5 5,0 0))')))), +(314, ST_POLYFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))')))), +(315, ST_POLYGONFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')))); +# Inserting MULTIPOINT Geometry Values +INSERT INTO gis_multi_point VALUES +(401, ST_GEOMFROMTEXT('MULTIPOINT(0 0)')), +(402, ST_GEOMFROMTEXT('MULTIPOINT(0 0,2 2,4 4)')), +(403, ST_GEOMFROMTEXT('MULTIPOINT(0 0,5 5,10 10)')); +INSERT INTO gis_multi_point VALUES +(404, ST_GEOMFROMTEXT('MULTIPOINT(0 0,100 100)')), +(405, ST_GEOMFROMTEXT('MULTIPOINT(0 0,1e308 1e308)')), +(406, ST_GEOMFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308)')); +INSERT INTO gis_multi_point VALUES +(407, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0)))), +(408, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(10,10)))), +(409, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_point VALUES +(410, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0)))), +(411, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(1e308,1e308)))), +(412, ST_GEOMFROMWKB(MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308), POINT(-1e308,-1e308)))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_point VALUES +(413, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(0 0)')))), +(414, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(0 0,1e308 1e308,-1e308 -1e308)')))), +(415, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308,1e308 1e308)')))); +# Inserting MULTILINESTRING Geometry Values +INSERT INTO gis_multi_linestring VALUES +(501, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2))')), +(502, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2,4 4))')), +(503, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))')); +INSERT INTO gis_multi_linestring VALUES +(504, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,100 100,-100 -100))')), +(505, ST_GEOMFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308))')), +(506, ST_GEOMFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308))')); +INSERT INTO gis_multi_linestring VALUES +(507, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2))))), +(508, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24))))), +(509, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)), +LINESTRING(POINT(6,6), POINT(8,8), POINT(10,10))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_linestring VALUES +(510, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4))))), +(511, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1,1), POINT(2,2))))), +(512, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)), +LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_linestring VALUES +(513, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10),(0 10,10 0))')))), +(514, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))')))), +(515, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))')))); +# Inserting MULTIPOLGYON Geometry Values +INSERT INTO gis_multi_polygon VALUES +(601, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')), +(602, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))')), +(603, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')); +INSERT INTO gis_multi_polygon VALUES +(604, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')), +(605, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,0 -2,-2 -2,0 0)))')), +(606, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))')); +INSERT INTO gis_multi_polygon VALUES +(607, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0)))))), +(608, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), +(609, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))), +POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_polygon VALUES +(610, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))), +(611, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(10,10), POINT(20,10), POINT(20,20), POINT(10,20), POINT(10,10)), +LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14)))))), +(612, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), +POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_multi_polygon VALUES +(613, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0)))')))), +(614, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))')))), +(615, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0)))')))); +# Inserting GEOMETRYCOLLECTION Geometry Values +INSERT INTO gis_geometrycollection VALUES +(701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')), +(702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), +(703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5), POLYGON((0 0,0 10,10 10,10 0,0 0)))')); +INSERT INTO gis_geometrycollection VALUES +(704, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), +(705, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' + 'LINESTRING(0 0,10 10),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0,0 0, 0 0)))')), +(706, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT(0 0,5 5,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),' + '((0 0,-10 0,-10 -10,0 -10,0 0))))')); +INSERT INTO gis_geometrycollection VALUES +(707, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(POINT(0,0)))), +(708, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(POINT(0,0), +LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), +POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), +(709, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0), POINT(5,5), POINT(10,10)), +MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), +LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), +MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), +POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_geometrycollection VALUES +(710, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(POINT(0,0), +LINESTRING(POINT(0,0), POINT(100,100))))), +(711, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(POINT(10,10), +LINESTRING(POINT(10,10), POINT(12,12), POINT(14,14), POINT(16,16), POINT(18,18)), +POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), +(712, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(10,10), POINT(15,15), POINT(20,20)), +MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), +LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), +MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), +LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), +POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))); +Warnings: +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +Warning 3195 st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead. +INSERT INTO gis_geometrycollection VALUES +(713, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'POINT(0 0),' + 'LINESTRING(0 0,10 10),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))), +(714, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION(' + 'POINT(0 0)),' + 'GEOMETRYCOLLECTION(' + 'LINESTRING(0 0,10 10)),' + 'GEOMETRYCOLLECTION(' + 'POLYGON((0 0,0 10,10 10,10 0,0 0))),' + 'GEOMETRYCOLLECTION(' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10)),' + 'GEOMETRYCOLLECTION(' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0))),' + 'GEOMETRYCOLLECTION(' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))))')))), +(715, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION(),' + 'POINT(0 0),' + 'GEOMETRYCOLLECTION(' + 'LINESTRING(0 0,10 10),' + 'GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION())),' + 'GEOMETRYCOLLECTION(),' + 'GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION()),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))); +# Creating a table with spatial index column +CREATE TABLE geom_index (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL INDEX(g)); +# Inserting geometry values +INSERT INTO geom_index SELECT * FROM gis_point; +INSERT INTO geom_index SELECT * FROM gis_linestring; +INSERT INTO geom_index SELECT * FROM gis_polygon; +INSERT INTO geom_index SELECT * FROM gis_multi_point; +INSERT INTO geom_index SELECT * FROM gis_multi_linestring; +INSERT INTO geom_index SELECT * FROM gis_multi_polygon; +INSERT INTO geom_index SELECT * FROM gis_geometrycollection; +check table geom_index; +Table Op Msg_type Msg_text +test.geom_index check status OK +# Final cleanup +DROP TABLE gis_point; +DROP TABLE gis_linestring; +DROP TABLE gis_polygon; +DROP TABLE gis_multi_point; +DROP TABLE gis_multi_linestring; +DROP TABLE gis_multi_polygon; +DROP TABLE gis_geometrycollection; +DROP TABLE geom_index; diff --git a/mysql-test/suite/innodb_gis/r/kill_server.result b/mysql-test/suite/innodb_gis/r/kill_server.result new file mode 100644 index 00000000000..579317872b4 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/kill_server.result @@ -0,0 +1,41 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(5000); +select count(*) from t1; +count(*) +5000 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +CALL insert_t1(10000); +select count(*) from t1; +count(*) +10000 +drop index c2 on t1; +create spatial index idx on t1(c2); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) DEFAULT NULL, + `c2` geometry NOT NULL, + SPATIAL KEY `idx` (`c2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +call mtr.add_suppression("InnoDB: A copy of page \[page id: space=[0-9]+, page number=[0-9]+\] in the doublewrite buffer slot [0-9]+ is not within space bounds"); +START TRANSACTION; +CALL insert_t1(5000); +COMMIT; +# Kill and restart +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/multi_pk.result b/mysql-test/suite/innodb_gis/r/multi_pk.result new file mode 100644 index 00000000000..9e0cfa06157 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/multi_pk.result @@ -0,0 +1,57 @@ +create table t1 (c1 int, c2 varchar(255), c3 geometry not null, primary key(c1, c2), spatial index (c3))engine=innodb; +create function rand_string(str_length tinyint unsigned, str_type tinyint unsigned) returns varchar(255) +begin +declare counter int unsigned default 0; +declare const_chars varchar(64) default '0123456789'; +declare result varchar(255) default ''; +if str_type = 1 then +set const_chars = '0123456789'; +elseif str_type = 2 then +set const_chars = 'abcdefghijklmnopqrstuvwxyz'; +elseif str_type = 3 then +set const_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; +elseif str_type = 4 then +set const_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; +elseif str_type = 5 then +set const_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; +else +set const_chars = '0123456789'; +end if; +while counter < str_length do +set result = concat(result,substr(const_chars,ceil(rand()*(length(const_chars)-1)),1)); +set counter = counter + 1; +end while; +return result; +end| +create procedure insert_t1(IN total int) +begin +declare i int default 1; +declare i2 int default 1; +declare str varchar(100) default ''; +declare dup_key int default 1; +while i <= total DO +set i2 = floor(0+(rand()*100)); +set str = rand_string(i2, 5); +select count(*) into dup_key from t1 where c2 = str and c1 = i; +while dup_key <> 0 do +set i2 = floor(0+(rand()*100)); +set str = rand_string(i2, 5); +select count(*) into dup_key from t1 where c2 = str and c1 = i; +end while; +insert into t1 values (i, str, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(10000); +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +start transaction; +CALL insert_t1(30000); +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop procedure insert_t1; +drop function rand_string; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/point_basic.result b/mysql-test/suite/innodb_gis/r/point_basic.result new file mode 100644 index 00000000000..faaef07c112 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/point_basic.result @@ -0,0 +1,1570 @@ +# +# Test for basic POINT operation +# +CREATE TABLE gis_point(p1 POINT, p2 POINT) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(10 -20)'), ST_PointFromText('POINT(10 -20)')), +(ST_PointFromText('POINT(3.1415926 3.535897)'), ST_PointFromText('POINT(-3.932626 -3.488272)')), +(ST_PointFromText('POINT(-111.9876 234.1357)'), ST_PointFromText('POINT(-957.1914 958.1919)')); +SELECT ST_X(p1), ST_Y(p2) FROM gis_point; +ST_X(p1) ST_Y(p2) +0 0 +10 -20 +3.1415926 -3.488272 +-111.9876 958.1919 +DROP TABLE gis_point; +# +# Test when POINT is not on any indexes +# +CREATE TABLE gis_point(p1 POINT, p2 POINT) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(100.32374832 101.23741821)')), +(ST_PointFromText('POINT(105.34523342 103.18492302)'), ST_PointFromText('POINT(100.32374832 101.23741821)')), +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(200.32247328 101.86728201)')), +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(100.32374832 101.98527111)')); +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE gis_point ALL NULL NULL NULL NULL 4 # +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +ST_AsText(p1) ST_AsText(p2) +POINT(100.32374832 101.23741821) POINT(100.32374832 101.98527111) +POINT(100.32374832 101.23741821) POINT(100.32374832 101.23741821) +POINT(100.32374832 101.23741821) POINT(200.32247328 101.86728201) +POINT(105.34523342 103.18492302) POINT(100.32374832 101.23741821) +SELECT ST_AsText(p1) FROM gis_point WHERE p1 = p2; +ST_AsText(p1) +POINT(100.32374832 101.23741821) +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE p1 = ST_PointFromText('POINT(100.32374832 101.23741821)'); +ST_AsText(p1) ST_AsText(p2) +POINT(100.32374832 101.23741821) POINT(100.32374832 101.23741821) +POINT(100.32374832 101.23741821) POINT(200.32247328 101.86728201) +POINT(100.32374832 101.23741821) POINT(100.32374832 101.98527111) +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE p2 = ST_PointFromText('POINT(200.32247328 101.86728201)'); +ST_AsText(p1) ST_AsText(p2) +POINT(100.32374832 101.23741821) POINT(200.32247328 101.86728201) +DROP TABLE gis_point; +# +# Test some ALTER TABLE operations on POINT tables +# +CREATE TABLE t1 ( +p POINT NOT NULL, +g GEOMETRY NOT NULL +) ENGINE=InnoDB; +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 11)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(1 1)'), ST_PointFromText('POINT(10 12)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(1 0)'), ST_PointFromText('POINT(10 13)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(10 14)')); +SELECT ST_AsText(p), ST_AsText(g) FROM t1; +ST_AsText(p) ST_AsText(g) +POINT(0 1) POINT(10 11) +POINT(1 1) POINT(10 12) +POINT(1 0) POINT(10 13) +POINT(0 0) POINT(10 14) +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +ALTER TABLE t1 ADD COLUMN p1 POINT, ADD COLUMN p2 POINT, ADD KEY(p); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1' OR name = 'p2'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +p1 14 1279 12 +p2 14 1279 12 +# NOT NULL POINT will use '' +SELECT count(*) AS `Expect 4` FROM t1 WHERE p1 = ''; +Expect 4 +0 +SELECT count(*) AS `Expect 4` FROM t1 WHERE p2 = ''; +Expect 4 +0 +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p1; +ST_AsText(p) ST_AsText(p1) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p2; +ST_AsText(p) ST_AsText(p1) +ALTER TABLE t1 DROP COLUMN p2; +# NULLABLE POINT will use NULL +ALTER TABLE t1 ADD COLUMN p2 POINT, ADD KEY(p2); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1' OR name = 'p2'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +p1 14 1279 12 +p2 14 1279 12 +SELECT count(*) AS `Expect 4` FROM t1 WHERE p2 IS NULL; +Expect 4 +4 +UPDATE t1 SET p2 = ST_PointFromText('POINT(10 20)'); +UPDATE t1 SET p1 = ST_PointFromText('POINT(10 20)'); +ALTER TABLE t1 DROP COLUMN p2; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +p1 14 1279 12 +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p1; +ST_AsText(p) ST_AsText(p1) +INSERT INTO t1 VALUES (ST_PointFromText('POINT(0.5 0.5)'), ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 19)')); +SELECT ST_AsText(p1) FROM t1; +ST_AsText(p1) +POINT(10 20) +POINT(10 20) +POINT(10 20) +POINT(10 20) +POINT(10 19) +DELETE FROM t1 WHERE p1 = ST_PointFromText('POINT(10 19)'); +SELECT ST_AsText(p1) FROM t1; +ST_AsText(p1) +POINT(10 20) +POINT(10 20) +POINT(10 20) +POINT(10 20) +# Add spatial keys on the table +ALTER TABLE t1 ADD SPATIAL(p), ADD SPATIAL(p1); +ERROR 42000: All parts of a SPATIAL index must be NOT NULL +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +p1 14 1279 12 +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +ST_AsText(p) ST_AsText(p1) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); +ST_AsText(p) ST_AsText(p1) +POINT(0 1) POINT(10 20) +POINT(1 1) POINT(10 20) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +ST_AsText(p) ST_AsText(p1) +POINT(0 1) POINT(10 20) +POINT(1 1) POINT(10 20) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); +ST_AsText(p) ST_AsText(p1) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +# Drop spatial keys on the table +ALTER TABLE t1 DROP KEY p, DROP KEY p1; +ERROR 42000: Can't DROP INDEX `p1`; check that it exists +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; +name mtype prtype len +p 14 1535 12 +g 14 1535 12 +p1 14 1279 12 +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +ST_AsText(p) ST_AsText(p1) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); +ST_AsText(p) ST_AsText(p1) +POINT(0 1) POINT(10 20) +POINT(1 1) POINT(10 20) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +ST_AsText(p) ST_AsText(p1) +POINT(0 1) POINT(10 20) +POINT(1 1) POINT(10 20) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); +ST_AsText(p) ST_AsText(p1) +POINT(1 0) POINT(10 20) +POINT(0 0) POINT(10 20) +TRUNCATE t1; +ALTER TABLE t1 DROP COLUMN p, DROP COLUMN p1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; +name mtype prtype len +g 14 1535 12 +ALTER TABLE t1 ADD COLUMN p POINT, ADD COLUMN p1 POINT; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; +name mtype prtype len +g 14 1535 12 +p 14 1279 12 +p1 14 1279 12 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `g` geometry NOT NULL, + `p` point DEFAULT NULL, + `p1` point DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.5 0.5)'), ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 19)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.6 0.6)'), ST_PointFromText('POINT(1 1)'), ST_PointFromText('POINT(10 20)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.7 0.7)'), ST_PointFromText('POINT(1 0)'), ST_PointFromText('POINT(10 21)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.8 0.8)'), ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(10 22)')); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +ST_AsText(p) ST_AsText(p1) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); +ST_AsText(p) ST_AsText(p1) +POINT(1 1) POINT(10 20) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +ST_AsText(p) ST_AsText(p1) +POINT(0 1) POINT(10 19) +POINT(1 1) POINT(10 20) +POINT(1 0) POINT(10 21) +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); +ST_AsText(p) ST_AsText(p1) +POINT(1 0) POINT(10 21) +POINT(0 0) POINT(10 22) +ALTER TABLE t1 DROP COLUMN p1, ADD COLUMN p1 POINT, CHANGE COLUMN p pp POINT AFTER p1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'pp' OR name = 'g' OR name = 'p1'; +name mtype prtype len +g 14 1535 12 +p1 14 1279 12 +pp 14 1279 12 +UPDATE t1 SET p1 = ST_PointFromText('POINT(5 5)'); +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1; +ST_AsText(pp) ST_AsText(p1) +POINT(0 1) POINT(5 5) +POINT(1 1) POINT(5 5) +POINT(1 0) POINT(5 5) +POINT(0 0) POINT(5 5) +ALTER TABLE t1 ADD SPATIAL(p1), ADD SPATIAL(pp), ALGORITHM = COPY; +ERROR 42000: All parts of a SPATIAL index must be NOT NULL +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'pp' OR name = 'g' OR name = 'p1'; +name mtype prtype len +g 14 1535 12 +p1 14 1279 12 +pp 14 1279 12 +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +ST_AsText(pp) ST_AsText(p1) +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); +ST_AsText(pp) ST_AsText(p1) +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')) ORDER BY pp; +ST_AsText(pp) ST_AsText(p1) +POINT(0 0) POINT(5 5) +POINT(0 1) POINT(5 5) +POINT(1 0) POINT(5 5) +POINT(1 1) POINT(5 5) +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(pp, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')) ORDER BY pp; +ST_AsText(pp) ST_AsText(p1) +POINT(0 0) POINT(5 5) +POINT(1 0) POINT(5 5) +DROP TABLE t1; +# +# Test when the POINT is on B-TREE +# +CREATE TABLE gis_point(fid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, p POINT, KEY(p)) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); +SELECT ST_AsText(p) FROM gis_point; +ST_AsText(p) +POINT(10 10) +POINT(20 10) +POINT(20 20) +POINT(10 20) +SELECT ST_AsText(p) FROM gis_point WHERE p = ST_PointFromText('POINT(20 20)'); +ST_AsText(p) +POINT(20 20) +INSERT INTO gis_point VALUES +(201, ST_PointFromText('POINT(100.32374832 101.23741821)')), +(202, ST_PointFromText('POINT(102.43287328 100.23489233)')), +(203, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(204, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))), +(205, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(206, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))); +'The ORDER BY will use filesort' +EXPLAIN SELECT ST_AsText(p) FROM gis_point ORDER BY p; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE gis_point ALL NULL NULL NULL NULL 10 # +SELECT ST_AsText(p) FROM gis_point ORDER BY p; +ST_AsText(p) +POINT(10 10) +POINT(10 20) +POINT(20 10) +POINT(20 20) +POINT(101.43284962 100.45892392) +POINT(101.43284962 100.45892392) +POINT(100.32374832 101.23741821) +POINT(102.43287328 100.23489233) +POINT(103.4371864 105.248206478) +POINT(103.4371864 105.248206478) +SELECT ST_AsText(p), COUNT(*) FROM gis_point GROUP BY p; +ST_AsText(p) COUNT(*) +POINT(10 10) 1 +POINT(10 20) 1 +POINT(20 10) 1 +POINT(20 20) 1 +POINT(101.43284962 100.45892392) 2 +POINT(100.32374832 101.23741821) 1 +POINT(102.43287328 100.23489233) 1 +POINT(103.4371864 105.248206478) 2 +TRUNCATE gis_point; +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); +# Check if we can create prefix index on POINT +ALTER TABLE gis_point ADD COLUMN g POINT, ADD KEY(g(8)); +INSERT INTO gis_point VALUES +(105, ST_PointFromText('POINT(25 15)'), ST_PointFromText('POINT(100 100)')), +(106, ST_PointFromText('POINT(25 25)'), ST_PointFromText('POINT(110 110)')); +SELECT ST_AsText(p) FROM gis_point; +ST_AsText(p) +POINT(10 10) +POINT(20 10) +POINT(20 20) +POINT(10 20) +POINT(25 15) +POINT(25 25) +SELECT ST_AsText(p), ST_AsText(g) FROM gis_point WHERE g IS NULL; +ST_AsText(p) ST_AsText(g) +POINT(10 10) NULL +POINT(20 10) NULL +POINT(20 20) NULL +POINT(10 20) NULL +UPDATE gis_point SET g = ST_PointFromText('POINT(200 200)') WHERE g IS NULL OR g = ST_PointFromText('POINT(110 110)'); +SELECT ST_AsText(g) FROM gis_point WHERE g IS NULL OR g = ST_PointFromText('POINT(200 200)'); +ST_AsText(g) +POINT(200 200) +POINT(200 200) +POINT(200 200) +POINT(200 200) +POINT(200 200) +# Check the information schema tables +SELECT table_name, column_name, data_type, column_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='gis_point' AND (column_name = 'p' OR column_name = 'g'); +table_name column_name data_type column_type +gis_point p point point +gis_point g point point +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; +name mtype prtype len +p 14 1279 12 +g 14 1279 12 +SELECT length(p) FROM gis_point; +length(p) +25 +25 +25 +25 +25 +25 +ALTER TABLE gis_point DROP COLUMN g, ALGORITHM = COPY; +TRUNCATE gis_point; +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); +# Check if we can create prefix index on POINT +ALTER TABLE gis_point ADD COLUMN g POINT, ADD KEY(g(8)); +INSERT INTO gis_point VALUES +(105, ST_PointFromText('POINT(25 15)'), ST_PointFromText('POINT(100 100)')), +(106, ST_PointFromText('POINT(25 25)'), ST_PointFromText('POINT(110 110)')); +SELECT ST_AsText(p) FROM gis_point; +ST_AsText(p) +POINT(10 10) +POINT(20 10) +POINT(20 20) +POINT(10 20) +POINT(25 15) +POINT(25 25) +SELECT ST_AsText(p), ST_AsText(g) FROM gis_point WHERE g IS NULL; +ST_AsText(p) ST_AsText(g) +POINT(10 10) NULL +POINT(20 10) NULL +POINT(20 20) NULL +POINT(10 20) NULL +UPDATE gis_point SET g = ST_PointFromText('POINT(200 200)') WHERE g IS NULL OR g = ST_PointFromText('POINT(110 110)'); +SELECT ST_AsText(g) FROM gis_point WHERE g IS NULL OR g = ST_PointFromText('POINT(200 200)'); +ST_AsText(g) +POINT(200 200) +POINT(200 200) +POINT(200 200) +POINT(200 200) +POINT(200 200) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; +name mtype prtype len +p 14 1279 12 +g 14 1279 12 +DROP TABLE gis_point; +# +# Check the mtype of other geometry data types should be 15 +# +CREATE TABLE g ( +geom GEOMETRY NOT NULL, +l LINESTRING NOT NULL, +poly POLYGON NOT NULL, +mp MULTIPOINT NOT NULL, +ml MULTILINESTRING NOT NULL, +mpoly MULTIPOLYGON NOT NULL, +gc GEOMETRYCOLLECTION NOT NULL +) ENGINE=InnoDB; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'geom' OR name = 'l' OR name = 'poly' OR name = 'mp' OR name = 'ml' OR name = 'mpoly' OR name = 'gc'; +name mtype prtype len +geom 14 1535 12 +l 14 1535 12 +poly 14 1535 12 +mp 14 1535 12 +ml 14 1535 12 +mpoly 14 1535 12 +gc 14 1535 12 +DROP TABLE g; +# +# check the mtype and len with CREATE TABLE AS +# +CREATE TABLE t1 ( +p POINT NOT NULL, +g GEOMETRY NOT NULL +) ENGINE=InnoDB; +INSERT INTO t1 VALUES(ST_PointFromText('POINT(10 10)'),ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' AND name='t1'; +name mtype prtype len +p 14 1535 12 +CREATE TABLE t2 AS SELECT * FROM t1; +DROP TABLE t1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' AND name='t2'; +name mtype prtype len +DROP table t2; +# +# Test when POINT is used in spatial index +# +SET @ls1 = ST_GeomFromText('LINESTRING(0 20, 10 0)'); +SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 10 20)'); +SET @ls3 = ST_GeomFromText('LINESTRING(20 -40, 21 -42)'); +SET @ls4 = ST_GeomFromText('LINESTRING(20 -42, 21 -40)'); +SET @poly1 = ST_GeomFromText('POLYGON((2 2, 2 10, 10 10, 10 2, 2 2))'); +SET @poly2 = ST_GeomFromText('POLYGON((0 0, -5 0, -4 -1, -6 -15, -3 -15, 0 0))'); +SET @poly3 = ST_GeomFromText('POLYGON((10.0 10.0, 20.5 20, 20.5 50, 32.0 64.0, 32.3 64.6, 5 60, 10 10))'); +SET @poly4 = ST_GeomFromText('POLYGON((0 10, -10 10, -10 -10, 0 -10, 0 10))'); +SET @p1 = ST_PointFromText('POINT(0 0)'); +SET @mpoly = ST_GeomFromText('MULTIPOLYGON(((3 3, 3 16, 16 16, 16 3, 3 3)), ((10 10, 10 50, 50 50, 50 10, 10 10)))'); +CREATE TABLE gis_point (p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL KEY k1 (p1), SPATIAL KEY k2 (p2)) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(1 2)'), ST_PointFromText('POINT(-1 -3)')), +(ST_PointFromText('POINT(2 4)'), ST_PointFromText('POINT(-2 -6)')), +(ST_PointFromText('POINT(3 6)'), ST_PointFromText('POINT(-3 -9)')), +(ST_PointFromText('POINT(4 8)'), ST_PointFromText('POINT(-4 -12)')), +(ST_PointFromText('POINT(5 10)'), ST_PointFromText('POINT(-5 -15)')), +(ST_PointFromText('POINT(6 12)'), ST_PointFromText('POINT(-6 -18)')), +(ST_PointFromText('POINT(7 14)'), ST_PointFromText('POINT(-7 -21)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(9 18)'), ST_PointFromText('POINT(-4 2)')), +(ST_PointFromText('POINT(10 21)'), ST_PointFromText('POINT(-6 3)')), +(ST_PointFromText('POINT(20.5 41)'), ST_PointFromText('POINT(-8 4)')), +(ST_PointFromText('POINT(26.25 57)'), ST_PointFromText('POINT(1 2)')), +(ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)')); +CREATE TABLE gis_point1 SELECT * FROM gis_point; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p1' OR name = 'p2'; +name mtype prtype len +p1 14 1535 12 +p2 14 1535 12 +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point1; +ST_AsText(p1) ST_AsText(p2) +POINT(1 2) POINT(-1 -3) +POINT(2 4) POINT(-2 -6) +POINT(3 6) POINT(-3 -9) +POINT(4 8) POINT(-4 -12) +POINT(5 10) POINT(-5 -15) +POINT(6 12) POINT(-6 -18) +POINT(7 14) POINT(-7 -21) +POINT(8 16) POINT(0 0) +POINT(9 18) POINT(-4 2) +POINT(10 21) POINT(-6 3) +POINT(20.5 41) POINT(-8 4) +POINT(26.25 57) POINT(1 2) +POINT(32.1234 64.2468) POINT(-1 -1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Intersection(@ls1, @ls2) = p1; +ST_AsText(p1) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p2) FROM gis_point1 WHERE ST_Contains(@poly2, p2); +ST_AsText(p2) +POINT(-1 -3) +POINT(-2 -6) +POINT(-3 -9) +POINT(-4 -12) +POINT(-5 -15) +POINT(0 0) +POINT(-1 -1) +SELECT ST_AsText(p2) FROM gis_point1 WHERE ST_Equals(p2, @p1); +ST_AsText(p2) +POINT(0 0) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +ST_AsText(p1) +POINT(20.5 41) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Contains(@mpoly, p1); +ST_AsText(p1) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(10 21) +POINT(20.5 41) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly); +ST_AsText(p1) +# Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @ls3); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @ls1); +ST_AsText(p1) +# Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(1 2) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +# Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(1 2) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @poly1); +ST_AsText(p1) +# Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @ls1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +DROP TABLE gis_point1; +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point; +ST_AsText(p1) ST_AsText(p2) +POINT(1 2) POINT(-1 -3) +POINT(2 4) POINT(-2 -6) +POINT(3 6) POINT(-3 -9) +POINT(4 8) POINT(-4 -12) +POINT(5 10) POINT(-5 -15) +POINT(6 12) POINT(-6 -18) +POINT(7 14) POINT(-7 -21) +POINT(8 16) POINT(0 0) +POINT(9 18) POINT(-4 2) +POINT(10 21) POINT(-6 3) +POINT(20.5 41) POINT(-8 4) +POINT(26.25 57) POINT(1 2) +POINT(32.1234 64.2468) POINT(-1 -1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1; +ST_AsText(p1) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2); +ST_AsText(p2) +POINT(-1 -3) +POINT(-2 -6) +POINT(-3 -9) +POINT(-4 -12) +POINT(-5 -15) +POINT(0 0) +POINT(-1 -1) +SELECT ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1); +ST_AsText(p2) +POINT(0 0) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +ST_AsText(p1) +POINT(20.5 41) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Contains(@mpoly, p1); +ST_AsText(p1) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(10 21) +POINT(20.5 41) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly); +ST_AsText(p1) +# Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls3); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @ls1); +ST_AsText(p1) +# Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +POINT(9 18) +POINT(8 16) +POINT(7 14) +POINT(6 12) +POINT(1 2) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +# Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +POINT(9 18) +POINT(8 16) +POINT(7 14) +POINT(6 12) +POINT(5 10) +POINT(4 8) +POINT(3 6) +POINT(2 4) +POINT(1 2) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +POINT(9 18) +POINT(8 16) +POINT(7 14) +POINT(6 12) +POINT(5 10) +POINT(4 8) +POINT(3 6) +POINT(2 4) +POINT(1 2) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +POINT(9 18) +POINT(8 16) +POINT(7 14) +POINT(6 12) +POINT(5 10) +POINT(4 8) +POINT(3 6) +POINT(2 4) +POINT(1 2) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +POINT(9 18) +POINT(8 16) +POINT(7 14) +POINT(6 12) +POINT(1 2) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @poly1); +ST_AsText(p1) +# Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(32.1234 64.2468) +POINT(26.25 57) +POINT(20.5 41) +POINT(10 21) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @ls1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +# Modify the storage engine to Myisam, Check the spatial functions +ALTER TABLE gis_point ENGINE Myisam; +# Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls3); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @ls1); +ST_AsText(p1) +# Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(1 2) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +# Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +ST_AsText(p1) +# Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +ST_AsText(p1) +POINT(2 4) +POINT(5 10) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); +ST_AsText(p1) +POINT(1 2) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @poly1); +ST_AsText(p1) +# Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +ST_AsText(p1) +POINT(1 2) +POINT(2 4) +POINT(3 6) +POINT(4 8) +POINT(5 10) +POINT(6 12) +POINT(7 14) +POINT(8 16) +POINT(9 18) +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +ST_AsText(p1) +POINT(10 21) +POINT(20.5 41) +POINT(26.25 57) +POINT(32.1234 64.2468) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @ls1); +ST_AsText(p1) +# No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls1); +ST_AsText(p1) +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +ST_AsText(p1) +# Modify the storage engine to InnoDB again, do following testing +ALTER TABLE gis_point ENGINE InnoDB; +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +The ORDER BY for spatial index will use filesort +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE gis_point ALL NULL NULL NULL NULL 13 # +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +ST_AsText(p1) ST_AsText(p2) +POINT(2 4) POINT(-2 -6) +POINT(3 6) POINT(-3 -9) +POINT(4 8) POINT(-4 -12) +POINT(5 10) POINT(-5 -15) +POINT(6 12) POINT(-6 -18) +POINT(7 14) POINT(-7 -21) +POINT(8 16) POINT(0 0) +POINT(9 18) POINT(-4 2) +POINT(10 21) POINT(-6 3) +POINT(1 2) POINT(-1 -3) +POINT(26.25 57) POINT(1 2) +POINT(20.5 41) POINT(-8 4) +POINT(32.1234 64.2468) POINT(-1 -1) +Try to do IDU on the table and verify the result +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) +POINT(32.1234 64.2468) +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 41)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 41) +POINT(32.1234 64.2468) +POINT(20.5 41) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +Use a trx to test the IDU on the table and verify the result +START TRANSACTION; +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) +POINT(32.1234 64.2468) +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 49)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 49)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 49) +POINT(32.1234 64.2468) +POINT(20.5 49) +ROLLBACK; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 41) +POINT(32.1234 64.2468) +POINT(20.5 41) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +DROP TABLE gis_point; +# +# Test inserting/updating different type data into POINT field +# +CREATE TABLE gis_point (i INT, p POINT) ENGINE=InnoDB; +CREATE TABLE geom (i INT, g GEOMETRY NOT NULL, SPATIAL KEY(g)) ENGINE=InnoDB; +INSERT INTO gis_point VALUES(0, ST_PointFromText('POINT(1 1)')); +INSERT INTO gis_point VALUES(1, ST_PointFromText('POINT(2 2)')); +INSERT INTO gis_point VALUES(2, NULL); +ALTER TABLE gis_point ADD COLUMN j INT, ALGORITHM = COPY; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p'; +name mtype prtype len +p 14 1279 12 +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p'; +name mtype prtype len +p 14 1279 12 +SELECT i, ST_AsText(p) FROM gis_point; +i ST_AsText(p) +0 POINT(1 1) +1 POINT(2 2) +2 NULL +UPDATE gis_point SET p = NULL WHERE p = ST_PointFromText('POINT(1 1)'); +UPDATE gis_point SET p = ST_PointFromText('POINT(1 2)') WHERE p = ST_PointFromText('POINT(2 2)'); +UPDATE gis_point SET p = ST_PointFromText('POINT(1 1)') WHERE p IS NULL; +SELECT i, ST_AsText(p) FROM gis_point; +i ST_AsText(p) +0 POINT(1 1) +1 POINT(1 2) +2 POINT(1 1) +INSERT INTO geom VALUES(0, ST_PointFromText('POINT(0 0)')); +INSERT INTO geom VALUES(1, ST_PointFromText('POINT(10 10)')); +INSERT INTO geom VALUES(2, ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))')); +SELECT ST_AsText(g) FROM geom; +ST_AsText(g) +POINT(0 0) +POINT(10 10) +POLYGON((7 1,6 2,6 3,10 3,10 1,7 1)) +SELECT ST_AsText(p) FROM gis_point; +ST_AsText(p) +POINT(1 1) +POINT(1 2) +POINT(1 1) +DELETE FROM geom WHERE g = ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))'); +From GEOMETRY to POINT, now ALL the data are POINT +ALTER TABLE geom MODIFY g POINT NOT NULL; +SHOW CREATE TABLE geom; +Table Create Table +geom CREATE TABLE `geom` ( + `i` int(11) DEFAULT NULL, + `g` point NOT NULL, + SPATIAL KEY `g` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT ST_AsText(g) FROM geom; +ST_AsText(g) +POINT(0 0) +POINT(10 10) +From POINT to GEOMETRY, all data are POINT +ALTER TABLE geom MODIFY g GEOMETRY NOT NULL; +SHOW CREATE TABLE geom; +Table Create Table +geom CREATE TABLE `geom` ( + `i` int(11) DEFAULT NULL, + `g` geometry NOT NULL, + SPATIAL KEY `g` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +TRUNCATE TABLE geom; +From GEOMETRY to POINT, the table is empty +ALTER TABLE geom MODIFY g POINT NOT NULL; +SHOW CREATE TABLE geom; +Table Create Table +geom CREATE TABLE `geom` ( + `i` int(11) DEFAULT NULL, + `g` point NOT NULL, + SPATIAL KEY `g` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT ST_AsText(g) FROM geom; +ST_AsText(g) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +CHECK TABLE geom; +Table Op Msg_type Msg_text +test.geom check status OK +DROP TABLE gis_point, geom; +# +# Test when a geom field, such as POINT, is also a primary key +# +CREATE TABLE t1 ( +a INT NOT NULL, +p POINT NOT NULL, +l LINESTRING NOT NULL, +g GEOMETRY NOT NULL, +PRIMARY KEY(p), +SPATIAL KEY `idx2` (p), +SPATIAL KEY `idx3` (l), +SPATIAL KEY `idx4` (g) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES( +1, ST_GeomFromText('POINT(10 10)'), +ST_GeomFromText('LINESTRING(1 1, 5 5, 10 10)'), +ST_GeomFromText('POLYGON((30 30, 40 40, 50 50, 30 50, 30 40, 30 30))')); +INSERT INTO t1 VALUES( +2, ST_GeomFromText('POINT(20 20)'), +ST_GeomFromText('LINESTRING(2 3, 7 8, 9 10, 15 16)'), +ST_GeomFromText('POLYGON((10 30, 30 40, 40 50, 40 30, 30 20, 10 30))')); +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(20 20) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +EXPLAIN UPDATE t1 SET p = ST_GeomFromText('POINT(30 30)') WHERE p = ST_GeomFromText('POINT(20 20)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range PRIMARY PRIMARY 27 NULL 1 # +UPDATE t1 SET p = ST_GeomFromText('POINT(30 30)') WHERE p = ST_GeomFromText('POINT(20 20)'); +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(30 30) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(a); +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(30 30) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(p); +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(30 30) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `p` point NOT NULL, + `l` linestring NOT NULL, + `g` geometry NOT NULL, + PRIMARY KEY (`p`(25)), + SPATIAL KEY `idx2` (`p`), + SPATIAL KEY `idx3` (`l`), + SPATIAL KEY `idx4` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(30 30) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(p); +EXPLAIN SELECT a, ST_AsText(p) FROM t1 WHERE a = 2 AND p = ST_GeomFromText('POINT(30 30)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 const PRIMARY,idx2 PRIMARY 27 const 1 # +SELECT a, ST_AsText(p) FROM t1 WHERE a = 2 AND p = ST_GeomFromText('POINT(30 30)'); +a ST_AsText(p) +2 POINT(30 30) +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +a ST_AsText(p) ST_AsText(l) ST_AsText(g) +1 POINT(10 10) LINESTRING(1 1,5 5,10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +2 POINT(30 30) LINESTRING(2 3,7 8,9 10,15 16) POLYGON((10 30,30 40,40 50,40 30,30 20,10 30)) +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +# +# Test for foreign keys. +# +CREATE TABLE parent(p POINT, PRIMARY KEY(p)) ENGINE=InnoDB; +CREATE TABLE child(p POINT NOT NULL) ENGINE=InnoDB; +ALTER TABLE parent ADD SPATIAL INDEX idx1(p ASC); +ALTER TABLE child ADD SPATIAL INDEX idx2(p ASC); +SHOW CREATE TABLE parent; +Table Create Table +parent CREATE TABLE `parent` ( + `p` point NOT NULL, + PRIMARY KEY (`p`(25)), + SPATIAL KEY `idx1` (`p`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE child; +Table Create Table +child CREATE TABLE `child` ( + `p` point NOT NULL, + SPATIAL KEY `idx2` (`p`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") +show warnings; +Level Code Message +Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'. +Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") +Warning 1215 Cannot add foreign key constraint +ALTER TABLE parent DROP INDEX idx1; +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +Got one of the listed errors +show warnings; +Level Code Message +Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'. +Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") +Warning 1215 Cannot add foreign key constraint +ALTER TABLE child DROP INDEX idx2; +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +Got one of the listed errors +show warnings; +Level Code Message +Warning 150 Alter table '`test`.`child`' with foreign key constraint failed. There is only prefix index in the referenced table where the referenced columns appear as the first columns near 'FOREIGN KEY(p) REFERENCES parent(p)'. +Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed") +Warning 1215 Cannot add foreign key constraint +DROP TABLE child, parent; +# +# Bug#28763: Selecting geometry fields in UNION caused server crash. +# +CREATE TABLE t1(f1 GEOMETRY, f2 POINT, f3 GEOMETRY) ENGINE=InnoDB; +SELECT f1 FROM t1 UNION SELECT f1 FROM t1; +f1 +INSERT INTO t1 (f2,f3) VALUES (ST_GeomFromText('POINT(1 1)'), +ST_GeomFromText('POINT(2 2)')); +SELECT ST_AsText(f2),ST_AsText(f3) FROM t1; +ST_AsText(f2) ST_AsText(f3) +POINT(1 1) POINT(2 2) +SELECT ST_AsText(a) FROM (SELECT f2 AS a FROM t1 UNION SELECT f3 FROM t1) t; +ST_AsText(a) +POINT(1 1) +POINT(2 2) +CREATE TABLE t2 AS SELECT f2 AS a FROM t1 UNION SELECT f3 FROM t1; +DESC t2; +Field Type Null Key Default Extra +a geometry YES NULL +SELECT ST_AsText(a) FROM t2; +ST_AsText(a) +POINT(1 1) +POINT(2 2) +DROP TABLE t1, t2; diff --git a/mysql-test/suite/innodb_gis/r/point_big.result b/mysql-test/suite/innodb_gis/r/point_big.result new file mode 100644 index 00000000000..de3632994a0 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/point_big.result @@ -0,0 +1,549 @@ +# +# Test when the POINT is on B-TREE +# +CREATE TABLE t1(fid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, p POINT, KEY(p)) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); +SELECT ST_AsText(p) FROM t1; +ST_AsText(p) +POINT(10 10) +POINT(20 10) +POINT(20 20) +POINT(10 20) +SELECT ST_AsText(p) FROM t1 WHERE p = ST_PointFromText('POINT(20 20)'); +ST_AsText(p) +POINT(20 20) +INSERT INTO t1 VALUES +(201, ST_PointFromText('POINT(100.32374832 101.23741821)')), +(202, ST_PointFromText('POINT(102.43287328 100.23489233)')), +(203, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(204, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))), +(205, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(206, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))); +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; +ST_AsText(p) COUNT(*) +POINT(10 10) 1 +POINT(10 20) 1 +POINT(20 10) 1 +POINT(20 20) 1 +POINT(101.43284962 100.45892392) 2 +POINT(100.32374832 101.23741821) 1 +POINT(102.43287328 100.23489233) 1 +POINT(103.4371864 105.248206478) 2 +TRUNCATE t1; +SELECT * FROM t1; +fid p +INSERT INTO t1(p) VALUES(ST_PointFromText('POINT(10 10)')), +(ST_PointFromText('POINT(10 20)')), +(ST_PointFromText('POINT(10 40)')), +(ST_PointFromText('POINT(10 60)')), +(ST_PointFromText('POINT(20 15)')), +(ST_PointFromText('POINT(30 10)')), +(ST_PointFromText('POINT(40 10)')), +(ST_PointFromText('POINT(50 10)')), +(ST_PointFromText('POINT(60 5)')), +(ST_PointFromText('POINT(60 10)')), +(ST_PointFromText('POINT(60 20)')), +(ST_PointFromText('POINT(60 100)')), +(ST_PointFromText('POINT(100 100)')), +(ST_PointFromText('POINT(80 60)')), +(ST_PointFromText('POINT(81 50)')), +(ST_PointFromText('POINT(82 70)')), +(ST_PointFromText('POINT(83 30)')), +(ST_PointFromText('POINT(20 100)')), +(ST_PointFromText('POINT(150 2000)')), +(ST_PointFromText('POINT(109 230)')), +(ST_PointFromText('POINT(280 250)')), +(ST_PointFromText('POINT(176 175)')), +(ST_PointFromText('POINT(200 10)')), +(NULL), +(NULL); +SELECT ST_AsText(p) FROM t1; +ST_AsText(p) +POINT(10 10) +POINT(10 20) +POINT(10 40) +POINT(10 60) +POINT(20 15) +POINT(30 10) +POINT(40 10) +POINT(50 10) +POINT(60 5) +POINT(60 10) +POINT(60 20) +POINT(60 100) +POINT(100 100) +POINT(80 60) +POINT(81 50) +POINT(82 70) +POINT(83 30) +POINT(20 100) +POINT(150 2000) +POINT(109 230) +POINT(280 250) +POINT(176 175) +POINT(200 10) +NULL +NULL +SELECT COUNT(*) FROM t1; +COUNT(*) +25 +SELECT ST_AsText(p) FROM t1; +ST_AsText(p) +POINT(10 10) +POINT(10 20) +POINT(10 40) +POINT(10 60) +POINT(20 15) +POINT(30 10) +POINT(40 10) +POINT(50 10) +POINT(60 5) +POINT(60 10) +POINT(60 20) +POINT(60 100) +POINT(100 100) +POINT(80 60) +POINT(81 50) +POINT(82 70) +POINT(83 30) +POINT(20 100) +POINT(150 2000) +POINT(109 230) +POINT(280 250) +POINT(176 175) +POINT(200 10) +NULL +NULL +SELECT COUNT(*) FROM t1; +COUNT(*) +25 +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SELECT COUNT(*) FROM t1; +COUNT(*) +102400 +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; +ST_AsText(p) COUNT(*) +NULL 8192 +POINT(10 10) 4096 +POINT(10 20) 4096 +POINT(10 40) 4096 +POINT(10 60) 4096 +POINT(20 15) 4096 +POINT(20 100) 4096 +POINT(30 10) 4096 +POINT(40 10) 4096 +POINT(50 10) 4096 +POINT(60 5) 4096 +POINT(60 10) 4096 +POINT(60 20) 4096 +POINT(60 100) 4096 +POINT(80 60) 4096 +POINT(100 100) 4096 +POINT(176 175) 4096 +POINT(200 10) 4096 +POINT(81 50) 4096 +POINT(109 230) 4096 +POINT(82 70) 4096 +POINT(280 250) 4096 +POINT(83 30) 4096 +POINT(150 2000) 4096 +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +COUNT(*) +4096 +DELETE FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +COUNT(*) +0 +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 5)'); +COUNT(*) +4096 +DELETE FROM t1 WHERE P = ST_PointFromText('POINT(60 5)'); +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 5)'); +COUNT(*) +0 +SELECT ST_AsText(p), COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)') GROUP BY p; +ST_AsText(p) COUNT(*) +POINT(60 10) 4096 +POINT(60 20) 4096 +UPDATE t1 SET p = ST_PointFromText('POINT(101 102)') WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)'); +SELECT ST_AsText(p), COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)') GROUP BY p; +ST_AsText(p) COUNT(*) +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(101 102)'); +COUNT(*) +8192 +SELECT COUNT(*) FROM t1 WHERE p IS NULL; +COUNT(*) +8192 +UPDATE t1 SET p = ST_PointFromText('POINT(160 160)') WHERE p IS NULL; +SELECT COUNT(*) FROM t1 WHERE p IS NULL; +COUNT(*) +0 +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(160 160)'); +COUNT(*) +8192 +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; +ST_AsText(p) COUNT(*) +POINT(10 10) 4096 +POINT(10 20) 4096 +POINT(10 40) 4096 +POINT(10 60) 4096 +POINT(20 15) 4096 +POINT(20 100) 4096 +POINT(30 10) 4096 +POINT(40 10) 4096 +POINT(50 10) 4096 +POINT(60 100) 4096 +POINT(80 60) 4096 +POINT(100 100) 4096 +POINT(160 160) 8192 +POINT(176 175) 4096 +POINT(200 10) 4096 +POINT(81 50) 4096 +POINT(101 102) 8192 +POINT(109 230) 4096 +POINT(82 70) 4096 +POINT(83 30) 4096 +POINT(150 2000) 4096 +SELECT COUNT(*) FROM t1; +COUNT(*) +94208 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +# +# Test when POINT is used in spatial index +# +SET @ls1 = ST_GeomFromText('LINESTRING(0 20, 10 0)'); +SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 10 20)'); +SET @ls3 = ST_GeomFromText('LINESTRING(20 -40, 21 -42)'); +SET @ls4 = ST_GeomFromText('LINESTRING(20 -42, 21 -40)'); +SET @poly1 = ST_GeomFromText('POLYGON((2 2, 2 10, 10 10, 10 2, 2 2))'); +SET @poly2 = ST_GeomFromText('POLYGON((0 0, -5 0, -4 -1, -6 -15, -3 -15, 0 0))'); +SET @poly3 = ST_GeomFromText('POLYGON((10.0 10.0, 20.5 20, 20.5 50, 32.0 64.0, 32.3 64.6, 5 60, 10 10))'); +SET @poly4 = ST_GeomFromText('POLYGON((0 10, -10 10, -10 -10, 0 -10, 0 10))'); +SET @p1 = ST_PointFromText('POINT(0 0)'); +SET @mpoly = ST_GeomFromText('MULTIPOLYGON(((3 3, 3 16, 16 16, 16 3, 3 3)), ((10 10, 10 50, 50 50, 50 10, 10 10)))'); +CREATE TABLE gis_point (p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL KEY k1 (p1), SPATIAL KEY k2 (p2)) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(1 2)'), ST_PointFromText('POINT(-1 -3)')), +(ST_PointFromText('POINT(2 4)'), ST_PointFromText('POINT(-2 -6)')), +(ST_PointFromText('POINT(3 6)'), ST_PointFromText('POINT(-3 -9)')), +(ST_PointFromText('POINT(4 8)'), ST_PointFromText('POINT(-4 -12)')), +(ST_PointFromText('POINT(5 10)'), ST_PointFromText('POINT(-5 -15)')), +(ST_PointFromText('POINT(6 12)'), ST_PointFromText('POINT(-6 -18)')), +(ST_PointFromText('POINT(7 14)'), ST_PointFromText('POINT(-7 -21)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(9 18)'), ST_PointFromText('POINT(-4 2)')), +(ST_PointFromText('POINT(10 21)'), ST_PointFromText('POINT(-6 3)')), +(ST_PointFromText('POINT(20.5 41)'), ST_PointFromText('POINT(-8 4)')), +(ST_PointFromText('POINT(26.25 57)'), ST_PointFromText('POINT(1 2)')), +(ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)')); +'The ORDER BY for spatial index will use filesort' +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_point NULL ALL NULL NULL NULL NULL # 100.00 Using filesort +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`gis_point`.`p1`) AS `ST_AsText(p1)`,st_astext(`test`.`gis_point`.`p2`) AS `ST_AsText(p2)` from `test`.`gis_point` order by `test`.`gis_point`.`p1`,`test`.`gis_point`.`p2` +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +ST_AsText(p1) ST_AsText(p2) +POINT(2 4) POINT(-2 -6) +POINT(3 6) POINT(-3 -9) +POINT(4 8) POINT(-4 -12) +POINT(5 10) POINT(-5 -15) +POINT(6 12) POINT(-6 -18) +POINT(7 14) POINT(-7 -21) +POINT(8 16) POINT(0 0) +POINT(9 18) POINT(-4 2) +POINT(10 21) POINT(-6 3) +POINT(1 2) POINT(-1 -3) +POINT(26.25 57) POINT(1 2) +POINT(20.5 41) POINT(-8 4) +POINT(32.1234 64.2468) POINT(-1 -1) +'Try to do IDU on the table and verify the result' +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) +POINT(32.1234 64.2468) +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 41)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 41) +POINT(32.1234 64.2468) +POINT(20.5 41) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +============================================================ +Use a trx to test the IDU on the table and verify the result +============================================================ +START TRANSACTION; +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) +POINT(32.1234 64.2468) +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 49)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 49)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 49) +POINT(32.1234 64.2468) +POINT(20.5 49) +ROLLBACK; +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); +Expect (32.1234 64.2468) AND (20.5 41) +POINT(32.1234 64.2468) +POINT(20.5 41) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +======================================================= +Enlarge the table by inserting the same data and verify +======================================================= +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(2 4) POINT(-2 -6) +1024 POINT(3 6) POINT(-3 -9) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +1024 POINT(8 16) POINT(0 0) +1024 POINT(9 18) POINT(-4 2) +1024 POINT(10 21) POINT(-6 3) +1024 POINT(1 2) POINT(-1 -3) +1024 POINT(26.25 57) POINT(1 2) +1024 POINT(20.5 41) POINT(-8 4) +1024 POINT(32.1234 64.2468) POINT(-1 -1) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1 GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(5 10) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(3 6) +1024 POINT(4 8) +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2; +COUNT(*) ST_AsText(p2) +1024 POINT(-2 -6) +1024 POINT(-3 -9) +1024 POINT(-4 -12) +1024 POINT(-1 -3) +1024 POINT(-1 -1) +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2; +COUNT(*) ST_AsText(p2) +1024 POINT(0 0) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(20.5 41) +1024 POINT(32.1234 64.2468) +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +1024 POINT(20.5 41) POINT(-8 4) +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +====================================================================== +Build another new table with the same schema, will insert data from this table to the orignal one +====================================================================== +CREATE TABLE p(p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL INDEX k1(p2)) ENGINE=InnoDB; +INSERT INTO p VALUES(ST_PointFromText('POINT(1000 -1000)'), ST_PointFromText('POINT(-201 203.56)')); +INSERT INTO p VALUES(ST_PointFromText('POINT(20.5 43.9832)'), ST_PointFromText('POINT(-0 0)')); +INSERT INTO p VALUES(ST_PointFromText('POINT(-4.2 -6.98)'), ST_PointFromText('POINT(-120.5 343.9832)')); +INSERT INTO p SELECT * FROM p WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((0 0, 0 2000, 2000 2000, 2000 -2000, 0 -2000, 0 0))')); +INSERT INTO p SELECT * FROM p WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((0 0, -10 0, -100 -100, 0 -50, 0 0))')); +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM p GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +2 POINT(1000 -1000) POINT(-201 203.56) +2 POINT(20.5 43.9832) POINT(-0 0) +2 POINT(-4.2 -6.98) POINT(-120.5 343.9832) +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(2 4) POINT(-2 -6) +1024 POINT(3 6) POINT(-3 -9) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +1024 POINT(8 16) POINT(0 0) +1024 POINT(9 18) POINT(-4 2) +1024 POINT(10 21) POINT(-6 3) +1024 POINT(1 2) POINT(-1 -3) +1024 POINT(26.25 57) POINT(1 2) +14 POINT(1000 -1000) POINT(-201 203.56) +1024 POINT(20.5 41) POINT(-8 4) +14 POINT(20.5 43.9832) POINT(-0 0) +1024 POINT(32.1234 64.2468) POINT(-1 -1) +14 POINT(-4.2 -6.98) POINT(-120.5 343.9832) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(20.5 41) +1024 POINT(32.1234 64.2468) +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE MBRWithin(p2, @poly2) GROUP BY p2; +COUNT(*) ST_AsText(p2) +1024 POINT(-2 -6) +1024 POINT(-3 -9) +1024 POINT(-4 -12) +1024 POINT(-1 -3) +1024 POINT(-1 -1) +DROP TABLE p; +================================ +Use a trx to test IUD and verify +================================ +============================================= +Delete those rows selected from another table +============================================= +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(2 4) POINT(-2 -6) +1024 POINT(3 6) POINT(-3 -9) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +1024 POINT(8 16) POINT(0 0) +1024 POINT(9 18) POINT(-4 2) +1024 POINT(10 21) POINT(-6 3) +1024 POINT(1 2) POINT(-1 -3) +1024 POINT(26.25 57) POINT(1 2) +14 POINT(1000 -1000) POINT(-201 203.56) +1024 POINT(20.5 41) POINT(-8 4) +14 POINT(20.5 43.9832) POINT(-0 0) +1024 POINT(32.1234 64.2468) POINT(-1 -1) +14 POINT(-4.2 -6.98) POINT(-120.5 343.9832) +UPDATE gis_point SET p2 = ST_PointFromText('POINT(2000 2000)') WHERE ST_Contains(ST_GeomFromText('POLYGON((-100 100, -400 100, -400 400, -100 400, -100 100))'), p2) OR ST_Contains(ST_GeomFromText('POLYGON((-0.0001 -0.0002, -0.0001 0.00002, 0.00000005 0.000001, 0.0000025 -0.001, -0.0001 -0.0002))'), p2); +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +'To remove all the just updated rows' +DELETE FROM gis_point WHERE ST_Intersection(ST_GeomFromText('LINESTRING(1800 1900, 2200 2100)'), ST_GeomFromText('LINESTRING(0 0, 2001 2001)')) = p2; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')); +====================================================================== +Following results should be almost the same with those at the beginning +====================================================================== +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(2 4) POINT(-2 -6) +1024 POINT(3 6) POINT(-3 -9) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +2 POINT(8 16) POINT(0 0) +1024 POINT(9 18) POINT(-4 2) +1024 POINT(10 21) POINT(-6 3) +1024 POINT(1 2) POINT(-1 -3) +1024 POINT(26.25 57) POINT(1 2) +1024 POINT(20.5 41) POINT(-8 4) +1024 POINT(32.1234 64.2468) POINT(-1 -1) +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) +FROM gis_point +WHERE ST_Contains(ST_GeomFromText('POLYGON((-1000 -1000, -1000 1000, 1000 1000, 1001 -1001, -1000 -1000))'), p1) +GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(2 4) POINT(-2 -6) +1024 POINT(3 6) POINT(-3 -9) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +2 POINT(8 16) POINT(0 0) +1024 POINT(9 18) POINT(-4 2) +1024 POINT(10 21) POINT(-6 3) +1024 POINT(1 2) POINT(-1 -3) +1024 POINT(26.25 57) POINT(1 2) +1024 POINT(20.5 41) POINT(-8 4) +1024 POINT(32.1234 64.2468) POINT(-1 -1) +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +ST_AsText(p1) ST_AsText(p2) +POINT(2 4) POINT(-2 -6) +POINT(3 6) POINT(-3 -9) +POINT(4 8) POINT(-4 -12) +POINT(5 10) POINT(-5 -15) +POINT(6 12) POINT(-6 -18) +POINT(7 14) POINT(-7 -21) +POINT(8 16) POINT(0 0) +POINT(9 18) POINT(-4 2) +POINT(10 21) POINT(-6 3) +POINT(1 2) POINT(-1 -3) +POINT(26.25 57) POINT(1 2) +POINT(20.5 41) POINT(-8 4) +POINT(32.1234 64.2468) POINT(-1 -1) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1 GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(5 10) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(3 6) +1024 POINT(4 8) +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2; +COUNT(*) ST_AsText(p2) +1024 POINT(-2 -6) +1024 POINT(-3 -9) +1024 POINT(-4 -12) +1024 POINT(-1 -3) +1024 POINT(-1 -1) +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2; +COUNT(*) ST_AsText(p2) +2 POINT(0 0) +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; +COUNT(*) ST_AsText(p1) +1024 POINT(20.5 41) +1024 POINT(32.1234 64.2468) +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +1024 POINT(4 8) POINT(-4 -12) +1024 POINT(5 10) POINT(-5 -15) +1024 POINT(6 12) POINT(-6 -18) +1024 POINT(7 14) POINT(-7 -21) +1024 POINT(20.5 41) POINT(-8 4) +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2; +COUNT(*) ST_AsText(p1) ST_AsText(p2) +CHECK TABLE gis_point; +Table Op Msg_type Msg_text +test.gis_point check status OK +DROP TABLE gis_point; diff --git a/mysql-test/suite/innodb_gis/r/repeatable_spatial.result b/mysql-test/suite/innodb_gis/r/repeatable_spatial.result new file mode 100644 index 00000000000..065312f612f --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/repeatable_spatial.result @@ -0,0 +1,174 @@ +CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 POINT NOT NULL, +c3 LINESTRING NOT NULL,c4 POLYGON NOT NULL,c5 GEOMETRY NOT NULL) +ENGINE=InnoDB; +ALTER TABLE tab ADD SPATIAL INDEX idx2(c2 ASC); +ALTER TABLE tab ADD SPATIAL KEY idx3(c3 DESC); +ALTER TABLE tab ADD SPATIAL INDEX idx4(c4 ASC) COMMENT 'testing spatial index on Polygon'; +ALTER TABLE tab ADD SPATIAL KEY idx5(c5 ASC) COMMENT 'testing spatial index on Geometry'; +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c3) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) LINESTRING(5 5,20 20,30 30) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +"In connection 1" +connect con1,localhost,root,,; +connection con1; +SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; +SELECT @@tx_isolation; +@@tx_isolation +REPEATABLE-READ +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c3) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) LINESTRING(5 5,20 20,30 30) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +"In connection 2" +connect con2,localhost,root,,; +connection con2; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +START TRANSACTION; +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(2,ST_GeomFromText('POINT(20 20)'),ST_GeomFromText('LINESTRING(20 20,30 30,40 40)'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))')); +SET @g1 = ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'); +SET @g2 = ST_GeomFromText('POINT(10 10)'); +UPDATE tab SET C5 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))') +WHERE MBREquals(tab.c4, @g1) AND MBREquals(tab.c2, @g2); +"In connection 1" +connection con1; +SET @g3 = ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'); +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g3); +c1 ST_AsText(c2) ST_AsText(c4) ST_AsText(c5) +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +START TRANSACTION; +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +"In connection 2" +connection con2; +SELECT COUNT(*) FROM tab; +COUNT(*) +2 +COMMIT; +disconnect con2; +"In connection 1" +connection con1; +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +SET @g4 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'); +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); +ST_AsText(c5) +COMMIT; +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); +ST_AsText(c5) +POLYGON((300 300,400 400,500 500,300 500,300 400,300 300)) +SELECT COUNT(*) FROM tab; +COUNT(*) +2 +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300)) +2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50)) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50)) +disconnect con1; +connection default; +DROP TABLE tab; +CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 POINT NOT NULL, +c3 LINESTRING NOT NULL,c4 POLYGON NOT NULL,c5 GEOMETRY NOT NULL) +ENGINE=InnoDB; +ALTER TABLE tab ADD SPATIAL INDEX idx2(c2 ASC); +ALTER TABLE tab ADD SPATIAL KEY idx3(c3 DESC); +ALTER TABLE tab ADD SPATIAL INDEX idx4(c4 ASC) COMMENT 'testing spatial index on Polygon'; +ALTER TABLE tab ADD SPATIAL KEY idx5(c5 ASC) COMMENT 'testing spatial index on Geometry'; +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c3) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) LINESTRING(5 5,20 20,30 30) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +"In connection 1" +connect con1,localhost,root,,; +connection con1; +SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; +SELECT @@tx_isolation; +@@tx_isolation +REPEATABLE-READ +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c3) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) LINESTRING(5 5,20 20,30 30) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) +"In connection 2" +connect con2,localhost,root,,; +connection con2; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +START TRANSACTION; +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(2,ST_GeomFromText('POINT(20 20)'),ST_GeomFromText('LINESTRING(20 20,30 30,40 40)'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))')); +SET @g1 = ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'); +SET @g2 = ST_GeomFromText('POINT(10 10)'); +UPDATE tab SET C5 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))') +WHERE MBREquals(tab.c4, @g1) AND MBREquals(tab.c2, @g2); +"In connection 1" +connection con1; +SET @g3 = ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'); +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g3); +c1 ST_AsText(c2) ST_AsText(c4) ST_AsText(c5) +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +START TRANSACTION; +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +"In connection 2" +connection con2; +SELECT COUNT(*) FROM tab; +COUNT(*) +2 +COMMIT; +disconnect con2; +"In connection 1" +connection con1; +SELECT COUNT(*) FROM tab; +COUNT(*) +1 +SET @g4 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'); +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); +ST_AsText(c5) +COMMIT; +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); +ST_AsText(c5) +POLYGON((300 300,400 400,500 500,300 500,300 400,300 300)) +SELECT COUNT(*) FROM tab; +COUNT(*) +2 +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab; +c1 ST_AsText(c2) ST_AsText(c4) ST_AsText(c5) +1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30)) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300)) +2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50)) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50)) +disconnect con1; +connection default; +DROP TABLE tab; diff --git a/mysql-test/suite/innodb_gis/r/rollback.result b/mysql-test/suite/innodb_gis/r/rollback.result new file mode 100644 index 00000000000..8688690b66a --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rollback.result @@ -0,0 +1,416 @@ +CREATE TABLE t4 (id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin default NULL, +c1 varchar(15) collate utf8_bin default NULL, +c3 varchar(10) collate utf8_bin default NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +start transaction; +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +rollback; +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); +INSERT INTO t4 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +DELETE FROM t4 WHERE id = 1280; +INSERT INTO t4 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +start transaction; +DELETE FROM t4 WHERE id = 1280; +rollback; +start transaction; +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES +('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +rollback; +DROP TABLE t4; +SET GLOBAL innodb_file_per_table='on'; +create table t1(i int primary key, +a geometry not null, spatial index(a)) row_format=dynamic engine=innodb; +insert into t1 values(1, st_geomfromtext(concat('multilinestring(','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 28514)',')'))); +start transaction; +update t1 set a=st_geomfromtext(concat('multilinestring(','(-4287 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 79878)',')')) where i = 1; +rollback; +start transaction; +update t1 set a=st_geomfromtext(concat('multilinestring(','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 28514)',')')) where i = 1; +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; +SET GLOBAL innodb_file_per_table=default; +create table t1(i int primary key, +a geometry not null, b geometry not null, +c int, +spatial index(a),key(a(25)),key(b(25)), +unique key (c), +spatial index(b))engine=innodb; +insert into t1 values(0, point(0,0), point(0,0), 0); +insert into t1 values(1, point(1,1), point(1,1), 1); +insert into t1 values(2, point(2,2), point(2,2), 2); +insert into t1 values(3, point(3,3), point(3,3), 3); +insert into t1 values(4, point(4,4), point(4,4), 4); +start transaction; +update t1 set a=point(5,5), b=point(5,5), c=5 where i < 3; +ERROR 23000: Duplicate entry '5' for key 'c' +rollback; +set session debug="+d,row_mysql_crash_if_error"; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +update t1 set a=point(5,5), b=point(5,5), c=5 where i < 3; +ERROR HY000: Lost connection to MySQL server during query +insert into t1 values(5, point(5,5), point(5,5), 5); +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/row_format.result b/mysql-test/suite/innodb_gis/r/row_format.result new file mode 100644 index 00000000000..1fd19371bcd --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/row_format.result @@ -0,0 +1,1588 @@ +SET GLOBAL innodb_file_per_table='off'; +SET GLOBAL innodb_file_format='Antelope'; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +CREATE TABLE t1 ( +id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin DEFAULT NULL, +c1 varchar(15) collate utf8_bin DEFAULT NULL, +c3 varchar(10) collate utf8_bin DEFAULT NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +) ROW_FORMAT=REDUNDANT ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +ROLLBACK; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +DELETE FROM t1 WHERE id = 1280; +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +START TRANSACTION; +DELETE FROM t1 WHERE id = 1280; +ROLLBACK; +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +ROLLBACK; +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +UPDATE t1 SET spatial_point = ST_GeomFromText('POINT(123 456)') WHERE id < 2000; +SET @g1 = ST_GeomFromText('Polygon((123 456, 123 678, 456 678,456 456,123 456))'); +DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point); +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +DROP TABLE t1; +SET GLOBAL innodb_file_per_table=default; +SET GLOBAL innodb_file_format=default; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +SET GLOBAL innodb_file_per_table='on'; +SET GLOBAL innodb_file_format='Barracuda'; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +CREATE TABLE t1 ( +id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin DEFAULT NULL, +c1 varchar(15) collate utf8_bin DEFAULT NULL, +c3 varchar(10) collate utf8_bin DEFAULT NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +) ROW_FORMAT=COMPRESSED ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +ROLLBACK; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +DELETE FROM t1 WHERE id = 1280; +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +START TRANSACTION; +DELETE FROM t1 WHERE id = 1280; +ROLLBACK; +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +ROLLBACK; +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +UPDATE t1 SET spatial_point = ST_GeomFromText('POINT(123 456)') WHERE id < 2000; +SET @g1 = ST_GeomFromText('Polygon((123 456, 123 678, 456 678,456 456,123 456))'); +DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point); +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +DROP TABLE t1; +SET GLOBAL innodb_file_per_table=default; +SET GLOBAL innodb_file_format=default; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +SET GLOBAL innodb_file_per_table='on'; +SET GLOBAL innodb_file_format='Barracuda'; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +CREATE TABLE t1 ( +id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin DEFAULT NULL, +c1 varchar(15) collate utf8_bin DEFAULT NULL, +c3 varchar(10) collate utf8_bin DEFAULT NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +) ROW_FORMAT=DYNAMIC ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +ROLLBACK; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +DELETE FROM t1 WHERE id = 1280; +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +START TRANSACTION; +DELETE FROM t1 WHERE id = 1280; +ROLLBACK; +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +ROLLBACK; +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +UPDATE t1 SET spatial_point = ST_GeomFromText('POINT(123 456)') WHERE id < 2000; +SET @g1 = ST_GeomFromText('Polygon((123 456, 123 678, 456 678,456 456,123 456))'); +DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point); +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +DROP TABLE t1; +SET GLOBAL innodb_file_per_table=default; +SET GLOBAL innodb_file_format=default; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +SET GLOBAL innodb_file_per_table='off'; +SET GLOBAL innodb_file_format='Antelope'; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html +CREATE TABLE t1 ( +id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin DEFAULT NULL, +c1 varchar(15) collate utf8_bin DEFAULT NULL, +c3 varchar(10) collate utf8_bin DEFAULT NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +) ROW_FORMAT=COMPACT ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +ROLLBACK; +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); +INSERT INTO t1 (c2, c1, c3, spatial_poINT) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +DELETE FROM t1 WHERE id = 1280; +INSERT INTO t1 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); +START TRANSACTION; +DELETE FROM t1 WHERE id = 1280; +ROLLBACK; +START TRANSACTION; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +ROLLBACK; +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +UPDATE t1 SET spatial_point = ST_GeomFromText('POINT(123 456)') WHERE id < 2000; +SET @g1 = ST_GeomFromText('Polygon((123 456, 123 678, 456 678,456 456,123 456))'); +DELETE FROM t1 WHERE MBRContains(@g1, t1.spatial_point); +SELECT COUNT(*) FROM t1; +COUNT(*) +353 +DROP TABLE t1; +SET GLOBAL innodb_file_per_table=default; +SET GLOBAL innodb_file_format=default; +Warnings: +Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html diff --git a/mysql-test/suite/innodb_gis/r/rtree_compress.result b/mysql-test/suite/innodb_gis/r/rtree_compress.result new file mode 100644 index 00000000000..50f0367af5e --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_compress.result @@ -0,0 +1,52 @@ +SET GLOBAL innodb_file_per_table=1; +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +select count(*) from t1; +count(*) +18432 +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select count(*) from t1; +count(*) +9216 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +9216 +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +SET DEBUG='+d,page_copy_rec_list_start_compress_fail'; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +delete from t1; +SET DEBUG='-d,page_copy_rec_list_start_compress_fail'; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_compress2.result b/mysql-test/suite/innodb_gis/r/rtree_compress2.result new file mode 100644 index 00000000000..3522a1097aa --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_compress2.result @@ -0,0 +1,25 @@ +SET GLOBAL innodb_file_per_table=1; +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(70000); +select count(*) from t1; +count(*) +70000 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +call mtr.add_suppression("InnoDB: A copy of page \[page id: space=[0-9]+, page number=[0-9]+\] in the doublewrite buffer slot [0-9]+ is not within space bounds"); +START TRANSACTION; +CALL insert_t1(5000); +COMMIT; +# Kill and restart +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_concurrent_srch.result b/mysql-test/suite/innodb_gis/r/rtree_concurrent_srch.result new file mode 100644 index 00000000000..232d6fa296d --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_concurrent_srch.result @@ -0,0 +1,312 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +SET SESSION debug="+d,rtr_pcur_move_to_next_return"; +set session transaction isolation level serializable; +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +SET DEBUG_SYNC = 'RESET'; +SET DEBUG_SYNC = 'row_search_for_mysql_before_return SIGNAL started WAIT_FOR go_ahead'; +select count(*) from t1 where MBRWithin(t1.c2, @g1);; +# Establish session con1 (user=root) +set session transaction isolation level serializable; +SET DEBUG_SYNC = 'now WAIT_FOR started'; +insert into t1 select * from t1; +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; +count(*) +576 +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +1152 +insert into t1 select * from t1; +insert into t1 select * from t1; +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +4608 +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +set session transaction isolation level serializable; +truncate t1; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +set session transaction isolation level serializable; +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +0 +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +commit; +select count(*) from t1; +count(*) +896 +insert into t1 values (105, Point(105, 105)); +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +1 +select @@innodb_lock_wait_timeout; +@@innodb_lock_wait_timeout +1 +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +insert into t1 select * from t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select count(*) from t1; +count(*) +897 +select sleep(2); +sleep(2) +0 +commit; +truncate t1; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +set session transaction isolation level serializable; +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +0 +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +commit; +select count(*) from t1; +count(*) +1792 +insert into t1 values (105, Point(105, 105)); +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +1 +select count(*) from t1 where MBRIntersects(t1.c2, @g1); +count(*) +1793 +select @@innodb_lock_wait_timeout; +@@innodb_lock_wait_timeout +1 +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 105, 200 105)')); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select count(*) from t1; +count(*) +1793 +select sleep(2); +sleep(2) +0 +commit; +truncate t1; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))'); +start transaction; +delete from t1 where MBRWithin(t1.c2, @g1); +set session innodb_lock_wait_timeout = 1; +select @@innodb_lock_wait_timeout; +@@innodb_lock_wait_timeout +1 +insert into t1 values(4, Point(4,4)); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +rollback; +truncate t1; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))'); +start transaction; +select count(*) from t1 where MBRWithin(t1.c2, @g1) for update; +count(*) +0 +set session innodb_lock_wait_timeout = 1; +select @@innodb_lock_wait_timeout; +@@innodb_lock_wait_timeout +1 +insert into t1 values(4, Point(4,4)); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +rollback; +truncate t1; +create procedure insert_t1(IN start int, IN total int) +begin +declare i int default 1; +set i = start; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(0, 1000); +set session transaction isolation level serializable; +select @@tx_isolation; +@@tx_isolation +SERIALIZABLE +start transaction; +set @g1 = ST_GeomFromText('Polygon((800 800, 800 1000, 1000 1000, 1000 800, 800 800))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +199 +CALL insert_t1(1001, 2000); +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; +insert into t1 values (1200, Point(950, 950)); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select sleep(2); +sleep(2) +0 +commit; +SET SESSION debug="-d,rtr_pcur_move_to_next_return"; +drop table t1; +drop procedure insert_t1; +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +SET SESSION debug="+d,rtr_pcur_move_to_next_return"; +set transaction isolation level serializable; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +0 +delete from t1 where c1 = 1; +commit; +set transaction isolation level serializable; +start transaction; +set @g1 = ST_GeomFromText('Polygon((0 0, 0 300, 300 300, 300 0, 0 0))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +2 +set session innodb_lock_wait_timeout = 1; +delete from t1 where c1 = 2; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +commit; +drop table t1; +SET DEBUG_SYNC= 'RESET'; +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +start transaction; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +select count(*) from t1; +count(*) +4608 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +set transaction isolation level read uncommitted; +SET DEBUG_SYNC= 'row_search_for_mysql_before_return SIGNAL siga WAIT_FOR sigb'; +select count(*) from t1 where MBRWithin(t1.c2, @g1); +SET DEBUG_SYNC= 'now WAIT_FOR siga'; +rollback; +SET DEBUG_SYNC= 'now SIGNAL sigb'; +count(*) +1 +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +DROP TABLE t1; +SET DEBUG_SYNC = 'RESET'; +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +start transaction; +CALL insert_t1(100); +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +SET DEBUG_SYNC= 'rtr_pcur_move_to_next_return SIGNAL siga WAIT_FOR sigb'; +select count(*) from t1 where MBRWithin(t1.c2, @g1);; +SET DEBUG_SYNC= 'now WAIT_FOR siga'; +rollback; +SET DEBUG_SYNC= 'now SIGNAL sigb'; +count(*) +0 +drop procedure insert_t1; +DROP TABLE t1; +SET SESSION debug="-d,rtr_pcur_move_to_next_return"; +SET DEBUG_SYNC = 'RESET'; diff --git a/mysql-test/suite/innodb_gis/r/rtree_crash.result b/mysql-test/suite/innodb_gis/r/rtree_crash.result new file mode 100644 index 00000000000..12ca15a420d --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_crash.result @@ -0,0 +1,41 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(5000); +select count(*) from t1; +count(*) +5000 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +CALL insert_t1(10000); +select count(*) from t1; +count(*) +10000 +drop index c2 on t1; +create spatial index idx on t1(c2); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) DEFAULT NULL, + `c2` geometry NOT NULL, + SPATIAL KEY `idx` (`c2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +call mtr.add_suppression("InnoDB: page [0-9]+ in the doublewrite buffer is not within space bounds.*"); +START TRANSACTION; +CALL insert_t1(5000); +COMMIT; +# Kill and restart +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_create_inplace.result b/mysql-test/suite/innodb_gis/r/rtree_create_inplace.result new file mode 100644 index 00000000000..a8898f5c98f --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_create_inplace.result @@ -0,0 +1,37 @@ +CREATE TABLE t1 (c1 INT, c2 GEOMETRY NOT NULL, c3 GEOMETRY NOT NULL) ENGINE=INNODB; +INSERT INTO t1 VALUES(1, Point(1,1), ST_GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))')); +INSERT INTO t1 VALUES(2, Point(2,2), ST_GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))')); +INSERT INTO t1 VALUES(3, Point(3,3), ST_GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))')); +INSERT INTO t1 VALUES(4, Point(4,4), ST_GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))')); +INSERT INTO t1 VALUES(5, Point(5,5), ST_GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); +INSERT INTO t1 VALUES(6, Point(6,6), ST_GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))')); +INSERT INTO t1 VALUES(7, Point(7,7), ST_GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))')); +INSERT INTO t1 VALUES(8, Point(8,8), ST_GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))')); +INSERT INTO t1 VALUES(9, Point(9,9), ST_GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +CREATE SPATIAL INDEX idx ON t1(c2); +SELECT COUNT(*) FROM t1; +COUNT(*) +4608 +SET @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +SELECT COUNT(*) FROM t1 WHERE MBRWithin(t1.c2, @g1); +COUNT(*) +4608 +SET @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +SELECT COUNT(*) FROM t1 WHERE MBRWithin(t1.c2, @g1); +COUNT(*) +0 +ALTER TABLE t1 DROP INDEX idx, ADD SPATIAL INDEX idx3(c2); +SET SESSION debug="+d,row_merge_instrument_log_check_flush"; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +ALTER TABLE t1 DROP INDEX idx3, ADD SPATIAL INDEX idx4(c2), ADD SPATIAL INDEX idx5(c3); +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_debug.result b/mysql-test/suite/innodb_gis/r/rtree_debug.result new file mode 100644 index 00000000000..e3877880387 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_debug.result @@ -0,0 +1,69 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values +(i, Point(i, i)), +(i + 1, Point(i + 1, i + 1)), +(i + 2, Point(i + 2, i + 2)), +(i + 3, Point(i + 3, i + 3)), +(i + 4, Point(i + 4, i + 4)), +(i + 5, Point(i + 5, i + 5)), +(i + 6, Point(i + 6, i + 6)), +(i + 7, Point(i + 7, i + 7)), +(i + 8, Point(i + 8, i + 8)), +(i + 9, Point(i + 9, i + 9)); +set i = i + 10; +end while; +end| +CALL insert_t1(5000); +select count(*) from t1; +count(*) +5000 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +CALL insert_t1(10000); +select count(*) from t1; +count(*) +10000 +drop index c2 on t1; +create spatial index idx on t1(c2); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) DEFAULT NULL, + `c2` geometry NOT NULL, + SPATIAL KEY `idx` (`c2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SET DEBUG='+d,row_merge_ins_spatial_fail'; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +create spatial index idx2 on t1(c2); +ERROR HY000: Got error 1000 "Unknown error 1000" from storage engine InnoDB +SET DEBUG='-d,row_merge_ins_spatial_fail'; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) DEFAULT NULL, + `c2` geometry NOT NULL, + SPATIAL KEY `idx` (`c2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +CALL insert_t1(100000); +select count(*) from t1; +count(*) +100000 +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +truncate table t1; +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_drop_index.result b/mysql-test/suite/innodb_gis/r/rtree_drop_index.result new file mode 100644 index 00000000000..8ac1a049b8e --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_drop_index.result @@ -0,0 +1,22 @@ +# +# Bug #21899444 INNODB: ASSERT FAILURE (COL->ORD_PART) +# IN DICT_COL_GET_SPATIAL_STATUS() +connect purge_control,localhost,root; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +connection default; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=dynamic; +ALTER TABLE t1 ADD INDEX`si`(g(500)); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +alter table t1 drop index `si`; +connection purge_control; +COMMIT; +disconnect purge_control; +connection default; +set global innodb_fast_shutdown = 0; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_estimate.result b/mysql-test/suite/innodb_gis/r/rtree_estimate.result new file mode 100644 index 00000000000..24f0f5ff41a --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_estimate.result @@ -0,0 +1,161 @@ +CREATE TABLE t1 ( +g GEOMETRY NOT NULL +) ENGINE=InnoDB; +ALTER TABLE t1 ADD SPATIAL(g); +SET @g1 = ST_GeomFromText('POINT(10 10)'); +SET @g2 = ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))'); +SET @g3 = ST_GeomFromText('POLYGON((1.79769e+308 1.79769e+308, 20 5, -1.79769e+308 -1.79769e+308, 1.79769e+308 1.79769e+308))'); +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +INSERT INTO t1 VALUES(@g1); +INSERT INTO t1 VALUES(@g2); +INSERT INTO t1 VALUES(@g3); +SELECT ST_AsText(g) FROM t1; +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +POINT(10 10) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +POINT(10 10) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +POINT(10 10) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +POINT(10 10) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g1`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +ST_AsText(g) +POINT(10 10) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g2`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g2`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 1 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g2`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g2`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range g g 34 NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g2`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g3); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrcontains(`test`.`t1`.`g`,(@`g3`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g3); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrdisjoint(`test`.`t1`.`g`,(@`g3`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g3); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrequals(`test`.`t1`.`g`,(@`g3`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g3); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrintersects(`test`.`t1`.`g`,(@`g3`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_AsText(g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g3`)) +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +ST_AsText(g) +POINT(10 10) +POLYGON((5 5,20 5,20 21,5 21,5 5)) +POLYGON((1.79769e308 1.79769e308,20 5,-1.79769e308 -1.79769e308,1.79769e308 1.79769e308)) +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_multi_pk.result b/mysql-test/suite/innodb_gis/r/rtree_multi_pk.result new file mode 100644 index 00000000000..11cf8ad91c1 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_multi_pk.result @@ -0,0 +1,155 @@ +create table t1 (i int, i2 char(10), g geometry not null, primary key (i, i2), spatial index (g))engine=innodb; +insert into t1 values (1, "111", POINT(1,1)); +insert into t1 values (2, "222", POINT(1.5,1.5)); +insert into t1 values (3, "333", POINT(3,3)); +insert into t1 values (4, "444", POINT(3.1,3.1)); +insert into t1 values (5, "555", POINT(5,5)); +analyze table t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); +explain select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL g NULL NULL NULL 5 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select st_astext(`test`.`t1`.`g`) AS `ST_astext(t1.g)` from `test`.`t1` where mbrwithin(`test`.`t1`.`g`,(@`g1`)) +select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1); +ST_astext(t1.g) +POINT(1 1) +POINT(1.5 1.5) +set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); +delete from t1 where MBRWithin(t1.g, @g1); +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select ST_astext(t1.g) from t1; +ST_astext(t1.g) +POINT(3 3) +POINT(3.1 3.1) +POINT(5 5) +set @g1 = ST_GeomFromText('Polygon((5 5,5 5,5 5,5 5,5 5))'); +update t1 set g = POINT(2,2) where MBRWithin(t1.g, @g1); +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select ST_astext(t1.g) from t1; +ST_astext(t1.g) +POINT(3 3) +POINT(3.1 3.1) +POINT(2 2) +show indexes from t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment +t1 0 PRIMARY 1 i A # NULL NULL BTREE +t1 0 PRIMARY 2 i2 A # NULL NULL BTREE +t1 1 g 1 g A # 32 NULL SPATIAL +drop table t1; +create table t1 (name VARCHAR(100), square GEOMETRY not null, spatial index (square))engine=innodb; +INSERT INTO t1 VALUES("small", ST_GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); +INSERT INTO t1 VALUES("big", ST_GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); +INSERT INTO t1 VALUES("up", ST_GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))')); +INSERT INTO t1 VALUES("up2", ST_GeomFromText('POLYGON (( 0 2, 0 4, 2 4, 2 2, 0 2))')); +INSERT INTO t1 VALUES("up3", ST_GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))')); +INSERT INTO t1 VALUES("down", ST_GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))')); +INSERT INTO t1 VALUES("down2", ST_GeomFromText('POLYGON (( 0 -2, 0 0, 2 0, 2 -2, 0 -2))')); +INSERT INTO t1 VALUES("down3", ST_GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))')); +INSERT INTO t1 VALUES("right", ST_GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))')); +INSERT INTO t1 VALUES("right2", ST_GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))')); +INSERT INTO t1 VALUES("right3", ST_GeomFromText('POLYGON (( 3 0, 3 2, 5 2, 5 0, 3 0))')); +INSERT INTO t1 VALUES("left", ST_GeomFromText('POLYGON (( -1 0, -1 2, 1 2, 1 0, -1 0))')); +INSERT INTO t1 VALUES("left2", ST_GeomFromText('POLYGON (( -2 0, -2 2, 0 2, 0 0, -2 0))')); +INSERT INTO t1 VALUES("left3", ST_GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))')); +SET @p = ST_GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'); +SELECT name, ST_AsText(square) from t1 where MBRContains(@p, square); +name ST_AsText(square) +small POLYGON((0 0,0 1,1 1,1 0,0 0)) +SELECT name, ST_AsText(square) from t1 where MBRDisjoint(@p, square); +name ST_AsText(square) +up3 POLYGON((0 3,0 5,2 5,2 3,0 3)) +down3 POLYGON((0 -3,0 -1,2 -1,2 -3,0 -3)) +right3 POLYGON((3 0,3 2,5 2,5 0,3 0)) +left3 POLYGON((-3 0,-3 2,-1 2,-1 0,-3 0)) +SELECT name, ST_AsText(square) from t1 where MBREquals(@p, square); +name ST_AsText(square) +SELECT name, ST_AsText(square) from t1 where MBRIntersects(@p, square); +name ST_AsText(square) +right2 POLYGON((2 0,2 2,4 2,4 0,2 0)) +right POLYGON((1 0,1 2,3 2,3 0,1 0)) +up2 POLYGON((0 2,0 4,2 4,2 2,0 2)) +up POLYGON((0 1,0 3,2 3,2 1,0 1)) +big POLYGON((0 0,0 3,3 3,3 0,0 0)) +small POLYGON((0 0,0 1,1 1,1 0,0 0)) +down POLYGON((0 -1,0 1,2 1,2 -1,0 -1)) +down2 POLYGON((0 -2,0 0,2 0,2 -2,0 -2)) +left POLYGON((-1 0,-1 2,1 2,1 0,-1 0)) +left2 POLYGON((-2 0,-2 2,0 2,0 0,-2 0)) +SELECT name, ST_AsText(square) from t1 where MBROverlaps(@p, square); +name ST_AsText(square) +right POLYGON((1 0,1 2,3 2,3 0,1 0)) +up POLYGON((0 1,0 3,2 3,2 1,0 1)) +down POLYGON((0 -1,0 1,2 1,2 -1,0 -1)) +left POLYGON((-1 0,-1 2,1 2,1 0,-1 0)) +SELECT name, ST_AsText(square) from t1 where MBRTouches(@p, square); +name ST_AsText(square) +right2 POLYGON((2 0,2 2,4 2,4 0,2 0)) +up2 POLYGON((0 2,0 4,2 4,2 2,0 2)) +down2 POLYGON((0 -2,0 0,2 0,2 -2,0 -2)) +left2 POLYGON((-2 0,-2 2,0 2,0 0,-2 0)) +SELECT name, ST_AsText(square) from t1 where MBRWithin(@p, square); +name ST_AsText(square) +big POLYGON((0 0,0 3,3 3,3 0,0 0)) +SET @vert1 = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SET @horiz1 = ST_GeomFromText('POLYGON ((-2 0, 2 0, -2 0))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SET @horiz2 = ST_GeomFromText('POLYGON ((-1 0, 3 0, -1 0))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SET @horiz3 = ST_GeomFromText('POLYGON ((2 0, 3 0, 2 0))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SET @point1 = ST_GeomFromText('POLYGON ((0 0))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SET @point2 = ST_GeomFromText('POLYGON ((-2 0))'); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @vert1) GROUP BY a1.name; +MBRoverlaps +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @horiz1) GROUP BY a1.name; +MBRoverlaps +SELECT MBROverlaps(@horiz1, @vert1) FROM DUAL; +MBROverlaps(@horiz1, @vert1) +NULL +SELECT MBROverlaps(@horiz1, @horiz2) FROM DUAL; +MBROverlaps(@horiz1, @horiz2) +NULL +SELECT MBROverlaps(@horiz1, @horiz3) FROM DUAL; +MBROverlaps(@horiz1, @horiz3) +NULL +SELECT MBROverlaps(@horiz1, @point1) FROM DUAL; +MBROverlaps(@horiz1, @point1) +NULL +SELECT MBROverlaps(@horiz1, @point2) FROM DUAL; +MBROverlaps(@horiz1, @point2) +NULL +DROP TABLE t1; +create table t1 (i int not null, g geometry not null)engine=innodb; +insert into t1 values (1, POINT(1,1)); +insert into t1 values (2, POINT(1.5,1.5)); +insert into t1 values (3, POINT(3,3)); +insert into t1 values (4, POINT(3.1,3.1)); +insert into t1 values (5, POINT(5,5)); +alter table t1 add primary key(i), algorithm=inplace; +alter table t1 drop primary key; +create spatial index idx on t1(g) algorithm=inplace; +create spatial index idx2 on t1(g); +Warnings: +Warning 1831 Duplicate index 'idx2' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release. +alter table t1 add primary key(i), algorithm=inplace; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) NOT NULL, + `g` geometry NOT NULL, + PRIMARY KEY (`i`), + SPATIAL KEY `idx` (`g`), + SPATIAL KEY `idx2` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +drop index idx on t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_old.result b/mysql-test/suite/innodb_gis/r/rtree_old.result new file mode 100644 index 00000000000..30a1bdcc375 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_old.result @@ -0,0 +1,1821 @@ +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 ( +fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +g GEOMETRY NOT NULL, +SPATIAL KEY(g) +) ENGINE=InnoDB; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fid` int(11) NOT NULL AUTO_INCREMENT, + `g` geometry NOT NULL, + PRIMARY KEY (`fid`), + SPATIAL KEY `g` (`g`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(150 150, 150 150)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(149 149, 151 151)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(148 148, 152 152)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(147 147, 153 153)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(146 146, 154 154)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(145 145, 155 155)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(144 144, 156 156)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(143 143, 157 157)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(142 142, 158 158)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(141 141, 159 159)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(140 140, 160 160)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(139 139, 161 161)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(138 138, 162 162)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(137 137, 163 163)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(136 136, 164 164)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(135 135, 165 165)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(134 134, 166 166)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(133 133, 167 167)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(132 132, 168 168)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(131 131, 169 169)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(130 130, 170 170)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(129 129, 171 171)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(128 128, 172 172)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(127 127, 173 173)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(126 126, 174 174)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(125 125, 175 175)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(124 124, 176 176)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(123 123, 177 177)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(122 122, 178 178)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(121 121, 179 179)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(120 120, 180 180)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(119 119, 181 181)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(118 118, 182 182)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(117 117, 183 183)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(116 116, 184 184)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(115 115, 185 185)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(114 114, 186 186)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(113 113, 187 187)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(112 112, 188 188)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(111 111, 189 189)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(110 110, 190 190)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(109 109, 191 191)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(108 108, 192 192)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(107 107, 193 193)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(106 106, 194 194)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(105 105, 195 195)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(104 104, 196 196)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(103 103, 197 197)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(102 102, 198 198)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(101 101, 199 199)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(100 100, 200 200)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(99 99, 201 201)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(98 98, 202 202)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(97 97, 203 203)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(96 96, 204 204)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(95 95, 205 205)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(94 94, 206 206)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(93 93, 207 207)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(92 92, 208 208)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(91 91, 209 209)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(90 90, 210 210)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(89 89, 211 211)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(88 88, 212 212)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(87 87, 213 213)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(86 86, 214 214)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(85 85, 215 215)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(84 84, 216 216)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(83 83, 217 217)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(82 82, 218 218)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(81 81, 219 219)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(80 80, 220 220)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(79 79, 221 221)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(78 78, 222 222)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(77 77, 223 223)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(76 76, 224 224)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(75 75, 225 225)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(74 74, 226 226)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(73 73, 227 227)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(72 72, 228 228)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(71 71, 229 229)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(70 70, 230 230)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(69 69, 231 231)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(68 68, 232 232)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(67 67, 233 233)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(66 66, 234 234)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(65 65, 235 235)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(64 64, 236 236)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(63 63, 237 237)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(62 62, 238 238)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(61 61, 239 239)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(60 60, 240 240)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(59 59, 241 241)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(58 58, 242 242)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(57 57, 243 243)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(56 56, 244 244)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(55 55, 245 245)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(54 54, 246 246)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(53 53, 247 247)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(52 52, 248 248)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(51 51, 249 249)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(50 50, 250 250)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(49 49, 251 251)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(48 48, 252 252)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(47 47, 253 253)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(46 46, 254 254)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(45 45, 255 255)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(44 44, 256 256)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(43 43, 257 257)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(42 42, 258 258)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(41 41, 259 259)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(40 40, 260 260)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(39 39, 261 261)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(38 38, 262 262)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(37 37, 263 263)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(36 36, 264 264)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(35 35, 265 265)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(34 34, 266 266)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(33 33, 267 267)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(32 32, 268 268)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(31 31, 269 269)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(30 30, 270 270)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(29 29, 271 271)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(28 28, 272 272)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(27 27, 273 273)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(26 26, 274 274)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(25 25, 275 275)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(24 24, 276 276)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(23 23, 277 277)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(22 22, 278 278)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(21 21, 279 279)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(20 20, 280 280)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(19 19, 281 281)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(18 18, 282 282)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(17 17, 283 283)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(16 16, 284 284)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(15 15, 285 285)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(14 14, 286 286)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(13 13, 287 287)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(12 12, 288 288)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(11 11, 289 289)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(10 10, 290 290)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(9 9, 291 291)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(8 8, 292 292)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(7 7, 293 293)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(6 6, 294 294)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(5 5, 295 295)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(4 4, 296 296)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(3 3, 297 297)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(2 2, 298 298)')); +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(1 1, 299 299)')); +SELECT count(*) FROM t1; +count(*) +150 +SELECT fid, ST_AsText(g) FROM t1 WHERE MBRWithin(g, ST_GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))')) ORDER BY fid; +fid ST_AsText(g) +1 LINESTRING(150 150,150 150) +2 LINESTRING(149 149,151 151) +3 LINESTRING(148 148,152 152) +4 LINESTRING(147 147,153 153) +5 LINESTRING(146 146,154 154) +6 LINESTRING(145 145,155 155) +7 LINESTRING(144 144,156 156) +8 LINESTRING(143 143,157 157) +9 LINESTRING(142 142,158 158) +10 LINESTRING(141 141,159 159) +11 LINESTRING(140 140,160 160) +DROP TABLE t1; +CREATE TABLE t2 ( +fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +g GEOMETRY NOT NULL +) ENGINE=InnoDB; +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10))); +INSERT INTO t2 (g) VALUES (LineString(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10))); +ALTER TABLE t2 ADD SPATIAL KEY(g); +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `fid` int(11) NOT NULL AUTO_INCREMENT, + `g` geometry NOT NULL, + PRIMARY KEY (`fid`), + SPATIAL KEY `g` (`g`) +) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 +SELECT count(*) FROM t2; +count(*) +100 +SELECT fid, ST_AsText(g) FROM t2 WHERE MBRWithin(g, +ST_GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))')) ORDER BY fid; +fid ST_AsText(g) +45 LINESTRING(51 51,60 60) +46 LINESTRING(51 41,60 50) +55 LINESTRING(41 51,50 60) +56 LINESTRING(41 41,50 50) +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 9 * 10 - 9), Point(10 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 8 * 10 - 9), Point(10 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 7 * 10 - 9), Point(10 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 6 * 10 - 9), Point(10 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 5 * 10 - 9), Point(10 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 4 * 10 - 9), Point(10 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 3 * 10 - 9), Point(10 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 2 * 10 - 9), Point(10 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(10 * 10 - 9, 1 * 10 - 9), Point(10 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 10 * 10 - 9), Point(9 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 9 * 10 - 9), Point(9 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 8 * 10 - 9), Point(9 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 7 * 10 - 9), Point(9 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 6 * 10 - 9), Point(9 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 5 * 10 - 9), Point(9 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 4 * 10 - 9), Point(9 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 3 * 10 - 9), Point(9 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 2 * 10 - 9), Point(9 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(9 * 10 - 9, 1 * 10 - 9), Point(9 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 10 * 10 - 9), Point(8 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 9 * 10 - 9), Point(8 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 8 * 10 - 9), Point(8 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 7 * 10 - 9), Point(8 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 6 * 10 - 9), Point(8 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 5 * 10 - 9), Point(8 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 4 * 10 - 9), Point(8 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 3 * 10 - 9), Point(8 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 2 * 10 - 9), Point(8 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(8 * 10 - 9, 1 * 10 - 9), Point(8 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 10 * 10 - 9), Point(7 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 9 * 10 - 9), Point(7 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 8 * 10 - 9), Point(7 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 7 * 10 - 9), Point(7 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 6 * 10 - 9), Point(7 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 5 * 10 - 9), Point(7 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 4 * 10 - 9), Point(7 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 3 * 10 - 9), Point(7 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 2 * 10 - 9), Point(7 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(7 * 10 - 9, 1 * 10 - 9), Point(7 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 10 * 10 - 9), Point(6 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 9 * 10 - 9), Point(6 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 8 * 10 - 9), Point(6 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 7 * 10 - 9), Point(6 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 6 * 10 - 9), Point(6 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 5 * 10 - 9), Point(6 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 4 * 10 - 9), Point(6 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 3 * 10 - 9), Point(6 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 2 * 10 - 9), Point(6 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(6 * 10 - 9, 1 * 10 - 9), Point(6 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 10 * 10 - 9), Point(5 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 9 * 10 - 9), Point(5 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 8 * 10 - 9), Point(5 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 7 * 10 - 9), Point(5 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 6 * 10 - 9), Point(5 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 5 * 10 - 9), Point(5 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 4 * 10 - 9), Point(5 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 3 * 10 - 9), Point(5 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 2 * 10 - 9), Point(5 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(5 * 10 - 9, 1 * 10 - 9), Point(5 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 10 * 10 - 9), Point(4 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 9 * 10 - 9), Point(4 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 8 * 10 - 9), Point(4 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 7 * 10 - 9), Point(4 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 6 * 10 - 9), Point(4 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 5 * 10 - 9), Point(4 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 4 * 10 - 9), Point(4 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 3 * 10 - 9), Point(4 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 2 * 10 - 9), Point(4 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(4 * 10 - 9, 1 * 10 - 9), Point(4 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 10 * 10 - 9), Point(3 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 9 * 10 - 9), Point(3 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 8 * 10 - 9), Point(3 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 7 * 10 - 9), Point(3 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 6 * 10 - 9), Point(3 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 5 * 10 - 9), Point(3 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 4 * 10 - 9), Point(3 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 3 * 10 - 9), Point(3 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 2 * 10 - 9), Point(3 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(3 * 10 - 9, 1 * 10 - 9), Point(3 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 10 * 10 - 9), Point(2 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 9 * 10 - 9), Point(2 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 8 * 10 - 9), Point(2 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 7 * 10 - 9), Point(2 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 6 * 10 - 9), Point(2 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 5 * 10 - 9), Point(2 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 4 * 10 - 9), Point(2 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 3 * 10 - 9), Point(2 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 2 * 10 - 9), Point(2 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(2 * 10 - 9, 1 * 10 - 9), Point(2 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 10 * 10 - 9), Point(1 * 10, 10 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 9 * 10 - 9), Point(1 * 10, 9 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 8 * 10 - 9), Point(1 * 10, 8 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 7 * 10 - 9), Point(1 * 10, 7 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 6 * 10 - 9), Point(1 * 10, 6 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 5 * 10 - 9), Point(1 * 10, 5 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 4 * 10 - 9), Point(1 * 10, 4 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 3 * 10 - 9), Point(1 * 10, 3 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 2 * 10 - 9), Point(1 * 10, 2 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point(1 * 10 - 9, 1 * 10 - 9), Point(1 * 10, 1 * 10)))); +Warnings: +Warning 3196 st_geometryfromwkb(geometry, srid) is deprecated and will be replaced by st_srid(geometry, srid) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), srid) instead. +SELECT count(*) FROM t2; +count(*) +100 +DROP TABLE t2; +drop table if exists t1; +Warnings: +Note 1051 Unknown table 'test.t1' +CREATE TABLE t1 (a geometry NOT NULL, SPATIAL (a)); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +analyze table t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +drop table t1; +CREATE TABLE t1 ( +fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +g GEOMETRY NOT NULL, +SPATIAL KEY(g) +) ENGINE=InnoDB; +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(1 2, 2 3)')),(ST_GeomFromText('LineString(1 2, 2 4)')); +drop table t1; +CREATE TABLE t1 ( +line LINESTRING NOT NULL, +kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po', +name VARCHAR(32), +SPATIAL KEY (line) +) engine=InnoDB; +ALTER TABLE t1 DISABLE KEYS; +Warnings: +Note 1031 Table storage engine for 't1' doesn't have this option +INSERT INTO t1 (name, kind, line) VALUES +("Aadaouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")), +("Aadassiye", "pp", ST_GeomFromText("POINT(35.816667 36.216667)")), +("Aadbel", "pp", ST_GeomFromText("POINT(34.533333 36.100000)")), +("Aadchit", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")), +("Aadchite", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")), +("Aadchit el Qoussair", "pp", ST_GeomFromText("POINT(33.283333 35.483333)")), +("Aaddaye", "pp", ST_GeomFromText("POINT(36.716667 40.833333)")), +("'Aadeissa", "pp", ST_GeomFromText("POINT(32.823889 35.698889)")), +("Aaderup", "pp", ST_GeomFromText("POINT(55.216667 11.766667)")), +("Qalaat Aades", "pp", ST_GeomFromText("POINT(33.503333 35.377500)")), +("A ad'ino", "pp", ST_GeomFromText("POINT(54.812222 38.209167)")), +("Aadi Noia", "pp", ST_GeomFromText("POINT(13.800000 39.833333)")), +("Aad La Macta", "pp", ST_GeomFromText("POINT(35.779444 -0.129167)")), +("Aadland", "pp", ST_GeomFromText("POINT(60.366667 5.483333)")), +("Aadliye", "pp", ST_GeomFromText("POINT(33.366667 36.333333)")), +("Aadloun", "pp", ST_GeomFromText("POINT(33.403889 35.273889)")), +("Aadma", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")), +("Aadma Asundus", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")), +("Aadmoun", "pp", ST_GeomFromText("POINT(34.150000 35.650000)")), +("Aadneram", "pp", ST_GeomFromText("POINT(59.016667 6.933333)")), +("Aadneskaar", "pp", ST_GeomFromText("POINT(58.083333 6.983333)")), +("Aadorf", "pp", ST_GeomFromText("POINT(47.483333 8.900000)")), +("Aadorp", "pp", ST_GeomFromText("POINT(52.366667 6.633333)")), +("Aadouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")), +("Aadoui", "pp", ST_GeomFromText("POINT(34.450000 35.983333)")), +("Aadouiye", "pp", ST_GeomFromText("POINT(34.583333 36.183333)")), +("Aadouss", "pp", ST_GeomFromText("POINT(33.512500 35.601389)")), +("Aadra", "pp", ST_GeomFromText("POINT(33.616667 36.500000)")), +("Aadzi", "pp", ST_GeomFromText("POINT(38.100000 64.850000)")); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +ALTER TABLE t1 ENABLE KEYS; +Warnings: +Note 1031 Table storage engine for 't1' doesn't have this option +INSERT INTO t1 (name, kind, line) VALUES ("austria", "pp", ST_GeomFromText('LINESTRING(14.9906 48.9887,14.9946 48.9904,14.9947 48.9916)')); +drop table t1; +CREATE TABLE t1 (st varchar(100)); +INSERT INTO t1 VALUES ("Fake string"); +CREATE TABLE t2 (geom GEOMETRY NOT NULL, SPATIAL KEY gk(geom)); +INSERT INTO t2 SELECT ST_GeomFromText(st) FROM t1; +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +drop table t1, t2; +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +Warnings: +Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. +CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; +Warnings: +Warning 1101 BLOB, TEXT, GEOMETRY or JSON column 'geometry' can't have a default value +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, -18.6055555000 +-66.8158332999, -18.7186111000 -66.8102777000, -18.7211111000 -66.9269443999, +-18.6086111000 -66.9327777000))')); +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, -65.7372222000 +-96.5516666000, -65.8502777000 -96.5461111000, -65.8527777000 -96.6627777000, +-65.7402776999 -96.6686111000))')); +check table t1 extended; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; +CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; +Warnings: +Warning 1101 BLOB, TEXT, GEOMETRY or JSON column 'geometry' can't have a default value +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((2 2, 2 8, 10 8, 10 2, 2 2))')); +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((2 12, 15 12, 15 18, 2 18, 2 12))')); +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((3 5, 3 18, 10 18, 10 5, 3 5))')); +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((4 6, 4 8, 10 8, 10 4, 4 6))')); +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.geometry, @g1); +count(*) +4 +start transaction; +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((4 6, 4 8, 10 8, 10 4, 4 6))')); +select count(*) from t1 where MBRWithin(t1.geometry, @g1); +count(*) +5 +rollback; +select count(*) from t1 where MBRWithin(t1.geometry, @g1); +count(*) +4 +set @g2 = ST_GeomFromText('POINT(2 2)'); +select count(*) from t1 where MBRcontains(t1.geometry, @g2); +count(*) +0 +select count(*) from t1 where MBRintersects(t1.geometry, @g2); +count(*) +1 +set @g3 = ST_GeomFromText('LINESTRING(2 2, 2 12)'); +select count(*) from t1 where MBRintersects(t1.geometry, @g3); +count(*) +2 +DROP TABLE t1; +CREATE TABLE t1 ( +c1 geometry NOT NULL default '', +SPATIAL KEY i1 (c1) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +Warnings: +Warning 1101 BLOB, TEXT, GEOMETRY or JSON column 'c1' can't have a default value +INSERT INTO t1 (c1) VALUES ( +ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +CREATE TABLE t1 ( +c1 geometry NOT NULL default '', +SPATIAL KEY i1 (c1) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +Warnings: +Warning 1101 BLOB, TEXT, GEOMETRY or JSON column 'c1' can't have a default value +INSERT INTO t1 (c1) VALUES ( +ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +INSERT INTO t1 (c1) VALUES ( +ST_PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, + -65.7372222000 -96.5516666000, + -65.8502777000 -96.5461111000, + -65.8527777000 -96.6627777000, + -65.7402776999 -96.6686111000))')); +INSERT INTO t1 (c1) VALUES ( +ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +SET sql_mode = default; +CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) ); +INSERT INTO t1 (foo) VALUES (POINT(1,1)); +INSERT INTO t1 (foo) VALUES (POINT(1,0)); +INSERT INTO t1 (foo) VALUES (POINT(0,1)); +INSERT INTO t1 (foo) VALUES (POINT(0,0)); +SELECT 1 FROM t1 WHERE foo != POINT(0,0); +1 +1 +1 +1 +DROP TABLE t1; +CREATE TABLE t1 (id bigint(12) unsigned NOT NULL auto_increment, +c2 varchar(15) collate utf8_bin default NULL, +c1 varchar(15) collate utf8_bin default NULL, +c3 varchar(10) collate utf8_bin default NULL, +spatial_point point NOT NULL, +PRIMARY KEY(id), +SPATIAL KEY (spatial_point) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), +('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), +('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), +('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), +('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), +('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), +('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), +('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), +('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), +('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), +('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), +('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), +('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), +('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), +('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), +('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), +('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), +('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), +('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), +('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), +('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), +('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), +('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), +('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), +('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), +('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), +('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), +('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), +('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), +('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), +('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), +('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), +('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), +('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), +('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), +('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), +('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), +('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), +('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), +('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), +('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), +('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), +('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), +('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), +('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), +('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), +('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), +('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), +('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), +('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), +('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), +('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), +('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), +('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), +('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), +('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), +('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), +('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), +('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), +('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), +('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), +('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), +('b', 's', 's', ST_GeomFromText('POINT(223 211)')), +('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), +('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), +('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), +('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), +('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), +('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), +('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), +('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), +('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), +('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), +('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), +('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), +('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), +('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), +('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), +('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), +('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), +('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), +('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), +('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), +('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), +('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), +('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), +('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), +('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), +('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), +('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), +('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), +('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), +('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), +('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), +('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), +('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), +('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), +('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), +('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), +('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +SET @@RAND_SEED1=692635050, @@RAND_SEED2=297339954; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=159925977, @@RAND_SEED2=942570618; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=328169745, @@RAND_SEED2=410451954; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=178507359, @@RAND_SEED2=332493072; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=1034033013, @@RAND_SEED2=558966507; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(230 9)') where c1 like 'y%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(95 35)') where c1 like 'j%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(93 99)') where c1 like 'a%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(19 81)') where c1 like 'r%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(20 177)') where c1 like 'h%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(221 193)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(195 205)') where c1 like 'd%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(15 213)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(214 63)') where c1 like 'n%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(243 171)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(198 82)') where c1 like 'y%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), +('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), +('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), +('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), +('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), +('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), +('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), +('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), +('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), +('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), +('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), +('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), +('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), +('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), +('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), +('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), +('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), +('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), +('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), +('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), +('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), +('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), +('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), +('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), +('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), +('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), +('z', 't', 't', ST_GeomFromText('POINT(99 134)')), +('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), +('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), +('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), +('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), +('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), +('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), +('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), +('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), +('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), +('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), +('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), +('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), +('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), +('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), +('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), +('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), +('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), +('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), +('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), +('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), +('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), +('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), +('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), +('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), +('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), +('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), +('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), +('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), +('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), +('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), +('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), +('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), +('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), +('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), +('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), +('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), +('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), +('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), +('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), +('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), +('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), +('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), +('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), +('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), +('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), +('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), +('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), +('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), +('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), +('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), +('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), +('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), +('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), +('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), +('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), +('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), +('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), +('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), +('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), +('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), +('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), +('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), +('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), +('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), +('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), +('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), +('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), +('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), +('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), +('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), +('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), +('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), +('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), +('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), +('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), +('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), +('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), +('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), +('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), +('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), +('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), +('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), +('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), +('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), +('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), +('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), +('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), +('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), +('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), +('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), +('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), +('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), +('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), +('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), +('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), +('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), +('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), +('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), +('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), +('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), +('m', 's', 's', ST_GeomFromText('POINT(172 149)')), +('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), +('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), +('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), +('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), +('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), +('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), +('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), +('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), +('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), +('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), +('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), +('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), +('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), +('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), +('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), +('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), +('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), +('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), +('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), +('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), +('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(163 157)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(53 151)') where c1 like 'd%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(96 183)') where c1 like 'r%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(57 91)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(202 110)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(120 137)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(207 147)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(31 125)') where c1 like 'e%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(27 36)') where c1 like 'r%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), +('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), +('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), +('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), +('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), +('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), +('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), +('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), +('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), +('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), +('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), +('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), +('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), +('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), +('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), +('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), +('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), +('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), +('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), +('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), +('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), +('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), +('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), +('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), +('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), +('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), +('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), +('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), +('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), +('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), +('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), +('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), +('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), +('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), +('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), +('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), +('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), +('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), +('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), +('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), +('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), +('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), +('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), +('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), +('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), +('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), +('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), +('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), +('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), +('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), +('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), +('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), +('l', 's', 't', ST_GeomFromText('POINT(83 18)')), +('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), +('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), +('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), +('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), +('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), +('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), +('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), +('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), +('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), +('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), +('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), +('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), +('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), +('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), +('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), +('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), +('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), +('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), +('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), +('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), +('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), +('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), +('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), +('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), +('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), +('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), +('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), +('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), +('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), +('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), +('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), +('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), +('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), +('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), +('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), +('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), +('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), +('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), +('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), +('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), +('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), +('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), +('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), +('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), +('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), +('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), +('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +SET @@RAND_SEED1=481064922, @@RAND_SEED2=438133497; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=280535103, @@RAND_SEED2=444518646; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=1072017234, @@RAND_SEED2=484203885; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=358851897, @@RAND_SEED2=358495224; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=509031459, @@RAND_SEED2=675962925; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(202 194)') where c1 like 'f%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(228 18)') where c1 like 'h%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(88 18)') where c1 like 'l%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(176 94)') where c1 like 'e%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(44 47)') where c1 like 'g%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(95 191)') where c1 like 'b%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(179 218)') where c1 like 'y%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(239 40)') where c1 like 'g%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(248 41)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(167 82)') where c1 like 't%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(13 104)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(139 84)') where c1 like 'a%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(145 108)') where c1 like 'p%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(147 57)') where c1 like 't%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(217 144)') where c1 like 'n%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(160 224)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(38 28)') where c1 like 'j%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(104 114)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(88 19)') where c1 like 'c%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')), +('s', 'i', 'c', ST_GeomFromText('POINT(49 60)')), +('c', 'c', 'i', ST_GeomFromText('POINT(7 57)')), +('n', 'g', 'k', ST_GeomFromText('POINT(252 105)')), +('g', 'b', 'm', ST_GeomFromText('POINT(180 11)')), +('u', 'l', 'r', ST_GeomFromText('POINT(32 90)')), +('c', 'x', 'e', ST_GeomFromText('POINT(143 24)')), +('x', 'u', 'a', ST_GeomFromText('POINT(123 92)')), +('s', 'b', 'h', ST_GeomFromText('POINT(190 108)')), +('c', 'x', 'b', ST_GeomFromText('POINT(104 100)')), +('i', 'd', 't', ST_GeomFromText('POINT(214 104)')), +('r', 'w', 'g', ST_GeomFromText('POINT(29 67)')), +('b', 'f', 'g', ST_GeomFromText('POINT(149 46)')), +('r', 'r', 'd', ST_GeomFromText('POINT(242 196)')), +('j', 'l', 'a', ST_GeomFromText('POINT(90 196)')), +('e', 't', 'b', ST_GeomFromText('POINT(190 64)')), +('l', 'x', 'w', ST_GeomFromText('POINT(250 73)')), +('q', 'y', 'r', ST_GeomFromText('POINT(120 182)')), +('s', 'j', 'a', ST_GeomFromText('POINT(180 175)')), +('n', 'i', 'y', ST_GeomFromText('POINT(124 136)')), +('s', 'x', 's', ST_GeomFromText('POINT(176 209)')), +('u', 'f', 's', ST_GeomFromText('POINT(215 173)')), +('m', 'j', 'x', ST_GeomFromText('POINT(44 140)')), +('v', 'g', 'x', ST_GeomFromText('POINT(177 233)')), +('u', 't', 'b', ST_GeomFromText('POINT(136 197)')), +('f', 'g', 'b', ST_GeomFromText('POINT(10 8)')), +('v', 'c', 'j', ST_GeomFromText('POINT(13 81)')), +('d', 's', 'q', ST_GeomFromText('POINT(200 100)')), +('a', 'p', 'j', ST_GeomFromText('POINT(33 40)')), +('i', 'c', 'g', ST_GeomFromText('POINT(168 204)')), +('k', 'h', 'i', ST_GeomFromText('POINT(93 243)')), +('s', 'b', 's', ST_GeomFromText('POINT(157 13)')), +('v', 'l', 'l', ST_GeomFromText('POINT(103 6)')), +('r', 'b', 'k', ST_GeomFromText('POINT(244 137)')), +('l', 'd', 'r', ST_GeomFromText('POINT(162 254)')), +('q', 'b', 'z', ST_GeomFromText('POINT(136 246)')), +('x', 'x', 'p', ST_GeomFromText('POINT(120 37)')), +('m', 'e', 'z', ST_GeomFromText('POINT(203 167)')), +('q', 'n', 'p', ST_GeomFromText('POINT(94 119)')), +('b', 'g', 'u', ST_GeomFromText('POINT(93 248)')), +('r', 'v', 'v', ST_GeomFromText('POINT(53 88)')), +('y', 'a', 'i', ST_GeomFromText('POINT(98 219)')), +('a', 's', 'g', ST_GeomFromText('POINT(173 138)')), +('c', 'a', 't', ST_GeomFromText('POINT(235 135)')), +('q', 'm', 'd', ST_GeomFromText('POINT(224 208)')), +('e', 'p', 'k', ST_GeomFromText('POINT(161 238)')), +('n', 'g', 'q', ST_GeomFromText('POINT(35 204)')), +('t', 't', 'x', ST_GeomFromText('POINT(230 178)')), +('w', 'f', 'a', ST_GeomFromText('POINT(150 221)')), +('z', 'm', 'z', ST_GeomFromText('POINT(119 42)')), +('l', 'j', 's', ST_GeomFromText('POINT(97 96)')), +('f', 'z', 'x', ST_GeomFromText('POINT(208 65)')), +('i', 'v', 'c', ST_GeomFromText('POINT(145 79)')), +('l', 'f', 'k', ST_GeomFromText('POINT(83 234)')), +('u', 'a', 's', ST_GeomFromText('POINT(250 49)')), +('o', 'k', 'p', ST_GeomFromText('POINT(46 50)')), +('d', 'e', 'z', ST_GeomFromText('POINT(30 198)')), +('r', 'r', 'l', ST_GeomFromText('POINT(78 189)')), +('y', 'l', 'f', ST_GeomFromText('POINT(188 132)')), +('d', 'q', 'm', ST_GeomFromText('POINT(247 107)')), +('p', 'j', 'n', ST_GeomFromText('POINT(148 227)')), +('b', 'o', 'i', ST_GeomFromText('POINT(172 25)')), +('e', 'v', 'd', ST_GeomFromText('POINT(94 248)')), +('q', 'd', 'f', ST_GeomFromText('POINT(15 29)')), +('w', 'b', 'b', ST_GeomFromText('POINT(74 111)')), +('g', 'q', 'f', ST_GeomFromText('POINT(107 215)')), +('o', 'h', 'r', ST_GeomFromText('POINT(25 168)')), +('u', 't', 'w', ST_GeomFromText('POINT(251 188)')), +('h', 's', 'w', ST_GeomFromText('POINT(254 247)')), +('f', 'f', 'b', ST_GeomFromText('POINT(166 103)')); +SET @@RAND_SEED1=866613816, @@RAND_SEED2=92289615; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES +('l', 'c', 'l', ST_GeomFromText('POINT(202 98)')), +('k', 'c', 'b', ST_GeomFromText('POINT(46 206)')), +('r', 'y', 'm', ST_GeomFromText('POINT(74 140)')), +('y', 'z', 'd', ST_GeomFromText('POINT(200 160)')), +('s', 'y', 's', ST_GeomFromText('POINT(156 205)')), +('u', 'v', 'p', ST_GeomFromText('POINT(86 82)')), +('j', 's', 's', ST_GeomFromText('POINT(91 233)')), +('x', 'j', 'f', ST_GeomFromText('POINT(3 14)')), +('l', 'z', 'v', ST_GeomFromText('POINT(123 156)')), +('h', 'i', 'o', ST_GeomFromText('POINT(145 229)')), +('o', 'r', 'd', ST_GeomFromText('POINT(15 22)')), +('f', 'x', 't', ST_GeomFromText('POINT(21 60)')), +('t', 'g', 'h', ST_GeomFromText('POINT(50 153)')), +('g', 'u', 'b', ST_GeomFromText('POINT(82 85)')), +('v', 'a', 'p', ST_GeomFromText('POINT(231 178)')), +('n', 'v', 'o', ST_GeomFromText('POINT(183 25)')), +('j', 'n', 'm', ST_GeomFromText('POINT(50 144)')), +('e', 'f', 'i', ST_GeomFromText('POINT(46 16)')), +('d', 'w', 'a', ST_GeomFromText('POINT(66 6)')), +('f', 'x', 'a', ST_GeomFromText('POINT(107 197)')), +('m', 'o', 'a', ST_GeomFromText('POINT(142 80)')), +('q', 'l', 'g', ST_GeomFromText('POINT(251 23)')), +('c', 's', 's', ST_GeomFromText('POINT(158 43)')), +('y', 'd', 'o', ST_GeomFromText('POINT(196 228)')), +('d', 'p', 'l', ST_GeomFromText('POINT(107 5)')), +('h', 'a', 'b', ST_GeomFromText('POINT(183 166)')), +('m', 'w', 'p', ST_GeomFromText('POINT(19 59)')), +('b', 'y', 'o', ST_GeomFromText('POINT(178 30)')), +('x', 'w', 'i', ST_GeomFromText('POINT(168 94)')), +('t', 'k', 'z', ST_GeomFromText('POINT(171 5)')), +('r', 'm', 'a', ST_GeomFromText('POINT(222 19)')), +('u', 'v', 'e', ST_GeomFromText('POINT(224 80)')), +('q', 'r', 'k', ST_GeomFromText('POINT(212 218)')), +('d', 'p', 'j', ST_GeomFromText('POINT(169 7)')), +('d', 'r', 'v', ST_GeomFromText('POINT(193 23)')), +('n', 'y', 'y', ST_GeomFromText('POINT(130 178)')), +('m', 'z', 'r', ST_GeomFromText('POINT(81 200)')), +('j', 'e', 'w', ST_GeomFromText('POINT(145 239)')), +('v', 'h', 'x', ST_GeomFromText('POINT(24 105)')), +('z', 'm', 'a', ST_GeomFromText('POINT(175 129)')), +('b', 'c', 'v', ST_GeomFromText('POINT(213 10)')), +('t', 't', 'u', ST_GeomFromText('POINT(2 129)')), +('r', 's', 'v', ST_GeomFromText('POINT(209 192)')), +('x', 'p', 'g', ST_GeomFromText('POINT(43 63)')), +('t', 'e', 'u', ST_GeomFromText('POINT(139 210)')), +('l', 'e', 't', ST_GeomFromText('POINT(245 148)')), +('a', 'i', 'k', ST_GeomFromText('POINT(167 195)')), +('m', 'o', 'h', ST_GeomFromText('POINT(206 120)')), +('g', 'z', 's', ST_GeomFromText('POINT(169 240)')), +('z', 'u', 's', ST_GeomFromText('POINT(202 120)')), +('i', 'b', 'a', ST_GeomFromText('POINT(216 18)')), +('w', 'y', 'g', ST_GeomFromText('POINT(119 236)')), +('h', 'y', 'p', ST_GeomFromText('POINT(161 24)')); +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(33 100)') where c1 like 't%'; +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(41 46)') where c1 like 'f%'; +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +create table t1 (a geometry not null, spatial index(a)); +insert into t1 values (POINT(1.1517219314031e+164, 131072)); +insert into t1 values (POINT(9.1248812352444e+192, 2.9740338169556e+284)); +insert into t1 values (POINT(4.7783097267365e-299, -0)); +insert into t1 values (POINT(1.49166814624e-154, 2.0880974297595e-53)); +insert into t1 values (POINT(4.0917382598702e+149, 1.2024538023802e+111)); +insert into t1 values (POINT(2.0349165139404e+236, 2.9993936277913e-241)); +insert into t1 values (POINT(2.5243548967072e-29, 1.2024538023802e+111)); +insert into t1 values (POINT(0, 6.9835074892995e-251)); +insert into t1 values (POINT(2.0880974297595e-53, 3.1050361846014e+231)); +insert into t1 values (POINT(2.8728483499323e-188, 2.4600631144627e+260)); +insert into t1 values (POINT(3.0517578125e-05, 2.0349165139404e+236)); +insert into t1 values (POINT(1.1517219314031e+164, 1.1818212630766e-125)); +insert into t1 values (POINT(2.481040258324e-265, 5.7766220027675e-275)); +insert into t1 values (POINT(2.0880974297595e-53, 2.5243548967072e-29)); +insert into t1 values (POINT(5.7766220027675e-275, 9.9464647281957e+86)); +insert into t1 values (POINT(2.2181357552967e+130, 3.7857669957337e-270)); +insert into t1 values (POINT(4.5767114681874e-246, 3.6893488147419e+19)); +insert into t1 values (POINT(4.5767114681874e-246, 3.7537584144024e+255)); +insert into t1 values (POINT(3.7857669957337e-270, 1.8033161362863e-130)); +insert into t1 values (POINT(0, 5.8774717541114e-39)); +insert into t1 values (POINT(1.1517219314031e+164, 2.2761049594727e-159)); +insert into t1 values (POINT(6.243497100632e+144, 3.7857669957337e-270)); +insert into t1 values (POINT(3.7857669957337e-270, 2.6355494858076e-82)); +insert into t1 values (POINT(2.0349165139404e+236, 3.8518598887745e-34)); +insert into t1 values (POINT(4.6566128730774e-10, 2.0880974297595e-53)); +insert into t1 values (POINT(2.0880974297595e-53, 1.8827498946116e-183)); +insert into t1 values (POINT(1.8033161362863e-130, 9.1248812352444e+192)); +insert into t1 values (POINT(4.7783097267365e-299, 2.2761049594727e-159)); +insert into t1 values (POINT(1.94906280228e+289, 1.2338789709327e-178)); +drop table t1; +CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) ); +INSERT INTO t1(foo) VALUES (NULL); +ERROR 23000: Column 'foo' cannot be null +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +Warnings: +Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. +INSERT INTO t1() VALUES (); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +SET sql_mode = default; +INSERT INTO t1(foo) VALUES (''); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +DROP TABLE t1; +CREATE TABLE t1 (a INT AUTO_INCREMENT, b POINT NOT NULL, KEY (a), SPATIAL KEY (b)); +INSERT INTO t1 (b) VALUES (ST_GeomFromText('POINT(1 2)')); +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +DROP TABLE t1; +CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b)); +INSERT INTO t1 VALUES (1, ST_GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +INSERT INTO t1 VALUES (2, ST_GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +SELECT COUNT(*) FROM t1 WHERE +MBRINTERSECTS(b, ST_GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +COUNT(*) +2 +SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE +MBRINTERSECTS(b, ST_GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +COUNT(*) +2 +DROP TABLE t1; +# +# Bug #48258: Assertion failed when using a spatial index +# +CREATE TABLE t1(a LINESTRING NOT NULL, SPATIAL KEY(a)); +INSERT INTO t1 VALUES +(ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)')), +(ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)')); +EXPLAIN SELECT 1 FROM t1 WHERE a = ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL a NULL NULL NULL 2 50.00 Using where +Warnings: +Note 1003 /* select#1 */ select 1 AS `1` from `test`.`t1` where (`test`.`t1`.`a` = <cache>(st_geometryfromtext('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'))) +SELECT 1 FROM t1 WHERE a = ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +1 +1 +1 +EXPLAIN SELECT 1 FROM t1 WHERE a < ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to < +SELECT 1 FROM t1 WHERE a < ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to < +EXPLAIN SELECT 1 FROM t1 WHERE a <= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to <= +SELECT 1 FROM t1 WHERE a <= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to <= +EXPLAIN SELECT 1 FROM t1 WHERE a > ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to > +SELECT 1 FROM t1 WHERE a > ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to > +EXPLAIN SELECT 1 FROM t1 WHERE a >= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to >= +SELECT 1 FROM t1 WHERE a >= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +ERROR HY000: Incorrect arguments to >= +DROP TABLE t1; +# +# Bug #51357: crash when using handler commands on spatial indexes +# +CREATE TABLE t1(a GEOMETRY NOT NULL,SPATIAL INDEX a(a)); +HANDLER t1 OPEN; +HANDLER t1 READ a FIRST; +a +HANDLER t1 READ a NEXT; +a +HANDLER t1 READ a PREV; +a +HANDLER t1 READ a LAST; +a +HANDLER t1 CLOSE; +HANDLER t1 OPEN; +HANDLER t1 READ a FIRST; +a +INSERT INTO t1 VALUES (ST_GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))')); +# should not crash +HANDLER t1 READ a NEXT; +HANDLER t1 CLOSE; +DROP TABLE t1; +End of 5.0 tests. +# +# Bug #57323/11764487: myisam corruption with insert ignore +# and invalid spatial data +# +CREATE TABLE t1(a LINESTRING NOT NULL, b GEOMETRY NOT NULL, +SPATIAL KEY(a), SPATIAL KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 VALUES(ST_GEOMFROMTEXT("point (0 0)"), ST_GEOMFROMTEXT("point (1 1)")); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +INSERT IGNORE INTO t1 SET a=ST_GEOMFROMTEXT("point (-6 0)"), b=ST_GEOMFROMTEXT("error"); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +INSERT IGNORE INTO t1 SET a=ST_GEOMFROMTEXT("point (-6 0)"), b=NULL; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +SELECT ST_ASTEXT(a), ST_ASTEXT(b) FROM t1; +ST_ASTEXT(a) ST_ASTEXT(b) +DROP TABLE t1; +CREATE TABLE t1(a INT NOT NULL, b GEOMETRY NOT NULL, +KEY(a), SPATIAL KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 VALUES(0, ST_GEOMFROMTEXT("point (1 1)")); +INSERT IGNORE INTO t1 SET a=0, b=ST_GEOMFROMTEXT("error"); +ERROR 22023: Invalid GIS data provided to function st_geometryfromtext. +INSERT IGNORE INTO t1 SET a=1, b=NULL; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +SELECT a, ST_ASTEXT(b) FROM t1; +a ST_ASTEXT(b) +0 POINT(1 1) +DROP TABLE t1; +End of 5.1 tests diff --git a/mysql-test/suite/innodb_gis/r/rtree_purge.result b/mysql-test/suite/innodb_gis/r/rtree_purge.result new file mode 100644 index 00000000000..c3e879674dd --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_purge.result @@ -0,0 +1,24 @@ +create table t ( +a point not null,b point not null,c point, +d point not null,e point,f point, +spatial key (d),spatial key (b) +) engine=innodb; +create procedure p(i int) +begin +declare n int default 0; +declare continue handler for sqlexception begin end; +delete from t; +repeat +set @p=point(1,1); +insert into t values(@p,@p,@p,@p,@p,@p); +insert into t values(@p,@p,@p,@p,@p,@p); +insert into t select @p,@p,@p,@p,@p,@p +from t a,t b,t c,t d,t e,t f,t g,t h,t i,t j; +delete from t; +set n:=n+1; +until n >= i end repeat; +end| +call p(200); +InnoDB 0 transactions not purged +drop procedure p; +drop table t; diff --git a/mysql-test/suite/innodb_gis/r/rtree_recovery.result b/mysql-test/suite/innodb_gis/r/rtree_recovery.result new file mode 100644 index 00000000000..d2f4409f38c --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_recovery.result @@ -0,0 +1,61 @@ +# restart +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +create procedure update_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +update t1 set c2 = Point(i + 10000, i + 10000) where c2 = Point(i, i); +set i = i + 1; +end while; +end| +CALL insert_t1(367); +COMMIT; +# Kill and restart +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop table t1; +create table t1 (c1 int, c2 point not null, spatial index (c2))engine=innodb; +CALL insert_t1(367); +CALL update_t1(367); +SET @poly1 = ST_GeomFromText('POLYGON((10000 10000, 10000 10350, 10350 10350, 10350 10000, 10000 10000))'); +delete from t1 where ST_Contains(@poly1, c2); +COMMIT; +# Kill and restart +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select count(*) from t1; +count(*) +18 +select c1, ST_astext(c2) from t1; +c1 ST_astext(c2) +350 POINT(10350 10350) +351 POINT(10351 10351) +352 POINT(10352 10352) +353 POINT(10353 10353) +354 POINT(10354 10354) +355 POINT(10355 10355) +356 POINT(10356 10356) +357 POINT(10357 10357) +358 POINT(10358 10358) +359 POINT(10359 10359) +360 POINT(10360 10360) +361 POINT(10361 10361) +362 POINT(10362 10362) +363 POINT(10363 10363) +364 POINT(10364 10364) +365 POINT(10365 10365) +366 POINT(10366 10366) +367 POINT(10367 10367) +drop procedure insert_t1; +drop procedure update_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_rollback1.result b/mysql-test/suite/innodb_gis/r/rtree_rollback1.result new file mode 100644 index 00000000000..451d277cbf4 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_rollback1.result @@ -0,0 +1,43 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +select count(*) from t1; +count(*) +73728 +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select count(*) from t1; +count(*) +36864 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +36864 +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_rollback2.result b/mysql-test/suite/innodb_gis/r/rtree_rollback2.result new file mode 100644 index 00000000000..b6108239b64 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_rollback2.result @@ -0,0 +1,17 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +start transaction; +CALL insert_t1(70000); +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_search.result b/mysql-test/suite/innodb_gis/r/rtree_search.result new file mode 100644 index 00000000000..d8a8d209cd3 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_search.result @@ -0,0 +1,252 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(1000); +select count(*) from t1; +count(*) +1000 +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +999 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +99 +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +789 +set @g1 = ST_GeomFromText('Polygon((100 100,100 800,800 800,800 100,100 100))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +699 +set @g1 = ST_GeomFromText('Point(1 1)'); +select count(*) from t1 where MBRequals(t1.c2, @g1); +count(*) +1 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRdisjoint(t1.c2, @g1); +count(*) +900 +DROP PROCEDURE insert_t1; +truncate t1; +INSERT INTO t1 VALUES (150, ST_GeomFromText('LineString(150 150, 150 150)')); +INSERT INTO t1 VALUES (149, ST_GeomFromText('LineString(149 149, 151 151)')); +INSERT INTO t1 VALUES (148, ST_GeomFromText('LineString(148 148, 152 152)')); +INSERT INTO t1 VALUES (147, ST_GeomFromText('LineString(147 147, 153 153)')); +INSERT INTO t1 VALUES (146, ST_GeomFromText('LineString(146 146, 154 154)')); +INSERT INTO t1 VALUES (145, ST_GeomFromText('LineString(145 145, 155 155)')); +INSERT INTO t1 VALUES (144, ST_GeomFromText('LineString(144 144, 156 156)')); +INSERT INTO t1 VALUES (143, ST_GeomFromText('LineString(143 143, 157 157)')); +INSERT INTO t1 VALUES (142, ST_GeomFromText('LineString(142 142, 158 158)')); +INSERT INTO t1 VALUES (141, ST_GeomFromText('LineString(141 141, 159 159)')); +INSERT INTO t1 VALUES (140, ST_GeomFromText('LineString(140 140, 160 160)')); +INSERT INTO t1 VALUES (139, ST_GeomFromText('LineString(139 139, 161 161)')); +INSERT INTO t1 VALUES (138, ST_GeomFromText('LineString(138 138, 162 162)')); +INSERT INTO t1 VALUES (137, ST_GeomFromText('LineString(137 137, 163 163)')); +INSERT INTO t1 VALUES (136, ST_GeomFromText('LineString(136 136, 164 164)')); +INSERT INTO t1 VALUES (135, ST_GeomFromText('LineString(135 135, 165 165)')); +INSERT INTO t1 VALUES (134, ST_GeomFromText('LineString(134 134, 166 166)')); +INSERT INTO t1 VALUES (133, ST_GeomFromText('LineString(133 133, 167 167)')); +INSERT INTO t1 VALUES (132, ST_GeomFromText('LineString(132 132, 168 168)')); +INSERT INTO t1 VALUES (131, ST_GeomFromText('LineString(131 131, 169 169)')); +INSERT INTO t1 VALUES (130, ST_GeomFromText('LineString(130 130, 170 170)')); +INSERT INTO t1 VALUES (129, ST_GeomFromText('LineString(129 129, 171 171)')); +INSERT INTO t1 VALUES (128, ST_GeomFromText('LineString(128 128, 172 172)')); +INSERT INTO t1 VALUES (127, ST_GeomFromText('LineString(127 127, 173 173)')); +INSERT INTO t1 VALUES (126, ST_GeomFromText('LineString(126 126, 174 174)')); +INSERT INTO t1 VALUES (125, ST_GeomFromText('LineString(125 125, 175 175)')); +INSERT INTO t1 VALUES (124, ST_GeomFromText('LineString(124 124, 176 176)')); +INSERT INTO t1 VALUES (123, ST_GeomFromText('LineString(123 123, 177 177)')); +INSERT INTO t1 VALUES (122, ST_GeomFromText('LineString(122 122, 178 178)')); +INSERT INTO t1 VALUES (121, ST_GeomFromText('LineString(121 121, 179 179)')); +INSERT INTO t1 VALUES (120, ST_GeomFromText('LineString(120 120, 180 180)')); +INSERT INTO t1 VALUES (119, ST_GeomFromText('LineString(119 119, 181 181)')); +INSERT INTO t1 VALUES (118, ST_GeomFromText('LineString(118 118, 182 182)')); +INSERT INTO t1 VALUES (117, ST_GeomFromText('LineString(117 117, 183 183)')); +INSERT INTO t1 VALUES (116, ST_GeomFromText('LineString(116 116, 184 184)')); +INSERT INTO t1 VALUES (115, ST_GeomFromText('LineString(115 115, 185 185)')); +INSERT INTO t1 VALUES (114, ST_GeomFromText('LineString(114 114, 186 186)')); +INSERT INTO t1 VALUES (113, ST_GeomFromText('LineString(113 113, 187 187)')); +INSERT INTO t1 VALUES (112, ST_GeomFromText('LineString(112 112, 188 188)')); +INSERT INTO t1 VALUES (111, ST_GeomFromText('LineString(111 111, 189 189)')); +INSERT INTO t1 VALUES (110, ST_GeomFromText('LineString(110 110, 190 190)')); +INSERT INTO t1 VALUES (109, ST_GeomFromText('LineString(109 109, 191 191)')); +INSERT INTO t1 VALUES (108, ST_GeomFromText('LineString(108 108, 192 192)')); +INSERT INTO t1 VALUES (107, ST_GeomFromText('LineString(107 107, 193 193)')); +INSERT INTO t1 VALUES (106, ST_GeomFromText('LineString(106 106, 194 194)')); +INSERT INTO t1 VALUES (105, ST_GeomFromText('LineString(105 105, 195 195)')); +INSERT INTO t1 VALUES (104, ST_GeomFromText('LineString(104 104, 196 196)')); +INSERT INTO t1 VALUES (103, ST_GeomFromText('LineString(103 103, 197 197)')); +INSERT INTO t1 VALUES (102, ST_GeomFromText('LineString(102 102, 198 198)')); +INSERT INTO t1 VALUES (101, ST_GeomFromText('LineString(101 101, 199 199)')); +INSERT INTO t1 VALUES (100, ST_GeomFromText('LineString(100 100, 200 200)')); +INSERT INTO t1 VALUES (99, ST_GeomFromText('LineString(99 99, 201 201)')); +INSERT INTO t1 VALUES (98, ST_GeomFromText('LineString(98 98, 202 202)')); +INSERT INTO t1 VALUES (97, ST_GeomFromText('LineString(97 97, 203 203)')); +INSERT INTO t1 VALUES (96, ST_GeomFromText('LineString(96 96, 204 204)')); +INSERT INTO t1 VALUES (95, ST_GeomFromText('LineString(95 95, 205 205)')); +INSERT INTO t1 VALUES (94, ST_GeomFromText('LineString(94 94, 206 206)')); +INSERT INTO t1 VALUES (93, ST_GeomFromText('LineString(93 93, 207 207)')); +INSERT INTO t1 VALUES (92, ST_GeomFromText('LineString(92 92, 208 208)')); +INSERT INTO t1 VALUES (91, ST_GeomFromText('LineString(91 91, 209 209)')); +INSERT INTO t1 VALUES (90, ST_GeomFromText('LineString(90 90, 210 210)')); +INSERT INTO t1 VALUES (89, ST_GeomFromText('LineString(89 89, 211 211)')); +INSERT INTO t1 VALUES (88, ST_GeomFromText('LineString(88 88, 212 212)')); +INSERT INTO t1 VALUES (87, ST_GeomFromText('LineString(87 87, 213 213)')); +INSERT INTO t1 VALUES (86, ST_GeomFromText('LineString(86 86, 214 214)')); +INSERT INTO t1 VALUES (85, ST_GeomFromText('LineString(85 85, 215 215)')); +INSERT INTO t1 VALUES (84, ST_GeomFromText('LineString(84 84, 216 216)')); +INSERT INTO t1 VALUES (83, ST_GeomFromText('LineString(83 83, 217 217)')); +INSERT INTO t1 VALUES (82, ST_GeomFromText('LineString(82 82, 218 218)')); +INSERT INTO t1 VALUES (81, ST_GeomFromText('LineString(81 81, 219 219)')); +INSERT INTO t1 VALUES (80, ST_GeomFromText('LineString(80 80, 220 220)')); +INSERT INTO t1 VALUES (79, ST_GeomFromText('LineString(79 79, 221 221)')); +INSERT INTO t1 VALUES (78, ST_GeomFromText('LineString(78 78, 222 222)')); +INSERT INTO t1 VALUES (77, ST_GeomFromText('LineString(77 77, 223 223)')); +INSERT INTO t1 VALUES (76, ST_GeomFromText('LineString(76 76, 224 224)')); +INSERT INTO t1 VALUES (75, ST_GeomFromText('LineString(75 75, 225 225)')); +INSERT INTO t1 VALUES (74, ST_GeomFromText('LineString(74 74, 226 226)')); +INSERT INTO t1 VALUES (73, ST_GeomFromText('LineString(73 73, 227 227)')); +INSERT INTO t1 VALUES (72, ST_GeomFromText('LineString(72 72, 228 228)')); +INSERT INTO t1 VALUES (71, ST_GeomFromText('LineString(71 71, 229 229)')); +INSERT INTO t1 VALUES (70, ST_GeomFromText('LineString(70 70, 230 230)')); +INSERT INTO t1 VALUES (69, ST_GeomFromText('LineString(69 69, 231 231)')); +INSERT INTO t1 VALUES (68, ST_GeomFromText('LineString(68 68, 232 232)')); +INSERT INTO t1 VALUES (67, ST_GeomFromText('LineString(67 67, 233 233)')); +INSERT INTO t1 VALUES (66, ST_GeomFromText('LineString(66 66, 234 234)')); +INSERT INTO t1 VALUES (65, ST_GeomFromText('LineString(65 65, 235 235)')); +INSERT INTO t1 VALUES (64, ST_GeomFromText('LineString(64 64, 236 236)')); +INSERT INTO t1 VALUES (63, ST_GeomFromText('LineString(63 63, 237 237)')); +INSERT INTO t1 VALUES (62, ST_GeomFromText('LineString(62 62, 238 238)')); +INSERT INTO t1 VALUES (61, ST_GeomFromText('LineString(61 61, 239 239)')); +INSERT INTO t1 VALUES (60, ST_GeomFromText('LineString(60 60, 240 240)')); +INSERT INTO t1 VALUES (59, ST_GeomFromText('LineString(59 59, 241 241)')); +INSERT INTO t1 VALUES (58, ST_GeomFromText('LineString(58 58, 242 242)')); +INSERT INTO t1 VALUES (57, ST_GeomFromText('LineString(57 57, 243 243)')); +INSERT INTO t1 VALUES (56, ST_GeomFromText('LineString(56 56, 244 244)')); +INSERT INTO t1 VALUES (55, ST_GeomFromText('LineString(55 55, 245 245)')); +INSERT INTO t1 VALUES (54, ST_GeomFromText('LineString(54 54, 246 246)')); +INSERT INTO t1 VALUES (53, ST_GeomFromText('LineString(53 53, 247 247)')); +INSERT INTO t1 VALUES (52, ST_GeomFromText('LineString(52 52, 248 248)')); +INSERT INTO t1 VALUES (51, ST_GeomFromText('LineString(51 51, 249 249)')); +INSERT INTO t1 VALUES (50, ST_GeomFromText('LineString(50 50, 250 250)')); +INSERT INTO t1 VALUES (49, ST_GeomFromText('LineString(49 49, 251 251)')); +INSERT INTO t1 VALUES (48, ST_GeomFromText('LineString(48 48, 252 252)')); +INSERT INTO t1 VALUES (47, ST_GeomFromText('LineString(47 47, 253 253)')); +INSERT INTO t1 VALUES (46, ST_GeomFromText('LineString(46 46, 254 254)')); +INSERT INTO t1 VALUES (45, ST_GeomFromText('LineString(45 45, 255 255)')); +INSERT INTO t1 VALUES (44, ST_GeomFromText('LineString(44 44, 256 256)')); +INSERT INTO t1 VALUES (43, ST_GeomFromText('LineString(43 43, 257 257)')); +INSERT INTO t1 VALUES (42, ST_GeomFromText('LineString(42 42, 258 258)')); +INSERT INTO t1 VALUES (41, ST_GeomFromText('LineString(41 41, 259 259)')); +INSERT INTO t1 VALUES (40, ST_GeomFromText('LineString(40 40, 260 260)')); +INSERT INTO t1 VALUES (39, ST_GeomFromText('LineString(39 39, 261 261)')); +INSERT INTO t1 VALUES (38, ST_GeomFromText('LineString(38 38, 262 262)')); +INSERT INTO t1 VALUES (37, ST_GeomFromText('LineString(37 37, 263 263)')); +INSERT INTO t1 VALUES (36, ST_GeomFromText('LineString(36 36, 264 264)')); +INSERT INTO t1 VALUES (35, ST_GeomFromText('LineString(35 35, 265 265)')); +INSERT INTO t1 VALUES (34, ST_GeomFromText('LineString(34 34, 266 266)')); +INSERT INTO t1 VALUES (33, ST_GeomFromText('LineString(33 33, 267 267)')); +INSERT INTO t1 VALUES (32, ST_GeomFromText('LineString(32 32, 268 268)')); +INSERT INTO t1 VALUES (31, ST_GeomFromText('LineString(31 31, 269 269)')); +INSERT INTO t1 VALUES (30, ST_GeomFromText('LineString(30 30, 270 270)')); +INSERT INTO t1 VALUES (29, ST_GeomFromText('LineString(29 29, 271 271)')); +INSERT INTO t1 VALUES (28, ST_GeomFromText('LineString(28 28, 272 272)')); +INSERT INTO t1 VALUES (27, ST_GeomFromText('LineString(27 27, 273 273)')); +INSERT INTO t1 VALUES (26, ST_GeomFromText('LineString(26 26, 274 274)')); +INSERT INTO t1 VALUES (25, ST_GeomFromText('LineString(25 25, 275 275)')); +INSERT INTO t1 VALUES (24, ST_GeomFromText('LineString(24 24, 276 276)')); +INSERT INTO t1 VALUES (23, ST_GeomFromText('LineString(23 23, 277 277)')); +INSERT INTO t1 VALUES (22, ST_GeomFromText('LineString(22 22, 278 278)')); +INSERT INTO t1 VALUES (21, ST_GeomFromText('LineString(21 21, 279 279)')); +INSERT INTO t1 VALUES (20, ST_GeomFromText('LineString(20 20, 280 280)')); +INSERT INTO t1 VALUES (19, ST_GeomFromText('LineString(19 19, 281 281)')); +INSERT INTO t1 VALUES (18, ST_GeomFromText('LineString(18 18, 282 282)')); +INSERT INTO t1 VALUES (17, ST_GeomFromText('LineString(17 17, 283 283)')); +INSERT INTO t1 VALUES (16, ST_GeomFromText('LineString(16 16, 284 284)')); +INSERT INTO t1 VALUES (15, ST_GeomFromText('LineString(15 15, 285 285)')); +INSERT INTO t1 VALUES (14, ST_GeomFromText('LineString(14 14, 286 286)')); +INSERT INTO t1 VALUES (13, ST_GeomFromText('LineString(13 13, 287 287)')); +INSERT INTO t1 VALUES (12, ST_GeomFromText('LineString(12 12, 288 288)')); +INSERT INTO t1 VALUES (11, ST_GeomFromText('LineString(11 11, 289 289)')); +INSERT INTO t1 VALUES (10, ST_GeomFromText('LineString(10 10, 290 290)')); +INSERT INTO t1 VALUES (9, ST_GeomFromText('LineString(9 9, 291 291)')); +INSERT INTO t1 VALUES (8, ST_GeomFromText('LineString(8 8, 292 292)')); +INSERT INTO t1 VALUES (7, ST_GeomFromText('LineString(7 7, 293 293)')); +INSERT INTO t1 VALUES (6, ST_GeomFromText('LineString(6 6, 294 294)')); +INSERT INTO t1 VALUES (5, ST_GeomFromText('LineString(5 5, 295 295)')); +INSERT INTO t1 VALUES (4, ST_GeomFromText('LineString(4 4, 296 296)')); +INSERT INTO t1 VALUES (3, ST_GeomFromText('LineString(3 3, 297 297)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(2 2, 298 298)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(1 1, 299 299)')); +select count(*) from t1; +count(*) +150 +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +count(*) +150 +truncate t1; +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +set @g1 = ST_GeomFromText('Polygon((0 0,0 2, 2 2, 2 0, 0 0))'); +select count(*) from t1 where MBRtouches(t1.c2, @g1); +count(*) +2048 +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +12288 +set @g1 = ST_GeomFromText('LineString(2 2, 150 150)'); +select count(*) from t1 where MBRequals(t1.c2, @g1); +count(*) +2048 +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +create table t3 (a int) engine = innodb; +CREATE PROCEDURE curdemo() +BEGIN +DECLARE done INT DEFAULT FALSE; +DECLARE a INT; +DECLARE cur1 CURSOR FOR SELECT c1 from t1 where MBRWithin(t1.c2, @g1); +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; +OPEN cur1; +read_loop: LOOP +FETCH cur1 INTO a; +IF done THEN +LEAVE read_loop; +END IF; +INSERT INTO test.t3 VALUES (a); +END LOOP; +CLOSE cur1; +END| +call curdemo(); +select count(*) from t3; +count(*) +12288 +drop procedure curdemo; +drop table t3; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_split.result b/mysql-test/suite/innodb_gis/r/rtree_split.result new file mode 100644 index 00000000000..37ce67a9f2c --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_split.result @@ -0,0 +1,86 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +SET SESSION debug="+d, rtr_page_need_second_split"; +insert into t1 select * from t1; +SET SESSION debug="-d, rtr_page_need_second_split"; +delete from t1; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +rollback; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +select count(*) from t1; +count(*) +73728 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +73728 +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +0 +drop index c2 on t1; +create spatial index idx2 on t1(c2); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) DEFAULT NULL, + `c2` geometry NOT NULL, + SPATIAL KEY `idx2` (`c2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +73728 +# restart: --innodb-read-only +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +73728 +set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); +count(*) +57344 +# restart +drop table t1; diff --git a/mysql-test/suite/innodb_gis/r/rtree_undo.result b/mysql-test/suite/innodb_gis/r/rtree_undo.result new file mode 100644 index 00000000000..12e052ccb9a --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_undo.result @@ -0,0 +1,299 @@ +connect con1,localhost,root,,; +connection default; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 DROP INDEX spatial_idx, DROP INDEX prefix_idx; +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +CREATE TABLE t1 ( +p INT NOT NULL AUTO_INCREMENT, +g LINESTRING NOT NULL, +PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +ALTER TABLE t1 ADD SPATIAL INDEX spatial_idx (g); +ALTER TABLE t1 ADD INDEX prefix_idx (g(767)); +INSERT INTO t1(g) VALUES(ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)')); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +BEGIN; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ROLLBACK; +connection con1; +# disable purge +CREATE TABLE t0 (a INT) ENGINE=InnoDB; +BEGIN; +SELECT * FROM t0; +a +connection default; +DELETE FROM t1 WHERE p = 3; +UPDATE t1 SET g = ST_linefromtext('linestring(448 -689,453 -684,451 -679,453 -677,458 -681,463 -681,468 -678,470 -676,470 -678,468 -675,472 -675,472 -675,474 -674,479 -676,477 -675,473 -676,475 1324,479 1319,484 1322,483 1323,486 1323,491 1328,492 1325,496 1325,498 1325,501 1330,498 1331,500 1331,504 1330,508 1329,512 1332,513 1337,518 1339,518 1339,513 1344,513 1344,512 1346,514 1351,515 1353,519 1358,518 1362,522 1365,525 1360,526 1362,527 1362,528 1367,525 1371,528 1366,532 1369,536 1374,539 1377,543 1379,539 1381,541 1382,543 1383,546 1388,549 1393,554 1393,554 1395,554 1392,550 1394,550 1392,546 1394,549 1397,550 1393,549 1394,554 1390,554 1391,549 1396,551 1396,547 1400,547 1402,551 1407,554 1412,554 1415,558 1418,463 -681,465 -677,465 -675,470 -670,470 -665,470 -660,470 -659,473 -656,476 -656,481 -655,482 -652,486 -654,486 -652,486 -648,491 -646,490 -651,494 -646,493 -644,493 -644,490 -644,491 2356,495 2359,495 2364,500 2359,503 5359,504 5364,509 5368,504 5367,499 5368,498 5371,498 5369,500 5370,504 5370,508 5370,511 5370,507 5374,508 5378,511 5382,507 5387,509 5389,512 5388,515 5393,520 5396,517 5397,517 5402,515 5404,520 5402,521 5405,525 5405,526 5408,530 7408,535 7413,533 7415,529 7412,532 7416,4532 7416,4534 7421,4533 7417,4536 7413,4536 7418,4540 3418,4545 3418,4549 3415,4551 3419,4554 3421,4559 3423,4559 3426,4557 3424,4561 3428,4558 3428,4563 3431,4565 3435,4569 3439,4569 3439,4569 3444,4567 3444,4572 3446,4577 3447,4581 3444,4581 3448,4584 3448,4579 3447,4580 3450,4583 3449,4583 3453,4587 3455,4588 3458,4593 3463,4598 3465,4601 3468,4598 3464,4598 3460,4593 5460,4595 5461,4600 5464,4600 5465,4601 5466,4606 5466,4608 5466,4605 5464,4608 5467,4607 5468,4609 5465,4614 5461,4618 5463,4621 5467,4623 5470,4622 5470,4622 5470,4625 6470,4627 6471,4627 6472,4627 6473,6627 6474,6625 6474,6628 6477,6633 6481,6633 6480,6637 6475,7637 6479,7638 6482,7643 6487,7644 6492,7647 6492,7648 6495,7646 6498,7650 6499,7646 6494,7644 6499,7644 6497,7644 6499,7647 6502,7649 6504,7650 6501,7647 6503,7649 6504,7650 6508,7651 6503,7652 6508,7655 6508,7650 6511,7655 6515,7658 6513,7663 6513,7665 6514,7669 6512,7667 6510,7664 6510,472 -675,477 -670,479 -666,482 -663,484 -668,484 -666,485 -664,481 -664,479 -659,482 -659,484 -658,483 -659,488 2341,493 2339,489 2338,491 2342,491 2346,494 2346,490 2348,493 2348,498 2349,498 2350,499 2349,502 2350,503 2348,506 2348,506 2348,507 2353,507 2355,504 2359,504 2364,504 2361,499 2365,502 2360,502 2358,503 2357,504 2353,504 2357,500 2356,497 2355,498 2355,500 2359,502 2361,505 2364,508 2364,506 2368,506 2370,504 2373,499 2373,496 2372,493 2377,497 2380,495 2383,496 7383,493 7386,497 7391,494 7387,495 7389,498 7392,498 7392,495 7395,493 7398,498 7401,498 7403,503 7400,498 8400,501 8401,503 8401,503 8401,501 10401,496 10396,491 10401,492 10399,493 10403,496 10403,491 10403,493 10407,489 10410,493 10407,489 10403,498 7403,497 7399,496 7403,500 7405,500 7407,503 7411,508 7415,511 7415,511 7420,515 7420,520 7423,523 7423,520 7427,523 7427,523 7427,522 7432,525 4432,527 4434,530 4437,534 4441,529 4446,529 4441,534 4436,537 4436,535 4437,532 4437,534 4432,535 4429,538 4430,542 4427,542 4431,538 4431,541 4431,541 4433,543 4433,545 4432,549 4428,552 4426,556 4427,557 4423,560 4427,561 4428,558 4430,559 4434,559 4432,561 4434,561 4437,563 4435,559 4430,561 4435,4561 4437,4566 4441,4568 4446,4568 4450,4569 4455,4565 4458,4561 4463,4561 9463,4564 9463,4565 9461,9565 9463,9560 9467,9560 9466,9555 9469,9555 9471,9559 9469,9557 9473,9553 9478,9555 9480,9557 9481,9557 9481,9557 9483,9562 9487,9558 9487,9558 9490,9561 9493,9562 9493,9557 9493,9560 9496,9555 9501,9553 9503,9553 9506,9557 9510,9558 9511,9561 9514,9563 9512,9568 9514,9567 9514,9567 13514,9570 13517,9566 13521,9571 13521,9571 13526,9573 13521,9571 13521,9576 10521,9580 10526,9582 10525,9584 10528,9584 10531,9584 10533,9589 10533,9588 10537,9588 10541,9589 10542,9593 10544,9595 10540,9597 10541,9600 10545,9601 15545,9603 15549,9605 15553,9601 15558,9601 15553,9605 15551,9605 15550,9605 15554,9607 15556,9605 15556,9604 15561,9607 15559,9603 15559,9603 15562,9604 15563,9608 15566,9612 15570,9617 15565,9622 15568,9627 15566,9628 15564,9629 15564,9633 15569,9636 15569,9634 15571,9634 15572,9636 15574,9634 15570,9629 15570,9631 15567,9629 15570,9626 15574,9626 15575,498 7401,502 7401,506 7397,506 7395,502 7398,497 7401,502 7402,505 7397,508 7400,504 7404,3504 7409,3505 7405,3508 7410,3511 7413,3511 7416,3511 7419,3511 7419,3513 7421,3517 7424,3519 7426,3520 11426,3523 11421,3527 11418,3530 11415,3530 11416,3533 11418,7533 11415,7531 11415,7531 11417,7536 11420,7541 11424,7543 11425,7543 11427,7543 11429,7540 11429,7542 11425,7541 11420,7542 11421,7542 11422,7540 11424,7540 11423,7543 11422,7546 11426,7550 11431,7553 11436,7555 16436,7553 16438,7558 16438,7559 16438,7560 16439,7565 16437,7560 16435,7563 16435,7566 16440,7566 16444,7564 16447,7559 16443,7561 16443,7566 16448,7570 16451,7574 16456,7578 16459,12578 16459,12578 20459,12577 20456,12581 20454,12585 20456,12585 20456,12585 20456,12583 20456,12579 20459,12580 20461,12580 20462,12580 20460,12585 20465,12586 20467,12590 20470,12590 20470,12589 20471,12584 20471,12589 20471,9589 20472,9594 20472,9595 20472,9596 20477,9598 20482,9603 20480,9608 20484,9613 20484,9610 20486,9608 20488,9608 20489,9610 20489,9614 20486,9619 20481,9620 20481,9618 21481,9621 21483,9626 21483,9628 21485,9623 21487,9622 21490,9626 21493,9621 21495,9626 21498,9622 21499,9624 21504,9625 21499,9629 21501,9633 21498,9637 21495,9639 21498,9644 21501,9557 9481,9560 9485,9561 9490,9563 9488,9560 9486,9558 9488,9561 9492,9563 9495,9567 9492,9567 9488,9564 9490,9559 9495,9559 9498,9557 9502,9562 9506,9564 9509,9569 9512,9569 9516,9569 9518,9569 9515,9571 9513,9571 9512,9573 9513,9578 9516,9581 9516,9585 11516,9585 11521,9590 10521,9586 10524,9589 10529,9589 10527,9589 10527,9594 10532,9594 10534,9598 10536,9598 10540,9600 10542,9604 10538,9607 10538,9609 10543,9613 10538,9613 10533,9613 10537,9610 10537,9614 10542,9609 10542,9610 10543,9610 10548,9611 10553,9616 7553,9620 7553,9621 7557,9618 7559,9618 7554,9622 7557,9622 7561,9622 7556,9622 7560,9619 7560,9620 7565,9622 7563,9627 7566,9630 7570,9630 7571,9632 7573,9637 7576,9639 7578,9640 7576,9640 7579,9640 7575,9642 7570,9646 7570,9651 7574,9653 7577,9652 7572,9653 7576,9653 7576,9651 7581,9656 7585,9660 7586,9659 7591,9657 7594,9661 7598,9664 7602,9668 12602,9673 12604,9676 12606,9679 12602,9682 12605,9677 12610,9674 12606,9674 12601,9674 12603,9672 9603,9668 9605,9671 9606,9668 9611,9668 9606,9671 9611,9675 9615,9677 9620,9678 9622,9679 9624,9684 9626,9685 9627,9685 9622,9685 9626,9689 9628,9694 9633,9699 9637,9699 9637,9704 9636,9708 9637,9709 9638,9707 9639,9705 9642,9707 9647,9710 9649,9711 9653,9716 9649,9716 9648,9720 9650,9721 9648,9723 9648,9726 4648,12726 4653,12731 4655,12734 4660,12730 4661,12733 4664,12733 4665,12735 4670,12737 4674,12741 4674,12738 4675,12740 4675,12737 4675,12742 4678,12743 4681,12746 4677,12751 4675,559 4430,563 4430,565 4435,566 4440,561 4445,562 4447,564 4450,561 4453,563 4453,561 4458,561 4458,562 4453,566 4454,571 4458,571 4460,574 4461,574 4464,579 4466,579 4470,582 4468,586 4470,590 4468,593 4468,594 4470,596 4474,591 4475,591 4480,594 4482,597 4486,593 4486,595 4486,598 4490,600 4492,3600 4497,3598 4497,3598 4494,3599 4493,3600 4497,3600 4494,3604 4498,3604 5498,3600 5497,3602 5493,3602 10493,8602 10498,8606 10494,8605 10495,8606 10496,8605 10500,8605 10500,8603 10499,8601 10502,8602 10505,8603 10501,8608 10503,8608 10508,8609 10503,8610 10505,8613 10504,8615 10506,8616 10508,8612 10513,8613 10517,8615 10520,8617 10521,8621 10524,8624 10524,8624 10524,8624 10519,8625 10514,8626 10519,502 7402,503 7399,506 7404,543 1379,548 1379,550 1380,553 1379,558 1376,556 1376,558 1372,559 1372,560 1377,565 1374,568 1375,568 1379,572 1382,570 1384,575 1386,576 1389,576 1394,579 1398,583 1403,586 1401,586 1401,591 1400,593 1402,598 1407,601 1412,546 1394,550 1396,553 1396,555 1394,4584 3448,4585 3450,4583 3450,4588 3451,4590 3449,4595 3449,4599 3454,4603 454,5603 458,5604 458,5605 453,5610 457,5614 459,5619 463,5621 466,5618 466,5623 465,5627 466,5625 471,5626 476,5630 479,5635 484,9635 488,9639 488,9641 483,9644 484,9649 484,5649 488,5649 492,5651 497,5656 497,5661 499,5665 504,5666 500,5666 497,5666 499,5666 499,5666 501,5670 502,5670 504,5670 507,5673 502,5677 506,4677 507,4682 509,4682 511,3682 510,3679 514,3683 510,3686 515,3684 518,3686 522,3689 527,3690 527,3688 529,3690 533,3692 530,3691 532,3695 529,3696 529,3701 533,3701 535,3699 540,9610 10543,9612 10545,9615 10548,9617 10548,9619 10550,9624 10548,9627 10549,9625 10553,10625 10553,10626 10555,500 7407,500 7407,500 7411,505 7413,505 7411,502 7415,504 7415,508 7411,511 7411,506 7412,506 7410,3506 7411,3507 7415,3509 7417,3511 7417,3513 7418,3516 7422,3518 7422,3518 7426,3513 7430,3515 7435,3520 7435,3521 7437,3526 9437,3526 9434,6526 9437,6526 9438,6526 9438,6527 9441,6528 9439,6523 9441,6518 9445,6522 9446,6526 9447,6529 9451,6529 9455,6530 9459,6532 9457,3532 9460,3536 9461,3537 9466,3541 9466,3544 9466,3546 9468,3549 9467,3553 9470,3551 9470,3551 9474,3552 9473,3547 9473,3547 9473,3547 9476,3552 9481,3553 9486,3555 9490,3556 9491,3559 9495,3560 9493,3563 9494,3563 9494,3565 9495,3565 10495,3568 10496,3573 10501,3574 10501,3576 10502,3578 10503,3578 10504,3580 10508,7580 10505,7578 10508,7578 10511,7578 10508,7581 10508,7582 10511,7577 10510,7577 10514,7573 10516,7578 10520,7580 10525,7581 10530,7585 10532,7590 10535,7594 10540,12594 10540,12591 10545,12595 10548,12595 10543,12597 10547,12597 10542,12595 10545,12595 10546,12600 10550,12605 10550,12606 10546,12604 10548,12605 12548,12605 12546,12607 12548,7607 12552,7611 12557,7608 12557,7608 12553,7611 12553,7610 15553,7608 15550,7610 15551,7607 14551,7607 14556,7606 14561,7602 14561,7602 14566,7601 14565,7606 14565,7605 14570,7608 14568,7609 14571,7613 14572,7614 14572,7616 14574,7613 14573,7615 14570,7618 14570,7615 14574,7617 14575,7614 14578,7616 14582,7617 14584,7617 14584,7618 14589,7622 14590,7619 14592,7624 14593,7628 14596,7632 14601,7627 14601,7629 14603,7629 14603,7630 14608,7631 14611,7626 14611,7628 14611,7628 14616,7624 14617,7619 14618,7624 14618,7626 16618,10626 16620,10624 16620,10629 16619,10633 16624,10636 16624,10638 16624,10643 16624,7643 16625,7643 16630,7643 16625,7647 16629,7648 16628,7649 16633,7650 16633,7650 16634,7645 16635,7646 16632,7642 16635,7643 16635,7643 16630,7638 16634,7640 21634,7645 21633,7650 21634,7651 21639,7652 21641,7655 21636,7651 21640,7654 21635,7655 21637,7660 21640,7656 21643,7661 21644,7663 21645,7667 21642,7669 21644,7674 21645,7674 21649,7677 21647,7672 22647,7672 22650,7667 22650,7667 22647,7671 22646,7672 22648,7673 22651,11673 22653,11672 22654,11670 22652,11671 22656,11673 22656,11674 22654,11678 22658,11678 22656,11675 22659,11680 22659,11685 22664,11687 22659,11687 22664,11687 22664,11692 22669,11696 22673,11701 22678,11696 22683,11696 22687,11691 22688,11695 22683,11691 22688,11696 22691,11695 22691,11700 22695,11702 22693,11705 22696,11710 22699,15710 22700,15712 22704,15707 22708,15712 22708,15715 22708,15720 22709,15725 22712,15723 22714,15724 22719,15727 22718,15727 22718,15731 22713,15730 22715,15734 22717,18734 22722,18729 22724,18725 22728,18729 22732,18733 22734,18736 22730,18740 22733,18740 22735,18742 22731,18741 22732,18744 22736,18749 22735,18754 22739,18754 22741,18756 22745,18758 22746,18760 22750,18764 22751,18764 22753,18764 22754,18767 22750,18767 22753,18767 22756,18772 22761,18777 22757,22777 22757,22780 22760,22776 22758,22776 22760,22772 22760,22775 22760,22777 22762,22774 22759,22775 22764,22772 22764,22767 22766,22768 22771,22771 22771,9589 10527,9593 10528,9598 10533,9600 10534,9597 10534,11597 10535,11602 10539,11603 10544,11598 10543,11601 10543,11605 10544,11609 10545,11611 10542,11615 10540,11615 10542,11616 10544,11619 10544,11621 10544,11623 10542,11619 10544,11620 10549,11616 10549,11618 10550,11619 10552,11622 10555,11622 10556,11623 10556,11621 10556,11625 10561,11625 10564,11625 10566,11628 10563,11630 10567,11628 10572,11626 10575,11628 10575,11632 11575,11636 11576,11638 11577,11638 11578,11638 11581,11639 11579,11643 11574,11646 11573,11650 11574,11647 11579,11648 11580,11653 11581,9571 9513,9571 9516,9571 9516,9574 9521,9572 9525,9573 9528,9573 9529,9578 9531,9583 9526,9581 9531,9576 9535,9578 9533,9583 9535,9583 9539,9587 9544,9590 14544,9595 14544,9598 14545,6598 14549,6598 14551,6599 14552,11599 14556,11602 14558,11598 14558,11598 14561,11602 14565,11603 14565,11603 14564,11603 14568,11604 14573,11605 14568,11607 14568,11607 14570,11607 14572,11607 14567,11611 14572,11611 14571,11607 14571,11609 14569,11605 14569,11606 14570,11606 14573,11607 14577,11610 14578,11609 16578,11609 16582,11607 16579,11605 16581,11606 16576,11605 11576,11608 11578,11610 11583,13610 11583,13614 11578,13616 11582,13617 11587,13617 11583,13621 11585,13626 11589,13621 11589,13621 11591,15621 11591,15625 11591,15630 11595,15631 11596,15634 11598,15638 11603,15642 11608,15643 11612,15642 11614,15646 16614,15648 16610,15648 16614,15648 16614,15647 16614,15652 16611,15654 16616,15655 16611,15651 16612,15655 16615,15659 16617,18659 16616,18660 16611,18660 16616,18664 16621,18668 16626,9673 12604,9674 12605,9676 12605,9679 12605,9682 12606,9680 12606,9680 12609,9681 12612,9684 12616,9688 12620,9691 12624,9686 12621,9686 12625,9686 12630,9684 12634,9686 12634,9687 12639,9686 12637,9683 12634,9685 12632,9689 12632,9689 12629,9692 12629,9692 12632,9695 12636,9693 12641,9692 12645,9692 16645,9694 16646,9698 16650,9698 16651,9693 16651,9693 16652,9693 16655,9692 16652,9693 16655,9689 16658,9689 16658,9692 16661,9696 16665,9698 14665,9701 14668,9702 14664,9703 14663,9702 14667,9707 14667,9711 14672,9716 14673,9719 14677,11719 14673,11720 14674,11721 14672,11725 14672,11729 14667,10729 18667,10732 18667,10727 18669,10730 18665,10732 18670,10737 18665,10737 18670,10742 18674,9742 18674,9741 18675,9742 18676,9746 18678,9751 18677,11751 18679,11751 18684,11753 18687,11757 18692,11757 18690,11761 18691,11761 18692,11766 18697,11769 18701,11771 18696,11774 18697,11774 18701,8613 10517,8611 10522,8611 10522,8616 10521,8619 10523,8622 10521,8623 10518,8623 10518,8624 10518,8624 10521,8629 10523,8633 10518,8635 10514,8640 10514,8642 10514,8646 10514,8647 10517,8644 13517,8649 13518,8653 13522,12653 13522,12653 13526,12657 18526,12653 18527,12657 18532,12660 18535,12656 18537,12660 18539,12658 18537,13658 18541,13657 18545,13657 18547,13660 18551,13665 18554,13665 18556,13665 18559,13665 18556,13668 18560,13672 18564,13672 18566,13676 18568,13676 18568,16676 18568,16681 18568,16678 18568,16682 18573,16681 18577,16686 18575,16686 18571,16686 18576,16684 18578,16684 18578,16681 18581,16684 18584,16683 18586,16687 18581,16682 18583,16677 18582,16676 18583,16681 18585,16679 14585,16677 14590,16682 14591,16686 14587,16691 14587,16696 14585,16696 14583,16697 14587,16702 14589,16704 14594,16699 14594,16704 14594,16704 14599,16705 14604,16708 14608,16713 15608,16717 15613,16721 15618,16721 15623,16724 15628,19724 15630,19726 15627,19729 15628,19725 15626,19720 15631,19724 15635,19728 15634,19729 15632,19730 15630,19733 15633,19734 15634,19736 15636,19741 15634,19739 15634,19744 15634,19749 15630,21749 15633,21747 15637,21749 15641,21749 15641,21745 15645,21748 15650,21749 15655,21751 15660,21753 15660,21755 15656,21752 15658,21751 15658,21753 15658,21754 15661,21754 15665,21754 15667,21757 15668,21753 16668,21753 16670,21757 16673,21759 16670,21756 16670,21760 16673,21757 16676,21761 16680,21765 16685,21768 16686,21769 16690,21769 16688,21769 16686,21766 16686,21768 16688,21773 16687,21778 16690,21781 16690,21780 16694,21780 16693,24780 16695,24777 16700,24782 16702,24787 16701,24787 16697,24787 16700,24792 16704,24787 16701,24788 16701,24789 16706,24792 16706,24797 16706,24800 16710,24805 16711,24805 16715,24810 16710,24809 16714,24813 16717,24817 16718,24817 16720,24819 16722,24815 16725,24812 16727,24811 16727,24814 16730,24819 16726,24821 16729,24826 16731,24830 16736,23830 16741,23826 16746,23827 16747,23829 16749,23833 16752,23835 11752,27835 11757,27837 11756,27834 11756,27835 11757,27838 11759,27833 11763,27834 11766,27839 11770,27844 11770,27849 11772,27849 11773,27849 11773,27854 11777,7581 10530,7582 10533,7581 10529,7583 10530,7584 10529,7584 10533,7582 10535,7586 10535,7589 10530,7592 10526,7592 10529,7589 10525,7592 10528,7596 10524,7600 10529,7602 10530,7599 10530,7594 10531,7598 10526,7601 10531,7605 10535,7609 10539,7612 10544,7610 10544,7612 10540,7608 10541,7610 15541,7613 15546,7617 15548,7618 15547,7620 15544,7620 15546,7621 15547,7624 15551,7628 15554,7631 15558,7631 15553,7636 15556,7637 15558,7637 15554,7641 15556,7644 15556,7648 15559,7651 15560,7647 15563,7650 15564,7650 15559,7652 15561,7650 15562,7651 15562,7651 15567,7655 15568,7653 15569,2653 15573,2657 15577,2662 15579,2663 15582,2663 15587,2665 15589,2669 15589,2669 15587,2673 15591,2673 15595,2677 15597,2677 15599,2680 15601,2683 15606,2687 15606,2683 15609,2688 15606,2692 15607,2693 15607,2698 15610,2698 15611,7698 15613,7702 15616,7704 15618,7699 19618,7703 19620,7698 19624,7698 19624,7701 19627,7699 19628,7704 19624,7708 19622,7712 19617,7714 19615,7710 19612,7715 20612,3715 24612,3720 28612,3724 28610,3727 28610,3728 28608,3725 28603,3729 28605,3733 28604,3734 28603,3737 32603,3739 32606,3740 32609,3739 32613,3738 32613,3735 32615,3739 31615,3739 31610,3743 31606,6743 31601,6743 31603,8743 31601,8743 31605,8748 35605,8748 35610,8752 35615,8751 35615,8752 35620,8755 35620,8760 35620,8765 35624,8760 35627,8764 35626,8761 35631,8763 35635,8767 35636,8767 35632,8767 35635,8771 35630,8775 35631,8778 35632,8775 35632,3775 35633,3775 35637,3774 35639,3772 35641,8772 35645,8772 35645,8773 35648,8768 35651,8764 35651,8769 40651,8764 40653,8767 40653,8770 40654,8771 40657,8775 40658,8777 40663,8779 40666,8783 40670,8783 40674,8787 40675,8789 40670,8789 40674,8792 40672,8795 40675,8796 40672,8800 40676,8800 40676,8800 40679,498 7392,503 7390,504 7390,507 7395,509 7395,509 7397,514 7400,6529 9451,6529 9451,6524 9451,6527 9452,6527 11452,6527 11456,6528 11457,6529 11458,6531 11461,6535 11463,6535 11467,6530 11472,6532 11472,10532 11473,10533 11473,10537 11476,10540 11473,10540 11473,10544 11474,10544 11474,10544 11472,10544 11470,10539 11475,10539 11478,10542 12478,10545 12483,10546 12488,10547 12492,10552 12493,10552 12490,10556 12490,10558 12493,10560 12495,10555 12496,10557 12491,10556 12491,10556 12490,10553 12494,10558 12497,10559 12502,10564 12505,21753 16670,21754 16672,26754 16674,26757 16676,26761 16679,26756 16682,26761 16683,26763 16684,26766 16689,26771 16692,28771 16687,28774 16687,28776 16692,28777 16695,28781 16695,28785 16690,28789 16691,28786 16688,28789 16690,28792 16688,28793 16687,28795 16690,28793 16695,28791 16692,28793 16695,28790 16696,28790 16700,28792 16700,28793 16701,28794 16701,28794 13701,28796 12701,28799 12701,28799 12706,28800 12701,28801 12705,28803 12708,28807 12708,28808 15708,28810 15712,28811 15709,28813 15709,28813 11709,28817 11709,7618 14589,7620 14587,7625 14589,7626 14584,7631 14586,7632 14588,7637 14589,7642 14592,536 1374,540 5374,542 5378,542 5383,-2458 5388,-2457 5388,-2455 5393,-2452 5393,-2452 5391,-2448 5389,-2448 5390,-2449 5393,-2445 5388,-2441 5392,-2436 5397,-2432 5397,-2430 5397,-3430 5399,-3429 5404,-3430 5405,-3427 5407,-3422 5409,-3421 5411,-3421 5411,-3421 5407,-3417 5410,-3418 5410,-3422 2410,-3417 2414,-3416 2418,-3412 3418,-3407 3422,-3407 3426,-3406 3429,-3404 3433,-3403 3435,-3398 3439,-2398 3441,-2399 3442,-2397 3446,-2395 3447,-2394 3443,-2398 3445,-2398 3443,-2393 3446,-2391 3450,-2387 3451,-2390 3455,-2385 3457,-2383 3457,-2382 3462,-2379 3467,-2384 3467,-2383 3467,-2381 3470,-2383 3471,-2385 3474,-2383 3479,-2383 3481,-2383 3479,-2382 3484,-2380 3489,-2385 3487,-2384 3490,-2384 3490,-2383 3492,-2383 3495,-2378 3499,-2377 3495,-2378 3498,-2375 3500,-2375 3505,-2373 3503,-2373 3505,-2374 3505,-2374 3506,-2369 3511,-2364 3516,-2361 3516,-2356 3520,-2354 3524,-2353 3529,-2356 3533,-2351 3538,-2354 3542,-2349 3545,-2349 3547,-2347 3550,-2352 3547,-2355 3551,-2353 3556,-2353 3556,-2349 3554,-2352 3553,-2351 3558,-2348 3554,-2346 3556,-2344 3559,-2347 -441,-2352 -437,-2348 -440,-2345 -435,-2343 -440,-2343 -436,-2339 -432,-2339 -431,-2337 -429,-2337 -434,-2341 -431,-2345 -427,-2349 -426,-2350 -422,-2348 -418,-2344 -415,-2349 -415,-2345 -413,-2345 3587,-2344 3583,-2344 3580,-2339 5580,-2335 5583,-2336 5582,-2331 5587,-2330 5582,-2329 5582,-2337 -434,-2333 -433,-2330 -2433,-2327 -2435,-2331 -2433,-2328 -2433,-2328 -2429,-2325 -2429,-2320 -2428,2680 -2428,2684 -2424,2685 576,2685 579,2682 582,2684 584,2679 584,2674 585,2671 587,2673 583,2673 581,2677 581,2680 580,2681 584,2684 580,2681 582,2685 585,2690 583,690 587,691 584,694 584,694 585,692 583,694 584,693 588,28793 16695,28791 16694,28793 16698,28797 16703,28798 16707,28797 16712,28797 16715,28795 16717,28799 16712,28795 16710,28800 16707,28805 16705,28807 16702,28802 16705,28803 16701,28805 16703,28803 16698,28803 16700,28805 16704,28809 16699,28812 16702,28808 16703,28813 16700,28817 16703,28819 16704,28816 16709,28812 16708,28809 16708,28809 16707,28814 16709,28812 16712,28807 16717,28807 16717,28809 16717,28807 16717,28811 16717,28814 16722,28815 16719,28819 16719,28819 16724,28819 16726,28814 16727,28814 16722,28817 16726,28820 16730,28821 16730,28816 16733,28821 16737,28823 16741,28818 16741,28822 16744,28819 16747,28815 16748,31815 16748,31819 16748,31817 16746,31818 16749,31819 16747,31817 16748,31820 16746,31816 18746,31820 18746,31815 18742,31815 18744,31818 18740,31819 18735,31824 18735,31829 18738,31834 18742,31837 18745,31837 18748,31842 18749,31847 18749,31851 18749,31854 18750,31854 18749,31852 18752,31847 18754,31850 18758,31855 22758,31857 22760,31861 22759,31859 22761,31856 22764,31856 22768,31856 22768,31856 22770,31858 22765,31863 22766,31862 22770,31860 22772,31856 22776,31861 22775,31866 22780,31870 22780,31871 22782,31871 22779,31866 22781,31870 22781,31870 22786,31873 22786,31877 25786,31877 25791,31877 25796,31880 25800,31882 25804,31885 25809,31885 25812,31886 25815,31888 25815,31890 25820,31890 25821,31889 25821,31885 25817,31889 25814,31887 25815,31890 25819,31892 25820,31896 25816,31897 25817,31902 25818,31904 25823,31908 25825,31910 25828,31914 25825,31909 25825,31912 25829,31907 25829,31911 25834,31912 25838,31911 25837,31914 25837,31918 25836,31918 25831,31914 25831,31912 25826,32912 25830,32915 25833,32911 26833,32912 26834,32915 26839,32913 26839,32915 26835,32917 26837,32922 26832,32924 26834,32926 26835,32921 26840,33921 26835,33923 26836,33927 26837,33925 26833,33926 26836,33931 26837,33929 26837,33932 26842,33934 26842,33935 26847,33940 26850,33935 26848,33931 28848,33929 28852,33925 28849,33927 28849,33929 28852,33927 28850,33929 28854,33931 28854,33935 28854,28935 28854,28935 28849,28938 28854,28942 28855,28944 28860,28942 28861,28941 28863,28942 28860,28942 28856,28947 28858,28951 28857,28953 28861,28953 28860,28956 28863,28957 31863,28957 31867,28960 31869,28962 31869,28964 31872,28965 31877,28969 31881,28965 31882,28967 31886,28969 31888,28964 31892,28960 31895,28961 31893,28966 31896,28967 31901,28963 31903,28961 31908,28964 31908,28964 31904,28960 31904,28961 31905,28960 31905,28965 31906,28966 31909,28967 28909,28967 28909,28970 28910,28966 28914,28965 28918,28966 28918,9626 21498,9621 21498,9622 21501,9618 21504,9621 21505,9624 24505,9622 24505,9625 24508,9626 24511,9631 24516,7631 24512,7631 24507,7632 24506,7635 24504,7638 24507,7636 24502,7639 24507,7644 24508,7648 24512,7648 24512,7650 24512,7651 24514,7655 24517,7659 27517,10659 27520,10661 27524,10664 27523,10666 27528,10666 27523,10665 27524,10667 27529,9667 27534,9670 27534,9668 27534,9667 27533,9670 27533,9670 27538,9670 27540,9675 27538,9679 27538,9683 27543,9680 27538,9682 27540,9685 27545,9683 27546,9683 27547,9678 27548,9680 27548,9684 27549,9685 27545,9690 27546,9690 27548,9692 27550,9697 27553,9698 27557,9702 27553,9702 27548,9702 27549,9706 27551,9701 27551,9701 27551,9697 27546,9696 27549,9697 27553,9699 27557,9698 27558,9696 27560,9701 27556,9705 27552,32912 25830,32913 25829,32916 25830,36916 25828,36916 25831,36916 25835,39916 25837,39911 25842,39913 30842,39910 30844,39910 30845,39908 30848,39911 30852,39913 30856,39918 30857,493 10403,498 10406,498 10406,493 10406,497 10404,493 10409,493 10414,497 10416,496 10418,499 10423,500 10427,505 10429,510 10429,515 10431,515 10433,515 10433,512 10434,5666 500,5666 500,5668 505,5669 509,8669 2509,9669 2505,9672 2505,9675 2509,9670 2510,14670 2513,14675 2512,14671 2512,14673 2513,14671 2517,14674 2515,14679 2520,14676 2524,17676 2519,17677 2520,17678 2523,10558 12497,13558 12492,13558 12490,13560 12494,13561 12499,13563 12503,13568 12508,13572 12512,13572 15512,13573 15515,13569 15518,13566 15522,13571 15522,13572 15522,13575 15527,13576 15532,13573 15534,13575 15535,13572 15538,13574 15541,13571 15546,13571 15541,13568 15541,11605 16581,11608 16576,11613 16575,11612 16577,7612 16581,7614 16582,7617 16587,7616 16591,7617 19591,7619 19595,7620 19598,7624 19598,7625 19599,7624 19595,7625 14595,7627 14597,7626 14599,7628 14604,7628 14605,7633 14610,7632 14615,7632 14620,7631 14621,7631 14621,7631 14621,7627 14621,7632 15621,7635 15626,7636 15627,7637 15631,7633 15636,7635 15636,7631 15631,7631 15631,7634 18631,7630 18632,7629 18633,7632 18630,7633 18631,7638 18632,7638 18632,7638 18633,7633 18638,7637 18642,7639 18639,7639 18641,7643 18643,7647 20643,7648 20647,7643 20643,7648 20640,7649 20645,7650 20641,7650 20642,7650 20645,5650 20646,5654 20646,5654 20643,5651 20645,5648 20645,5653 20650,5653 20650,5654 20653,5655 20655,5659 20660,5664 20664,5668 20669,5668 20672,5670 20677,5675 20677,5678 20677,5680 20678,5680 20680,5679 20680,5682 20683,5681 20681,5682 20682,5685 20682,5685 20687,5685 20691,5685 20694,5685 20696,5685 20698,5686 20697,5688 20698,5688 20697,5688 20696,5689 20696,5694 20701,5695 20700,5697 20704,5697 20708,5694 20708,5694 20708,5694 20713,5691 20713,1691 20713,1689 23713,1694 23714,1696 23714,593 1402,593 1406,595 1410,598 1413,603 1418,602 1422,601 1422,602 1418,606 1423,607 1424,603 1429,605 1433,609 1429,614 1429,610 1429,610 1429,614 1429,610 3429,612 3425,616 3429,620 3429,624 3432,628 3436,628 3436,628 3441,632 3441,628 3445,626 445,631 449,631 453,630 455,626 -1545,630 -1542,630 -1538,630 -1542,630 -1541,633 -1536,631 -1534,626 -1536,630 -1535,630 -1532,635 1468,637 1471,642 1476,642 1477,642 1478,643 1481,643 4481,638 7481,638 7483,643 7486,645 7484,9668 27534,9669 27537,9671 27538,9672 27539,9673 27544,9674 27544,9673 27546,9671 27546,9667 27542,9666 27546,9667 27543,9672 27544,9675 27548,9676 27546,9676 27541,9681 27538,9681 27540,9686 27544,9686 27547,9690 27544,9687 27545,9691 27549,9693 24549,9694 24546,9692 24548,9697 24553,9694 24555,9695 24560,9696 24555,9700 24551,9704 24547,9703 24549,9705 24551,9705 24554,9705 24554,9705 24557,9707 24561,9706 24557,9711 24562,9715 24566,9720 24568,9717 24569,9720 24573,9725 24573,9726 24575,9729 24577,9734 24575,9735 24578,9735 24582,9731 24583,9726 24586,9727 24586,9728 24589,9733 24592,9734 28592,9734 28592,13734 28594,13737 28595,13740 28595,13744 28598,13739 28600,13742 28601,13744 28597,13742 28602,13744 28602,13744 28598,13745 28603,13744 28608,13749 28609,13749 28609,13754 28606,13758 28610,13759 28609,13760 23609,13761 23611,13763 23616,13768 23618,13769 24618,13768 24617,13773 24613,13773 24613,13778 24617,13776 24620,13778 24619,13779 24620,13781 24625,13785 24625,13785 24622,16785 24617,16786 24617,16790 24617,16794 24622,16795 24626,16798 24630,16796 24631,16796 24636,16799 24638,16804 24637,16808 24637,16809 24632,16814 24627,16809 24627,16814 24632,16818 24628,16816 24627,16820 24622,16820 24627,16824 24632,16823 24637,16824 24642,16826 24644,16824 24648,16826 24648,16826 24652,16829 24652,16829 24656,16828 24651,16832 24653,16827 24648,16828 24645,16828 24647,16831 24645,16832 24649,16835 24653,16839 24656,16839 24654,16840 24659,16841 24658,16845 27658,16845 27658,16840 27659,16837 27659,19837 27654,19841 27654,19836 27657,19839 27659,19839 32659,19839 32659,19839 32664,19840 32668,19842 32671,19847 32671,19851 32673,19856 29673,19856 29670,19858 29675,19860 29676,19865 29677,19868 29677,19868 29674,19872 29675,19872 29674,19874 29669,19876 29667,19876 29670,19878 29675,19883 29675,19883 29675,19879 29676,19879 29673,19880 29674,19880 29679,19876 29676,19876 29677,19879 29673,19880 29677,19879 29678,19881 29681,19882 29683,19882 29681,19887 29681,19888 29681,19891 29684,19896 29688,14896 29689,14896 29693,14899 30693,14903 30698,14908 25698,14910 25698,14911 25698,14914 25699,14910 25695,14910 25696,14914 25697,14917 25692,14921 27692,14925 28692,14920 28694,14924 28698,14924 28699,11924 28697,11928 28692,11932 28687,11937 28691,11941 28694,11940 28699,11944 28701,11940 28701,11940 28701,11943 28699,11945 28703,11947 28706,11951 28711,11953 28714,11956 28709,11961 28708,11966 28703,11969 28705,11967 28709,11967 28714,11964 28719,11969 28719,14969 28720,14970 28717,14973 28714,14976 32714,14976 32711,14977 32711,14980 32709,14984 32709,14987 32711,14988 32715,14993 32719,14994 34719,14994 34721,12994 34724,12994 34726,12998 34727,13000 34729,13002 34729,17002 34732,16998 34736,16999 34735,17000 34740,16999 32740,17001 32745,17001 32741,17005 32746,17006 32751,17010 33751,17008 33754,17013 33758,17013 33760,17010 33759,17010 33759,17009 33762,17013 33766,17017 33766,17020 33762,17015 33766,17019 33762,17022 33762,17017 33766,17014 33762,17018 33767,17019 33764,17021 33764,17023 33764,17019 33764,17022 33760,17024 33758,17029 33759,17033 33760,17028 33764,17023 33764,17028 33769,17031 33774,17034 33778,17029 33780,17034 33783,17030 33785,17032 33781,17035 33776,17038 33775,17040 33775,17041 33778,17045 33778,17049 31778,17050 31782,17052 31780,17054 31781,17051 31783,17053 31783,17049 31779,17050 31779,21050 31782,21053 31783,21054 31778,21056 31781,22056 31786,22052 31783,22050 31786,31882 25804,31887 25800,31887 25801,9610 10543,9612 10548,9614 10553,9614 10558,9614 10553,9616 10556,9620 8556,9623 8554,9628 8559,9630 8564,9630 8568,9628 8566,9628 8570,9630 8574,9634 8574,9634 8570,9635 8569,9635 8566,9632 8568,9637 8571,9638 8572,9639 8568,9643 8568,9646 8572,9646 8570,9651 8575,9650 8578,9653 8581,9654 8583,9653 8586,9655 13586,7655 13586,7660 13591,4660 13590,4663 13590,4666 13592,4671 13597,4673 13596,4678 13599,4682 13600,4685 13601,4683 13603,4685 18603,4683 18604,4685 18606,4690 18608,4690 23608,4693 23606,4693 23606,4697 23603,4702 23608,4704 23613,4704 23615,4709 23614,4708 23615,4711 23619,4711 23619,4713 23622,4713 23626,4711 23630,4715 23631,4712 23635,4714 23640,4718 23640,4719 23642,4721 23640,4721 23639,4726 23644,4730 23648,4725 27648,4723 27648,4727 27651,4731 27654,4733 27656,4737 27657,4742 27660,4745 27661,4750 27660,4751 27664,4754 27659,4759 27659,4755 27664,4757 27665,4752 27665,4754 27667,4750 27670,4750 27674,4753 27678,4753 27682,4758 27682,4758 27683,4760 27679,4762 27679,4764 27682,4769 27678,4773 32678,4773 32675,4771 32675,4767 32679,4772 32684,4775 32684,4778 32684,4775 35684,4775 35679,4775 35680,4779 35683,4779 35683,4784 35683,4789 35680,4790 35685,4791 35687,4791 35688,4792 35683,4792 35688,4792 35688,4797 35690,4799 35693,4803 35692,4803 35694,4803 35695,4808 35695,4812 35698,4816 35702,4815 35706,4811 35711,4811 35708,4813 35710,4813 35710,4814 35714,4815 35718,4820 35722,4816 35719,4819 35719,4824 35722,4826 35719,4830 35724,4832 35728,4835 35725,4840 35726,4840 35729,4840 35733,4840 35733,4841 35732,4844 35728,4848 35730,4849 35733,4849 35734,4849 35736,4847 35737,4847 35738,4843 34738,4846 34739,9846 37739,9850 37743,9853 37745,9857 37749,9852 37752,9852 37751,9852 37748,9852 37751,9851 37753,9848 37756,9843 37759,9841 37759,9840 37764,9837 37767,9842 37764,9845 37764,9840 37765,9842 37770,9842 37774,9846 37775,9851 37778,9854 37783,9854 37779,8854 37783,8851 37787,8856 37791,8859 37794,8860 37793,8855 37794,8857 37798,8859 37797,8860 37797,8860 37802,8861 37804,8863 37804,8863 37805,8865 37808,8866 37811,8866 37811,8862 37811,8859 37811,8864 37816,8864 37816,8867 37817,8872 37819,8867 37822,8871 37819,8875 37817,8876 37819,8876 37822,8871 37818,8873 37823,8877 37822,8879 37820,8880 37824,8881 37826,8884 37825,8887 37827,8884 37829,6637 6475,6637 6471,6635 6469,6640 6474,6641 6478,11641 6476,11644 6471,11639 6467,11638 6464,11642 6464,11646 6459,11647 6462,550 1394,551 1395,552 1399,548 1401,552 1400,547 1405,551 1406,556 1407,558 1410,558 1411,560 1413,565 1418,561 1423,-2378 3499,-2378 3502,-2378 3504,-2374 3501,-2371 3505,-2367 3507,4607 5468,4611 5471,4614 5472,4619 8472,4621 8473,4624 8477,4629 8474,4633 8476,4635 8478,4638 8475,4640 3475,4642 3479,4645 5479,4645 5482,4644 5486,4641 5486,4639 5488,4635 5491,4631 5488,8631 5485,8635 4485,8630 4488,8628 4488,8630 4486,8635 7486,8640 7482,8641 8482,8642 8483,8643 8483,8643 8483,8640 8488,8641 8489,8638 8487,8641 8491,500 5370,502 5368,504 5369,504 5371,506 5375,505 5376,509 5381,509 5381,504 5380,505 5375,509 5379,513 5382,513 5382,515 5382,517 5379,3517 5381,3519 5381,3520 5384,3523 5387,3521 5388,3521 5390,3520 5385,3519 5380,4519 5383,4524 5387,4523 5392,4525 5389,4530 5384,4525 5384,4526 5386,4531 5390,4531 5387,4530 5389,4534 5388,4538 5391,4541 5386,4542 5390,7542 5393,7547 5398,7548 5399,7547 5397,7543 5401,7544 5405,7545 5403,7545 5408,7546 5409,7550 5414,3550 5416,3550 5417,3548 5417,3543 5417,3543 5412,3548 5412,548 5412,552 10412,555 10414,557 10410,560 10411,563 10416,2563 10418,2564 10422,2559 10426,2555 10423,2560 10421,2563 10418,2565 10419,2569 10421,2573 10421,2573 12421,2572 12425,2571 12428,2576 12428,2581 12433,2583 12435,2581 12434,2576 12439,2581 12442,2581 12443,2581 12438,2579 12442,2575 12447,2573 12445,2577 12445,2582 12441,2587 12436,2589 16436,2590 16433,2586 16437,2586 16439,2588 16434,2589 16436,2590 16433,2593 16434,2590 16432,2593 16432,2590 16437,2594 16439,2599 16442,2600 16447,2605 16450,2605 16454,2604 16451,2608 16447,2612 16442,2613 16446,2618 16451,2623 16455,2626 16457,2629 16457,2630 16460,2630 16460,2632 16464,2636 16464,2639 16467,2638 16471,2643 16476,2643 16479,2645 16484,2645 16481,2649 16482,2652 16480,2648 16476,2649 16476,2649 16481,2644 16485,6644 16488,6647 16488,6647 20488,6647 20493,6652 20497,6656 20498,6661 20503,6656 20507,6656 20511,6656 20512,7540 11429,9674 12603,11674 12599,11675 12594,11674 12599,11678 12601,11681 12603,13681 12603,13684 12603,13684 12603,13686 12603,13689 12603,13693 12605,13695 12601,13695 12603,13697 12602,13701 15602,13703 15603,13704 15601,13706 15597,13711 15598,13711 15603,13715 15603,13714 15600,13713 15598,13717 15603,13722 15605,13726 15607,13727 15612,13727 15612,13731 15614,13733 15616,13728 15616,13730 15617,13734 15614,13736 15617,13739 15614,13739 15617,13739 15617,13741 15619,13746 15624,13742 15624,13742 15626,13746 15626,13750 15623,13749 15621,13754 15626,12754 15627,12750 15627,12753 15624,12754 15624,12758 15629,12759 15624,12761 15627,12764 15632,12765 15637,12768 15635,12772 15640,12769 15636,12772 15634,12773 15634,12772 15634,12775 15635,12772 15640,12774 15641,12777 15641,12779 15646,12780 15642,12776 15640,12780 15640,12779 15638,12784 15642,12789 15643,12787 15644,12788 15649,12791 15649,12789 15648,12787 15648,12791 15650,7791 15655,7795 15655,7798 15658,7802 15659,7803 15655,7804 15654,2804 15652,2808 15648,2806 15652,2805 15652,2806 15657,2801 15657,2801 15658,2801 15655,2803 15654,2808 15658,2804 15653,2803 15656,2807 15656,2812 15658,2814 15657,2818 15658,2818 15660,2822 18660,2825 18664,2829 18668,2833 18663,2832 18668,2832 18668,2834 18671,2836 18672,2839 18677,2843 18680,2848 18675,2851 18677,2854 18681,2859 18685,2864 18690,2868 18694,2873 21694,2877 21694,2879 21693,2881 21693,2882 21696,2885 21697,2883 21701,2887 21702,2887 21702,2887 21697,6887 21701,6892 21702,6888 21707,3576 10502,3578 10506,3582 10508,3585 10508,3590 10512,3592 11512,3593 11514,3598 11514,3602 11514,3599 11515,3599 11516,3601 11520,3601 11519,3599 11522,3599 11519,3601 11517,3600 11515,3600 11517,3596 11519,3600 11521,3603 11525,3606 11528,3607 11532,3608 11536,3606 11541,3605 11541,3605 11542,3609 11537,3613 11538,3609 11538,3605 11538,3605 11542,3609 11546,3613 11541,3613 11546,3612 11547,3611 11551,3614 11548,3610 11550,3611 11555,3611 11559,3615 11559,3618 11563,3621 11564,3618 11567,3620 6567,3624 6567,3627 6570,3623 6572,3619 6576,3616 6577,3611 6578,3612 6579,3609 6578,3610 6582,3613 6586,3614 6586,3619 6584,3622 8584,3617 8582,3622 8587,3622 8592,3624 8592,3627 8587,3628 13587,3629 13589,3631 13594,3636 13589,3636 13590,3637 13587,3637 13591,3641 13596,3641 13597,3645 13602,3640 13601,3640 13602,3640 13606,3644 13606,3644 13609,3639 13612,3639 13612,3644 13610,3649 13615,3654 13618,3659 13618,3662 13618,3666 13620,3661 13625,3660 13630,3660 13634,3662 13635,3659 13637,3663 13638,3666 13638,3669 13635,6669 13635,6671 13631,6672 13631,6669 13631,6667 13629,6663 13629,6663 13627,6663 13627,6667 13630,6671 13630,6671 13630,6673 15630,6674 15631,6679 15632,6682 15629,6685 15629,6686 15631,6691 15633,11691 15630,11689 15629,11693 15632,11693 15627,11698 15627,11695 15626,11697 15629,14697 15628,14701 15631,14705 15632,14700 15632,17700 15635,17705 15640,17700 15642,17701 15638,17703 15640,17708 15641,17712 16641,17716 21641,17716 21645,17721 21645,17720 21650,17720 21653,17720 21653,17722 21653,17718 21654,17721 21657,17723 21657,17724 21657,17720 21659,17723 21663,17725 21660,17725 21661,17723 21661,17727 21665,17727 21665,17731 21669,17729 21671,17731 21671,17727 21671,17727 21667,17726 21670,17722 21671,17727 21671,17732 21671,17737 21671,17739 21674,17741 21676,17746 21680,17750 21683,17745 21681,17745 21678,17750 21679,17753 21681,17758 21677,17760 21682,17764 21681,17763 21681,17763 21684,17766 21680,17768 21684,17764 21688,17769 21691,17771 21695,17773 21691,17776 21690,17777 21695,17781 21695,17784 21695,17784 21695,17786 21699,14786 21695,14786 21692,14786 21690,14788 21691,14788 21696,14793 21698,14798 21701,14796 21699,14800 21702,14796 21704,14800 26704,14805 26699,14810 26700,14810 26698,14814 24698,14814 24702,14814 24705,14815 24700,14819 24703,14822 24705,14826 24710,14831 24709,14833 28709,14835 28710,14838 28708,14839 28708,14842 28709,14847 28713,14843 28714,14847 28712,14850 28717,14847 28713,14851 28711,14854 28706,14853 28702,14848 28697,14852 28702,14857 28706,14857 28710,14858 27710,14861 27711,14864 27714,17864 27715,17864 27716,17864 27713,17869 27715,17870 27719,17871 27720,17869 27720,17872 27724,17871 27729,17873 27729,17875 27733,17877 28733,17881 28730,17881 28727,17884 28728,17886 28733,17886 28734,17891 28735,19891 28735,19892 28731,19896 28732,19891 28736,19895 28740,19898 28737,22898 28738,22898 26738,22898 26733,22899 26738,22900 26738,22901 26742,22901 26744,22896 26744,22899 26746,22901 26751,22899 26754,22904 26756,22906 26761,22909 26761,22914 26766,22915 26765,22918 26768,22913 26768,22915 26763,22920 26763,22917 26764,22921 26765,22922 26769,22918 26764,22920 26765,22919 26768,26919 26771,26922 26774,26927 26779,26924 26778,26924 26780,26920 26782,26924 26787,26922 26788,26925 26792,26927 26787,26928 26790,26933 26794,26933 26795,26936 26795,26939 26800,26939 26798,26936 26798,26939 26795,26937 26795,26937 26793,26937 28793,26939 28791,26940 28793,26937 28796,26937 28797,26935 28798,26930 28798,26934 28802,26934 28807,26936 28811,26940 28812,26937 28815,26939 28814,26934 28812,26938 28817,26942 28822,26943 28822,26948 28822,26952 28824,26953 28824,26953 28829,26950 28834,26954 28839,26954 28839,26949 29839,21949 32839,21951 32838,21951 32843,21951 32844,21951 32849,21951 32854,21953 32854,24953 32852,24953 32851,24957 32853,24962 32854,24963 32849,24967 32847,24970 32849,24966 32849,24967 32852,24963 32856,24965 32860,24968 32861,24971 32860,24974 32860,24978 32863,24980 32859,24981 32864,24981 32868,24983 32866,24988 32866,24988 32869,24991 32874,24992 32878,24992 32881,24992 32877,24988 32880,24991 36880,24991 36883,24991 36885,24992 36889,24996 36894,24995 36894,24998 36894,24999 41894,25004 41899,25006 41900,25010 41905,25005 41909,25007 41912,25008 41916,25009 41919,25011 41917,25016 41919,25017 41916,25014 41919,25015 41919,25017 41919,25018 41924,25023 41927,25026 41928,25026 41929,25021 41926,25020 41926,25023 41928,25019 41933,25018 41932,638 7483,639 7484,640 7482,644 7484,646 7486,651 7486,554 1390,549 1391,547 1392,551 1397,3551 1394,3553 6394,3550 6399,3554 6399,3553 6403,3553 6400,3550 6403,3554 6398,3555 6402,3559 6403,3564 6405,3564 6410,3560 6412,3565 6412,3564 6407,3567 6407,3572 6410,3576 6412,3578 6413,3580 6414,11674 22654,11679 22654,11679 22654,11679 22656,11684 22658,11689 22661,11694 23661,11697 23658,11697 23661,11698 23664,11700 23667,11695 28667,11698 28671,11699 28672,11704 28675,12704 28671,12708 28669,12710 28673,12707 28678,12708 28678,12710 28677,12710 28677,12712 28675,12713 28679,12715 28676,12715 28680,12719 28681,12724 28678,12728 28673,12733 28676,12733 28673,12734 28673,12739 28677,12743 28679,12744 27679,12741 27680,12741 27680,12740 27682,12741 27678,12740 27680,7740 27684,7743 27686,7738 27683,7740 27683,7740 27686,7736 27690,7736 27693,7739 27691,7735 27686,7739 27686,7737 27686,7737 27688,7732 27689,7732 27689,7731 27684,7736 27689,7741 27692,7739 27697,7740 27702,7738 27703,7741 27706,7746 27704,2626 16457,2627 16460,2623 16461,2618 16461,2620 20461,2622 20457,2623 20457,2628 20457,2632 20462,2629 20462,2630 20462,2628 20457,2633 20460,2632 20460,2637 20460,2639 20457,2639 20457,2639 20461,2641 20460,2646 20460,2651 20461,2650 20461,2651 20464,2656 20460,2660 20463,2665 20464,2667 20464,2668 21464,2671 21468,2676 21471,2673 21476,2590 16437,2591 16434,2596 16436,4596 16438,4600 16439,4600 16439,4601 16439,4599 16435,4599 16440,4597 16441,4598 16446,4598 16447,4595 16445,4590 16447,4594 16447,4595 16447,4598 16447,4598 16449,4596 16451,4598 14451,4596 14456,4598 14457,4594 14452,4598 14457,5598 14457,5598 14458,2598 14463,2600 14463,2603 14464,2598 14465,2595 14470,2590 14467,2594 14470,2595 14471,2598 14473,2598 14473,2599 14473,1599 14474,1599 14472,1600 14467,1599 14470,1601 14468,1599 14463,1601 14461,1601 14461,1601 14466,1602 14468,1606 14473,1602 14473,1600 14475,1595 14478,1599 14479,1596 14479,1596 14484,1596 14488,1601 14489,1604 18489,1606 18492,1604 18492,1605 18496,1605 18496,1608 18501,1603 18498,1608 18500,1612 18497,1608 18492,1604 18494,1609 18497,1609 18499,1606 18499,1608 18501,1610 18503,1606 18499,1610 18500,1614 18501,1617 18497,1620 18498,1616 18501,1614 18496,1615 18500,1617 18497,1619 18498,1617 18501,1622 18506,1622 20506,1625 20506,1625 20509,1627 20513,1631 20514,1633 20519,1637 20520,1639 20525,1643 24525,1638 24520,1642 24520,1647 24525,1650 24529,1654 24530,1657 24533,1656 24538,1659 24542,1659 24545,1662 24550,1666 24551,1666 24552,1666 24557,1666 24562,1666 24565,1669 24568,1672 24569,1672 24569,1676 24566,1676 24570,1678 24565,1676 24567,1673 24567,1674 24572,1679 24577,1679 24578,1683 24581,1684 24586,1688 24590,1690 27590,1685 27594,1688 27594,1683 27594,1686 27597,1688 27600,1692 27599,1696 27600,1695 27604,1695 27609,1698 27610,1701 27610,1705 27609,1706 27605,1709 27600,1714 27600,1716 27602,1717 27601,1712 27597,1714 30597,1711 30600,1713 30600,1713 30604,1714 30604,1716 30602,1713 30605,1710 30606,1713 30609,1709 30607,1713 30604,1714 30609,1717 30609,1717 30613,1721 30615,2721 30620,2718 30623,4718 30628,4723 30624,4727 30619,4728 30618,4728 30615,4728 30619,4729 30618,4731 30622,4731 30625,4734 30625,4734 30630,4735 30627,4736 30631,4735 30636,4730 30641,4727 30641,4729 30646,4731 30650,4736 30651,4740 30648,4737 30648,4738 30647,4741 30649,5741 30646,5744 30648,5745 30651,10745 30651,13745 30653,13749 30651,13754 30652,13754 30657,13754 30657,13758 30653,13761 30656,13766 30655,13768 30659,13769 30662,13771 30659,13771 30661,13771 30665,13768 30670,13768 30667,13772 30670,13776 30672,13775 30672,13777 30675,13780 30679,13783 30677,13784 30678,13784 30674,13788 30674,13788 30678,13784 30678,13787 30683,13792 30683,13791 30679,13794 30679,13795 30682,13795 30686,13798 30691,13803 30692,13807 30694,13810 30694,13810 30692,13813 30694,13813 30689,13816 30689,13820 30689,13822 30692,13826 30696,13822 30701,13827 30704,13832 30707,13832 30707,13828 30707,13831 30712,13831 30709,13834 30706,12834 30707,12839 30703,12843 30707,12843 30703,12843 30706,12848 30710,12849 30715,12853 30713,12853 30716,12852 30718,12849 30721,12849 30719,12852 30719,12853 30714,12856 30712,12856 30714,12857 30719,12862 30720,12865 25720,12863 25723,12864 25724,12868 25729,12869 25731,12868 25736,12869 25739,12865 25737,12863 25739,12866 25743,12862 25747,12867 25747,12867 25748,12867 25748,12870 25748,12866 25748,12869 25749,12869 25751,12874 25754,12875 25758,12877 25761,12878 25763,21745 15645,21749 15645,21753 15646,21753 15648,21758 15652,21754 15654,21759 15654,21762 15658,21766 15663,21761 15663,21761 15665,21758 15666,21761 15668,21763 15666,21765 15662,21770 15666,21773 15671,12742 4678,12743 4682,12740 4687,12745 4692,12745 4688,12748 4689,12748 4692,12752 4696,12754 4697,12754 4700,12758 4703,12758 4703,12762 4704,12762 4709,12762 4711,12760 4713,12760 4717,12764 4713,12767 4712,12767 4712,12768 4715,12767 4720,12770 4716,12770 4712,2569 10421,2572 10423,2576 10424,2579 10428,2580 10423,2582 10424,2578 10422,2577 10426,2577 10428,2580 10433,2580 10433,2581 10432,2580 10435,2584 10435,2588 10439,2587 10444,2592 10445,2589 10446,2591 10447,2594 10446,2597 10445,2599 10440,2602 10443,2603 10443,2605 10444,2605 10449,2607 10449,2602 7449,2605 7449,2608 12449,2605 16449,2605 17449,2605 17450,2608 17454,2612 17459,2607 17459,2608 17456,2613 17457,2617 17459,6617 17462,6621 17467,6621 17468,6626 17464,6622 17465,6622 17465,6623 17469,6623 17466,6623 17467,6627 17466,6623 17466,6626 17463,6622 17468,6625 17464,6627 17468,6625 17463,6626 18463,6624 18463,6625 18464,6623 18468,6623 18469,6626 18470,6621 18466,6621 18467,6622 18467,6625 18464,6630 18468,6628 18469,6631 18472,6627 18477,6628 21477,6631 21481,6627 21486,6628 21490,6632 21494,6637 21496,6640 21491,6643 21491,6648 21490,1648 21492,1650 21489,1650 21487,1654 21488,1653 21489,1653 21492,1650 21493,1655 21493,1650 21493,1651 21490,1651 21490,1649 21493,1645 21498,1649 21494,1652 21495,1654 21500,1655 21495,1658 21492,1663 21496,1666 21500,1666 19500,1664 19504,1668 19508,1668 19512,1666 19516,1669 19518,1669 19518,1674 19520,1674 19525,1676 19525,1679 19526,1679 19526,1681 19526,1686 19526,1691 19529,1689 19529,1688 19529,1685 19524,1690 19528,1693 19531,1693 19531,1698 20531,1699 20536,1703 20538,1703 20538,1706 20541,1701 20545,1702 20550,1704 20547,1705 20544,1710 20548,1710 20551,1713 20555,1712 20559,1714 20562,1714 20563,1714 20565,1712 20567,1711 20570,1706 20571,1708 20571,1708 22571,6708 18571,6712 18571,6715 18573,6710 18577,6711 18579,6711 18579,6716 18578,6721 18580,6721 18582,6726 18587,6731 18588,6736 18587,6734 18587,6736 18590,6739 18594,6744 18597,6744 18602,6746 18606,6749 18606,6750 18609,6750 18610,6753 18605,6755 18610,6759 18613,6759 18613,6759 18617,6763 20617,6767 20621,6771 20625,6773 20628,6769 20629,4769 20633,5769 20635,5769 20637,5770 20640,5772 20643,5772 20646,5772 20644,5776 20641,5779 20643,5784 20642,5786 25642,5786 25645,5791 25647,3791 25651,3791 25652,3794 25648,3793 25644,3791 30644,3796 30649,3796 30654,3800 30655,3800 30657,3797 30657,3797 30659,3800 30661,3803 30661,3803 30657,3800 30652,3801 30652,3802 30653,3807 30654,3809 30657,3804 30656,3801 30657,3803 30657,3803 30658,3804 30663,4804 30663,4809 30665,9809 30665,9809 30669,9812 30673,9816 30676,9816 30676,9816 30677,9818 30682,9818 30683,9817 30687,9813 30692,9817 30692,9814 30693,9816 30693,9818 30697,9818 30699,9818 30696,9816 30694,9811 30694,9812 30694,9816 30697,9821 30700,9824 30702,9827 30707,9827 25707,9827 25711,9828 25709,9823 25713,9827 25712,9830 25714,9827 25712,9832 25717,9836 25719,9836 25722,11836 25725,11838 25727,14838 29727,14835 29728,14838 29724,14843 29724,19843 29724,19846 29728,19847 29732,19851 29737,19855 29738,19858 29735,19853 29735,19853 29737,19852 29739,19850 29744,19850 29744,19854 29747,19859 29752,19861 29750,19864 29751,19869 29752,19864 29756,19865 29757,19868 29758,19868 29758,19871 29763,19874 29764,19877 29766,19879 29763,19880 29763,19881 29765,19886 29765,19881 29765,19881 29768,19880 29773,19875 29775,19879 29776,19883 29776,19887 29781,19890 29784,19890 29789,19892 29784,19897 29785,19893 29785,22893 29787,22895 29792,22895 29788,22895 29789,22895 29793,22900 29793,25900 29790,25901 29794,25902 29794,25905 29794,25907 29798,25912 29799,25910 29804,25915 29809,25918 29807,25917 29808,25921 29808,25925 29812,25926 29816,25926 29819,25921 29821,25926 30821,25929 30823,25933 30822,25935 30823,25937 30818,25937 30818,25939 30819,25939 30824,25941 30819,25943 30823,25946 30824,25946 30829,25947 30829,25947 30830,25952 30833,25953 30831,25954 30836,25959 30836,25964 30836,25961 30836,25965 30837,25964 30835,29964 30839,29968 30842,31968 30847,31967 30844,31972 30844,31972 30840,31977 30839,31982 30842,31987 30844,31987 25844,31984 25848,31987 25848,31992 25845,31993 25846,31997 25846,31997 25849,31996 25851,31995 25855,32000 25858,31995 25859,31996 25856,31997 25858,31999 25858,31998 25858,32001 25859,32003 25863,32002 25866,32003 25867,32008 25867,32011 25870,32014 25875,32013 25874,34013 25873,34013 25876,34011 25878,34011 25880,34012 25885,34016 27885,34011 27884,39011 27888,39008 27884,39011 27879,39011 27876,39011 27880,39014 27879,39013 27879,39014 27879,39015 27882,39019 27886,39020 27888,39020 27893,39025 27895,39030 27896,39030 27896,39031 27892,39036 22892,39039 22894,39038 27894,39043 27895,39048 27900,39044 27905,39046 27907,39041 27910,39044 27910,39043 27915,-2382 3462,-2377 3465,-2373 3468,-2371 3469,1629 3470,1632 3472,1630 3469,5630 3473,5635 3474,5638 3474,5639 3469,5643 3473,5643 3473,5639 3477,5639 3477,5639 3480,5642 3479,5644 3481,5649 3480,2649 3485,2649 3485,2650 3489,2653 3491,506 5375,510 5380,513 5382,518 5384,522 5387,521 5384,524 5385,525 5382,523 5384,527 5384,527 5386,4527 5391,4528 5393,4533 2393,4534 2389,4537 2393,4538 2395,4541 2400,4543 2404,4544 2405,4548 3405,4553 3410,4556 3406,4561 3406,4558 3410,4559 3410,4558 3408,4558 3413,4563 3413,4561 3418,4563 3423,4565 3426,4565 3428,4570 3432,4570 3433,4574 3437,4579 3439,4583 3443,4578 3444,4582 3447,4583 3447,4585 3443,4590 3448,4586 3448,4588 3449,5588 3449,5589 3454,5593 3456,5591 3457,5591 3458,7591 3461,7594 3457,7596 3459,7591 3458,7590 3460,7593 3460,7593 3463,7590 3464,7586 3466,7581 3467,7580 3466,7580 3466,7585 3470,7585 3472,7589 3468,7589 3471,7594 3474,7599 3474,7600 3471,7603 3471,7606 3471,7606 3472,7606 3474,7606 3479,7609 3482,7612 6482,7614 6485,11614 6481,11619 6486,11624 6486,11621 6489,11623 6491,11628 6491,8628 6496,8632 6498,8629 6502,8632 6502,8627 6505,8631 6506,8633 6502,8633 6507,8631 6512,8631 6512,8626 6514,8621 6515,8620 6513,8615 6514,8611 6519,8612 6522,8613 6522,8616 6522,8611 6519,8614 6519,8615 6521,8618 6525,8623 6526,8628 6521,8631 6517,8634 6520,8634 6525,8637 6526,8636 6528,8640 6533,8643 6534,8643 6531,8642 6532,8643 6535,8643 6535,8640 6531,8641 6531,8641 6534,8644 6537,8647 6541,8648 6536,8649 6537,8649 6542,8644 6546,8644 6546,13644 6548,13642 6549,13638 6548,13636 6549,11636 6549,11636 6554,11633 6554,11636 6554,11641 7554,11642 7558,11641 7553,11643 7556,11644 7556,11639 7556,11641 7558,11641 7559,11641 7563,11638 7560,11639 7564,11642 7569,12642 7574,7642 7576,7642 7574,7643 7577,7645 7577,7650 7576,7645 7576,7648 7576,7650 7581,7651 7576,7654 7581,7658 7581,7661 7583,7662 7584,7664 7586,7661 7586,7662 7589,7666 7585,7669 7585,7670 7585,7670 7587,7670 7587,7670 7591,7667 7595,7672 7595,7677 7600,7679 7597,7684 5597,7682 5600,7685 5601,7688 5601,7691 5604,7696 5605,7700 5607,7703 5602,7704 5602,7701 5606,7702 5607,7706 5609,7710 5614,7713 5610,7716 5615,7717 5616,7719 5621,7724 5621,7724 5618,3724 5623,3722 5625,3725 5626,3730 5628,3727 5633,3727 5636,3729 5638,6729 5639,6732 5642,8732 5644,8732 5649,8729 5650,8734 5645,8736 5644,8739 5644,8741 5645,8745 5650,8743 5652,8739 5651,8744 5652,8744 5653,8745 5649,8748 5651,8749 5652,8750 5655,8753 5660,8753 5662,8755 5660,8757 5657,8758 5654,8762 5659,8760 5660,8761 5664,8765 5669,8768 5669,8768 5669,8769 5673,8769 5678,8772 5678,8769 5683,8774 5683,8776 5687,8777 7687,8779 7691,10779 7686,10779 7686,10780 7686,15780 7690,15781 7695,15779 7699,15783 7702,15788 7705,15791 7705,15786 7709,15788 7707,15793 7710,17793 7711,17794 7712,17799 7713,17800 10713,17802 10713,17802 10715,17803 10715,17808 10716,17811 10717,17811 14717,17811 14722,17811 14722,17815 14725,17819 14726,17820 14727,17822 14727,17817 14731,17818 14731,17818 14729,17820 19729,17818 19725,17822 19728,17818 19723,17821 19720,17821 19725,17824 19725,17821 19728,17821 19725,17825 19725,17830 19725,17834 19729,17836 19730,17837 19730,17841 19725,17844 19730,17849 19734,17853 19734,17856 19737,17858 19732,17858 19732,17863 19732,17868 19733,17873 19735,17874 19740,17878 19742,17883 19742,17879 19747,551 1397,551 1398,552 1401,553 1401,553 1398,552 1398,555 1402,556 1406,557 1409,558 1413,558 1416,558 1418,558 1420,563 1421,566 3421,568 3421,570 3426,572 3429,5572 3433,5576 3433,5579 3436,5579 3441,5583 3444,5580 3445,5585 3450,5589 3453,5593 3454,5597 3459,610 1429,612 1431,607 1430,607 1430,609 1426,605 1425,607 1425,602 1420,604 1423,-2378 3502,-2377 3503,-2378 3507,-2373 3508,-2375 3512,-2370 3516,-2373 3517,-2369 3514,-2370 3517,-2367 3519,-2366 3524,-2366 3529,-2362 3534,-2365 3536,-2370 3534,-2370 3531,-2366 3528,-2370 3532,-2366 3535,-2361 3533,-2361 3537,-2361 3540,-2358 3541,-3358 3543,-3355 3544,-3355 3542,-3355 3541,-3352 3546,-3348 3548,-3350 3551,-3346 3553,-3347 3553,-3342 3548,-3337 3548,-3338 3547,-3338 3547,-3334 3552,-3333 3552,-3332 3550,-3331 3550,-3329 3550,-3326 3552,-3325 3554,-3320 3556,-3315 3560,-3313 3565,-3312 3560,-3315 3563,-3315 3559,-3318 3564,-3321 4564,-3321 4569,-3317 4568,-3312 4573,-3311 4576,-3311 4575,-3308 4571,-3304 4572,-3299 4576,701 4580,703 4582,708 4582,711 4583,715 4587,716 4591,721 4587,717 4590,715 4594,715 4594,719 4598,719 4600,720 4604,717 4606,718 8606,722 8604,726 8600,727 8605,731 8609,731 8609,733 8611,738 8611,739 8612,734 12612,734 12617,730 12622,729 12622,732 12625,-268 12627,-263 12627,-264 12625,-261 12622,-260 12622,-265 12625,-264 12622,-264 12624,736 12622,733 12623,734 12626,730 12628,731 12632,732 12637,730 12637,733 12634,732 12635,732 12635,734 12635,733 12636,731 12639,734 12639,733 12642,734 14642,736 14646,739 14651,743 14654,-2257 14651,-2252 14651,-2252 19651,-2249 19656,-2249 19653,-2245 19650,-2248 19651,-2243 19656,-2241 19661,-2238 19664,-7238 19668,-7236 19666,-7231 19661,-7231 19666,-7227 19671,-9227 19672,-9223 19676,-7223 19675,-7223 19677,-7218 19677,-7219 19677,-7216 19673,-7214 19677,-7210 19674,-7206 19671,-7205 19673,-7203 19677,-7206 19680,-7202 19680,-7197 19685,-7197 19686,-7196 16686,-7201 16687,-7201 12687,-7198 12682,-7198 12682,-7193 12682,2673 15591,2673 15594,2673 15597,2671 15599,2666 15601,2670 15606,2669 15607,2670 15607,2673 15602,2670 15604,2671 15601,2672 15602,2667 15600,2672 15602,2675 15598,2675 15600,2678 15600,2677 15602,2673 17602,2678 17602,2677 18602,2681 18606,2682 18611,2685 18616,2686 18612,2688 18611,2686 18615,2686 18612,2687 18609,2688 18608,2688 18609,2688 18613,2693 18615,2693 18620,2691 18620,2696 18620,2698 18619,2695 18622,2700 18625,2704 22625,2709 25625,2709 25626,2710 25628,2710 25629,2714 25625,2715 25625,2713 25627,2714 25630,2718 25635,2723 30635,2723 30639,2726 30634,2727 30637,2728 30639,2732 30639,-1268 30642,-1266 30646,-1269 30643,-1269 30642,-1271 30642,-1269 30643,-1269 30645,-1269 30648,-1267 30647,-1265 30644,-1269 30648,-1268 30644,-1269 30644,-1269 30642,-1266 30641,3734 30637,3739 30640,3743 30641,3748 30646,3753 30650,3751 30653,3751 30652,3756 30647,3757 30648,3759 30653,3761 30656,3762 30655,3762 30653,3763 30650,3766 30652,3770 30657,3770 30657,3770 30653,3773 30650,3776 30650,3778 30650,3774 30655,3775 30657,3776 30660,3781 30662,3785 30665,3790 30670,5790 30672,5794 30675,5798 30680,5803 30675,5802 30673,5801 30677,5803 30679,5808 30677,5805 34677,5810 34677,5811 34682,5812 34684,5816 39684,5816 39687,5814 39690,5810 39695,5811 39696,5816 39700,5821 39705,5824 39707,5826 39711,5828 39708,5829 39709,5834 39712,5838 39715,5839 39718,5840 39720,5839 39722,5839 39722,5835 42722,5833 44722,5829 44722,5828 44722,5833 44724,5835 44727,5835 44731,2835 44729,3835 44731,3836 44736,3841 44739,3839 44736,3839 44736,3836 44736,3837 44737,3841 44737,3842 44733,3840 44735,3843 44730,3842 44732,6842 44734,6841 44735,6846 44737,6848 44737,6851 44740,6850 45740,6853 45741,6853 45741,6848 45743,6852 45744,6857 45746,6855 45747,6853 45750,6857 45754,6859 45752,6863 45751,6861 45751,6861 45748,6858 45752,6861 45750,6858 45750,6862 45750,6862 45753,6864 45757,6861 45762,6864 45762,6867 45761,6872 45763,6877 45758,6882 45761,6883 47761,6886 47761,6888 47762,6893 47767,6897 48767,6897 48772,6902 48771,6903 48773,6904 48773,6904 48777,6899 52777,6899 52777,6903 52773,6903 52773,7903 52773,7908 52771,7903 52772,7904 52774,7899 52776,7895 52776,7895 52781,7894 52778,7898 52783,7902 52785,7906 52790,7907 52792,11907 52797,11908 52801,11911 52800,11916 52804,11911 52806,11913 52808,11913 52805,11913 52809,11909 52812,11911 52812,11908 52815,11913 52817,11917 52820,11918 52820,11922 52825,11926 52823,11931 52827,11931 52826,11934 52823,11936 52818,11938 52819,11940 52823,11943 52828,11938 52833,11940 52835,11944 52832,11941 52831,11936 52831,11936 52833,11934 52836,11938 52839,11940 52840,11943 52840,11943 52841,11945 52844,16945 52844,16942 52839,18942 52838,18945 49838,18950 49841,18950 49844,18951 49845,21951 49847,21956 49848,21961 49846,21961 49851,23961 49852,23961 49856,23966 49860,23969 49865,23965 49866,23970 49862,23975 49859,23975 49859,23978 44859,23979 44862,23981 44862,23984 44867,23980 44871,23983 44875,23988 44875,23992 44877,27992 44878,27989 44881,27985 44886,27986 44888,27984 44888,29984 44889,29984 44889,29985 44893,29990 44888,29994 44892,29997 44896,30001 44895,30002 44900,30003 44904,30004 44907,30008 44904,30009 44904,30010 44905,30010 44908,30007 44908,30011 44905,30014 44908,30016 44909,30021 44912,30023 44913,30025 44912,30024 44910,30022 44914,30026 44912,30025 44912,30029 44912,30029 44915,30033 44920,30038 44924,30043 44926,30047 44928,30043 44930,30047 44932,30050 44934,30050 48934,30046 48935,30051 48935,30051 48935,30055 51935,30054 51931,1610 18503,1614 18504,1616 18504,1619 20504,1619 20504,1619 20505,1620 20509,1620 20511,1618 20511,1619 20508,2619 20511,2615 20516,2612 20515,2612 20515,2617 20512,2622 20515,2617 22515,2620 22516,2622 22519,2626 22522,2624 22522,2619 22524,2623 22519,2621 22519,2622 22516,2620 22512,2622 22517,2622 22522,2626 22522,2630 22522,-370 22526,-1370 22531,-1375 22531,-1371 22527,-1366 22527,-1362 22531,-1361 22528,-1362 22524,-1367 22528,-1367 22530,-1367 22533,-1367 22535,-1363 22540,-1363 22536,-1363 22539,-1358 22541,-1358 22541,-1355 22543,-1355 22538,-1355 22541,-1356 22544,-1357 22548,-1354 22553,-1353 22557,-1353 22561,-1355 22562,-1352 22566,-1351 22568,-1349 22569,-1347 22568,-1346 22566,-1351 22565,-1347 22566,-1348 22567,-1351 22569,-1346 22565,-5346 22567,-3313 3565,-3311 4565,-3308 4568,-3304 4571,-3307 4572,-3307 4573,-3303 4573,-3304 4578,-3300 4578,-3301 4578,-3301 4583,-3301 4581,-3297 4585,-3295 4580,-3295 4575,-3295 4573,-3293 4575,-3290 4580,-3285 4580,-3284 4582,-3284 4581,-3280 4580,-3285 4579,-3285 4579,-3284 4584,-3288 4588,-3286 4588,-3283 4584,-3279 4584,-3278 4588,-3279 4588,-3274 4586,-3270 4589,-3270 4590,-3268 4587,-3270 4591,-3267 5591,-3265 5591,-3261 5592,-3259 5593,-3259 5590,-3258 5595,-3256 5599,-3253 5601,-3252 5600,-3252 5603,-3252 5603,-3255 5601,-3250 5600,-3247 5605,-3242 5606,-3241 5608,-3243 5612,-3242 5612,-3245 5614,-3242 5619,-3243 5623,-2243 10623,-2242 10626,-2247 10626,-2247 10630,-2244 10634,-2248 10639,-2248 10636,-2248 10641,-2244 10646,11598 14558,11594 14563,11596 14568,11597 14569,11600 18569,11601 18570,11599 18566,11602 18568,11607 18567,11611 18572,11614 18573,11612 18569,11615 18570,11614 18573,11617 18577,11621 18577,11617 18574,11615 18579,11619 18583,11615 18587,11615 18587,11620 18588,11621 18589,11617 18593,11620 18597,11622 18599,11626 18603,11621 18603,11625 18607,11628 18611,11630 18614,11630 18619,11633 18616,11633 18616,11635 18614,11634 18613,11636 18609,11638 18607,11642 18612,11641 18615,11646 18615,11648 18619,11652 18621,11654 18622,11653 18617,11648 18619,11650 18614,11646 18617,11648 18613,11648 18618,11650 18615,11647 18617,11649 18621,11653 18621,11656 18624,11656 18628,11659 18628,11660 18624,11662 18624,11662 18620,11663 18620,14663 18621,14665 18616,14662 18611,14662 18607,14665 18607,14670 18607,14674 17607,14676 17610,19676 17608,19681 17613,19681 17613,19686 17611,19687 17612,22687 17612,22684 17608,22682 17607,22686 17610,22690 17611,22692 17612,22690 17617,22693 17622,22696 17622,22698 17625,22703 17627,22699 17629,22698 17629,22702 17634,22705 17630,22707 17634,22708 17634,22710 17639,22712 17639,22713 17635,22712 17639,22715 17644,22720 17644,22720 17646,22723 17644,22723 17644,22728 17643,22729 17646,22725 17651,22725 17652,22725 17647,22730 17647,22733 17647,22734 17647,22733 17651,22737 17653,22737 17657,22735 17660,22738 17658,22742 17662,22747 17667,22752 17671,22751 17672,22749 17677,22751 17677,22753 17681,22754 17677,22759 17674,22763 17674,22768 17677,22773 17673,22774 17676,22774 17679,17774 16679,17772 16679,17770 16675,17772 16676,17771 16676,17770 16679,17775 16684,17774 16685,17776 16685,17780 16687,17781 16688,17786 16689,17790 16689,17793 16688,17797 16684,17800 16684,17799 16689,21799 16691,21799 16688,21804 16689,21804 16687,21804 16687,21808 16685,21809 16689,21813 16693,21813 16696,21817 16698,21817 16699,21819 16694,21824 16699,21824 16701,21827 16705,21823 16702,21825 16702,21827 16702,21827 16702,21828 16705,21832 16707,21835 16710,21838 16712,21841 16712,21839 19712,24839 19714,24838 19719,24838 19722,24833 19722,24831 21722,24832 21727,24829 21729,24832 21730,24837 21732,24838 21736,24842 21740,24842 21740,24844 21740,24846 21740,24848 21741,24851 21736,24851 21732,24852 21737,24849 21741,24847 21742,24845 21743,24849 21744,24852 21742,24856 21744,24860 21745,24860 21745,24864 21749,24864 21754,24865 21759,24865 21760,24870 21764,24871 21762,24871 21762,24876 21767,24881 21769,24883 21768,24883 21769,24886 21766,24886 21767,24891 21770,24894 21772,24894 21772,24899 21777,24902 21781,24897 21786,24894 21787,24895 21790,24899 21791,24899 21795,24903 21798,24903 21801,24905 21804,24906 21806,24910 21808,25910 17808,25905 17812,25906 17813,28906 17813,28906 17813,28911 17817,28912 17812,28916 17813,33916 17818,33916 17818,33916 17820,33912 17820,33915 17823,33915 17826,33910 17826,33914 17829,33910 17833,33910 17836,33913 17837,33918 17841,33923 17840,33920 17840,33919 17842,33922 17838,33925 17835,33923 17836,33920 17838,33916 17840,33917 17845,33912 17850,33912 21850,33916 21846,33917 21841,33918 21844,33922 21844,33923 21844,33927 21844,33928 21849,33933 21850,33937 21851,33937 21853,33940 21855,33939 21858,33944 21855,33945 24855,33946 24858,33950 24860,33951 24864,33952 24861,33957 24864,33959 24867,33954 24865,33959 24867,33963 24867,33961 24867,33963 24871,34963 24874,34967 24874,34967 24874,34969 24870,34965 24875,34965 25875,34969 25880,34974 25883,34972 25883,34973 25885,34976 25889,34979 25890,34981 25894,34984 25897,34989 25899,34986 25900,34990 25901,34990 25901,34993 25902,34996 25902,35000 25903,35001 25906,35006 25909,35007 29909,35009 29905,35008 29906,35008 29908,35012 29908,31012 29911,31017 29906,31017 29908,21054 31778,21054 31775,21059 31780,21057 31780,21059 31783,21059 31781,21064 29781,21065 29786,21070 29787,21074 29787,21079 29792,21082 29792,21083 29791,21085 29793,21086 29794,21086 29794,21088 29797,21085 29797,21085 29800,21083 29804,21088 29808,21088 29804,552 1401,554 1401,555 1404,555 1404,559 1409,561 1410,561 1412,561 1413,557 1414,561 1419,564 1417,565 1420,568 1421,573 1425,578 1426,583 1430,584 1432,587 1433,588 1433,592 1437,592 1438,592 1442,591 1444,596 1444,597 1449,592 1449,502 2350,503 2352,505 2349,508 2349,508 2350,506 2350,506 2353,511 2357,511 2359,511 2361,508 2362,512 3362,517 3365,4517 3366,4518 3366,4513 3367,4512 3370,4509 3365,4510 3370,4510 3371,4513 3371,4513 3374,4517 3373,4517 3375,4514 3375,4515 3374,4516 3378,4516 3383,4516 3387,516 3392,516 3393,521 3394,521 -1606,522 -1601,518 -1601,519 -1603,521 -1598,526 -1603,528 -1603,527 -1601,527 -1600,523 -1603,526 -1601,529 -1598,532 -1594,531 -1590,531 -1594,527 -1595,532 -1591,536 -1586,539 3414,541 3419,546 3419,551 3422,551 3427,553 3429,558 3432,557 3433,558 3438,559 3442,560 3445,556 3448,555 3446,559 3446,560 3442,560 3439,561 3442,563 3443,564 3448,562 3448,5562 3453,5560 3454,5563 3454,5565 3456,5562 3457,5557 3456,5557 -544,5558 -543,5561 -538,5562 -535,5563 -533,5563 -530,5568 -525,5568 -523,5572 -518,5567 -514,5571 -516,5571 -514,5571 -514,5572 -510,5575 -512,5578 -512,5579 -508,5581 -506,5584 -503,5579 -502,5581 -505,10581 -505,10583 -500,12583 -499,12587 -498,12587 -499,12588 -497,12589 -502,12589 -500,12594 -498,12592 -498,12595 -498,12600 -496,12604 -494,12609 2506,12611 5506,12614 5511,12615 5516,12617 5518,12620 5522,12620 5519,12623 5521,12621 5524,12626 5526,12625 5531,12625 5531,12627 5532,12632 5531,12635 5536,12636 7536,12641 7540,12642 7540,12647 7543,11909 52812,11911 52817,11912 52817,11917 52814,11918 52819,11920 52819,11923 52823,11928 52818,11924 52813,11928 52812,11929 54812,11931 54813,11927 54813,11929 54818,11929 54822,11931 54823,11935 54824,11931 54828,11931 54833,11930 54830,11931 54832,11935 54835,11939 54830,11942 54827,11942 54828,11943 54828,11946 54825,11943 54826,11948 54829,11952 54824,11952 54828,11954 54830,11955 54830,11953 54835,11958 59835,11959 59838,11960 59836,11965 59840,11965 59843,11970 59840,11974 59840,11971 59842,11975 59847,11976 59848,11981 59848,11986 59853,11987 63853,11992 63854,11993 65854,11995 65850,11998 65852,12003 65856,12000 65859,12002 65859,12006 65854,12011 65855,12013 65856,12017 65861,12022 65861,12022 65856,12022 65857,8022 65859,8026 65862,8030 65863,8026 65865,8030 65866,8026 65871,8026 65871,3026 65869,3021 65870,3023 65875,3028 65876,3033 65878,3038 65874,3039 65878,3039 65882,3043 65880,3044 65880,3043 65884,3043 65888,3047 65889,3047 65890,3047 65890,3047 63890,3043 63892,3046 63896,3041 63895,3039 63898,3034 63900,3035 63901,3032 63903,3034 63906,3036 63906,3034 63908,3034 63913,3036 63911,3037 63916,3039 63911,3041 63913,3045 63915,3047 63915,3045 63917,3046 63921,3046 63921,3049 63920,3053 63923,3050 63927,3055 63930,3058 63933,3058 63932,3058 63934,3053 63931,3054 63933,3058 63936,3063 63940,3063 63939,-937 63940,-940 63944,-938 63945,-938 63946,-934 63948,-935 63945,-932 63948,-928 63950,-927 63954,-922 67954,-918 67951,-917 67956,-915 67960,-914 67965,-912 67967,-914 67971,-914 67971,-918 67976,-916 67973,-911 67973,-909 67978,-906 67981,-903 67982,-900 67982,-899 67978,-895 67981,-892 67985,-890 67987,-885 67982,-884 67984,-883 67984,-880 67985,-879 67985,-874 67981,-871 67981,-871 67986,-868 67986,-868 67981,-865 67979,-864 70979,-859 70984,-856 70985,-856 70990,-855 70991,-857 70989,-859 70991,-856 70986,-854 70991,-849 70994,-849 70997,-852 71002,-851 71007,-851 71009,-850 71009,-846 71011,-843 71011,-842 71011,-839 71011,-837 71016,-837 71016,-833 71018,-835 71022,2165 71022,2166 71018,7166 71017,7163 71017,7164 71018,7162 71016,7166 71013,7166 71013,7171 71010,7175 71010,7173 71012,7176 71017,7174 71021,11174 71021,11171 66021,11176 66021,11181 66018,11181 66023,11186 66022,11182 66027,11184 63027,11186 63031,11187 63033,11191 63034,11188 63031,11189 63036,11184 63037,11185 63038,11187 66038,11187 66038,11189 66038,11191 66038,11189 66034,11192 66036,11197 66037,12197 66041,12200 66044,12203 66042,12206 66046,12204 66046,12205 66048,12209 66048,12212 66043,12216 66040,12213 66043,12218 63043,12223 63038,12227 63033,12227 63038,12231 63040,12233 63040,12235 63045,12235 63045,12230 63044,12235 68044,12237 68044,12235 68049,12231 68045,12226 68050,12229 68052,12234 68052,12231 68056,12236 68059,12236 68062,12241 70062,12241 70063,12244 70063,12245 70068,12247 70068,12248 70071,12251 70071,12252 70071,12251 70073,12248 70075,12253 70080,12256 70084,12257 70088,12256 70088,12256 70089,12251 70089,17251 70090,17247 70090,17249 70091,17249 70088,17252 70084,17256 70085,17260 70086,16260 70084,16261 70083,16256 70079,16257 70076,16258 70072,16258 70077,16262 70081,16260 70084,16263 70087,16263 70088,16267 70090,16267 70093,16267 70097,16267 70100,16267 70101,16270 70103,16270 70105,16270 70108,16274 70110,16274 70113,16275 70115,16277 70115,16273 70115,16274 70120,16279 70117,16284 70117,16288 69117,16287 69121,16287 69123,16288 69119,16288 69122,16292 69125,16292 69122,16290 69125,16288 69125,16290 69126,16295 69122,3037 63916,3042 63920,3047 63925,3048 63928,3053 63928,3056 63931,3056 63930,3052 63932,3051 63935,3056 63938,3055 63935,3059 63932,3059 63937,3061 63942,3065 63945,3069 63942,6069 63940,6064 63945,6067 63948,6067 63947,6068 63951,10068 63953,10072 63953,10071 63951,10071 63956,10071 63958,10075 63958,10079 63953,10082 63958,10084 63959,10086 63959,10090 63960,10094 63955,10099 63955,10101 63956,10099 63952,10099 63949,10103 63953,10106 63956,10108 63956,10109 63956,10114 63959,10118 63959,10120 63960,10122 63963,10122 63968,10125 63969,10125 64969,10130 64971,10130 64973,10134 64974,10134 64979,10139 64984,10139 64987,10142 64988,10137 64992,10140 64995,10141 65995,10142 65999,10145 66000,10142 66002,10145 66002,10144 66004,10149 66002,10153 66007,8153 66007,8155 66011,8155 66011,8155 66011,8156 66011,9156 66013,9158 66014,9160 66014,9165 66017,9169 66022,9170 66023,9170 66023,9170 66028,9171 66031,9175 66033,9175 66033,9173 66035,9177 66034,9177 66039,9177 66044,9177 66044,9173 66044,9171 66044,9174 66046,9177 66050,9177 66047,9180 66051,9180 66055,9184 66055,9184 66051,9187 66056,9184 66057,9187 66053,9187 66055,9192 66056,9195 66061,9195 66066,9195 66071,9200 66076,9195 66075,9200 66080,9200 66080,9202 66076,9204 66079,9202 66079,9198 66079,11198 66083,11199 66087,11199 66088,11204 66088,11206 66089,11206 66093,11211 66088,11211 66091,11206 71091,11205 71090,11207 71094,11207 71098,11211 71102,11210 71103,11211 71107,11212 71107,11216 71105,11216 71108,11216 71113,11217 71108,11220 71113,11217 71113,11217 72113,11218 72115,11220 72117,11220 72121,11221 72124,11225 72120,11229 72117,11226 72118,11230 72122,11230 72123,11232 72127,11236 72132,11241 72133,11246 72135,11250 72139,11247 72141,11252 72141,11256 72143,11259 75143,11258 75146,11261 75151,11265 75149,11269 75153,11270 75158,11273 75160,11274 75165,11270 75166,11270 75166,11274 75165,11279 75167,11283 75170,11286 75166,11285 75168,11282 75165,6282 75163,6283 75167,6288 75170,6293 75175,6290 75178,6292 75179,6292 75182,6293 75181,31996 25856,31998 25856,32003 25857,32007 25862,32007 25857,32009 25857,32010 25858,32015 25854,32014 25857,32019 25857,32021 25852,32024 25852,32024 25854,32026 25851,32028 25855,32032 25855,32028 25858,32031 25860,32031 25863,32026 25867,32029 25868,32029 25869,32034 25872,32035 25875,32040 25878,32042 25883,32043 25881,32045 25885,32048 25884,32052 25881,32056 25878,32056 25874,32059 25878,32063 25882,32066 25885,32067 25885,32070 25885,37070 25885,37072 25889,37075 25890,37075 25885,37080 25890,37080 25892,37084 25888,37086 25893,37090 25898,37091 25895,37096 25897,37101 25902,37096 25905,37101 25906,37101 25909,37102 25914,37100 25914,37104 25914,37109 25917,37111 25919,37111 25924,37113 25925,37118 25923,37122 25927,37123 25929,17800 10713,17805 10708,17808 10711,17813 10715,17813 13715,17808 13719,17804 13714,17807 13717,17808 13722,17810 13724,17811 13728,17816 13730,17820 13733,17822 13736,17823 13736,17824 13740,17824 13745,18767 22750,18768 22754,18773 22754,18775 22757,18779 22760,18784 22763,18781 22767,18776 22767,18776 22769,18778 22772,18774 22773,18770 22774,18774 22776,18774 22777,18770 22781,18771 26781,18768 26785,18770 26787,18775 26787,18770 26789,18773 26793,18778 26795,18783 26796,18785 26799,18785 26801,18789 26798,18794 26799,18794 26801,18789 26803,18793 26806,18795 31806,18791 31810,18794 31814,18797 31817,18802 31813,18806 31815,18806 31819,18810 31824,18807 31828,18812 31830,18813 31826,18815 31828,18816 31829,18821 31831,18821 31833,18822 31836,18822 31838,18826 31841,18828 31846,5666 501,5668 506,5669 1506,5672 1508,5674 1512,7674 1512,7679 1513,7679 1512,7684 1513,7689 1511,7686 1515,7691 1520,7689 520,7689 521,7690 524,7695 520,4695 521,4696 526,4698 526,4699 531,4702 531,4699 535,4702 538,4698 540,4699 4540,4702 4537,4707 4540,4707 4537,4709 4537,4711 4542,4713 4542,4718 4544,4720 4549,4716 4553,4717 4556,4722 4561,4726 4562,4726 4563,4731 4564,4735 4565,4735 4570,4733 4572,9733 4574,9736 4577,9736 577,9737 572,9737 569,9742 570,9747 575,9747 580,9748 1580,9747 1585,9747 1588,9747 1588,9747 1592,9747 1592,9751 1592,9754 1593,9751 1595,9756 1599,11756 1603,11759 1607,11756 1610,11754 1613,11749 1613,11750 4613,11749 2613,11746 2610,11749 2608,11752 2611,11754 2607,11759 2612,11762 2612,11763 2612,11764 2613,11765 2613,11760 2615,11757 2620,11752 2623,11748 2627,11748 2631,11751 2632,11751 2633,11754 2635,11758 2639,11758 2643,11760 2646,11763 2646,11767 2649,11762 2652,11760 2652,11756 2656,11752 4656,11749 4659,11754 4662,11759 4666,11764 4670,11761 4666,11756 4669,11756 4670,11761 4671,11762 4673,11765 4678,11768 4680,11768 7680,12768 7677,12771 7680,12771 7683,12776 7683,12777 7688,12779 7688,12779 7684,12781 7679,13781 7682,13781 7684,13776 7684,13779 7685,13784 7685,13787 7689,13784 7689,13787 7689,13791 7685,13791 7686,13787 7691,13788 7696,13790 7693,13790 7696,13791 6696,13796 6698,13798 6695,13797 6698,13799 6701,13799 6704,13803 6709,13804 6705,13799 6708,13804 6703,13807 6705,13807 6708,13809 6710,13812 6714,13814 6716,13817 6718,13819 6722,13821 6717,13826 6718,13828 6717,13828 6721,13831 6721,13831 6720,13834 6715,13837 6712,13837 6713,13842 6715,13847 6715,13847 6714,13847 6709,13848 6712,13852 6714,13854 6719,13857 6723,13859 6726,13861 6730,13859 6731,13855 6731,13855 6731,13856 6728,13857 6730,13862 6731,13865 6731,13863 6729,13868 6729,13866 11729,13867 11732,13871 11732,13873 11737,13872 11741,13870 11745,13874 11744,13871 11748,13870 11753,13871 11757,13871 14757,13875 14759,13878 14760,13881 14760,13879 10760,13875 10765,13879 10767,13880 10770,13876 10775,13880 10776,13880 10776,13882 10776,13883 14776,13888 14779,13888 14779,13893 14779,13898 17779,13903 17784,13898 17788,13894 17788,13896 17788,13900 21788,13903 21784,18903 21789,18899 21789,18900 21793,18901 21794,18905 21795,18908 21792,18913 21794,13913 21796,13911 21798,13916 21799,13916 21799,13918 21804,13916 21800,13912 21799,13915 21794,13916 21797,13921 21799,13916 21802,13918 21806,13919 21810,13921 21813,13924 21817,13927 21814,13932 21816,13934 21811,13936 21811,13934 21814,18934 21816,18929 21816,18934 21815,18933 21817,18932 21822,18936 21819,18938 16819,18933 16822,18933 16822,18937 16822,18937 16827,18940 16827,18945 16830,18947 16829,18950 19829,18949 19829,18949 19829,18946 19825,18947 19828,18946 19829,18943 19829,18943 19824,14943 19829,14939 19830,14942 19831,14946 19835,14946 22835,14942 22836,14946 22831,14950 22832,14952 22835,14947 22840,14951 22844,14951 22845,14947 22850,14948 22851,14951 22849,14956 22852,14957 22852,14957 22857,14962 22857,14965 22859,14970 22860,14968 22862,14972 22864,14977 22866,14974 22870,14975 20870,14976 20870,14979 20873,14984 20869,14989 20871,14993 20874,14993 20877,14994 20878,14995 20878,14997 20883,14998 20879,15001 20884,15001 20884,15003 20889,15006 20884,15009 20885,15009 20883,15007 20880,15011 20876,15008 20877,15009 20873,15010 20875,15009 20875,10009 20876,10012 20871,10013 21871,10017 21872,10012 21873,10010 21874,10008 21871,10012 21870,10013 21874,11607 14571,11608 14575,11612 15575,11613 15576,11613 15577,11618 15578,11622 15581,11624 15585,11627 18585,11631 18587,11634 18590,11634 18586,11634 18586,11636 18591,11635 18591,11636 18596,11636 18592,13636 18593,13640 18595,13642 18600,13641 18600,13641 18604,13642 18607,13643 18611,13648 18611,13651 18613,13655 18615,13656 18620,13651 18618,13651 18616,13654 18611,13651 18616,18651 18620,18656 18620,18661 18621,18657 18625,18661 18627,18663 18628,18666 18633,18661 18637,18665 18639,18665 18639,18667 18641,18669 18641,22669 18642,22673 18644,22676 18648,22681 18649,22682 18649,22682 18646,19682 18646,19684 18646,19685 20646,19690 20646,19690 20643,19686 20643,19686 20643,19690 20647,19690 20647,19689 20652,19692 20653,19692 20656,19697 20661,19698 20662,19703 20666,19707 20669,19707 20673,19708 20674,19709 20675,19709 20677,19710 20674,19715 20675,19717 20673,19721 20673,19720 20677,19718 20677,19716 20680,19718 20681,19718 20685,19722 20688,19725 20688,19729 20685,19728 20687,19728 20690,19732 20691,19735 20691,19739 20691,19744 20696,16744 20693,16746 20695,16748 20695,16748 20691,16746 20696,16750 20699,16755 20704,16755 20709,16760 20710,16763 20711,16763 20711,16765 20707,16767 20705,16771 20706,16771 20708,16775 20706,9653 7576,9654 7577,9659 7576,9659 7572,9655 7575,9660 7579,9660 7579,9660 7583,9661 7588,9663 7591,9666 7590,9662 7592,9665 7593,9669 7594,9668 80000)') WHERE p = 1; +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; +ALTER TABLE t1 DROP INDEX spatial_idx, DROP INDEX prefix_idx; +connection con1; +# enable purge +COMMIT; +connection default; +DELETE FROM t1 WHERE p = 2; +# wait for purge to process the update_undo records. +CREATE TABLE t2 ( +p INT PRIMARY KEY, +g1 POINT NOT NULL, +g2 POINT NOT NULL, +g3 LINESTRING NOT NULL, +g4 LINESTRING NOT NULL, +g5 GEOMETRY NOT NULL, +g6 GEOMETRY NOT NULL, +SPATIAL KEY (g1), +SPATIAL KEY (g2), +SPATIAL KEY (g3), +SPATIAL KEY (g4), +SPATIAL KEY (g5), +SPATIAL KEY (g6) +) ENGINE=InnoDB ROW_FORMAT=COMPACT; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLE t0; +disconnect con1; diff --git a/mysql-test/suite/innodb_gis/r/types.result b/mysql-test/suite/innodb_gis/r/types.result new file mode 100644 index 00000000000..ac1802085d6 --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/types.result @@ -0,0 +1,80 @@ +SET SESSION debug="+d,row_print_geometry_data"; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +CREATE TABLE t_wl6455 ( i INT, g GEOMETRY NOT NULL) ENGINE=InnoDB; +SHOW CREATE TABLE t_wl6455; +Table Create Table +t_wl6455 CREATE TABLE `t_wl6455` ( + `i` int(11) DEFAULT NULL, + `g` geometry NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +INSERT INTO t_wl6455 VALUES(1, POINT(1,1)); +INSERT INTO t_wl6455 VALUES(2, POINT(2,2)); +SET @mp = 'MULTIPOINT(0 0, 20 20, 60 60)'; +INSERT INTO t_wl6455 VALUES(3, ST_GeomFromText(@mp)); +INSERT INTO t_wl6455 VALUES(4, LINESTRING(POINT(1,1), POINT(4, 4))); +INSERT INTO t_wl6455 VALUES(5, LINESTRING(POINT(2,2), POINT(5, 5))); +SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; +INSERT INTO t_wl6455 VALUES(6, ST_GeomFromText(@mls)); +SET @poly = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; +INSERT INTO t_wl6455 VALUES(7, ST_GeomFromText(@poly)); +SET @mpoly = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; +INSERT INTO t_wl6455 VALUES(8, ST_GeomFromText(@mpoly)); +SET @gc = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; +INSERT INTO t_wl6455 VALUES(9, ST_GeomFromText(@gc)); +SELECT ST_AsText(g) FROM t_wl6455; +ST_AsText(g) +POINT(1 1) +POINT(2 2) +MULTIPOINT(0 0,20 20,60 60) +LINESTRING(1 1,4 4) +LINESTRING(2 2,5 5) +MULTILINESTRING((1 1,2 2,3 3),(4 4,5 5)) +POLYGON((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1)) +MULTIPOLYGON(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +CREATE INDEX i_p ON t_wl6455 (g(10)); +EXPLAIN SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(2,2); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t_wl6455 ref i_p i_p 12 const 2 # +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(2,2); +ST_AsText(g) +POINT(2 2) +SET AUTOCOMMIT = 0; +INSERT INTO t_wl6455 VALUES(10, POINT(10,10)); +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(10,10); +ST_AsText(g) +POINT(10 10) +ROLLBACK; +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(10,10); +ST_AsText(g) +INSERT INTO t_wl6455 VALUES(10, POINT(10,10)); +COMMIT; +INSERT INTO t_wl6455 VALUES(11, POINT(11,11)); +BEGIN; +INSERT INTO t_wl6455 VALUES(1, POINT(1,1)); +# Kill and restart +CHECK TABLE t_wl6455; +Table Op Msg_type Msg_text +test.t_wl6455 check status OK +SELECT ST_AsText(g) FROM t_wl6455; +ST_AsText(g) +POINT(1 1) +POINT(2 2) +MULTIPOINT(0 0,20 20,60 60) +LINESTRING(1 1,4 4) +LINESTRING(2 2,5 5) +MULTILINESTRING((1 1,2 2,3 3),(4 4,5 5)) +POLYGON((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1)) +MULTIPOLYGON(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))) +GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3)) +POINT(10 10) +POINT(11 11) +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/t_wl6455' AND sc.NAME='g'; +name pos mtype +g 1 14 +DROP TABLE t_wl6455; diff --git a/mysql-test/suite/innodb_gis/r/update_root.result b/mysql-test/suite/innodb_gis/r/update_root.result new file mode 100644 index 00000000000..a39910818da --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/update_root.result @@ -0,0 +1,19 @@ +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; +create procedure insert_t1(IN total int) +begin +declare i int default 1; +while (i <= total) DO +insert into t1 values (i, Point(i, i)); +set i = i + 1; +end while; +end| +CALL insert_t1(70000); +CALL insert_t1(90); +CALL insert_t1(90); +CALL insert_t1(83); +insert into t1 values (0, Point(0.9, 0.9)); +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test index 7513d0ddb39..d0a5dc584c5 100644 --- a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test +++ b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test @@ -753,3 +753,23 @@ ALTER TABLE t1 ADD SPATIAL INDEX(p); --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1 FORCE, LOCK=NONE; DROP TABLE t1; + +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb; +set timestamp=10; +--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD +insert into t1 values(default); +drop table t1; +SET timestamp=default; + +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))) ENGINE=innodb; +set timestamp=10; +--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD +alter table t1 add column i int; +drop table t1; +SET timestamp=default; + +CREATE OR REPLACE TABLE t1 (a INT) ENGINE=InnoDB; +--error ER_CANT_CREATE_GEOMETRY_OBJECT +ALTER TABLE t1 ADD COLUMN b POINT DEFAULT '0'; +DROP TABLE t1; + diff --git a/mysql-test/suite/innodb_gis/t/bug16236208.test b/mysql-test/suite/innodb_gis/t/bug16236208.test new file mode 100644 index 00000000000..ef2da6f2ab1 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/bug16236208.test @@ -0,0 +1,65 @@ +#******************************************************** +# Bug 16236208 - GEOMETRY : SERVER CRASHES IN +# SEL_TREES_CAN_BE_ORED WHEN THE QUERY USES GIS COLS. +#******************************************************** + +--source include/have_geometry.inc +--source include/not_embedded.inc +--source include/have_innodb.inc + +--disable_warnings +DROP TABLE IF EXISTS linestring; +--enable_warnings + +CREATE TABLE linestring (pk INTEGER NOT NULL PRIMARY KEY, linestring_key +GEOMETRY NOT NULL, linestring_nokey GEOMETRY NOT NULL) ENGINE=InnoDB ; + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (1, +ST_GeomFromText('POINT(10 10) '), ST_GeomFromText('POINT(10 10) ')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (2, +ST_GeomFromText('LINESTRING(10 10,20 20,30 30)'), ST_GeomFromText('LINESTRING(10 +10,20 20,30 30)')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (3, +ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 +10))'), ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 +40,10 10))')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (4, +ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) '), ST_GeomFromText('MULTIPOINT(0 +0,5 5,10 10,20 20) ')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (5, +ST_GeomFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'), +ST_GeomFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (6, +ST_GeomFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 +9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'), +ST_GeomFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 +9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')); + +INSERT INTO linestring (pk, linestring_key, linestring_nokey) VALUES (7, +ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'), +ST_GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')); + +CREATE INDEX linestring_index ON linestring(linestring_nokey(5)); +ALTER TABLE linestring ADD KEY (linestring_key(5)); + +--error ER_GIS_INVALID_DATA +SELECT ST_AsText(linestring_nokey) FROM linestring FORCE KEY ( +linestring_key ) WHERE ST_CONTAINS( ST_GeomFromText('POLYGON( ( 3923 2815 , 4246 +2122 , 4028 2971 , 4017 3019 , 3923 2815 ) )') , linestring_key ) AND +ST_WITHIN( ST_GeomFromText('POLYGON( ( 4135 3009 , 4914 3087 , 4236 3194 , 4091 +3036 , 4022 3004 , 4087 3004 , 3853 2825 , 3490 3118 , 3784 3141 , 4052 3072 +, 4205 2787 , 4024 2951 , 4076 3036 , 4041 3053 , 3789 3401 , 4080 3100 , +4169 2867 , 4056 3029 , 4715 3943 , 4052 3098 , 4035 3080 , 4013 3077 , 4218 +2915 , 3789 2980 , 4058 3046 , 4042 3043 , 4135 3009 ) )') , linestring_nokey +) AND ST_CONTAINS( ST_GeomFromText('POLYGON( ( 4082 2842 , 3678 3647 , 3420 3068 +, 4018 3030 , 4082 2842 ) )') , linestring_key ) OR ST_INTERSECTS( +ST_GeomFromText('MULTILINESTRING( ( 4147 2871 , 4072 3042 , 4081 3099 , 3796 +3021 , 4007 3463 ) , ( 4042 2808 , 4109 2816 , 3730 3673 ) )') , +linestring_key ) AND ST_Length( linestring_nokey ) > 1; + +DROP TABLE linestring; diff --git a/mysql-test/suite/innodb_gis/t/bug16266012.test b/mysql-test/suite/innodb_gis/t/bug16266012.test new file mode 100644 index 00000000000..17986998fc9 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/bug16266012.test @@ -0,0 +1,18 @@ +#******************************************************** +# Bug 16266012 - GEOMETRY : SERVER CRASHES IN +# COLLECTION_INIT_FROM_OPRESULT +#******************************************************** + +--source include/have_geometry.inc +--source include/not_embedded.inc +--source include/have_debug.inc +--error ER_BOOST_GEOMETRY_OVERLAY_INVALID_INPUT_EXCEPTION +SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING( 5 9 , 3 4 , 4 1 , 4 +4 , 4 9 ) ') , ST_SYMDIFFERENCE( ST_UNION( ST_ENVELOPE( POLYGONFROMTEXT(' +POLYGON( ( 3 2 , 0 6 , 2 3 , 8 0 , 4 6 , 7 2 , 3 2 ) ) ') ) , +MULTIPOLYGONFROMTEXT(' +MULTIPOLYGON( ( ( 0 0 , 7 1 , 6 8 , 0 0 ) ) , ( ( 9 9 , 4 0 , 4 7 , 9 9) ) ) +') ) , ST_SYMDIFFERENCE( POLYGONFROMTEXT(' POLYGON( ( 9 9 , 6 5 , 2 3 , 9 9 +) ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( ( 2 2 , 5 2 , 5 2 , 2 6 , 2 +2 ) ) , ( ( 7 7 , 3 7 , 2 9 , 7 1 , 7 7 ) ) ) ') ) ) ); + diff --git a/mysql-test/suite/innodb_gis/t/bug17057168.test b/mysql-test/suite/innodb_gis/t/bug17057168.test new file mode 100644 index 00000000000..5ca2c8b035f --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/bug17057168.test @@ -0,0 +1,33 @@ +#******************************************************** +# Bug 17057168 - LARGE PERFORMANCE REGRESSION FOR INNODB +# GEOMETRY/SPATIAL INDEX LOOKUP +#******************************************************** +--source include/have_geometry.inc +--source include/not_embedded.inc +--source include/no_valgrind_without_big.inc +--source include/have_innodb.inc + +CREATE DATABASE geotest; +use geotest; +CREATE TABLE tmp (id int unsigned NOT NULL PRIMARY KEY); +INSERT INTO tmp VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); +INSERT INTO tmp SELECT 10+id FROM tmp; +INSERT INTO tmp SELECT 20+id FROM tmp; +INSERT INTO tmp SELECT 40+id FROM tmp; +INSERT INTO tmp SELECT 80+id FROM tmp; + +CREATE TABLE t1 (id int unsigned NOT NULL auto_increment PRIMARY KEY, +location point, INDEX (location)) ENGINE=InnoDB; +INSERT INTO t1 (location) SELECT POINT(tmp1.id, tmp2.id) FROM tmp tmp1, +tmp tmp2 ORDER BY tmp1.id, tmp2.id; + +#Befor fix, the row number will be the total number of index recs, +#After fix, the row number will be 1. +EXPLAIN SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1, +2); +SELECT id, ST_AsText(location) FROM t1 WHERE location = POINT(1, 2); + +DROP TABLE t1; +DROP TABLE tmp; + +DROP DATABASE geotest; diff --git a/mysql-test/suite/innodb_gis/t/geometry.test b/mysql-test/suite/innodb_gis/t/geometry.test new file mode 100644 index 00000000000..6450e82e2e4 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/geometry.test @@ -0,0 +1,704 @@ +#******************************************************** +# wl6455: GIS Datatypes covers the following tests. +# DDL: ALTER PRIMARY, DROP KEY,INDEX,COLUMN TYPE etc +# INSERT/SELECT operations with WKT & WKB functions +# SELECT/DELETE/UPDATE with =,>,< predicate conditions +# Datatypes with Procedure (IN/INOUT/OUT,Cursors,Trigger) +# Datatypes with Aggregate functions +# File Formts Compressed & Dynamic +# All Geometric functions. +#******************************************************** +--source include/have_geometry.inc +--source include/not_embedded.inc +--source include/have_debug.inc +--source include/have_innodb.inc + +SET default_storage_engine=InnoDB; +SET innodb_strict_mode=OFF; + +# Turn on the geometry data print. +SET SESSION debug="+d,row_print_geometry_data"; + +SHOW VARIABLES LIKE '%engine%'; + +# +# Spatial objects +# + +USE test; + +--disable_warnings +DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon; +DROP TABLE IF EXISTS gis_multi_point, gis_multi_line, gis_multi_polygon; +DROP TABLE IF EXISTS gis_geometrycollection, gis_geometry; +DROP TABLE IF EXISTS tab,tab2,tab3,parent,emp2; +DROP PROCEDURE IF EXISTS geominout; +DROP PROCEDURE IF EXISTS geom_insert; +DROP TRIGGER IF EXISTS geom_trigger; +DROP PROCEDURE IF EXISTS geom_cursor; + + +--enable_warnings + +CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT) ENGINE=InnoDB; +CREATE TABLE gis_line (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING) ENGINE=InnoDB; +CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON) ENGINE=InnoDB; +CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT) ENGINE=InnoDB; +CREATE TABLE gis_multi_line (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING) ENGINE=InnoDB; +CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON) ENGINE=InnoDB; +CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION) ENGINE=InnoDB; +CREATE TABLE gis_geometry (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY) ENGINE=InnoDB; + +SHOW FIELDS FROM gis_point; +SHOW FIELDS FROM gis_line; +SHOW FIELDS FROM gis_polygon; +SHOW FIELDS FROM gis_multi_point; +SHOW FIELDS FROM gis_multi_line; +SHOW FIELDS FROM gis_multi_polygon; +SHOW FIELDS FROM gis_geometrycollection; +SHOW FIELDS FROM gis_geometry; + +--echo #INSERT using all WKT & WKB functions +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); + + +INSERT INTO gis_line VALUES +(105, ST_LineFromText('LINESTRING(0 0,0 10,10 0)')), +(106, ST_LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')), +(107, ST_LineStringFromWKB(ST_AsWKB(LineString(Point(10, 10), Point(40, 10))))); + + +INSERT INTO gis_polygon VALUES +(108, ST_PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')), +(109, ST_PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')), +(110, ST_PolyFromWKB(ST_AsWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))))); + + +INSERT INTO gis_multi_point VALUES +(111, ST_MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')), +(112, ST_MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')), +(113, ST_MPointFromWKB(ST_AsWKB(MultiPoint(Point(3, 6), Point(4, 10))))); + + +INSERT INTO gis_multi_line VALUES +(114, ST_MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')), +(115, ST_MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')), +(116, ST_MLineFromWKB(ST_AsWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))))); + + +INSERT INTO gis_multi_polygon VALUES +(117, ST_MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)), +((59 18,67 18,67 13,59 13,59 18)))')), +(118, ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26), +(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')), +(119, ST_MPolyFromWKB(ST_AsWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))))); + + +INSERT INTO gis_geometrycollection VALUES +(120, ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), +(121, ST_GeometryCollectionFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))')), +(122, ST_GeometryFromWKB(ST_AsWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))))); + +--echo #check INSERT using SELECT query +INSERT into gis_geometry SELECT * FROM gis_point; +INSERT into gis_geometry SELECT * FROM gis_line; +INSERT into gis_geometry SELECT * FROM gis_polygon; +INSERT into gis_geometry SELECT * FROM gis_multi_point; +INSERT into gis_geometry SELECT * FROM gis_multi_line; +INSERT into gis_geometry SELECT * FROM gis_multi_polygon; +INSERT into gis_geometry SELECT * FROM gis_geometrycollection; + +--echo #check format coversion functions & spatial values +SELECT fid, ST_AsText(g) FROM gis_point; +SELECT fid, ST_AsText(g) FROM gis_line; +SELECT fid, ST_AsText(g) FROM gis_polygon; +SELECT fid, ST_AsText(g) FROM gis_multi_point; +SELECT fid, ST_AsText(g) FROM gis_multi_line; +SELECT fid, ST_AsText(g) FROM gis_multi_polygon; +SELECT fid, ST_AsText(g) FROM gis_geometrycollection; +SELECT fid, ST_AsText(g) FROM gis_geometry; + +--echo #2.1 check DDL functionality on GIS datatypes +CREATE TABLE tab(c1 POINT,c2 LINESTRING,c3 POLYGON,C4 MULTIPOINT,c5 MULTILINESTRING , +c6 MULTIPOLYGON,c7 GEOMETRYCOLLECTION ,c8 GEOMETRY) ENGINE=InnoDB; + +--echo #check information schema for all the columns refer to 14, except POINT which is 15 +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/tab' +ORDER BY sc.name; + +--echo #check Perform convesrion before INSERT using WKT functions +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #Insert the spatial values +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); + +--echo #check index on GIS datatypes +CREATE INDEX idx1 on tab(c2(5) DESC) USING BTREE; +CREATE INDEX idx3 on tab(c3(5) ASC) USING BTREE; +CREATE UNIQUE INDEX idx2 on tab(c8(5) ASC) ; + +--echo #check equality predicate on the index columns +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); + +--echo #check index with WKT function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab +WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))); + +--echo #check index with WKT function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); + +--echo #check range predicate on the index columns +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); + +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); + +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab +WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #check index with DELETE operation +--replace_column 10 # +EXPLAIN DELETE FROM tab +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); + + +--echo #check the spatial values +SELECT ST_AsText(c1) FROM tab; +SELECT ST_AsText(c2) FROM tab; +SELECT ST_AsText(c3) FROM tab; +SELECT ST_AsText(c4) FROM tab; +SELECT ST_AsText(c5) FROM tab; +SELECT ST_AsText(c6) FROM tab; +SELECT ST_AsText(c7) FROM tab; +SELECT ST_AsText(c8) From tab; + +--echo #check by modify the column type +ALTER TABLE tab MODIFY COLUMN c1 Geometry; +ALTER TABLE tab MODIFY COLUMN c2 Geometry; +ALTER TABLE tab MODIFY COLUMN c3 Geometry; +ALTER TABLE tab MODIFY COLUMN c4 Geometry; +ALTER TABLE tab MODIFY COLUMN c5 Geometry; +ALTER TABLE tab MODIFY COLUMN c6 Geometry; +ALTER TABLE tab MODIFY COLUMN c7 Geometry; + +--echo #check column datatypes +SHOW FIELDS FROM tab; + +--echo #check the data after modify +SELECT ST_AsText(c1) FROM tab; +SELECT ST_AsText(c2) FROM tab; +SELECT ST_AsText(c3) FROM tab; +SELECT ST_AsText(c4) FROM tab; +SELECT ST_AsText(c5) FROM tab; +SELECT ST_AsText(c6) FROM tab; +SELECT ST_AsText(c7) FROM tab; +SELECT ST_AsText(c8) From tab; + +--echo #check by modify the column type +ALTER TABLE tab MODIFY COLUMN c1 POINT; +ALTER TABLE tab MODIFY COLUMN c2 LINESTRING; +ALTER TABLE tab MODIFY COLUMN c3 POLYGON; +ALTER TABLE tab MODIFY COLUMN c4 MULTIPOINT; +ALTER TABLE tab MODIFY COLUMN c5 MULTILINESTRING; +ALTER TABLE tab MODIFY COLUMN c6 MULTIPOLYGON; +ALTER TABLE tab MODIFY COLUMN c7 GEOMETRYCOLLECTION; + +--echo #check column datatypes +SHOW FIELDS FROM tab; + +--echo #check the data after modify +SELECT ST_AsText(c1) FROM tab; +SELECT ST_AsText(c2) FROM tab; +SELECT ST_AsText(c3) FROM tab; +SELECT ST_AsText(c4) FROM tab; +SELECT ST_AsText(c5) FROM tab; +SELECT ST_AsText(c6) FROM tab; +SELECT ST_AsText(c7) FROM tab; +SELECT ST_AsText(c8) From tab; + +--echo #check change the column type +ALTER TABLE tab MODIFY COLUMN c1 BLOB; + +--echo #check column datatypes +SHOW CREATE TABLE tab; + +--echo #check the data after modify +SELECT ST_AsText(c1) FROM tab; + +--echo #change the column name +ALTER TABLE tab CHANGE COLUMN c1 c0 GEOMETRY ; + + +--echo #check column datatypes +SHOW FIELDS FROM tab; + +--echo #add primary key +ALTER TABLE tab ADD PRIMARY KEY pk2(c8(5)); + +--echo #check columns +SHOW FIELDS FROM tab; + +--echo #drop key +ALTER TABLE tab DROP PRIMARY KEY; + +--echo #check columns +SHOW FIELDS FROM tab; + +--echo #cleanup the table +TRUNCATE TABLE tab; + +--echo #check with procedures + +delimiter |; + +--echo #crate proc with INOUT params +CREATE PROCEDURE geom_insert(IN c1 POINT,IN c2 LINESTRING,IN c3 POLYGON, +IN c4 MULTIPOINT,IN c5 MULTILINESTRING, IN c6 MULTIPOLYGON,IN c7 GEOMETRYCOLLECTION, +IN c8 GEOMETRY) +BEGIN +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +END | + +delimiter ;| + +--echo #set the spatial values +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #call the proc +CALL geom_insert(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); + +--echo #check the values ofter proc call +SELECT ST_AsText(c0) FROM tab; +SELECT ST_AsText(c2) FROM tab; +SELECT ST_AsText(c3) FROM tab; +SELECT ST_AsText(c4) FROM tab; +SELECT ST_AsText(c5) FROM tab; +SELECT ST_AsText(c6) FROM tab; +SELECT ST_AsText(c7) FROM tab; +SELECT ST_AsText(c8) From tab; + + +--echo #set the input spatial value +SET @c9=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +delimiter |; + +--echo #crate a proc with INOUT params and pass a value. +CREATE PROCEDURE geominout(INOUT c9 GEOMETRY) +BEGIN + +SELECT ST_AsText(@c9); +SET c9=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))'); + +END| + +delimiter ;| + +--echo #call the proc and then change the spatial value of c8 +CALL geominout(@c9); + +--echo #now check the out spatial values should be changed to new values +SELECT ST_AsText(@c9); + +#check GIS datatype with Triggers + +--echo #delete the records +TRUNCATE TABLE tab; + +--echo #create another table same as tab +CREATE TABLE tab2 AS SELECT * FROM tab; + +--echo #check the table definition +SHOW CREATE TABLE tab2; + + +delimiter |; + +--echo #create a tigger and populate the values into tab2 +CREATE TRIGGER geom_trigger AFTER INSERT ON tab +FOR EACH ROW +BEGIN + INSERT INTO tab2 VALUES (@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); +END| + +delimiter ;| + +--echo #set the spatial values +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #Insert the spatial values +INSERT INTO tab VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); + +--echo #check the values whether populated +SELECT ST_AsText(c0) FROM tab2; +SELECT ST_AsText(c2) FROM tab2; +SELECT ST_AsText(c3) FROM tab2; +SELECT ST_AsText(c4) FROM tab2; +SELECT ST_AsText(c5) FROM tab2; +SELECT ST_AsText(c6) FROM tab2; +SELECT ST_AsText(c7) FROM tab2; +SELECT ST_AsText(c8) From tab2; + +--echo #check Cursor with Geometry + +delimiter |; + +CREATE PROCEDURE geom_cursor() +BEGIN + DECLARE v GEOMETRY; + DECLARE c CURSOR FOR SELECT c8 FROM tab2; + + OPEN c; + FETCH c INTO v; + CLOSE c; + + SELECT ST_AsText(v); +END| + +delimiter ;| + +--echo # the following line was commented due the Bug#16282246 +--echo # Once it is fixed, the comment will be removed. +--echo # right now bug fixing date is unknown. +#CALL geom_cursor(); + +--echo check self join +SELECT ST_AsText(a.c0),ST_AsText(a.c2),ST_AsText(a.c3) +FROM tab a,tab2 b WHERE a.c0=b.c0 AND a.c2=b.c2 +AND a.c3=b.c3 AND a.c4=b.c4 AND a.c5=b.c5 AND a.c6=b.c6 +AND a.c7=b.c7 AND a.c8=b.c8; + +--echo #check equi join +SELECT ST_AsText(a.c2),ST_AsText(b.c2) FROM tab a,tab2 b WHERE a.c2=b.c2; + +--echo #check DELETE stmt with Where clause and a constant predicate +DELETE FROM tab +Where c8=c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); + +--echo #check the data, should 0 +SELECT COUNT(*) FROM tab; + +--echo #check UPDATE stmt with Where clause and a constant predicate +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(10 10),LineString(20 20, 30 30))'); +UPDATE tab2 SET c8=@c8 +WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); + +--echo #check the column should be modified to LINESTRING(10 10,20 20,30 30) +SELECT ST_AsText(c8) From tab2; + +--echo #check GIS datatypes with aggregate functions +SELECT COUNT(ST_AsText(g)) FROM gis_point; +SELECT COUNT(ST_AsText(g)) FROM gis_line; +SELECT COUNT(ST_AsText(g)) FROM gis_polygon; +SELECT COUNT(ST_AsText(g)) FROM gis_multi_point; +SELECT COUNT(ST_AsText(g)) FROM gis_multi_line; +SELECT COUNT(ST_AsText(g)) FROM gis_multi_polygon; +SELECT COUNT(ST_AsText(g)) FROM gis_geometrycollection; +SELECT COUNT(ST_AsText(g)) FROM gis_geometry; + +SELECT SUM(ST_AsText(g)) FROM gis_point; +SELECT SUM(ST_AsText(g)) FROM gis_line; +SELECT AVG(ST_AsText(g)) FROM gis_polygon; +--echo #here it show some string value no meaning +SELECT MAX(ST_AsText(g)) FROM gis_multi_point; +--echo #here it show some string value no meaning +SELECT MIN(ST_AsText(g)) FROM gis_multi_line; +SELECT STD(ST_AsText(g)) FROM gis_multi_polygon; +SELECT COUNT(ST_AsText(g)) FROM gis_geometrycollection; +SELECT AVG(ST_AsText(g)) FROM gis_geometry; + +--disable_warnings +--echo #check Datatypes with compression tables + +CREATE TABLE tab3(c1 POINT,c2 LINESTRING,c3 POLYGON,C4 MULTIPOINT,c5 MULTILINESTRING , +c6 MULTIPOLYGON,c7 GEOMETRYCOLLECTION ,c8 GEOMETRY) ENGINE=InnoDB +KEY_BLOCK_SIZE=8 ROW_FORMAT=COMPRESSED; + +--echo #check file format +SHOW CREATE TABLE tab3; + +ALTER TABLE tab3 KEY_BLOCK_SIZE=16 ROW_FORMAT=Dynamic; + +--echo #check file format +SHOW CREATE TABLE tab3; + +--echo #check information schema for all the columns refer to 14, except POINT which is 15 +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/tab3' +ORDER BY sc.name; + +--echo #check Perform convesrion before INSERT using WKT functions +SET @c1=ST_PointFromText('POINT(10 10)'); +SET @c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); +SET @c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); +SET @c4=ST_MPointFromText('MULTIPOINT(0 0,5 5,10 10,20 20)'); +SET @c5=ST_MLineFromText('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))'); +SET @c6=ST_MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'); +SET @c7=ST_GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'); +SET @c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #Insert the spatial values +INSERT INTO tab3 VALUES(@c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8); + +--echo #check index on GIS datatypes +CREATE INDEX idx1 on tab3(c2(5) DESC) USING BTREE; +CREATE INDEX idx3 on tab3(c3(5) ASC) USING BTREE; +CREATE UNIQUE INDEX idx2 on tab3(c8(5) ASC) ; + +--enable_warnings + +--echo #check equality predicate on the index columns +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c2=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); + +--echo #check index with WKT function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 +WHERE c3=ST_PolyFromWKB(ST_AsWkB(ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'))); + +--echo #check index with WKT function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c8=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); + +--echo #check range predicate on the index columns +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c2>=ST_LineFromText('LINESTRING(10 10,20 20,30 30)'); + +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3>=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); + +--replace_column 10 # +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c8>=ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'); + +--echo #check index with DELETE operation +--replace_column 10 # +EXPLAIN DELETE FROM tab3 +WHERE c8=ST_GeometryFromWKB(ST_AsWKB(ST_GeomCollFromText('GeometryCollection(Point(1 1),LineString(2 2, 3 3))'))); + + +--echo #check the spatial values +SELECT ST_AsText(c1) FROM tab3; +SELECT ST_AsText(c2) FROM tab3; +SELECT ST_AsText(c3) FROM tab3; +SELECT ST_AsText(c4) FROM tab3; +SELECT ST_AsText(c5) FROM tab3; +SELECT ST_AsText(c6) FROM tab3; +SELECT ST_AsText(c7) FROM tab3; +SELECT ST_AsText(c8) From tab3; + +--echo #check with Row_format = Dynamic +--disable_warnings +ALTER TABLE tab3 ROW_FORMAT=Dynamic; +--enable_warnings + +--echo #check file format +SHOW CREATE TABLE tab3; + +--echo #check index with WKB function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) +FROM tab3 WHERE c2=ST_LineStringFromWKB(ST_AsWKB(ST_LineFromText('LINESTRING(10 10,20 20,30 30)'))); + +--echo #check index with WKT function +--replace_column 10 # +EXPLAIN SELECT ST_ASText(c1),ST_AsText(c2),ST_AsText(c8) FROM tab3 +WHERE c3=ST_PolyFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'); + + + +--echo #check the Geometry property functions +SELECT fid, ST_Dimension(g) FROM gis_geometry; +SELECT fid, ST_GeometryType(g) FROM gis_geometry; +SELECT fid, ST_IsEmpty(g) FROM gis_geometry; +SELECT fid, ST_AsText(ST_Envelope(g)) FROM gis_geometry; +--replace_column 10 # +explain extended select ST_Dimension(g), ST_GeometryType(g), ST_IsEmpty(g), ST_AsText(ST_Envelope(g)) from gis_geometry; + +--echo #check Geometry point functions +SELECT fid, ST_X(g) FROM gis_point; +SELECT fid, ST_Y(g) FROM gis_point; +--replace_column 10 # +explain extended select ST_X(g),ST_Y(g) FROM gis_point; + +SELECT fid, ST_AsText(ST_StartPoint(g)) FROM gis_line; +SELECT fid, ST_AsText(ST_EndPoint(g)) FROM gis_line; +SELECT fid, ST_Length(g) FROM gis_line; +SELECT fid, ST_NumPoints(g) FROM gis_line; +SELECT fid, ST_AsText(ST_PointN(g, 2)) FROM gis_line; +SELECT fid, ST_IsClosed(g) FROM gis_line; +--replace_column 10 # +explain extended select ST_AsText(ST_StartPoint(g)),ST_AsText(ST_EndPoint(g)), +ST_Length(g),ST_NumPoints(g),ST_AsText(ST_PointN(g, 2)),ST_IsClosed(g) FROM gis_line; + +SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_polygon; +SELECT fid, ST_Area(g) FROM gis_polygon; +SELECT fid, ST_AsText(ST_ExteriorRing(g)) FROM gis_polygon; +SELECT fid, ST_NumInteriorRings(g) FROM gis_polygon; +SELECT fid, ST_AsText(ST_InteriorRingN(g, 1)) FROM gis_polygon; +--replace_column 10 # +explain extended select ST_AsText(ST_Centroid(g)),ST_Area(g),ST_AsText(ST_ExteriorRing(g)), +ST_NumInteriorRings(g),ST_AsText(ST_InteriorRingN(g, 1)) FROM gis_polygon; + +SELECT fid, ST_IsClosed(g) FROM gis_multi_line; + +SELECT fid, ST_AsText(ST_Centroid(g)) FROM gis_multi_polygon; +SELECT fid, ST_Area(g) FROM gis_multi_polygon; + +SELECT fid, ST_NumGeometries(g) from gis_multi_point; +SELECT fid, ST_NumGeometries(g) from gis_multi_line; +SELECT fid, ST_NumGeometries(g) from gis_multi_polygon; +SELECT fid, ST_NumGeometries(g) from gis_geometrycollection; +--replace_column 10 # +explain extended SELECT fid, ST_NumGeometries(g) from gis_multi_point; + +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point; +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_line; +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_polygon; +SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_geometrycollection; +SELECT fid, ST_AsText(ST_GeometryN(g, 1)) from gis_geometrycollection; +--replace_column 10 # +explain extended SELECT fid, ST_AsText(ST_GeometryN(g, 2)) from gis_multi_point; + +SELECT g1.fid as first, g2.fid as second, +MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g) as o, +MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t, +MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; +--replace_column 10 # +explain extended SELECT g1.fid as first, g2.fid as second, +MBRWithin(g1.g, g2.g) as w, MBRContains(g1.g, g2.g) as c, MBROverlaps(g1.g, g2.g) as o, +MBREquals(g1.g, g2.g) as e, MBRDisjoint(g1.g, g2.g) as d, ST_Touches(g1.g, g2.g) as t, +MBRIntersects(g1.g, g2.g) as i, ST_Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; + +--echo # check support of Foreign Key constraint +CREATE TABLE parent (id GEOMETRY NOT NULL,PRIMARY KEY (id(10))) ENGINE=INNODB; + +--error 1215 +CREATE TABLE child (id GEOMETRY, parent_id GEOMETRY, + INDEX par_ind (parent_id(10)), + FOREIGN KEY (parent_id(10)) REFERENCES parent(id) + ON DELETE CASCADE +) ENGINE=INNODB; + +--echo #check partition table support +--error 1178 +CREATE TABLE emp2( + id GEOMETRY NOT NULL, + store_name VARCHAR(30), + parts VARCHAR(30), + store_id GEOMETRY +) +PARTITION BY LIST(store_id) ( + PARTITION pNorth VALUES IN (10,20,30) , + PARTITION pEast VALUES IN (40,50,60) , + PARTITION pWest VALUES IN (70,80,100) +); + +--echo #check start transaction commit & Rollback +START TRANSACTION; +DELETE FROM tab3; +ROLLBACK; + +SELECT COUNT(*) FROM tab3; + +START TRANSACTION; +DELETE FROM tab3; +COMMIT; + +SELECT COUNT(*) FROM tab3; + +DROP TABLE IF EXISTS gis_point, gis_line, gis_polygon, gis_multi_point; +DROP TABLE IF EXISTS gis_multi_line, gis_multi_polygon; +DROP TABLE IF EXISTS gis_geometrycollection, gis_geometry; +DROP TABLE IF EXISTS tab,tab2,tab3,parent,emp2; +DROP PROCEDURE IF EXISTS geominout; +DROP PROCEDURE IF EXISTS geom_insert; +DROP TRIGGER IF EXISTS geom_trigger; +DROP PROCEDURE IF EXISTS geom_cursor; diff --git a/mysql-test/suite/innodb_gis/t/gis_split_inf.test b/mysql-test/suite/innodb_gis/t/gis_split_inf.test new file mode 100644 index 00000000000..7988ce58f4f --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/gis_split_inf.test @@ -0,0 +1,31 @@ + +--source include/have_innodb.inc +--source include/have_debug.inc + +create table t1(a geometrycollection not null,spatial key(a))engine=innodb; + +--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR +insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-14,98), point(-14,98)), linestring(point(-97,64), point(-70,99), point(-97,64)), linestring(point(143851215403059150000000000000000000000.000000,13040009882500140000000000000000000000.000000), point(-73,85), point(-88,-29)))), multipolygon(polygon(linestring(point(41,95), point(4294967298,2050)), linestring(point(-61,85), point(-75,93), point(14,-2), point(1,84), point(-61,85)), linestring(point(-62,52), point(39,5), point(-18,12), point(-62,52))), polygon(linestring(point(-77,1), point(66,61), point(-77,1)), linestring(point(18446744073709551615,1125899906842622), point(-72,49), point(24,-66), point(82,73), point(68,22))), polygon(linestring(point(1048576,17179869181), point(-18,95), point(-90,-3), point(-33,82), point(20,-85)), linestring(point(-43,-97), point(-7,-3), point(39,-82), point(-65,-58), point(-43,-97)), linestring(point(44,-34), point(-69,58), point(44,-34)), linestring(point(57,-13), point(-17,74), point(57,-13)), linestring(point(3,71), point(-58,81), point(3,71)), linestring(point(9,25), point(77,-71), point(8388607,67108864), point(46,46), point(9,25)), linestring(point(98,-82), point(98,-82))))) ) ; + +insert into t1(a) values( geometrycollection(multilinestring(linestring(point(39,-60), point(-62,-11), point(-24,35), point(54,1)), linestring(point(-4,69), point(-22,-64), point(1.694824e+308,5.688896e+307), point(-33,-58), point(-64,-80), point(-15,-44), point(40,54)), linestring(point(-86,-54), point(11,41), point(-46,-38), point(-21,-8), point(10,70), point(-81,22), point(-46,-100)), linestring(point(-30,-48), point(50,58), point(-53,92), point(10,41), point(-46,-8)), linestring(point(-65,34), point(-92,93), point(-33,-74), point(75,-28)), linestring(point(25,-55), point(22,-10), point(-42,0), point(-86,-59), point(2,-37), point(63,-44), point(-55,-22)), linestring(point(28,0), point(-94,99), point(-32,-86)), linestring(point(9,-12), point(16,9), point(80,-73)), linestring(point(6,-55), point(83,-4)), linestring(point(-15,21), point(144115188075855876,16777212), point(-85,-31), point(-90,-50)), linestring(point(-33,33), point(21,90), point(-89,32)), linestring(point(16,24), point(73,-13), point(25,-48), point(71,52), point(-54,-78), point(-84,59), point(53,29)), linestring(point(-15,-81), point(83,43), point(-71,33), point(-8,0), point(84,-54), point(-35,38), point(-10,-50)), linestring(point(38,-50), point(20,-2), point(-57,-92)), linestring(point(5,-93), point(231601833467477080000000000000000000000.000000,51914987457169239000000000000000000000.000000), point(-94,62))), point(2,0)) ) ; +insert into t1(a) values( geometrycollection(multilinestring(linestring(point(80,-15), point(65,-57), point(-59,16), point(22,-67)), linestring(point(20,-55), point(-38,-64), point(19,-53), point(-63,-36), point(56,-37)), linestring(point(27,-8), point(-85,-75), point(4398046511106,2251799813685245)), linestring(point(45,32), point(-79,46))), multilinestring(linestring(point(8,-4), point(40,-38), point(100,95), point(5,-80), point(82,88)), linestring(point(-14,30), point(-94,51), point(-16,-29), point(37,-97), point(-26,92)), linestring(point(32,34), point(83,-23), point(-55,57), point(-15,90), point(32,-50), point(-20,-73), point(77,28)), linestring(point(4,88), point(87,74), point(-67,-58)), linestring(point(5.660747e+307,6.385657e+307), point(-58,-15), point(1.172095e+308,1.448533e+308)), linestring(point(-21,-37), point(-52,79), point(-16,-76), point(-65,-94), point(36,7), point(37,74), point(100,-57)), linestring(point(-23,-82), point(-73,23), point(18,-34)), linestring(point(20,-51), point(93,62), point(-65,84)), linestring(point(-48,31), point(-69,-96)), linestring(point(-5,78), point(10,-99), point(36,-33)), linestring(point(-84,55), point(96,1), point(-98,-29), point(-15,81), point(-27,-6), point(58,-32), point(54,-16)), linestring(point(2,5), point(2199023255553,8192)), linestring(point(12,-78), point(-97,-83)), linestring(point(-74,79), point(35,-56), point(50,95)), linestring(point(28,16), point(-39,-40), point(48,-3)), linestring(point(2199023255550,-65539), point(62,-25), point(94,-62)), linestring(point(-74,83), point(-18,75), point(91,17), point(-11,-48), point(30,100)), linestring(point(57,-13), point(88,-45)), linestring(point(20,-64), point(-37,13), point(20,35))), point(-3,-4)) ) ; +--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR +insert into t1(a) values( geometrycollection(multipolygon(polygon(linestring(point(-34,19), point(-25,92), point(61921390294166805000000000000000000000.000000,319674749161701840000000000000000000000.000000), point(56,50), point(-34,19)), linestring(point(-26,-58), point(99,-50), point(34,-20), point(-26,-58)), linestring(point(-42,45), point(-63,-7), point(5,-89), point(-97,36), point(-42,45)), linestring(point(94,11), point(-71,4), point(94,11)), linestring(point(16,25), point(4,-33), point(-45,-33), point(-64,-77), point(16,25)), linestring(point(19,45), point(36,45), point(-83,-96), point(19,45)), linestring(point(85,-31), point(-87,52), point(85,-31))), polygon(linestring(point(55,-88), point(63,-12), point(55,-88)), linestring(point(-49,10), point(-49,10)), linestring(point(-51,-32), point(-51,-32)))), multipolygon(polygon(linestring(point(-21,-8), point(66,-58), point(100,-27), point(-21,-8)), linestring(point(-29,-13), point(-29,-13))), polygon(linestring(point(91307574660224730000000000000000000000.000000,101214152547755520000000000000000000000.000000), point(89,64), point(77,87), point(66,29), point(-71,-53)), linestring(point(38,-78), point(-43,-90), point(37,20), point(81,65), point(38,-78))), polygon(linestring(point(51,0), point(-62,8), point(-11,22), point(51,0)), linestring(point(-4,-44), point(6,82), point(-19,-90), point(131,32)))), point(-4,-7)) ) ; +insert into t1(a) values( geometrycollection(point(10,9), linestring(point(2305843009213693955,-1125899906842621), point(78,15)), multipoint(point(-1,3), point(4,-6))) ) ; +--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR +insert into t1(a) values( geometrycollection(polygon(linestring(point(0,13), point(-12,5), point(0,13)), linestring(point(11,-2), point(6,6), point(20,-14), point(-3,-10), point(1.330588e+308,2.666476e+307)), linestring(point(16382,67), point(7,4)), linestring(point(2,7), point(-14,15), point(2,7)), linestring(point(-14,12), point(-8,-8), point(-17,-2), point(-14,12)), linestring(point(-20,-10), point(-8,-13), point(-19,-17), point(13,-3), point(-20,-10)), linestring(point(-5,13), point(7,-9), point(6,8), point(-5,13))), linestring(point(-87,19), point(-64,51), point(-16,12)), multipoint(point(-1,-10), point(2,-10), point(3.670354e+307,2.501459e+307))) ) ; +--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR +insert into t1(a) values( geometrycollection(multipoint(point(-3,7), point(4,-3), point(-6,-2), point(-9,1)), polygon(linestring(point(-17,-5), point(2,-8), point(-6,9), point(-9,19), point(-17,-5)), linestring(point(10,-1), point(15,-7), point(-13,6), point(10,-1))), multipolygon(polygon(linestring(point(69,-69), point(-90,-64), point(-17,4), point(47,-73), point(69,-69)), linestring(point(-35,-77), point(-35,-77)), linestring(point(95,-76), point(1.636688e+308,1.828723e+307), point(68719476740,536870916), point(95,-76)), linestring(point(-26,-85), point(-26,-85)), linestring(point(-53,57), point(-53,57)), linestring(point(-98,-64), point(79,-57), point(-98,-64)), linestring(point(-91,59), point(16,0), point(73,97), point(-35,-70), point(-91,59))))) ) ; +insert into t1(a) values( geometrycollection(linestring(point(85,-29), point(15,84), point(39,-92), point(-99,19)), multilinestring(linestring(point(63,10), point(-47,95), point(10,-49), point(16,-65), point(-98,40), point(25,44), point(-55,-92)), linestring(point(5.266810e+307,6.648813e+307), point(47,33), point(-15,-13), point(-92,-58), point(36,73)), linestring(point(77,-56), point(-53,-10), point(-28,76), point(-51,6), point(51,-31), point(-95,81), point(92,26)), linestring(point(-91,7), point(58,53)), linestring(point(18,5), point(18,40), point(71,89), point(7.898707e+307,1.202585e+308), point(53,100)), linestring(point(-60,-18), point(-10,-31), point(-6,-25), point(-57,-95), point(16,77)))) ) ; +--error ER_GIS_INVALID_DATA,ER_BAD_NULL_ERROR +insert into t1(a) values( geometrycollection(polygon(linestring(point(-9,0), point(-17,-15), point(-9,0)), linestring(point(-11,1), point(18,12), point(15,3), point(7,0), point(-11,1)), linestring(point(19,5), point(19,5)), linestring(point(17,-11), point(8,4), point(17,-11)), linestring(point(14914539334033432000000000000000000000.000000,127247994336690690000000000000000000000.000000), point(-14,-7), point(13,-2))), point(-4,-7), polygon(linestring(point(-18,9), point(11,-1), point(-18,9)), linestring(point(9,-3), point(9,-3)), linestring(point(-7,-9), point(9,-11), point(11,14), point(1.663324e+308,1.572127e+308)), linestring(point(-15,4), point(18,12), point(7,2), point(-15,4)), linestring(point(-15,-18), point(-20,-15), point(1152921504606846972,34359738370))), polygon(linestring(point(-5,-19), point(-11,11), point(10,5), point(-7,13), point(-5,-19)), linestring(point(-8,-6), point(-4,16), point(-8,-6)), linestring(point(-6,-10), point(3,-12), point(-6,-10)), linestring(point(-16,1), point(20,-12), point(-16,1)), linestring(point(-8,5), point(-20,-4), point(4,1), point(-6,-6), point(-8,5)), linestring(point(-8,-11), point(-5,-14), point(-8,-11)), linestring(point(3,-16), point(-15,-13), point(1.166708e+308,1.901147e+307), point(-8,6), point(3,-16))), point(0,-5)) ) ; +insert into t1(a) values( geometrycollection(linestring(point(-33,99), point(99,-87), point(38,-79), point(33,-39), point(-91,-8), point(46,-87))) ) ; + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/gis_split_nan.test b/mysql-test/suite/innodb_gis/t/gis_split_nan.test new file mode 100644 index 00000000000..0c55a210475 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/gis_split_nan.test @@ -0,0 +1,297 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_geometry.inc +--source include/have_innodb_4k.inc + +############################################################################################ +# Creating the spatial objects # +############################################################################################ + +--echo # Creating the spatial objects +USE test; + +CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT); +CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING); +CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON); +CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT); +CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING); +CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON); +CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION); + +############################################################################################ +# Inserting the values specific to the spatial objects # +############################################################################################ + +--echo # Inserting POINT Geometry Values +INSERT INTO gis_point VALUES + (101, ST_POINTFROMTEXT('POINT(0 0)')), + (102, ST_POINTFROMTEXT('POINT(1 0)')), + (103, ST_POINTFROMTEXT('POINT(0 1)')), + (104, ST_POINTFROMTEXT('POINT(1 1)')), + (105, ST_POINTFROMTEXT('POINT(-1 1)')); + +INSERT INTO gis_point VALUES + (106, ST_POINTFROMWKB(POINT(0,0))), + (107, ST_POINTFROMWKB(POINT(10,0))), + (108, ST_POINTFROMWKB(POINT(0,10))), + (109, ST_POINTFROMWKB(POINT(-10,0))), + (110, ST_POINTFROMWKB(POINT(0,-10))); + +INSERT INTO gis_point VALUES + (111, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1 1)')))), + (112, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 1e308)')))), + (113, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 -1e308)')))), + (114, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 1e308)')))), + (115, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 -1e308)')))); + +--echo # Inserting LINESTRING Geometry Values +INSERT INTO gis_linestring VALUES + (201, ST_LINEFROMTEXT('LINESTRING(0 0,5 5)')), + (202, ST_LINEFROMTEXT('LINESTRING(0 0,2 2,4 4)')), + (203, ST_LINEFROMTEXT('LINESTRING(0 0,5 5,10 10)')); + +INSERT INTO gis_linestring VALUES + (204, ST_LINESTRINGFROMTEXT('LINESTRING(10 10,5 5)')), + (205, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,12 12,24 24)')), + (206, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,50 50,100 100)')); + +INSERT INTO gis_linestring VALUES + (207, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(5,5)))), + (208, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,10)))), + (209, ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)))); + +INSERT INTO gis_linestring VALUES + (210, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(5,5)))), + (211, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(-50,-50), POINT(10,-10)))), + (212, ST_LINESTRINGFROMWKB(LINESTRING(POINT(0,0), POINT(1e308,1e308), POINT(1e308,-1e308)))); + +INSERT INTO gis_linestring VALUES + (213, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1e308 1e308,1e308 -1e308)')))), + (214, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)')))), + (215, ST_LINESTRINGFROMWKB(ST_ASWKB(ST_LINESTRINGFROMTEXT('LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10)')))); + +--echo # Inserting POLYGON Geometry Values +INSERT INTO gis_polygon VALUES + (301, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,0 0))')), + (302, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')), + (303, ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')); + +INSERT INTO gis_polygon VALUES + (304, ST_POLYGONFROMTEXT('POLYGON((0 0,0 50,50 50,50 0,0 0))')), + (305, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4))')), + (306, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')); + +INSERT INTO gis_polygon VALUES + (307, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), + (308, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0))))), + (309, ST_POLYFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))); + +INSERT INTO gis_polygon VALUES + (310, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), + (311, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,15), POINT(15,15), POINT(15,10), POINT(10,10))))), + (312, ST_POLYGONFROMWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,20), POINT(20,20), POINT(20,10), POINT(10,10)), + LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))); + +INSERT INTO gis_polygon VALUES + (313, ST_POLYFROMWKB(ST_ASWKB(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,5 5,0 0))')))), + (314, ST_POLYFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))')))), + (315, ST_POLYGONFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')))); + +--echo # Inserting MULTIPOINT Geometry Values +INSERT INTO gis_multi_point VALUES + (401, ST_GEOMFROMTEXT('MULTIPOINT(0 0)')), + (402, ST_GEOMFROMTEXT('MULTIPOINT(0 0,2 2,4 4)')), + (403, ST_GEOMFROMTEXT('MULTIPOINT(0 0,5 5,10 10)')); + +INSERT INTO gis_multi_point VALUES + (404, ST_GEOMFROMTEXT('MULTIPOINT(0 0,100 100)')), + (405, ST_GEOMFROMTEXT('MULTIPOINT(0 0,1e308 1e308)')), + (406, ST_GEOMFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308)')); + +INSERT INTO gis_multi_point VALUES + (407, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0)))), + (408, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(10,10)))), + (409, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)))); + +INSERT INTO gis_multi_point VALUES + (410, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0)))), + (411, ST_GEOMFROMWKB(MULTIPOINT(POINT(0,0), POINT(1e308,1e308)))), + (412, ST_GEOMFROMWKB(MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308), POINT(-1e308,-1e308)))); + +INSERT INTO gis_multi_point VALUES + (413, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(0 0)')))), + (414, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(0 0,1e308 1e308,-1e308 -1e308)')))), + (415, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308,1e308 1e308)')))); + +--echo # Inserting MULTILINESTRING Geometry Values +INSERT INTO gis_multi_linestring VALUES + (501, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2))')), + (502, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2,4 4))')), + (503, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))')); + +INSERT INTO gis_multi_linestring VALUES + (504, ST_GEOMFROMTEXT('MULTILINESTRING((0 0,100 100,-100 -100))')), + (505, ST_GEOMFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308))')), + (506, ST_GEOMFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308))')); + +INSERT INTO gis_multi_linestring VALUES + (507, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2))))), + (508, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24))))), + (509, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)), + LINESTRING(POINT(6,6), POINT(8,8), POINT(10,10))))); + +INSERT INTO gis_multi_linestring VALUES + (510, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4))))), + (511, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1,1), POINT(2,2))))), + (512, ST_GEOMFROMWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)), + LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50))))); + +INSERT INTO gis_multi_linestring VALUES + (513, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10),(0 10,10 0))')))), + (514, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))')))), + (515, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))')))); + +--echo # Inserting MULTIPOLGYON Geometry Values +INSERT INTO gis_multi_polygon VALUES + (601, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')), + (602, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))')), + (603, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)))')); + +INSERT INTO gis_multi_polygon VALUES + (604, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')), + (605, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0,0 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,0 -2,-2 -2,0 0)))')), + (606, ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))')); + +INSERT INTO gis_multi_polygon VALUES + (607, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0)))))), + (608, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), + (609, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))), + POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))); + +INSERT INTO gis_multi_polygon VALUES + (610, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))), + (611, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(10,10), POINT(20,10), POINT(20,20), POINT(10,20), POINT(10,10)), + LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14)))))), + (612, ST_GEOMFROMWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), + POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))); + +INSERT INTO gis_multi_polygon VALUES + (613, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0)))')))), + (614, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))')))), + (615, ST_GEOMFROMWKB(ST_ASWKB(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0)))')))); + +--echo # Inserting GEOMETRYCOLLECTION Geometry Values +INSERT INTO gis_geometrycollection VALUES + (701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')), + (702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), + (703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5), POLYGON((0 0,0 10,10 10,10 0,0 0)))')); + +INSERT INTO gis_geometrycollection VALUES + (704, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), + (705, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),' + 'LINESTRING(0 0,10 10),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0,0 0, 0 0)))')), + (706, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT(0 0,5 5,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),' + '((0 0,-10 0,-10 -10,0 -10,0 0))))')); + +INSERT INTO gis_geometrycollection VALUES + (707, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(POINT(0,0)))), + (708, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(POINT(0,0), + LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), + POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), + (709, ST_GEOMCOLLFROMWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0), POINT(5,5), POINT(10,10)), + MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), + LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), + MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), + POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))); + +INSERT INTO gis_geometrycollection VALUES + (710, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(POINT(0,0), + LINESTRING(POINT(0,0), POINT(100,100))))), + (711, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(POINT(10,10), + LINESTRING(POINT(10,10), POINT(12,12), POINT(14,14), POINT(16,16), POINT(18,18)), + POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), + (712, ST_GEOMETRYCOLLECTIONFROMWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(10,10), POINT(15,15), POINT(20,20)), + MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)), + LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))), + MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)), + LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))), + POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))); + +INSERT INTO gis_geometrycollection VALUES + (713, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'POINT(0 0),' + 'LINESTRING(0 0,10 10),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))), + (714, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION(' + 'POINT(0 0)),' + 'GEOMETRYCOLLECTION(' + 'LINESTRING(0 0,10 10)),' + 'GEOMETRYCOLLECTION(' + 'POLYGON((0 0,0 10,10 10,10 0,0 0))),' + 'GEOMETRYCOLLECTION(' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10)),' + 'GEOMETRYCOLLECTION(' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0))),' + 'GEOMETRYCOLLECTION(' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))))')))), + (715, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION(),' + 'POINT(0 0),' + 'GEOMETRYCOLLECTION(' + 'LINESTRING(0 0,10 10),' + 'GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION())),' + 'GEOMETRYCOLLECTION(),' + 'GEOMETRYCOLLECTION(' + 'GEOMETRYCOLLECTION()),' + 'POLYGON((0 0,0 10,10 10,10 0,0 0)),' + 'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),' + 'MULTILINESTRING((0 0,10 10),(0 10,10 0)),' + 'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))); + +############################################################################################ +# Checking spatial index with geometry data # +############################################################################################ + +--echo # Creating a table with spatial index column +CREATE TABLE geom_index (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL INDEX(g)); + +--echo # Inserting geometry values +INSERT INTO geom_index SELECT * FROM gis_point; + +INSERT INTO geom_index SELECT * FROM gis_linestring; + +INSERT INTO geom_index SELECT * FROM gis_polygon; + +INSERT INTO geom_index SELECT * FROM gis_multi_point; + +INSERT INTO geom_index SELECT * FROM gis_multi_linestring; + +INSERT INTO geom_index SELECT * FROM gis_multi_polygon; + +INSERT INTO geom_index SELECT * FROM gis_geometrycollection; + +check table geom_index; + +--echo # Final cleanup +DROP TABLE gis_point; +DROP TABLE gis_linestring; +DROP TABLE gis_polygon; +DROP TABLE gis_multi_point; +DROP TABLE gis_multi_linestring; +DROP TABLE gis_multi_polygon; +DROP TABLE gis_geometrycollection; +DROP TABLE geom_index; diff --git a/mysql-test/suite/innodb_gis/t/kill_server.test b/mysql-test/suite/innodb_gis/t/kill_server.test new file mode 100644 index 00000000000..9b6469606ca --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/kill_server.test @@ -0,0 +1,65 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree multi level split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/big_test.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +# Test level 1 rtree. +CALL insert_t1(5000); +select count(*) from t1; + +# Check table. +check table t1; + +# Test level 2 rtree. +truncate table t1; +CALL insert_t1(10000); +select count(*) from t1; + +drop index c2 on t1; + +create spatial index idx on t1(c2); + +show create table t1; + +# Check table. +check table t1; + +# Test level 3 rtree. +truncate table t1; + +# Test crash recovery. +# +# + +call mtr.add_suppression("InnoDB: A copy of page \[page id: space=[0-9]+, page number=[0-9]+\] in the doublewrite buffer slot [0-9]+ is not within space bounds"); + +# Test rtree enlarge recovery. +START TRANSACTION; +CALL insert_t1(5000); + +COMMIT; + +--source include/kill_and_restart_mysqld.inc + +# Clean up. +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/multi_pk.test b/mysql-test/suite/innodb_gis/t/multi_pk.test new file mode 100644 index 00000000000..c90f794fe15 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/multi_pk.test @@ -0,0 +1,80 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/big_test.inc +--source include/not_valgrind.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 varchar(255), c3 geometry not null, primary key(c1, c2), spatial index (c3))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; + +create function rand_string(str_length tinyint unsigned, str_type tinyint unsigned) returns varchar(255) +begin + declare counter int unsigned default 0; + declare const_chars varchar(64) default '0123456789'; + declare result varchar(255) default ''; + + if str_type = 1 then + set const_chars = '0123456789'; + elseif str_type = 2 then + set const_chars = 'abcdefghijklmnopqrstuvwxyz'; + elseif str_type = 3 then + set const_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + elseif str_type = 4 then + set const_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + elseif str_type = 5 then + set const_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + else + set const_chars = '0123456789'; + end if; + + while counter < str_length do + set result = concat(result,substr(const_chars,ceil(rand()*(length(const_chars)-1)),1)); + set counter = counter + 1; + end while; + + return result; +end| + +create procedure insert_t1(IN total int) +begin + declare i int default 1; + declare i2 int default 1; + declare str varchar(100) default ''; + declare dup_key int default 1; + while i <= total DO + set i2 = floor(0+(rand()*100)); + set str = rand_string(i2, 5); + select count(*) into dup_key from t1 where c2 = str and c1 = i; + while dup_key <> 0 do + set i2 = floor(0+(rand()*100)); + set str = rand_string(i2, 5); + select count(*) into dup_key from t1 where c2 = str and c1 = i; + end while; + insert into t1 values (i, str, Point(i, i)); + set i = i + 1; + end while; +end| + +delimiter ;| + +CALL insert_t1(10000); +check table t1; + +start transaction; +CALL insert_t1(30000); +rollback; +check table t1; + +# Clean up. +drop procedure insert_t1; +drop function rand_string; +drop table t1; + diff --git a/mysql-test/suite/innodb_gis/t/point_basic.test b/mysql-test/suite/innodb_gis/t/point_basic.test new file mode 100644 index 00000000000..1c0d229802b --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/point_basic.test @@ -0,0 +1,810 @@ +#******************************************************** +# wl6942: Store certain GIS data type in the row rather +# than as BLOB. +# +#******************************************************** + +--source include/have_geometry.inc +--source include/have_innodb.inc + + +--echo # +--echo # Test for basic POINT operation +--echo # +CREATE TABLE gis_point(p1 POINT, p2 POINT) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(10 -20)'), ST_PointFromText('POINT(10 -20)')), +(ST_PointFromText('POINT(3.1415926 3.535897)'), ST_PointFromText('POINT(-3.932626 -3.488272)')), +(ST_PointFromText('POINT(-111.9876 234.1357)'), ST_PointFromText('POINT(-957.1914 958.1919)')); +SELECT ST_X(p1), ST_Y(p2) FROM gis_point; +DROP TABLE gis_point; + + +--echo # +--echo # Test when POINT is not on any indexes +--echo # +CREATE TABLE gis_point(p1 POINT, p2 POINT) ENGINE=InnoDB; +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(100.32374832 101.23741821)')), +(ST_PointFromText('POINT(105.34523342 103.18492302)'), ST_PointFromText('POINT(100.32374832 101.23741821)')), +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(200.32247328 101.86728201)')), +(ST_PointFromText('POINT(100.32374832 101.23741821)'), ST_PointFromText('POINT(100.32374832 101.98527111)')); + +--replace_column 10 # +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; + +SELECT ST_AsText(p1) FROM gis_point WHERE p1 = p2; +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE p1 = ST_PointFromText('POINT(100.32374832 101.23741821)'); +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE p2 = ST_PointFromText('POINT(200.32247328 101.86728201)'); + +DROP TABLE gis_point; + + +--echo # +--echo # Test some ALTER TABLE operations on POINT tables +--echo # + +CREATE TABLE t1 ( + p POINT NOT NULL, + g GEOMETRY NOT NULL +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 11)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(1 1)'), ST_PointFromText('POINT(10 12)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(1 0)'), ST_PointFromText('POINT(10 13)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(10 14)')); + +SELECT ST_AsText(p), ST_AsText(g) FROM t1; + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; + +ALTER TABLE t1 ADD COLUMN p1 POINT, ADD COLUMN p2 POINT, ADD KEY(p); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1' OR name = 'p2'; + +--echo # NOT NULL POINT will use '' +SELECT count(*) AS `Expect 4` FROM t1 WHERE p1 = ''; +SELECT count(*) AS `Expect 4` FROM t1 WHERE p2 = ''; + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p1; +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p2; + +ALTER TABLE t1 DROP COLUMN p2; + +--echo # NULLABLE POINT will use NULL +ALTER TABLE t1 ADD COLUMN p2 POINT, ADD KEY(p2); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1' OR name = 'p2'; + +SELECT count(*) AS `Expect 4` FROM t1 WHERE p2 IS NULL; +UPDATE t1 SET p2 = ST_PointFromText('POINT(10 20)'); +UPDATE t1 SET p1 = ST_PointFromText('POINT(10 20)'); + +ALTER TABLE t1 DROP COLUMN p2; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p = p1; + +INSERT INTO t1 VALUES (ST_PointFromText('POINT(0.5 0.5)'), ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 19)')); +SELECT ST_AsText(p1) FROM t1; +DELETE FROM t1 WHERE p1 = ST_PointFromText('POINT(10 19)'); +SELECT ST_AsText(p1) FROM t1; + +--echo # Add spatial keys on the table +--error ER_SPATIAL_CANT_HAVE_NULL +ALTER TABLE t1 ADD SPATIAL(p), ADD SPATIAL(p1); +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); + +--echo # Drop spatial keys on the table +--error ER_CANT_DROP_FIELD_OR_KEY +ALTER TABLE t1 DROP KEY p, DROP KEY p1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); + +TRUNCATE t1; + +ALTER TABLE t1 DROP COLUMN p, DROP COLUMN p1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; + +ALTER TABLE t1 ADD COLUMN p POINT, ADD COLUMN p1 POINT; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'p1'; + +SHOW CREATE TABLE t1; + +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.5 0.5)'), ST_PointFromText('POINT(0 1)'), ST_PointFromText('POINT(10 19)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.6 0.6)'), ST_PointFromText('POINT(1 1)'), ST_PointFromText('POINT(10 20)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.7 0.7)'), ST_PointFromText('POINT(1 0)'), ST_PointFromText('POINT(10 21)')); +INSERT INTO t1 VALUES(ST_PointFromText('POINT(0.8 0.8)'), ST_PointFromText('POINT(0 0)'), ST_PointFromText('POINT(10 22)')); + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); + +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')); +SELECT ST_AsText(p), ST_AsText(p1) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')); + +ALTER TABLE t1 DROP COLUMN p1, ADD COLUMN p1 POINT, CHANGE COLUMN p pp POINT AFTER p1; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'pp' OR name = 'g' OR name = 'p1'; + +UPDATE t1 SET p1 = ST_PointFromText('POINT(5 5)'); + +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1; + +--error ER_SPATIAL_CANT_HAVE_NULL +ALTER TABLE t1 ADD SPATIAL(p1), ADD SPATIAL(pp), ALGORITHM = COPY; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'pp' OR name = 'g' OR name = 'p1'; + +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 30)'); +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE p1 = ST_PointFromText('POINT(10 20)'); + +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))')) ORDER BY pp; +SELECT ST_AsText(pp), ST_AsText(p1) FROM t1 WHERE MBRWithin(pp, ST_GeomFromText('POLYGON((-1 0.5, -1 -0.5, 1 -0.5, 1 0.5, -1 0.5))')) ORDER BY pp; + +DROP TABLE t1; + + +--echo # +--echo # Test when the POINT is on B-TREE +--echo # +CREATE TABLE gis_point(fid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, p POINT, KEY(p)) ENGINE=InnoDB; + +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); + +SELECT ST_AsText(p) FROM gis_point; +SELECT ST_AsText(p) FROM gis_point WHERE p = ST_PointFromText('POINT(20 20)'); + +INSERT INTO gis_point VALUES +(201, ST_PointFromText('POINT(100.32374832 101.23741821)')), +(202, ST_PointFromText('POINT(102.43287328 100.23489233)')), +(203, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(204, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))), +(205, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(206, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))); + +-- echo 'The ORDER BY will use filesort' +--replace_column 10 # +EXPLAIN SELECT ST_AsText(p) FROM gis_point ORDER BY p; +SELECT ST_AsText(p) FROM gis_point ORDER BY p; + +SELECT ST_AsText(p), COUNT(*) FROM gis_point GROUP BY p; + +TRUNCATE gis_point; + +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); + +--echo # Check if we can create prefix index on POINT +ALTER TABLE gis_point ADD COLUMN g POINT, ADD KEY(g(8)); + +INSERT INTO gis_point VALUES +(105, ST_PointFromText('POINT(25 15)'), ST_PointFromText('POINT(100 100)')), +(106, ST_PointFromText('POINT(25 25)'), ST_PointFromText('POINT(110 110)')); + +SELECT ST_AsText(p) FROM gis_point; +SELECT ST_AsText(p), ST_AsText(g) FROM gis_point WHERE g IS NULL; + +UPDATE gis_point SET g = ST_PointFromText('POINT(200 200)') WHERE g IS NULL OR g = ST_PointFromText('POINT(110 110)'); +SELECT ST_AsText(g) FROM gis_point WHERE g IS NULL OR g = ST_PointFromText('POINT(200 200)'); + +--echo # Check the information schema tables +SELECT table_name, column_name, data_type, column_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='gis_point' AND (column_name = 'p' OR column_name = 'g'); + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; + +SELECT length(p) FROM gis_point; + +ALTER TABLE gis_point DROP COLUMN g, ALGORITHM = COPY; + +TRUNCATE gis_point; + +INSERT INTO gis_point VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); + +--echo # Check if we can create prefix index on POINT +ALTER TABLE gis_point ADD COLUMN g POINT, ADD KEY(g(8)); + +INSERT INTO gis_point VALUES +(105, ST_PointFromText('POINT(25 15)'), ST_PointFromText('POINT(100 100)')), +(106, ST_PointFromText('POINT(25 25)'), ST_PointFromText('POINT(110 110)')); + +SELECT ST_AsText(p) FROM gis_point; +SELECT ST_AsText(p), ST_AsText(g) FROM gis_point WHERE g IS NULL; + +UPDATE gis_point SET g = ST_PointFromText('POINT(200 200)') WHERE g IS NULL OR g = ST_PointFromText('POINT(110 110)'); +SELECT ST_AsText(g) FROM gis_point WHERE g IS NULL OR g = ST_PointFromText('POINT(200 200)'); + +CHECK TABLE gis_point; + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g'; + +DROP TABLE gis_point; + + +--echo # +--echo # Check the mtype of other geometry data types should be 15 +--echo # +CREATE TABLE g ( + geom GEOMETRY NOT NULL, + l LINESTRING NOT NULL, + poly POLYGON NOT NULL, + mp MULTIPOINT NOT NULL, + ml MULTILINESTRING NOT NULL, + mpoly MULTIPOLYGON NOT NULL, + gc GEOMETRYCOLLECTION NOT NULL +) ENGINE=InnoDB; +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' OR name = 'geom' OR name = 'l' OR name = 'poly' OR name = 'mp' OR name = 'ml' OR name = 'mpoly' OR name = 'gc'; + +DROP TABLE g; + +--echo # +--echo # check the mtype and len with CREATE TABLE AS +--echo # + +CREATE TABLE t1 ( + p POINT NOT NULL, + g GEOMETRY NOT NULL +) ENGINE=InnoDB; + + +INSERT INTO t1 VALUES(ST_PointFromText('POINT(10 10)'),ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); + +# Check the mtype and len of the table +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' AND name='t1'; + +CREATE TABLE t2 AS SELECT * FROM t1; + +# Cleanup +DROP TABLE t1; + +# Check the mtype and len of the table, should be 14,25 +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p' OR name = 'g' AND name='t2'; + +# Cleanup +DROP table t2; + + +--echo # +--echo # Test when POINT is used in spatial index +--echo # +SET @ls1 = ST_GeomFromText('LINESTRING(0 20, 10 0)'); +SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 10 20)'); +SET @ls3 = ST_GeomFromText('LINESTRING(20 -40, 21 -42)'); +SET @ls4 = ST_GeomFromText('LINESTRING(20 -42, 21 -40)'); +SET @poly1 = ST_GeomFromText('POLYGON((2 2, 2 10, 10 10, 10 2, 2 2))'); +SET @poly2 = ST_GeomFromText('POLYGON((0 0, -5 0, -4 -1, -6 -15, -3 -15, 0 0))'); +SET @poly3 = ST_GeomFromText('POLYGON((10.0 10.0, 20.5 20, 20.5 50, 32.0 64.0, 32.3 64.6, 5 60, 10 10))'); +SET @poly4 = ST_GeomFromText('POLYGON((0 10, -10 10, -10 -10, 0 -10, 0 10))'); +SET @p1 = ST_PointFromText('POINT(0 0)'); +SET @mpoly = ST_GeomFromText('MULTIPOLYGON(((3 3, 3 16, 16 16, 16 3, 3 3)), ((10 10, 10 50, 50 50, 50 10, 10 10)))'); + +CREATE TABLE gis_point (p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL KEY k1 (p1), SPATIAL KEY k2 (p2)) ENGINE=InnoDB; + +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(1 2)'), ST_PointFromText('POINT(-1 -3)')), +(ST_PointFromText('POINT(2 4)'), ST_PointFromText('POINT(-2 -6)')), +(ST_PointFromText('POINT(3 6)'), ST_PointFromText('POINT(-3 -9)')), +(ST_PointFromText('POINT(4 8)'), ST_PointFromText('POINT(-4 -12)')), +(ST_PointFromText('POINT(5 10)'), ST_PointFromText('POINT(-5 -15)')), +(ST_PointFromText('POINT(6 12)'), ST_PointFromText('POINT(-6 -18)')), +(ST_PointFromText('POINT(7 14)'), ST_PointFromText('POINT(-7 -21)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(9 18)'), ST_PointFromText('POINT(-4 2)')), +(ST_PointFromText('POINT(10 21)'), ST_PointFromText('POINT(-6 3)')), +(ST_PointFromText('POINT(20.5 41)'), ST_PointFromText('POINT(-8 4)')), +(ST_PointFromText('POINT(26.25 57)'), ST_PointFromText('POINT(1 2)')), +(ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)')); + +CREATE TABLE gis_point1 SELECT * FROM gis_point; + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p1' OR name = 'p2'; + +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point1; +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Intersection(@ls1, @ls2) = p1; +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p2) FROM gis_point1 WHERE ST_Contains(@poly2, p2); +SELECT ST_AsText(p2) FROM gis_point1 WHERE ST_Equals(p2, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Contains(@mpoly, p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly); + +--echo # Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @ls3); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @ls1); + +--echo # Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @poly1); + +--echo # Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBREquals(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Crosses(p1, @p1); + +--echo # Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @poly1); + +--echo # Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRDisjoint(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRequals(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBROverlaps(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point1 WHERE MBRContains(p1, @ls1); + +DROP TABLE gis_point1; + +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point; +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1; +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2); +SELECT ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Contains(@mpoly, p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly); + +--echo # Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls3); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @ls1); + +--echo # Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); + +--echo # Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @p1); + +--echo # Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @poly1); + +--echo # Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); + +--echo # Modify the storage engine to Myisam, Check the spatial functions +ALTER TABLE gis_point ENGINE Myisam; + +--echo # Check functions that use MBR, with line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls3); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @ls1); + +--echo # Check functions that use MBR, with polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); + +--echo # Check functions that use MBR, with point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBREquals(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Crosses(p1, @p1); + +--echo # Check with MBR functions point type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions point polygon data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @p1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @p1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @p1); + +--echo # Check with MBR functions polygon type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @poly1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @poly1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @poly1); + +--echo # Check with MBR functions line type data +SELECT ST_AsText(p1) FROM gis_point WHERE MBRIntersects(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE ST_Touches(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRDisjoint(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRequals(p1, @ls1); + +--echo # No matching records +SELECT ST_AsText(p1) FROM gis_point WHERE MBROverlaps(p1, @ls1); +SELECT ST_AsText(p1) FROM gis_point WHERE MBRContains(p1, @ls1); + +--echo # Modify the storage engine to InnoDB again, do following testing +ALTER TABLE gis_point ENGINE InnoDB; + +CHECK TABLE gis_point; + +-- echo The ORDER BY for spatial index will use filesort +--replace_column 10 # +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; + +-- echo Try to do IDU on the table and verify the result +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); + +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); + +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 41)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); + +CHECK TABLE gis_point; + +-- echo Use a trx to test the IDU on the table and verify the result +START TRANSACTION; + +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); + +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); + +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 49)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 49)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); + +ROLLBACK; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_Touches(@poly3, p1) AND MBRWithin(p2, @poly4); + +CHECK TABLE gis_point; + +DROP TABLE gis_point; + + + +--echo # +--echo # Test inserting/updating different type data into POINT field +--echo # + +CREATE TABLE gis_point (i INT, p POINT) ENGINE=InnoDB; +CREATE TABLE geom (i INT, g GEOMETRY NOT NULL, SPATIAL KEY(g)) ENGINE=InnoDB; + +INSERT INTO gis_point VALUES(0, ST_PointFromText('POINT(1 1)')); +INSERT INTO gis_point VALUES(1, ST_PointFromText('POINT(2 2)')); +INSERT INTO gis_point VALUES(2, NULL); + +ALTER TABLE gis_point ADD COLUMN j INT, ALGORITHM = COPY; + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p'; + +SELECT name, mtype, prtype, len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS WHERE name = 'p'; + +SELECT i, ST_AsText(p) FROM gis_point; + +UPDATE gis_point SET p = NULL WHERE p = ST_PointFromText('POINT(1 1)'); +UPDATE gis_point SET p = ST_PointFromText('POINT(1 2)') WHERE p = ST_PointFromText('POINT(2 2)'); +UPDATE gis_point SET p = ST_PointFromText('POINT(1 1)') WHERE p IS NULL; + +SELECT i, ST_AsText(p) FROM gis_point; + +INSERT INTO geom VALUES(0, ST_PointFromText('POINT(0 0)')); +INSERT INTO geom VALUES(1, ST_PointFromText('POINT(10 10)')); +INSERT INTO geom VALUES(2, ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))')); + +SELECT ST_AsText(g) FROM geom; + +SELECT ST_AsText(p) FROM gis_point; + +DELETE FROM geom WHERE g = ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))'); +--echo From GEOMETRY to POINT, now ALL the data are POINT +ALTER TABLE geom MODIFY g POINT NOT NULL; +SHOW CREATE TABLE geom; +SELECT ST_AsText(g) FROM geom; + +--echo From POINT to GEOMETRY, all data are POINT +ALTER TABLE geom MODIFY g GEOMETRY NOT NULL; +SHOW CREATE TABLE geom; + +TRUNCATE TABLE geom; + +--echo From GEOMETRY to POINT, the table is empty +ALTER TABLE geom MODIFY g POINT NOT NULL; +SHOW CREATE TABLE geom; +SELECT ST_AsText(g) FROM geom; + +CHECK TABLE gis_point; +CHECK TABLE geom; + +DROP TABLE gis_point, geom; + + + +--echo # +--echo # Test when a geom field, such as POINT, is also a primary key +--echo # + +CREATE TABLE t1 ( + a INT NOT NULL, + p POINT NOT NULL, + l LINESTRING NOT NULL, + g GEOMETRY NOT NULL, + PRIMARY KEY(p), + SPATIAL KEY `idx2` (p), + SPATIAL KEY `idx3` (l), + SPATIAL KEY `idx4` (g) +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES( +1, ST_GeomFromText('POINT(10 10)'), +ST_GeomFromText('LINESTRING(1 1, 5 5, 10 10)'), +ST_GeomFromText('POLYGON((30 30, 40 40, 50 50, 30 50, 30 40, 30 30))')); + +INSERT INTO t1 VALUES( +2, ST_GeomFromText('POINT(20 20)'), +ST_GeomFromText('LINESTRING(2 3, 7 8, 9 10, 15 16)'), +ST_GeomFromText('POLYGON((10 30, 30 40, 40 50, 40 30, 30 20, 10 30))')); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +--replace_column 10 # +EXPLAIN UPDATE t1 SET p = ST_GeomFromText('POINT(30 30)') WHERE p = ST_GeomFromText('POINT(20 20)'); +UPDATE t1 SET p = ST_GeomFromText('POINT(30 30)') WHERE p = ST_GeomFromText('POINT(20 20)'); + +# Once Bug 18265942 - GIS: INNODB WOULD GET POSSIBLE WRONG FIND_FLAG FOR SELECT FROM SERVER is fixed, we can test all the following statements commented out. +#SELECT ST_AsText(p) FROM t1 WHERE MBRWithin(p, ST_GeomFromText('POLYGON((25 25, 25 35, 35 35, 35 25, 25 25))')); +#UPDATE t1 SET p = ST_GeomFromText('POINT(15 15)') WHERE MBRWithin(p, ST_GeomFromText('POLYGON((25 25, 25 35, 35 35, 35 25, 25 25))')); +#DELETE FROM t1 WHERE MBRWithin(p, ST_GeomFromText('LINESTRING(15 15, 15 25, 25 25, 35 15, 15 15)')); +#SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; +#INSERT INTO t1 VALUES( +#3, ST_GeomFromText('POINT(25 25)'), +#ST_GeomFromText('LINESTRING(2 3, 7 8, 9 10, 15 16)'), +#ST_GeomFromText('POLYGON((10 30, 30 40, 40 50, 40 30, 30 20, 10 30))')); +#UPDATE t1 SET p = ST_GeomFromText('POINT(50 50)'), l = ST_GeomFromText('LINESTRING(20 20, 21 21, 22 22, 23 23)') WHERE MBRWithin(g, ST_GeomFromText('LINESTRING(25 25, 25 50, 50 50, 50 25, 25 25)')); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(a); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(p); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +SHOW CREATE TABLE t1; + +# Also waiting for Bug 18265942 +#UPDATE t1 SET p = ST_PointFromText('POINT(20 20)') WHERE ST_Equals(p, ST_PointFromText('POINT(30 30)')); +#INSERT INTO t1 VALUES( +#3, ST_GeomFromText('POINT(25 25)'), +#ST_GeomFromText('LINESTRING(2 3, 7 8, 9 10, 15 16)'), +#ST_GeomFromText('POLYGON((10 30, 30 40, 40 50, 40 30, 30 20, 10 30))')); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +ALTER TABLE t1 DROP PRIMARY KEY; +ALTER TABLE t1 ADD PRIMARY KEY(p); + +--replace_column 10 # +EXPLAIN SELECT a, ST_AsText(p) FROM t1 WHERE a = 2 AND p = ST_GeomFromText('POINT(30 30)'); +SELECT a, ST_AsText(p) FROM t1 WHERE a = 2 AND p = ST_GeomFromText('POINT(30 30)'); + +SELECT a, ST_AsText(p), ST_AsText(l), ST_AsText(g) FROM t1; + +CHECK TABLE t1; + +DROP TABLE t1; + +--echo # +--echo # Test for foreign keys. +--echo # +CREATE TABLE parent(p POINT, PRIMARY KEY(p)) ENGINE=InnoDB; +CREATE TABLE child(p POINT NOT NULL) ENGINE=InnoDB; +ALTER TABLE parent ADD SPATIAL INDEX idx1(p ASC); +ALTER TABLE child ADD SPATIAL INDEX idx2(p ASC); +SHOW CREATE TABLE parent; +SHOW CREATE TABLE child; + +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +show warnings; + +ALTER TABLE parent DROP INDEX idx1; +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +--error ER_CANNOT_ADD_FOREIGN,ER_CANT_CREATE_TABLE +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +show warnings; + +ALTER TABLE child DROP INDEX idx2; +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +--error ER_CANNOT_ADD_FOREIGN,ER_CANT_CREATE_TABLE +ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +show warnings; + +DROP TABLE child, parent; + +--echo # +--echo # Bug#28763: Selecting geometry fields in UNION caused server crash. +--echo # +CREATE TABLE t1(f1 GEOMETRY, f2 POINT, f3 GEOMETRY) ENGINE=InnoDB; +SELECT f1 FROM t1 UNION SELECT f1 FROM t1; +INSERT INTO t1 (f2,f3) VALUES (ST_GeomFromText('POINT(1 1)'), + ST_GeomFromText('POINT(2 2)')); +SELECT ST_AsText(f2),ST_AsText(f3) FROM t1; +SELECT ST_AsText(a) FROM (SELECT f2 AS a FROM t1 UNION SELECT f3 FROM t1) t; +CREATE TABLE t2 AS SELECT f2 AS a FROM t1 UNION SELECT f3 FROM t1; +DESC t2; +SELECT ST_AsText(a) FROM t2; +DROP TABLE t1, t2; + diff --git a/mysql-test/suite/innodb_gis/t/point_big.test b/mysql-test/suite/innodb_gis/t/point_big.test new file mode 100644 index 00000000000..d9a00474d89 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/point_big.test @@ -0,0 +1,322 @@ +#******************************************************** +# wl6942: Store certain GIS data type in the row rather +# than as BLOB. +# +#******************************************************** + +--source include/have_geometry.inc +--source include/have_innodb.inc + +--source include/not_embedded.inc +--source include/big_test.inc +--source include/not_valgrind.inc + +--echo # +--echo # Test when the POINT is on B-TREE +--echo # +CREATE TABLE t1(fid INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, p POINT, KEY(p)) ENGINE=InnoDB; + +INSERT INTO t1 VALUES +(101, ST_PointFromText('POINT(10 10)')), +(102, ST_PointFromText('POINT(20 10)')), +(103, ST_PointFromText('POINT(20 20)')), +(104, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(10 20)')))); + +SELECT ST_AsText(p) FROM t1; +SELECT ST_AsText(p) FROM t1 WHERE p = ST_PointFromText('POINT(20 20)'); + +INSERT INTO t1 VALUES +(201, ST_PointFromText('POINT(100.32374832 101.23741821)')), +(202, ST_PointFromText('POINT(102.43287328 100.23489233)')), +(203, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(204, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))), +(205, ST_PointFromText('POINT(101.43284962 100.45892392)')), +(206, ST_PointFromWKB(ST_AsWKB(ST_PointFromText('POINT(103.43718640 105.248206478)')))); + +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; + +TRUNCATE t1; + +SELECT * FROM t1; + +INSERT INTO t1(p) VALUES(ST_PointFromText('POINT(10 10)')), +(ST_PointFromText('POINT(10 20)')), +(ST_PointFromText('POINT(10 40)')), +(ST_PointFromText('POINT(10 60)')), +(ST_PointFromText('POINT(20 15)')), +(ST_PointFromText('POINT(30 10)')), +(ST_PointFromText('POINT(40 10)')), +(ST_PointFromText('POINT(50 10)')), +(ST_PointFromText('POINT(60 5)')), +(ST_PointFromText('POINT(60 10)')), +(ST_PointFromText('POINT(60 20)')), +(ST_PointFromText('POINT(60 100)')), +(ST_PointFromText('POINT(100 100)')), +(ST_PointFromText('POINT(80 60)')), +(ST_PointFromText('POINT(81 50)')), +(ST_PointFromText('POINT(82 70)')), +(ST_PointFromText('POINT(83 30)')), +(ST_PointFromText('POINT(20 100)')), +(ST_PointFromText('POINT(150 2000)')), +(ST_PointFromText('POINT(109 230)')), +(ST_PointFromText('POINT(280 250)')), +(ST_PointFromText('POINT(176 175)')), +(ST_PointFromText('POINT(200 10)')), +(NULL), +(NULL); + +SELECT ST_AsText(p) FROM t1; +SELECT COUNT(*) FROM t1; + +SELECT ST_AsText(p) FROM t1; +SELECT COUNT(*) FROM t1; + +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; +INSERT INTO t1(p) SELECT p FROM t1; + +CHECK TABLE t1; + +SELECT COUNT(*) FROM t1; +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +DELETE FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(280 250)'); +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 5)'); +DELETE FROM t1 WHERE P = ST_PointFromText('POINT(60 5)'); +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 5)'); + +SELECT ST_AsText(p), COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)') GROUP BY p; +UPDATE t1 SET p = ST_PointFromText('POINT(101 102)') WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)'); +SELECT ST_AsText(p), COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(60 10)') OR p = ST_PointFromText('POINT(60 20)') OR p = ST_PointFromText('POINT(60 30)') GROUP BY p; +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(101 102)'); + +SELECT COUNT(*) FROM t1 WHERE p IS NULL; +UPDATE t1 SET p = ST_PointFromText('POINT(160 160)') WHERE p IS NULL; +SELECT COUNT(*) FROM t1 WHERE p IS NULL; +SELECT COUNT(*) FROM t1 WHERE p = ST_PointFromText('POINT(160 160)'); + +SELECT ST_AsText(p), COUNT(*) FROM t1 GROUP BY p; +SELECT COUNT(*) FROM t1; + +CHECK TABLE t1; + +DROP TABLE t1; + + +--echo # +--echo # Test when POINT is used in spatial index +--echo # +SET @ls1 = ST_GeomFromText('LINESTRING(0 20, 10 0)'); +SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 10 20)'); +SET @ls3 = ST_GeomFromText('LINESTRING(20 -40, 21 -42)'); +SET @ls4 = ST_GeomFromText('LINESTRING(20 -42, 21 -40)'); +SET @poly1 = ST_GeomFromText('POLYGON((2 2, 2 10, 10 10, 10 2, 2 2))'); +SET @poly2 = ST_GeomFromText('POLYGON((0 0, -5 0, -4 -1, -6 -15, -3 -15, 0 0))'); +SET @poly3 = ST_GeomFromText('POLYGON((10.0 10.0, 20.5 20, 20.5 50, 32.0 64.0, 32.3 64.6, 5 60, 10 10))'); +SET @poly4 = ST_GeomFromText('POLYGON((0 10, -10 10, -10 -10, 0 -10, 0 10))'); +SET @p1 = ST_PointFromText('POINT(0 0)'); +SET @mpoly = ST_GeomFromText('MULTIPOLYGON(((3 3, 3 16, 16 16, 16 3, 3 3)), ((10 10, 10 50, 50 50, 50 10, 10 10)))'); + +CREATE TABLE gis_point (p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL KEY k1 (p1), SPATIAL KEY k2 (p2)) ENGINE=InnoDB; + +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(1 2)'), ST_PointFromText('POINT(-1 -3)')), +(ST_PointFromText('POINT(2 4)'), ST_PointFromText('POINT(-2 -6)')), +(ST_PointFromText('POINT(3 6)'), ST_PointFromText('POINT(-3 -9)')), +(ST_PointFromText('POINT(4 8)'), ST_PointFromText('POINT(-4 -12)')), +(ST_PointFromText('POINT(5 10)'), ST_PointFromText('POINT(-5 -15)')), +(ST_PointFromText('POINT(6 12)'), ST_PointFromText('POINT(-6 -18)')), +(ST_PointFromText('POINT(7 14)'), ST_PointFromText('POINT(-7 -21)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(9 18)'), ST_PointFromText('POINT(-4 2)')), +(ST_PointFromText('POINT(10 21)'), ST_PointFromText('POINT(-6 3)')), +(ST_PointFromText('POINT(20.5 41)'), ST_PointFromText('POINT(-8 4)')), +(ST_PointFromText('POINT(26.25 57)'), ST_PointFromText('POINT(1 2)')), +(ST_PointFromText('POINT(32.1234 64.2468)'), ST_PointFromText('POINT(-1 -1)')); + +-- echo 'The ORDER BY for spatial index will use filesort' +--replace_column 10 # +EXPLAIN SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point ORDER BY p1, p2; + +-- echo 'Try to do IDU on the table and verify the result' +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); + +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); + +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 41)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); + +CHECK TABLE gis_point; + +-- echo ============================================================ +-- echo Use a trx to test the IDU on the table and verify the result +-- echo ============================================================ + +START TRANSACTION; + +DELETE FROM gis_point WHERE ST_Equals(p2, ST_PointFromText('POINT(-8 4)')); + +INSERT INTO gis_point VALUES(ST_PointFromText('POINT(20.5 -41)'), ST_PointFromText('POINT(8 -4)')); + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); + +UPDATE gis_point SET p1 = ST_PointFromText('POINT(20.5 49)'), p2 = ST_PointFromText('POINT(-8 4)') WHERE ST_Intersection(@ls3, @ls4) = p1; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 49)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); + +ROLLBACK; + +SELECT ST_AsText(p1) AS 'Expect (32.1234 64.2468) AND (20.5 41)' FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4); + +CHECK TABLE gis_point; + +-- echo ======================================================= +-- echo Enlarge the table by inserting the same data and verify +-- echo ======================================================= + +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; +INSERT INTO gis_point SELECT * FROM gis_point; + +CHECK TABLE gis_point; + +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; + +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1 GROUP BY p1; +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1; +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2; +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2; +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2; +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2; + +-- echo ====================================================================== +-- echo Build another new table with the same schema, will insert data from this table to the orignal one +-- echo ====================================================================== + +CREATE TABLE p(p1 POINT NOT NULL, p2 POINT NOT NULL, SPATIAL INDEX k1(p2)) ENGINE=InnoDB; + +INSERT INTO p VALUES(ST_PointFromText('POINT(1000 -1000)'), ST_PointFromText('POINT(-201 203.56)')); +INSERT INTO p VALUES(ST_PointFromText('POINT(20.5 43.9832)'), ST_PointFromText('POINT(-0 0)')); +INSERT INTO p VALUES(ST_PointFromText('POINT(-4.2 -6.98)'), ST_PointFromText('POINT(-120.5 343.9832)')); + +INSERT INTO p SELECT * FROM p WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((0 0, 0 2000, 2000 2000, 2000 -2000, 0 -2000, 0 0))')); +INSERT INTO p SELECT * FROM p WHERE MBRWithin(p1, ST_GeomFromText('POLYGON((0 0, -10 0, -100 -100, 0 -50, 0 0))')); + +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM p GROUP BY p1, p2; + +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; +INSERT INTO gis_point SELECT * FROM p; + +CHECK TABLE gis_point; + +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; + +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; + +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE MBRWithin(p2, @poly2) GROUP BY p2; + +DROP TABLE p; + +-- echo ================================ +-- echo Use a trx to test IUD and verify +-- echo ================================ + +# Temporarily disabled the following test case, since the ROLLBACK and +# some other DML would cost too much of time. We could test them until +# we have optimized the UNDO, etc. + +#START TRANSACTION; + +#-- echo 'To remove (-2 -6), (-1 -3)' +#DELETE FROM gis_point WHERE ST_Contains(ST_GeomFromText('POLYGON((-8 -8, 4 -7, 1 1, 0 -1, -2 -2, -8 -8))') , p2); + +#SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2; + +#-- echo 'To set (-1 -1) to (-5.12 -10.84)' +#UPDATE gis_point SET p2 = ST_PointFromText('POINT(-5.12 -10.84)') WHERE ST_Intersection(ST_GeomFromText('LINESTRING(-3 4, -2 0, 0.5 -2.5, 5 0)'), ST_GeomFromText('LINESTRING(0.6 0.6, -10 -10)')) = p2; + +#SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE MBRWithin(p2, @poly2) GROUP BY p2; + +#-- echo 'To insert several (-3.6 -4.05) (-1 -1) +#INSERT INTO gis_point VALUES +#(ST_PointFromText('POINT(10.1 2.6)'), ST_PointFromText('POINT(-1 -1)')), +#(ST_PointFromText('POINT(100.99 -2.53)'), ST_PointFromText('POINT(-3.6 -4.05)')), +#(ST_PointFromText('POINT(13.62 3.87)'), ST_PointFromText('POINT(-1 -1)')), +#(ST_PointFromText('POINT(-36.3 0.34)'), ST_PointFromText('POINT(-1 -1)')), +#(ST_PointFromText('POINT(1.04 25.6)'), ST_PointFromText('POINT(-3.6 -4.05)')); + +#SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE MBRWithin(p2, @poly2) GROUP BY p2; + +#SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(ST_GeomFromText('POLYGON((-0.999 -0.999, -6 -1, -6 -7, -0.99999 -0.99999, -0.999 -0.999))'), p2) GROUP BY p2; + +#ROLLBACK; + +#CHECK TABLE gis_point; + +-- echo ============================================= +-- echo Delete those rows selected from another table +-- echo ============================================= + +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; + +UPDATE gis_point SET p2 = ST_PointFromText('POINT(2000 2000)') WHERE ST_Contains(ST_GeomFromText('POLYGON((-100 100, -400 100, -400 400, -100 400, -100 100))'), p2) OR ST_Contains(ST_GeomFromText('POLYGON((-0.0001 -0.0002, -0.0001 0.00002, 0.00000005 0.000001, 0.0000025 -0.001, -0.0001 -0.0002))'), p2); + +CHECK TABLE gis_point; + +-- echo 'To remove all the just updated rows' +DELETE FROM gis_point WHERE ST_Intersection(ST_GeomFromText('LINESTRING(1800 1900, 2200 2100)'), ST_GeomFromText('LINESTRING(0 0, 2001 2001)')) = p2; + +INSERT INTO gis_point VALUES +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')), +(ST_PointFromText('POINT(8 16)'), ST_PointFromText('POINT(0 0)')); + +-- echo ====================================================================== +-- echo Following results should be almost the same with those at the beginning +-- echo ====================================================================== + +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) +FROM gis_point +WHERE ST_Contains(ST_GeomFromText('POLYGON((-1000 -1000, -1000 1000, 1000 1000, 1001 -1001, -1000 -1000))'), p1) +GROUP BY p1, p2; + +SELECT ST_AsText(p1), ST_AsText(p2) FROM gis_point GROUP BY p1, p2; +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_Intersection(@ls1, @ls2) = p1 GROUP BY p1; +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE MBRWithin(p1, @poly1) GROUP BY p1; +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@poly2, p2) GROUP BY p2; +SELECT COUNT(*), ST_AsText(p2) FROM gis_point WHERE ST_Equals(p2, @p1) GROUP BY p2; +SELECT COUNT(*), ST_AsText(p1) FROM gis_point WHERE ST_TOUCHES(@poly3, p1) AND MBRWithin(p2, @poly4) GROUP BY p1; +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) GROUP BY p1, p2; +SELECT COUNT(*), ST_AsText(p1), ST_AsText(p2) FROM gis_point WHERE ST_Contains(@mpoly, p1) AND NOT MBRWithin(p1, @mpoly) GROUP BY p1, p2; + +CHECK TABLE gis_point; + +DROP TABLE gis_point; + diff --git a/mysql-test/suite/innodb_gis/t/repeatable_spatial.test b/mysql-test/suite/innodb_gis/t/repeatable_spatial.test new file mode 100644 index 00000000000..3152911b257 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/repeatable_spatial.test @@ -0,0 +1,241 @@ +# ***************************************************************** +# Test spatial index with isolation level Repeatable Read on DML +# This will also test the no phantom rows happens +# Check the COUNT(*) and SELECT results before & after COMMIT in +# the last con1 statment +# Test at con1: Global Repeatable Read con2 : Sess Read Committed +# Test at con1: Sess Repeatable Read con2 : Sess Read Committed +# ***************************************************************** +--source include/have_innodb.inc +--source include/have_geometry.inc +--source include/not_embedded.inc + +# Test Repeatable Read & Read committed at Global, Session levels +CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 POINT NOT NULL, +c3 LINESTRING NOT NULL,c4 POLYGON NOT NULL,c5 GEOMETRY NOT NULL) +ENGINE=InnoDB; + +ALTER TABLE tab ADD SPATIAL INDEX idx2(c2 ASC); + +ALTER TABLE tab ADD SPATIAL KEY idx3(c3 DESC); + +ALTER TABLE tab ADD SPATIAL INDEX idx4(c4 ASC) COMMENT 'testing spatial index on Polygon'; + +ALTER TABLE tab ADD SPATIAL KEY idx5(c5 ASC) COMMENT 'testing spatial index on Geometry'; + +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); + +# 1 record is expected +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +--echo "In connection 1" +connect (con1,localhost,root,,); +connection con1; + +SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; + +SELECT @@tx_isolation; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +# 1 record is expected +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; + +--echo "In connection 2" +connect (con2,localhost,root,,); +connection con2; + +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; + +SELECT @@tx_isolation; + +START TRANSACTION; + +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(2,ST_GeomFromText('POINT(20 20)'),ST_GeomFromText('LINESTRING(20 20,30 30,40 40)'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))')); + +SET @g1 = ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'); +SET @g2 = ST_GeomFromText('POINT(10 10)'); + +# Record should be updated +UPDATE tab SET C5 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))') +WHERE MBREquals(tab.c4, @g1) AND MBREquals(tab.c2, @g2); + +--echo "In connection 1" +connection con1; + +SET @g3 = ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'); + +# No record is expected (No phantom row) +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g3); + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +START TRANSACTION; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +--echo "In connection 2" +connection con2; + +# Record count should be 2 +SELECT COUNT(*) FROM tab; + +COMMIT; + +disconnect con2; +--source include/wait_until_disconnected.inc + +--echo "In connection 1" +connection con1; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +SET @g4 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'); + +# No records are expected (No phantom row) +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); + +COMMIT; + +# The updated record is expected +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); + +# Record count should be 2 +SELECT COUNT(*) FROM tab; + +# 2 records are expected +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab; + +disconnect con1; +--source include/wait_until_disconnected.inc + +--connection default +DROP TABLE tab; + +# Test Repeatable Read & Read committed at Session levels +CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 POINT NOT NULL, +c3 LINESTRING NOT NULL,c4 POLYGON NOT NULL,c5 GEOMETRY NOT NULL) +ENGINE=InnoDB; + +ALTER TABLE tab ADD SPATIAL INDEX idx2(c2 ASC); + +ALTER TABLE tab ADD SPATIAL KEY idx3(c3 DESC); + +ALTER TABLE tab ADD SPATIAL INDEX idx4(c4 ASC) COMMENT 'testing spatial index on Polygon'; + +ALTER TABLE tab ADD SPATIAL KEY idx5(c5 ASC) COMMENT 'testing spatial index on Geometry'; + +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'), +ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))')); + +# 1 record is expected +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +--echo "In connection 1" +connect (con1,localhost,root,,); +connection con1; + +SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; + +SELECT @@tx_isolation; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +# 1 record is expected +SELECT c1,ST_AsText(c2),ST_AsText(c3),ST_AsText(c4),ST_AsText(c5) FROM tab; + +--echo "In connection 2" +connect (con2,localhost,root,,); +connection con2; + +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; + +SELECT @@tx_isolation; + +START TRANSACTION; + +INSERT INTO tab(c1,c2,c3,c4,c5) +VALUES(2,ST_GeomFromText('POINT(20 20)'),ST_GeomFromText('LINESTRING(20 20,30 30,40 40)'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'), +ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))')); + +SET @g1 = ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'); +SET @g2 = ST_GeomFromText('POINT(10 10)'); + +# Record should be updated +UPDATE tab SET C5 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))') +WHERE MBREquals(tab.c4, @g1) AND MBREquals(tab.c2, @g2); + +--echo "In connection 1" +connection con1; + +SET @g3 = ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'); + +# No record is expected (No phantom row) +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g3); + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +START TRANSACTION; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +--echo "In connection 2" +connection con2; + +# Record count should be 2 +SELECT COUNT(*) FROM tab; + +COMMIT; + +disconnect con2; +--source include/wait_until_disconnected.inc + +--echo "In connection 1" +connection con1; + +# Record count should be 1 +SELECT COUNT(*) FROM tab; + +SET @g4 = ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'); + +# No records are expected (No phantom row) +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); + +COMMIT; + +# The updated record is expected +SELECT ST_AsText(c5) FROM tab WHERE MBREquals(tab.c5, @g4); + +# Record count should be 2 +SELECT COUNT(*) FROM tab; + +# 2 records are expected +SELECT c1,ST_AsText(c2),ST_AsText(c4),ST_AsText(c5) FROM tab; + +disconnect con1; +--source include/wait_until_disconnected.inc + +--connection default +DROP TABLE tab; diff --git a/mysql-test/suite/innodb_gis/t/rollback.test b/mysql-test/suite/innodb_gis/t/rollback.test new file mode 100644 index 00000000000..fcfe71e2f80 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rollback.test @@ -0,0 +1,477 @@ +# WL 6609. Testing insertion rollback +--source include/have_innodb.inc +--source include/not_embedded.inc +--source include/have_debug.inc +--source include/have_innodb_16k.inc +# Valgrind can hang or return spurious messages on DBUG_SUICIDE +--source include/not_valgrind.inc +# Avoid CrashReporter popup on Mac +--source include/not_crashrep.inc +--source include/have_innodb_16k.inc + +CREATE TABLE t4 (id bigint(12) unsigned NOT NULL auto_increment, + c2 varchar(15) collate utf8_bin default NULL, + c1 varchar(15) collate utf8_bin default NULL, + c3 varchar(10) collate utf8_bin default NULL, + spatial_point point NOT NULL, + PRIMARY KEY(id), + SPATIAL KEY (spatial_point) + )ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), + ('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), + ('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), + ('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), + ('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), + ('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), + ('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), + ('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), + ('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), + ('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), + ('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), + ('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), + ('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), + ('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), + ('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), + ('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), + ('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), + ('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), + ('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), + ('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), + ('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), + ('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), + ('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), + ('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), + ('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), + ('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), + ('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), + ('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), + ('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), + ('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), + ('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), + ('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), + ('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), + ('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), + ('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), + ('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), + ('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), + ('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), + ('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), + ('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), + ('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), + ('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), + ('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), + ('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), + ('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), + ('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), + ('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), + ('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), + ('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), + ('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), + ('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), + ('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), + ('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), + ('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), + ('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), + ('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), + ('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), + ('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), + ('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), + ('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), + ('b', 's', 's', ST_GeomFromText('POINT(223 211)')), + ('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), + ('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), + ('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), + ('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), + ('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), + ('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), + ('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), + ('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), + ('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), + ('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), + ('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), + ('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), + ('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), + ('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), + ('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), + ('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), + ('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), + ('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), + ('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), + ('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), + ('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), + ('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), + ('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), + ('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), + ('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), + ('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), + ('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), + ('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), + ('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), + ('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), + ('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), + ('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), + ('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), + ('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), + ('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), + ('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), + ('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), + ('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), + ('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), + ('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), + ('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), + ('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), + ('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), + ('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), + ('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), + ('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), + ('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), + ('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), + ('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), + ('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), + ('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), + ('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), + ('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), + ('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), + ('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), + ('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), + ('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), + ('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), + ('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), + ('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), + ('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), + ('z', 't', 't', ST_GeomFromText('POINT(99 134)')), + ('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), + ('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), + ('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), + ('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), + ('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), + ('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), + ('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), + ('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), + ('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), + ('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), + ('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), + ('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), + ('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), + ('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), + ('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), + ('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), + ('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), + ('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), + ('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), + ('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), + ('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), + ('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), + ('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), + ('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), + ('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), + ('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), + ('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), + ('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), + ('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), + ('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), + ('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), + ('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), + ('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), + ('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), + ('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), + ('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), + ('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), + ('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), + ('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), + ('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), + ('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), + ('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), + ('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), + ('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), + ('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), + ('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), + ('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), + ('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), + ('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), + ('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), + ('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), + ('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), + ('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), + ('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), + ('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), + ('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), + ('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), + ('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), + ('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), + ('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), + ('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), + ('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), + ('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), + ('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), + ('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), + ('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), + ('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), + ('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), + ('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), + ('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), + ('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), + ('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), + ('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), + ('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), + ('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), + ('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), + ('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), + ('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), + ('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), + ('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), + ('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), + ('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), + ('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), + ('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), + ('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), + ('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), + ('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), + ('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), + ('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), + ('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), + ('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), + ('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), + ('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), + ('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), + ('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), + ('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), + ('m', 's', 's', ST_GeomFromText('POINT(172 149)')), + ('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), + ('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), + ('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), + ('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), + ('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), + ('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), + ('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), + ('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), + ('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), + ('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), + ('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), + ('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), + ('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), + ('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), + ('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), + ('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), + ('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), + ('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), + ('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), + ('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), + ('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), + ('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), + ('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), + ('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), + ('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), + ('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), + ('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), + ('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), + ('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), + ('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), + ('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), + ('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), + ('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), + ('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), + ('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), + ('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), + ('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), + ('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), + ('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), + ('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), + ('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), + ('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), + ('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), + ('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), + ('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), + ('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), + ('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), + ('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), + ('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), + ('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), + ('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), + ('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), + ('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), + ('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), + ('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), + ('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), + ('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), + ('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), + ('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), + ('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), + ('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), + ('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), + ('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), + ('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), + ('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), + ('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), + ('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), + ('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), + ('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), + ('l', 's', 't', ST_GeomFromText('POINT(83 18)')), + ('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), + ('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), + ('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), + ('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), + ('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), + ('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), + ('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), + ('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), + ('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), + ('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), + ('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), + ('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), + ('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), + ('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), + ('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), + ('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), + ('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), + ('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), + ('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), + ('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), + ('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), + ('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), + ('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), + ('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), + ('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), + ('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), + ('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), + ('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), + ('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), + ('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), + ('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), + ('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), + ('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), + ('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), + ('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), + ('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), + ('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), + ('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), + ('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), + ('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), + ('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), + ('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), + ('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), + ('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), + ('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); + + +start transaction; + +# following insertion will result in a node split +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); + +# Test rollback, this will result above split being rolled back, btr_compress +# gets called +rollback; + +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')); + +# create overlap on the bounding box in parent +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(0 1280)')); + + +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES ('n', 'x', 'p', ST_GeomFromText('POINT(45 1280)')); + +# Add a row in the cross section of the 2 bounding box +INSERT INTO t4 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); + +# Delete this new point +DELETE FROM t4 WHERE id = 1280; + +INSERT INTO t4 VALUES (1280, 'n', 'x', 'p', ST_GeomFromText('POINT(44 253)')); + +start transaction; +DELETE FROM t4 WHERE id = 1280; +rollback; + +# Test MBR increase +start transaction; +INSERT INTO t4 (c2, c1, c3, spatial_point) VALUES + ('m', 'u', 'p', ST_GeomFromText('POINT(1192 1181)')); +rollback; + +DROP TABLE t4; + +# Test externally stored update rollback. +LET $file_per_table='on'; + +--disable_warnings +eval SET GLOBAL innodb_file_per_table=$file_per_table; +--enable_warnings + +create table t1(i int primary key, +a geometry not null, spatial index(a)) row_format=dynamic engine=innodb; + +insert into t1 values(1, st_geomfromtext(concat('multilinestring(','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 28514)',')'))); + +#1 Test update with diff mbr. +start transaction; +update t1 set a=st_geomfromtext(concat('multilinestring(','(-4287 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 79878)',')')) where i = 1; +rollback; + +#1 Test update with same mbr, should do nothing. +start transaction; +update t1 set a=st_geomfromtext(concat('multilinestring(','(-4286 -5983,52762 -5983,52762 79876,-4286 79876,-4286 -5983)',',','(-768 -136,-771 2864,-772 2860,-777 2862,-775 2858,-775 2863,-770 2866,-765 2871,-761 2874,-759 2878,-759 2883,-759 2886,-758 2886,-758 2886,-755 2890,-752 2890,-751 2890,1249 2890,1250 2892,1251 2892,1251 2892,1256 2897,1259 2894,1256 2899,1253 2904,1256 2904,1257 2906,1252 2910,1253 2910,1256 2912,1255 2913,1260 2911,1256 2913,1255 2918,1257 2921,1259 2925,1262 2922,1263 2923,1266 2926,1268 2929,1269 2932,1273 2937,1277 2942,1282 2942,1284 2939,1287 2935,1290 2935,1293 2938,1296 2940,1299 2942,1302 2947,1307 2952,1311 2956,1312 2958,1307 2956,1311 2955,1307 2956,1307 2960,1307 2962,1311 2965,1315 2967,1314 2968,1319 2969,1322 2973,1324 2978,1323 2977,1327 2982,1330 7982,1332 7985,1332 7986,1332 7988,1328 7991,1328 7991,1328 7991,1253 2910,1249 2908,1251 2908,1253 2913,1253 2909,1256 2914,1255 2916,1259 2919,1261 2923,1262 2923,1266 2925,1270 2930,1270 2932,1267 2929,1269 2929,1269 2931,1269 2926,1265 1926,1270 1926,1274 1926,1274 1929,1269 1929,1270 1931,1272 1935,1269 1935,1273 1938,1278 1938,1278 1938,1280 1943,1275 1948,1276 1951,1279 1948,1280 1952,1281 1952,1286 1954,1290 1958,1290 1963,1294 1964,1298 1962,1298 1958,1302 1963,1302 1967,1307 -2033,1311 -2030,1307 -2030,1310 -2025,1314 -2020,1317 -1020,1321 -1016,1321 -1018,1321 -1015,1326 -1016,1324 -1016,1327 -1011,1326 -1007,1326 -1002,1326 -1004,1321 -1004,1321 -1003,1324 -1008,1328 -1007,1328 -1003,1333 -999,1336 -998,1339 -997,1337 -996,1340 -2996,1335 -3000,1339 -2996,1343 -2995,1346 -2990,1341 -2990,1345 -2991,1345 -2995,1269 2931,1269 2936,1271 2941,1275 2941,6275 2943,6274 2943,6279 2939,6274 2942,6274 2946,6275 2947,6276 2948,6280 2947,6282 2951,6287 2952,6287 2956,6289 2959,6294 4959,6298 4964,6302 4965,6300 6965,6305 6965,11305 6967,11305 6967,11310 6966,11310 6966,11314 6964,11318 6969,11318 6972,11323 6974,11328 6977,11329 6979,11333 6982,11337 6982,11334 6982,11337 6983,11341 6988,11345 6991,11349 6992,11353 6993,11353 6996,11353 7000,11356 7000,11353 6000,11350 6002,11353 6004,11354 6007,11356 6009,11358 6009,11359 6011,11363 6016,11365 6013,11369 6015,11372 6017,11377 6022,11381 6025,11382 9025,11385 9029,11390 9024,11389 9020,11391 9020,11389 9016,11394 12016,11397 12021,11400 12021,11405 12024,11405 8024,11403 8029,11403 8032,11401 8033,11406 8032,11402 8027,11406 8027,11410 8029,11408 8030,11408 8035,11413 8035,11418 8038,11423 8038,11428 8036,11428 8037,11433 8033,11435 8032,6435 8035,6439 8036,6440 8034,6441 8039,6442 8043,6446 8045,6451 12045,6454 12050,6454 12049,6455 12054,6457 12057,6458 12060,6461 13060,6466 13060,6467 13065,6467 13070,6465 13073,6465 13073,6466 13077,6463 16077,6465 16081,6468 16077,6471 16077,6475 16078,6475 16080,6470 16082,6465 16084,6465 16088,6470 16091,6471 16091,6469 16089,6473 16091,6477 16091,6477 16093,6480 16098,6476 16099,6478 16099,6481 16100,6486 16105,6486 16110,6488 16105,6485 16107,6487 16108,6484 16104,6485 16101,6488 16101,6489 16103,6493 16105,6493 16108,6490 16110,6487 16113,6492 16116,6495 16118,6499 16123,6497 16124,6496 16127,6498 16132,6497 16134,6499 16138,6503 16143,6502 16138,6500 16140,6502 16144,6502 16146,6503 16150,6498 16151,6500 16154,6495 16154,6494 16154,6499 16156,7499 16158,7504 16161,7507 16166,7503 16163,7505 16163,7508 16163,7511 16165,7514 16162,7517 16165,7519 16166,7524 16165,7527 16168,7529 16172,7534 16172,7534 16177,7539 16179,7537 16179,7538 16184,7538 16185,7538 16189,7540 16191,7540 16193,7541 16193,7545 16197,7550 16199,7554 16204,7558 16208,7559 16211,7560 16214,7564 16216,7563 16215,7558 16219,7558 16216,7555 16221,7559 16223,7559 16224,7559 16226,7561 16231,7558 16235,7553 16240,7552 16236,7557 16234,7552 16236,7554 16238,7557 16239,7552 16243,7553 16243,7555 16243,7555 14243,7558 14248,7559 14243,7559 14239,7561 14241,7561 14243,7561 14248,7562 14250,7566 14254,7570 14254,7575 14256,7575 14259,7576 14259,7579 14259,7583 14257,7583 14257,7583 14253,7584 14249,7579 14247,7576 14245,7579 14250,7577 14253,7582 14256,7582 14257,7578 14253,7575 14252,7577 14255,7578 14255,7578 14256,7581 14257,7584 14252,7588 14252,7592 14249,7592 18249,7588 18253,7590 18255,7592 18259,7596 18254,7601 18255,7601 17255,7605 17256,7610 17258,7613 17261,7617 17262,7619 17266,7617 17267,7621 17268,7623 17272,7626 17272,7626 17277,7625 17282,7620 17281,7617 17284,7618 17287,7617 17283,7616 17281,7621 17279,7624 17281,7624 17282,7624 17279,7628 17279,7628 17280,7633 17284,7637 17280,7638 17280,7638 17281,7641 17282,7641 17282,7638 17283,7638 17284,7643 17280,7647 17281,7652 17285,7656 17285,7658 17288,7660 17290,7661 17292,7664 17297,7666 17302,7663 17304,7664 17300,7659 17303,7661 17303,7657 17307,7659 17307,8659 17310,8661 17313,8664 17314,8665 17313,8665 17309,8669 17313,8671 17316,8670 17320,8668 17320,3668 17323,3665 17324,3661 17329,3661 17331,1661 17332,1661 17333,1663 17338,1668 17333,1663 17333,1667 17331,1668 17331,1664 17334,1666 17337,1665 17337,6499 16138,6503 18138,10503 18142,10503 18142,10505 21142,10502 21144,10502 21142,10504 21141,10504 21139,10508 21140,10512 21141,10512 21143,10515 21144,10517 21147,10517 21143,10519 21143,10519 21146,10519 21142,10519 21142,10522 21141,10523 21141,10523 21145,10523 21149,10527 21153,10531 21154,10534 21158,10531 21158,10527 21160,10532 21165,10534 21165,10531 21165,10533 21162,10529 21163,10532 21160,10534 21163,10535 21161,10540 25161,10538 25164,10538 25166,10540 25171,10543 25171,10547 25175,10547 25175,10550 25178,10552 25182,10556 25177,10558 25181,10558 25183,10563 25187,10564 25183,10560 25188,10565 25188,10569 25191,10573 25195,10575 25199,7581 14257,7585 14257,7586 14257,7588 14254,7590 14255,7593 14256,7590 14260,7595 14263,7595 14259,7597 14256,7598 14261,7598 14258,7599 14261,7600 14261,7602 14258,7602 14258,7598 14259,7598 14264,7600 14267,7601 17267,7597 17268,7602 17273,7605 17276,7605 17276,7603 17279,7604 17279,7608 17278,7613 17282,7615 17285,7617 17288,2617 17288,2617 17289,2620 17289,2620 17285,-1380 17288,-1382 17287,-1384 17292,-1384 17294,-1380 17295,-1380 17297,-1380 17299,-1375 17303,-1372 17303,-1373 17298,-1368 13298,-1365 13301,-1366 13297,-1371 13295,-1371 13298,-1371 13298,-1375 13301,-1378 13302,-1378 13302,-1377 13302,-1374 13301,-1373 13306,-1370 13311,-1371 13307,-1366 13307,-1365 13309,11349 6992,11352 6992,11354 6997,11356 7002,11356 7007,11359 7010,11354 7005,9354 7009,9356 7011,9359 7016,9360 7014,9360 7015,9363 8015,9367 11015,9370 11012,9367 11012,9368 11016,9363 11017,9360 11018,9364 11021,9359 11016,11402 8027,11399 8029,11400 8033,11401 8034,11405 8029,11407 8027,11410 8029,12410 8033,12414 8035,12412 8040,12415 8040,12416 8045,12421 8042,12426 8037,12424 8042,12427 8042,12430 8044,12434 8046,12430 8048,12434 8045,9434 8045,9439 8043,9442 8043,9442 8045,9442 8040,9442 8035,9438 8038,9440 8039,9445 8036,9446 8039,9441 8043,12441 8047,12440 8048,12444 8052,12445 8057,12450 8053,12452 8053,12448 8054,12443 8058,12441 8063,12444 8067,12449 8067,12448 8071,12451 8076,12454 8073,17454 8073,17457 8074,17459 8079,17463 8079,17461 8080,17464 4080,17467 4085,17463 4085,17463 4088,17462 4090,17464 4095,17468 4094,17464 4097,17464 4093,17466 4088,17469 4092,17470 4094,17472 4089,17470 4090,17473 4089,17478 4094,17474 4091,17477 4095,17482 4100,17487 4103,17492 4101,17492 4104,17493 4101,17495 4106,17497 4106,17502 4111,17505 4111,17504 4113,17505 4115,17509 4119,17504 4123,17505 4127,17503 4131,17503 4126,17504 4126,17506 4129,17501 4132,17502 4133,17499 4133,17503 5133,17503 5135,17498 5134,21498 5134,21498 5131,21498 5133,21497 5138,21501 5140,21502 5138,21502 5141,21505 5136,21501 5139,21501 5141,21505 5146,21510 5151,21510 5155,21512 5156,21508 5159,21508 5163,21512 5167,21517 5169,21521 5173,21519 5172,21517 5172,21515 5172,21515 5173,21516 5172,21515 5169,21516 5170,21516 5170,21516 5168,21520 5172,21523 5172,21525 5174,21522 5176,21523 5180,21527 5176,21527 5177,21527 5178,21531 5183,21533 5181,21538 5176,21539 5179,21544 9179,21544 9184,21547 9186,21548 9184,21553 9188,21553 9193,21554 9195,21556 9200,21556 9201,21555 9201,21556 9205,21561 9205,21556 9202,21561 9203,22561 9204,22566 9204,22561 9208,22559 9210,22564 9207,22560 9205,22560 9208,22564 9210,22567 9214,22569 9218,22572 9222,22576 9218,23576 9222,24576 9220,24574 9224,24569 9228,24569 9228,6481 16100,6483 16101,6486 16104,6485 16108,8485 16110,8486 16115,8482 16110,8483 16115,8485 16110,8486 16106,8487 16103,8490 16106,8486 16107,8487 16104,8487 16104,8492 16108,8493 17108,8488 17108,8490 17110,8494 17114,8495 17113,8495 17117,8498 17117,8503 17122,8498 17124,8498 17128,8494 17129,8496 17134,8496 17134,8497 17135,8498 17135,8501 17135,8502 17132,8506 17132,8501 17130,8505 17131,21515 5169,21518 5164,21523 5160,21528 5162,21530 8162,21532 8164,21536 8165,21536 8168,21540 8169,21543 8165,25543 8169,25545 8173,25549 8169,29549 8174,29546 8177,29547 8172,29552 8177,29552 8180,29557 8180,29558 8175,34558 8180,34558 8176,34555 8179,34556 8181,7584 14249,7586 14250,7588 14252,7591 14256,7587 14257,7590 14257,7592 17257,7597 17261,7601 17265,7605 17268,7606 17273,7610 17268,7612 17270,7612 17271,7615 17266,7617 17266,7622 17270,7627 17272,7627 19272,7631 19277,7636 19279,7636 19280,7636 19285,7637 19287,7639 19290,7644 19295,7647 19291,7649 19296,7653 19296,7653 19291,7656 19292,7657 19292,7653 19292,7653 19297,7652 19297,7648 19299,7647 19303,7647 19304,7649 19307,7654 19309,7651 21309,7653 21309,7657 21313,7659 21309,7662 21310,7666 21314,7663 21314,7663 21317,7658 21317,7661 21321,7666 21323,7667 21328,7662 21333,7663 21328,7667 21332,7669 21334,7671 21330,7674 21326,7675 21331,7679 21336,7681 21338,7681 21342,7681 21342,7677 21345,7682 21346,3682 21348,3680 21350,3681 21351,3680 21349,3681 21349,3686 21350,8686 21355,8682 21354,8685 21350,8681 21345,8684 21350,8683 21353,8681 21356,8681 21358,8684 21361,8684 21364,8684 21367,8685 21363,8685 21365,8685 21362,8688 21358,8690 21359,8687 21364,8687 21364,8689 21361,8691 21356,8696 21353,8696 21352,8699 21352,8699 21357,8703 21358,8706 21353,8708 21358,17503 4126,17505 4129,20505 4133,20510 4133,20515 4128,21515 4129,21516 9129,21519 9131,21524 9134,21522 9135,21522 9138,21518 9137,21516 9138,21516 9138,21515 12138,21516 12142,21518 12146,21513 12144,21517 12149,21521 12144,21521 12148,21523 12151,21527 12148,21527 12143,21528 12148,21528 12145,21533 12149,21534 12152,21537 12155,21532 7155,21536 7153,21540 7157,21536 7154,21540 7154,21539 7157,21539 7160,21542 7160,21547 7164,21551 7168,21554 9168,21556 9168,21556 9169,21559 9166,21561 9169,21565 9171,21568 9176,21565 9181,21567 9180,23567 9178,23570 9181,23575 9181,23571 9181,20571 9176,20574 9179,20569 9182,20569 9184,20570 9189,20565 9191,20562 9195,20559 9196,20559 9201,20563 9197,20564 9193,20565 9197,20565 9200,20565 9200,20563 9201,20559 9205,20564 13205,20560 13207,20560 13212,20555 13213,20558 13217,20554 13217,20558 13219,20559 13222,20561 13223,20561 13226,20561 13231,20562 13232,20567 13235,20564 13239,20560 13239,20560 13236,20560 13236,20560 13237,20564 13241,24564 13241,28564 13242,28564 13240,28561 13237,28561 13240,28562 13243,28563 13243,28560 13248,28559 13248,28559 9248,28562 9245,28564 9241,28567 9245,28568 9240,28568 9245,28571 9247,28571 9248,28574 9253,28572 9256,28576 9257,28577 9257,28574 9257,10564 25183,10566 25188,10567 25190,10568 25186,10569 25187,10570 25188,10573 25185,10568 25185,10570 25187,10573 25191,10573 25193,10578 25193,10578 25198,10581 25202,10582 25206,10578 25206,10579 25211,10580 25206,10582 25208,12426 8037,12427 8042,12432 8047,12437 8047,12435 8051,12435 9051,12432 9054,12433 9056,12435 9061,12438 9062,12435 9062,12438 9067,12434 9071,12431 9075,12436 11075,12436 11075,12441 11080,12445 11085,12449 11089,12445 11091,12442 11091,12442 11093,12442 11093,12443 11098,12439 11098,12440 11099,7440 11104,7442 11107,7446 11110,7446 11114,7451 6114,7452 6110,11452 6105,11452 6104,11454 6103,11459 6106,11462 6107,13462 6107,13458 6104,12458 9104,17458 9109,17458 9110,17460 9113,17465 12113,17468 12112,17468 12114,17466 12111,17470 12116,17469 12119,17472 12123,17470 12118,17474 12118,17476 12120,13476 12121,13480 17121,13480 17125,13484 17123,13489 17122,13489 17125,13487 17127,13487 17132,13486 17131,13491 17136,13491 17139,13495 17144,13496 17147,13496 21147,13498 21149,13498 21154,16498 21159,16503 21162,16504 26162,16509 26160,16509 26163,16509 26162,16514 26159,16518 26163,16522 26158,16518 30158,16516 30161,16516 30164,16517 30169,16520 30167,16525 30168,16528 30170,17528 30170,17532 30175,17533 30177,17533 30182,17536 30186,17537 30189,17540 30193,20540 30193,20541 30196,20541 30197,20542 30196,20544 30195,20548 30200,20553 30199,20557 30201,20561 30206,20565 30210,20566 30209,20568 30214,20568 30217,20563 30217,20563 30218,20565 30222,20567 30222,20572 30225,20567 29225,20570 29225,20570 29230,20573 29231,20571 29230,20569 29232,20570 29236,17504 4123,17505 4127,17508 5127,17505 5131,17505 5135,17509 5140,17508 5142,17510 5139,17515 5141,17517 5144,17522 5144,17524 5146,17529 5147,17529 5152,17533 8152,17533 8150,17537 8153,17532 8158,17533 11158,17536 11163,17540 16163,17540 16165,17542 16168,17542 16171,17542 16171,17547 16167,17548 16170,17550 16170,17545 16175,17549 16178,17549 16179,17549 16179,20549 16181,20551 16186,20549 15186,20550 15186,20547 15188,20550 15184,20546 15186,20545 15191,20548 15190,20552 15193,20557 15195,20552 15196,20557 15193,20562 15196,20562 15199,20567 15202,20563 15207,20564 15207,20564 15209,20568 15209,20571 13209,20573 13209,20576 13211,20577 13216,20574 14216,20570 14215,20568 17215,20568 17216,20570 17218,20575 17218,20580 16218,20583 16215,20586 16217,20581 16220,20582 16224,20585 16224,20588 16229,20590 16231,20592 16235,20595 16232,20595 16234,20598 16238,20603 16240,20607 16236,20608 16236,20608 16239,20611 21239,20613 21244,20614 21246,20612 21244,20612 21242,20615 21239,20616 21241,20621 21242,17621 21244,17626 21245,17629 21244,15629 21239,15632 21240,15636 21245,15637 21247,15639 21244,15637 21245,15642 21245,15647 21244,15646 21248,15650 21252,15653 21247,15651 21250,15649 21250,15645 21250,19645 21253,19648 21256,19647 21253,19643 21249,19646 21249,19648 21245,19650 21242,19647 21240,19652 21240,14652 21240,14657 21243,14659 21244,14664 21241,14659 21239,14654 21240,14651 21244,14647 21246,14647 21249,14650 21247,14651 21252,14651 21255,14649 21258,14652 21262,14655 21262,14652 21260,14653 21255,14653 21255,14653 21257,14656 21258,14651 21258,14653 21261,14654 21263,14654 21264,14659 21267,14660 21263,14664 21264,14666 26264,14661 26266,14661 26263,14661 26264,14666 26265,14667 26265,14665 26263,14669 26263,14667 26263,14669 26261,14667 26263,14671 26261,14671 26263,12671 26264,12672 26266,12677 26269,17677 26269,17673 26271,17676 26271,17676 26273,17681 26278,17685 26278,21536 8168,21539 8171,21543 8169,21538 8170,21541 8170,21544 8171,21548 8166,21548 8168,21552 8171,21555 8173,21558 8168,21557 8168,21562 8163,21559 8168,21559 8172,21564 8177,21569 8175,21568 8175,21573 8178,21575 8180,21570 8183,21570 8186,21566 8184,21569 8185,21569 8187,25569 8190,25571 8193,25575 8193,25576 8194,25576 13194,25580 13194,25584 13196,25589 13197,25592 13200,25595 13205,25592 17205,25593 17209,25594 17213,27594 17209,27592 17213,27590 17212,27592 17217,27592 17220,27596 17224,27599 17227,27603 17232,27603 17227,27605 17229,28605 17230,28607 17234,28609 17230,28610 17231,28610 17236,28611 17238,28613 17241,28614 17241,28615 17243,28616 18243,28618 18246,28618 18246,28622 18246,28627 18246,28632 18245,27632 18245,27634 18245,27633 18244,27638 18245,-1366 13297,-1365 13299,-1362 13303,-1362 13300,-1361 13304,-1366 13308,-1368 13304,-1368 13306,-1367 13309,-1363 13313,-1358 13313,-1353 13318,-1351 13319,-1347 13323,-1343 13318,-1343 13322,-1340 13317,-1337 13318,-1337 13322,-1337 13324,-1335 13327,-1339 13328,-339 13328,-334 13333,-331 13336,-327 13338,-326 13340,-326 13342,-321 13340,-318 13343,-317 11343,-312 11345,-307 11349,-311 11353,-314 11350,-311 11353,-313 11349,-308 11352,-313 11347,-308 11351,-306 9351,-306 9351,-306 9351,-301 9355,-301 9356,-299 9359,-297 9355,-297 9354,-296 9359,-294 9364,-290 9360,-294 9355,-289 9357,-291 9353,-286 9355,-4286 9351,-4283 9347,-4281 9344,-4281 9344,-4280 9342,-4280 9342,-4280 9339,-4277 9335,-4274 9333,-4274 9335,-4269 9336,-4265 9339,-4260 9340,-4256 9339,-4251 9336,-4251 9339,-4249 9344,-4254 9344,-4255 9348,-4253 7348,-4251 7352,-4247 7354,-4243 7357,-4242 7357,-4240 7362,-4240 7367,-4235 7371,-3235 7371,-3230 7376,-3225 7375,-3221 7372,-3223 7369,-3223 7371,-3223 7369,-3225 7364,-3220 7364,-3218 11364,-3218 11368,-3215 11369,-3210 11372,-3210 11369,-3208 11373,-3207 11377,-3207 11381,-3209 11384,-3209 11383,-1209 11379,-1211 11383,-1209 11383,-1205 11379,-1200 11384,-1197 11379,-1195 11375,-1197 11376,-1192 11377,-1192 11379,-1192 11384,-1188 11382,-1186 11382,-1181 11384,-1180 11388,-1176 11389,-1171 11388,-1171 11393,-1169 11393,-1164 11398,-1162 11393,-1158 11392,-1155 11395,-1155 11397,-155 16397,-156 16401,-156 16406,-158 16409,-158 16412,-158 16414,-160 16415,-158 20415,2842 20411,2847 20413,2848 20417,2848 20417,2848 20412,2850 20407,2850 20403,2846 20408,2847 20406,2849 20406,2854 20402,2858 20403,2863 23403,2858 23402,2855 23405,2858 23400,2857 23400,2852 26400,2849 26404,2850 26406,2855 26410,2859 26415,2863 26411,2866 26411,2866 26411,2866 26412,2868 26415,2868 26419,2868 26423,2873 26424,2876 26425,14656 21258,14661 21260,14664 21262,14664 22262,14662 22267,14662 22268,14662 22268,14658 22273,14660 22278,14658 22277,14659 22278,14660 22283,14661 22281,14661 22285,14661 22288,14664 22290,14659 22295,14662 22298,14663 22301,14667 22301,14668 22301,14673 22303,14678 22306,14681 22302,14686 22299,14686 22301,14683 22304,14686 22305,14687 22301,14689 25301,14684 25301,14684 25299,14685 25300,14685 25301,14685 24301,14688 24301,14693 24303,14693 24298,14693 24298,14688 24299,14689 24297,14690 24299,14690 24302,14690 24302,14686 24303,14686 24306,14688 24302,8492 16108,8494 16113,8498 16116,8495 16116,8496 16116,8499 16116,8504 20116,8508 20119,8508 20119,8507 20119,8509 20123,8509 20127,8512 20128,8514 20130,8519 20135,8522 20136,8522 20136,8524 20138,8524 20141,8528 20142,8526 20145,8530 20141,8530 20145,8532 20149,8531 20151,8536 20155,8535 20154,8539 20154,8539 20149,8539 20149,8543 20146,8540 25146,8538 23146,8540 23149,8540 23149,8545 23151,8546 23152,8551 23152,8555 23152,8559 23153,8561 23153,10561 18153,10561 18153,12561 18158,12564 18159,12566 18163,12567 18165,12564 18165,12568 20165,12570 20170,12575 20173,12579 20177,12576 20177,12579 20176,12584 20176,12583 20181,12585 20182,12583 20186,12582 20187,12585 20192,12582 20194,12584 20198,12586 20198,12581 20201,12582 20204,12581 20206,13581 20209,13586 20211,13586 20216,13589 20217,13589 20213,13586 20215,13588 20213,13592 20215,13596 20216,13596 20221,13600 20221,13598 20224,13595 20221,13598 20226,13602 20229,15602 20232,15606 20232,15611 20232,15610 20232,15613 20235,15617 20239,15612 20234,15612 20233,15615 20237,15617 20233,15619 20234,15619 20229,15623 25229,15624 25229,20624 25228,20628 25229,20631 25234,20630 25239,20634 25241,20632 25244,20636 25240,20634 25237,20639 25236,20634 25241,7590 14257,7592 14260,7592 14262,7592 14265,7595 14266,7600 14263,7600 14268,7604 14270,7609 14274,7611 14275,7615 14275,7620 14277,7620 14276,7625 14277,7625 14277,7628 14281,7628 14286,7630 14284,7630 14284,8543 20146,8542 20148,8546 20150,8550 20152,8550 20153,8550 20158,8545 20156,8545 20157,8550 20157,8550 20155,8550 20157,8553 20161,8557 20161,8557 20165,8560 20161,8563 20159,8568 20154,8570 20158,8573 20161,8573 20166,8577 20168,8580 20171,8584 20173,8585 20175,8580 20180,8582 20183,8582 20188,8582 20188,8585 20193,8588 20198,8589 20199,8591 20197,8594 20198,8596 20196,8592 23196,8597 25196,8601 25199,8601 25203,8604 25202,8604 25202,8599 25205,8601 25210,8601 25206,8603 25206,8606 25206,8605 25211,8609 25211,8613 25208,8614 25205,8619 25208,8619 25210,8621 25214,8619 29214,8615 29218,8616 29219,8617 29217,8622 29222,11622 29225,11624 29229,11623 29230,9623 29225,9621 29224,9625 29227,9628 29227,9624 29232,9626 29237,9631 29241,9634 29245,9635 29248,9638 29253,9643 29258,9646 29258,9647 29255,9648 29253,9650 29258,9648 29262,9647 29262,9642 29267,9646 29267,14646 29269,14650 29274,14655 29279,14654 29277,14655 29275,14653 29276,14655 29273,14656 29269,14653 29272,14656 29272,14656 29274,14660 29276,14663 29276,14660 29278,14659 29281,14659 29276,14661 29272,14656 29273,14657 29274,14652 29270,14654 29274,14657 29270,14659 29272,14655 29275,14657 29270,14659 32270,14660 32270,14662 32273,14665 32277,12665 32279,12670 32279,12670 32277,12670 32274,12672 32277,12677 32282,12682 32285,12678 32289,12674 32291,12677 32287,12679 32287,12683 32292,12685 32292,12680 32289,12682 32294,12683 32299,12687 32298,12692 32300,12695 32305,12699 32310,12703 32311,12704 32312,21515 5172,21516 5175,21518 5175,21513 5177,21516 5182,21520 5186,21525 5185,21529 5185,21528 5186,21530 5181,21533 5178,21537 5183,21537 5183,26537 5183,26534 5183,26539 5183,26542 5178,26542 5176,26544 5176,26546 5177,26548 5175,26549 5178,26548 5181,26548 5184,26553 10184,26557 10179,26559 10175,26563 10171,26563 10173,26564 10170,26568 10169,26572 10171,26577 10171,26581 10169,26577 10173,26573 10169,26575 10171,26578 12171,26576 12175,26576 12180,26581 12183,26577 12183,26580 12184,26582 12181,26582 12182,26583 12182,26588 12186,26590 12191,26593 12193,26593 12198,26598 12198,26602 12193,26602 12193,26604 12195,26607 12195,26611 12196,26615 12196,26615 12200,21534 12152,21534 12152,21537 12147,21540 12147,21545 12150,21545 12145,21548 12150,21549 12152,21544 12152,21544 12150,21547 12153,21552 12152,21553 12157,20553 12161,20553 12156,20556 12152,15556 12157,15559 12160,15557 12163,15561 12163,15564 12166,15565 12165,15561 12161,15559 12163,15559 12168,-4274 9335,-4274 9339,-4276 9341,-4276 9344,-4273 9341,-4271 9341,-4266 9342,-4266 9339,-4269 9335,-4265 9339,-4263 9342,-4259 9345,-4254 9345,-4250 9340,-4250 9335,-4245 9338,-4242 9341,-4240 9341,-3240 9346,-3242 9349,-3241 9351,-3239 9352,-3238 9355,-3237 9358,-3233 9356,-3232 9358,-3233 9358,-3228 9363,-3228 9364,-3223 9369,-3226 9369,-3224 9373,-3222 9378,-3217 9379,-3215 9384,-3215 9384,-3215 9389,-3215 9394,-3215 9390,-3210 9385,-210 9386,-207 9389,-208 9389,1328 -1007,1328 -1010,1329 -1013,1334 -1018,1339 -1013,1344 -1013,1346 -1013,1350 -1015,1351 -2015,1353 -2016,1353 -2011,1350 -2016,1350 -2013,1354 -2010,1356 -2005,1359 -2007,1364 -2005,1363 -2005,1365 -2000,1362 -1999,1365 -1998,1366 -1998,1362 -1994,1364 -1989,1365 -1988,3668 17323,3665 17327,3663 17332,3666 17337,3667 17341,11433 8033,11434 8035,11434 8031,11437 8031,11437 8032,11441 8033,11439 8033,11442 8036,11445 8037,11448 8038,11452 8043,11454 8047,11456 8047,11459 8044,11454 8049,11457 8051,11460 8052,11463 8055,11458 8057,1346 -2990,1346 -2986,1350 -2982,1347 -2986,1352 -2983,1352 -5983,1355 -5979,1358 -5974,1354 -5970,1356 -5965,1360 -5964,1362 -5960,1364 -5960,1364 -5960,1369 -5960,1364 -5963,1369 -5960,1374 -5957,1378 -5952,1380 -5951,1384 -5951,1380 -5948,1380 -5944,1384 -5942,1387 -5945,5387 -5949,5391 -5950,5395 -5950,5395 -5951,5395 -5949,5400 -5954,5404 -5953,5402 -5958,7402 -5958,7403 -5963,7404 -5960,7404 -5959,11363 6016,11359 6018,11364 6023,11365 6024,11365 6023,11369 6025,11373 6020,11378 6020,11377 6024,11379 6029,11383 6033,11384 6034,11388 6037,11389 6041,11394 6043,11396 6048,11401 6048,11402 6050,11406 6052,11404 6054,11409 6058,11413 6059,11415 6060,11411 6065,11416 6068,11420 6073,11415 6076,11416 6078,11419 6083,11423 6085,11428 6086,11430 6086,11432 11086,11437 11091,11432 11088,11429 11086,11432 11086,11427 11090,11427 11095,11429 11092,11427 11092,11431 11087,11433 11088,11436 11090,11436 11091,11436 11096,11439 11099,11440 11099,11440 11095,11445 11097,15445 11102,15445 11102,15441 11099,15445 11100,15445 11102,15443 11106,15445 11110,15450 11107,15453 11110,15457 11110,15457 11115,15459 11119,15460 11117,15465 11117,15465 11120,15464 11123,15463 11124,15460 11124,15460 16124,15458 16127,15462 16122,15466 16126,15462 16131,15465 16133,15463 16135,15462 16136,15462 16140,15466 16142,15468 16147,15468 16147,15471 16149,15471 16147,15475 12147,15477 12150,15480 12147,15484 12144,15487 12145,15490 12147,15492 12149,15494 12150,15496 12153,15497 12155,15499 12150,15499 12147,15500 12143,15504 12146,15499 12150,15500 12150,15500 12152,15505 12153,15506 12157,15506 12157,15508 12158,15512 12159,19512 12162,19513 12159,19511 12163,19512 12162,19517 12167,19520 12167,19522 12168,19525 12171,19525 12172,19525 12175,19526 12172,19526 12172,19526 17172,19527 17175,19528 17176,19529 17179,19529 17178,19533 17181,19532 17183,19532 17179,19537 17174,19539 19174,19538 19171,19542 19172,19547 15172,7641 17282,7646 17284,7649 17284,7652 17284,7654 17285,7650 17289,7647 17291,7645 17296,7649 17297,7650 17294,7653 17294,7653 17298,7656 17303,7658 17308,7662 17313,7666 17308,7664 17313,7669 17313,7669 17313,7669 17316,7667 17313,7667 18313,7663 18314,7661 18316,7662 18317,7657 18318,7662 18315,7658 18316,7661 18318,7661 18322,7664 18317,7667 18315,7671 18315,7675 18315,7674 18315,7670 18316,11670 18316,16670 18321,16673 18321,16678 18322,16682 18327,16683 18332,16686 18334,16690 18334,16688 18336,16685 23336,16688 23337,14688 23338,14692 23337,14694 23338,14697 23339,14697 23342,14698 23342,14698 23343,14698 23348,14693 23350,14694 23347,14695 23347,14696 26347,14692 23347,14692 23347,14693 23350,14693 23351,14698 23355,18698 23352,18698 23356,18702 23360,18701 23362,18699 23363,18701 23363,18702 23366,18699 23366,18694 23370,18699 23370,18702 23374,18707 23378,18706 23380,18706 23381,22706 23384,22706 23385,22705 23389,22706 23384,22706 23384,22706 23384,22710 23380,22713 23381,22718 23386,22716 23390,22712 23390,22708 23390,22705 23392,22704 23397,25704 23402,25704 23402,25706 23404,25710 23404,22710 18404,22707 18402,22704 18403,22704 18406,22704 18411,22704 18411,22704 18410,22709 18410,22709 18407,22704 18405,22703 18405,22707 18405,20707 18409,20709 18412,20710 18411,20712 18414,20712 18414,20712 18412,20712 18416,20714 18412,20717 18417,20720 18419,20715 18421,20718 18422,20723 18425,20723 18430,20723 18434,20725 18435,20724 18437,20724 18433,20726 18433,20731 18437,20732 18437,20730 18438,20735 18440,20739 18438,20734 18438,20739 18437,20739 18437,20744 18439,20749 18438,20750 18434,20753 18436,20754 18431,20754 18432,20758 18433,20762 18438,20764 18443,20766 18447,20766 18450,20767 18451,20768 18451,20769 18448,20770 18452,20774 18456,20777 18458,20781 18462,20782 18463,20785 18468,17785 21468,17784 21473,17782 21477,17787 21481,17783 21482,17785 26482,17788 26482,17788 26482,17791 26479,17794 26483,17790 26483,22790 26483,22790 26479,20583 16215,20585 16220,20589 16225,20590 20225,20592 20222,23592 20227,22592 20229,22597 20233,22600 20233,22603 20237,22604 20240,22599 20241,22595 18241,22595 18242,22598 18243,22602 18247,22605 18252,22601 18256,22598 18255,22600 18257,22604 18258,22609 18261,22608 18261,22606 18264,22608 18261,22605 18265,24605 18262,24608 18263,24611 18267,24608 18267,24613 18271,24615 18272,24610 18273,24614 18272,24619 18276,24621 18281,24625 18276,24622 18280,24622 18282,24621 18279,24622 18277,24627 18279,24631 18284,24634 18289,24634 18292,24634 18294,24636 18299,24639 18294,24644 18295,24647 18298,24647 18301,24643 18303,24643 18306,24639 18311,24636 18315,24641 18317,24645 18317,24648 18319,24649 18323,24649 18328,24652 18330,24652 18329,24652 18327,24655 18322,24656 18319,24658 18319,24661 18320,24664 18316,24660 18320,24657 18318,24657 18320,24659 18325,24660 18327,24661 18323,24656 18327,24652 18323,24654 23323,24658 28323,24660 28318,24665 28319,24666 28323,24668 28325,24668 28328,24672 28325,24667 28328,24668 28325,24670 28326,24665 28330,24668 28334,24672 28336,24672 28336,24668 28339,24672 28340,24672 28338,24674 28341,24675 28346,24675 28351,24677 28356,24679 28357,24681 28356,24677 28360,24680 28355,24684 28354,24688 28356,24688 28351,24690 28356,24686 28361,24691 28364,24692 28364,24692 28365,24692 31365,24693 31370,21693 31370,21692 35370,21688 35372,21692 35377,21695 35377,21697 35377,21698 35379,21698 35374,21701 35375,21701 35379,21703 35380,21708 35383,21706 36383,21709 36383,16709 36383,16710 36386,16715 36382,16711 36386,16706 36388,16706 39388,16706 39383,16706 39379,16711 39379,16711 39376,16714 39381,16716 39386,16717 39389,16717 39391,16720 39391,16723 39387,17723 39392,17726 43392,17722 43396,19722 43399,19724 43394,19727 43391,19725 43395,19723 43398,19726 46398,19730 46400,19730 46403,19730 46405,19734 46407,19734 46410,19733 46407,19728 46412,19726 46416,19726 50416,19723 50417,19723 50416,19718 50420,19719 50424,19718 50429,19713 50433,19715 50437,19718 50442,19719 50442,19718 50444,19719 50439,19721 50443,18721 50444,18721 50446,18721 50450,18726 50451,18727 50453,18722 50451,18727 50456,18729 50455,18731 50458,18726 50458,18728 50458,18730 50463,18730 50460,18729 50456,18727 50460,18730 50462,18734 50457,18739 50455,18744 50457,18744 50461,18748 50461,18748 50466,18745 50468,18749 50463,18750 50468,18754 50472,18754 50472,18759 50472,18760 50468,18763 50473,18760 50477,18762 50477,18766 50481,18769 50483,18769 50481,18772 50482,18776 50482,18779 50486,18779 50489,18781 50489,18783 50494,18786 50496,18786 50495,18786 50498,18784 50499,18784 50499,21784 50504,21788 50502,21785 49502,21790 49501,21790 49498,21795 49494,21800 49494,21801 49495,21801 49500,21797 49505,21799 46505,21802 46508,21798 46513,21799 46516,21802 46516,21805 46519,21800 46524,21805 46527,21804 46528,21801 47528,21801 47531,21804 47533,21804 47529,21804 47534,21809 47538,21808 47538,21812 47540,21812 47535,21813 47532,21810 52532,21812 52535,21817 52536,21820 52536,21824 52541,21828 52545,19828 52545,19829 52547,19829 52551,19833 52555,19831 52552,19826 52557,17826 52562,17827 52567,17830 52568,17830 52572,17830 52575,17830 52575,17830 52574,17831 52578,17827 52582,17827 55582,17829 55583,17834 55583,17839 56583,17843 56579,17846 56580,17850 56584,17848 56588,17853 56592,17851 56596,17856 56596,17856 56600,17851 56601,17856 56601,17856 56604,20856 56604,20861 56601,20865 56596,20865 56597,20866 56597,20869 56602,20871 56603,20874 56607,20871 56605,20872 56610,20874 56613,20874 56612,20876 56617,20876 56622,20876 56626,20876 56621,20879 56623,20880 56627,20883 56624,20880 56629,20880 56629,20881 56630,20884 56630,20884 56635,20881 56636,20879 56637,20876 56632,20879 56629,20881 56633,20878 56634,20879 56634,20879 56637,20879 56642,20884 56638,20879 56639,20884 56634,20885 56631,20886 56633,20889 56632,20894 56627,20894 56631,20894 56631,20898 56632,20903 56632,20908 56630,20907 56633,20907 56636,20903 56641,20904 56641,20904 56637,20900 56639,20905 56642,20910 56643,20905 56648,20910 56653,20915 56654,20910 56659,20910 56663,20910 56664,20912 56664,20912 56666,20917 56670,20922 56670,20918 56673,20920 56675,20920 56677,20920 56677,20921 56681,20926 56677,20931 56677,20934 56680,20934 56684,20936 56689,20938 56689,20938 56690,20940 56695,20935 56696,20939 56697,20939 56699,20940 56696,20941 56694,20940 56698,20945 56700,20947 56702,20947 56707,20950 56712,20954 56713,20950 56710,20952 56706,20955 56704,20957 56708,20953 56709,20951 56714,20953 56716,20957 56720,20957 56722,20959 56725,20958 56727,20959 56728,20962 56731,20963 56736,20965 56741,20965 56740,20967 56742,20969 56737,20969 56742,20974 56744,20979 56744,20978 56745,20974 56748,20970 57748,20972 57749,20974 57751,20971 57754,20972 57752,20977 57755,20981 57758,20981 57763,20981 57765,20984 57765,20982 57767,20982 57763,20987 55763,20989 55767,20991 55770,20987 55771,20988 55774,20988 55777,20991 55775,21991 55778,21996 55778,22000 55783,22001 55783,22005 55783,22010 55785,17010 55781,17011 55783,20011 55778,20015 55783,20018 55786,20015 55791,20015 55795,20019 55792,20019 55792,20021 55792,20022 55788,20023 55783,20028 55786,25028 55790,26028 55795,26029 55790,26030 57790,26033 57794,26032 57798,26036 57802,26039 57805,26042 57805,26046 57810,26050 57811,26054 57815,26054 57819,26050 57819,26055 57820,26060 57822,26063 57823,26066 57826,26068 57824,26073 57826,26077 57831,26082 57831,26078 57836,26082 57839,26084 57839,26086 57834,26082 57834,26083 57835,26082 57840,26083 57844,26086 57843,26083 57846,22083 57849,22084 57847,22089 57847,22094 57848,22094 57853,22094 57850,22095 59850,22095 59855,22098 59858,22099 63858,22099 63861,21099 63861,21104 63862,19104 63862,19108 63864,19109 63864,19112 63868,19113 63873,19117 63876,19121 63875,19116 63877,19115 63882,19117 63878,19122 63883,19125 63884,19129 63879,19133 63879,19135 63874,19139 63871,19136 63871,19136 63873,19140 63868,19140 63873,19144 63877,20144 63879,20144 63876,20146 63880,20148 63878,20149 63877,20149 63879,20150 63882,20155 63886,20155 64886,20159 64884,20160 64884,20161 64887,20160 64887,20164 64887,12677 32287,12677 32292,12679 32297,12678 32298,12682 32294,12687 32294,12682 32296,12682 32296,12683 32298,12683 32301,12682 32305,12685 32309,12686 32311,12686 32316,12691 32311,12692 32316,12692 32312,12697 32314,12700 32319,12705 32322,12706 32327,12704 32329,12705 32332,12702 32334,12707 32338,12703 28338,12704 28340,12700 28345,12702 28345,12702 28345,12701 28348,12704 28349,12704 28345,12709 28342,12709 28343,12714 28347,12718 28351,12723 28352,12727 28353,12730 28355,12728 28353,12733 25353,15733 25353,15736 25355,15740 25356,15745 25356,15747 25351,15752 25353,15752 25354,15754 25354,15754 25353,15759 25352,15763 25352,15764 25357,15759 25352,15761 27352,15760 27354,15760 27354,15760 27355,15762 27357,15762 27354,15759 27354,15759 27354,15763 27358,15767 32358,15764 32360,15769 32360,15767 32360,15765 37360,15770 37362,15772 37363,15774 37367,15779 37363,15780 37359,15779 37363,15782 37366,15780 37370,15775 37370,15778 37365,15781 37360,15785 37356,15785 39356,15789 39358,15789 39360,15794 39365,15794 39370,15797 39375,15797 39380,15799 39379,15804 39376,15805 39377,15807 39380,15808 39385,15809 39386,15807 39386,15809 39386,15810 39389,15815 39392,15820 39392,15819 39396,15820 39398,15820 39395,15825 39400,15823 39405,15824 39403,15829 39403,15834 39406,15836 39411,15831 39415,15832 39415,15833 39415,15838 39417,15839 39419,15839 39414,15842 39413,15846 39418,15843 39420,15842 39423,15839 39420,15840 39422,15839 39420,15842 39415,15846 39410,17846 39415,17845 39411,17847 39416,17849 39420,18849 39424,18847 41424,18852 41424,18849 41429,18849 41432,18848 43432,18852 43433,18855 43433,18859 43435,18855 47435,18858 47440,18861 47435,18866 47435,18866 47439,18869 47442,18871 47445,18873 47445,21873 47445,21876 47444,21873 47449,21878 47451,21883 47456,21880 47454,21880 47454,21880 47457,21883 47459,21887 47464,21890 47465,21893 47467,21894 47464,16894 47462,16899 47457,16898 47455,16893 47456,16897 47458,16896 47455,16898 47459,16900 47464,16903 47469,16908 47471,16903 47474,16901 47473,16906 47473,16901 47478,16904 47479,16906 47475,16906 47474,16907 47475,16906 47479,16901 47482,16901 47482,16905 47486,16908 47487,16911 47490,16915 47490,16917 47492,16921 47497,16926 47498,19525 12175,19525 12176,19521 12177,19522 12181,19525 14181,19521 14181,19519 14185,19519 14189,19524 14192,19527 14192,19529 14196,19534 14200,19535 14205,19538 14208,19540 14204,19545 14207,19545 14207,19547 14210,19550 15210,19554 15210,19555 15210,19555 15213,19560 15213,19562 15212,19564 15213,19569 15210,19570 15214,19573 15214,23573 15217,28573 17217,28574 17220,28574 17219,28574 17224,28576 17229,28577 17233,28577 17236,28579 17236,28580 17238,28584 17243,28588 17248,28587 17252,28587 17252,28582 17255,29582 17259,29577 17260,29578 17262,29583 17257,29585 17257,29586 17260,29586 17265,29590 17267,29593 17267,29594 17267,29599 21267,29603 21271,29603 21272,29605 21274,29607 21276,29612 26276,29613 26279,29616 26280,29621 26277,29621 26277,29623 26282,29626 26285,29631 26289,29628 26289,29632 26290,29637 26294,29642 26290,29646 26292,29648 26291,29649 26288,29653 26293,29655 26292,29655 26293,12702 28345,12703 28348,12698 27348,12699 27349,12698 27354,12700 27354,12700 27355,12703 27360,12703 27361,12700 27362,12704 27367,12701 27371,12706 27376,12710 27372,12710 27373,12710 27368,12715 27370,12713 27374,12716 27378,12716 27380,12714 27379,12719 27374,12718 27373,12722 27376,12724 27376,12729 27371,12733 27372,12733 27377,12735 27373,12735 27374,12737 27378,12739 27379,12742 27381,12739 27381,12739 27376,12743 27378,12743 27379,9743 27375,9744 32375,9745 32377,9746 32374,9746 32372,9750 37372,9752 37375,9754 37375,9751 37377,9755 37379,9759 37379,9763 37383,9766 37385,9767 37382,9768 37383,9765 40383,9770 40378,9770 40382,9775 40384,9777 40386,9782 40391,9778 40395,9773 40395,9778 40397,9779 40399,9781 40402,9781 40398,9781 40393,9780 40396,9782 40399,9785 40398,9786 40395,9789 40390,9793 40387,9798 40390,9803 40394,9805 40397,9800 40400,9795 40402,9800 40403,9802 40407,9807 40410,9806 40407,9807 40403,9812 40400,9814 40403,9819 40403,9819 40400,9822 40405,9824 40405,9822 40408,9827 40410,9831 40413,9831 40413,9826 40412,9827 40417,9832 40418,9832 40416,9833 41416,9833 41421,9834 41416,9838 41416,9838 41421,9840 41422,9844 41424,9839 41424,9843 41427,9845 41430,9849 41430,9849 41425,9852 41423,9855 41426,9858 41429,9860 41434,9862 41436,9866 41441,9868 41436,9869 41434,9871 41434,9875 41437,9877 41437,9881 41438,9883 41438,9879 41438,20903 56641,20898 56644,20903 56647,20901 56649,20903 56645,20905 56650,20909 53650,20905 53650,20910 53652,20907 53655,20912 53652,20916 53656,20917 53656,20912 53661,20912 53660,23912 53663,23912 53663,23909 53663,23912 53665,23913 53669,23911 53669,23915 53669,23912 53671,23916 53670,23917 53675,23922 53680,23927 53683,23930 53688,23935 53689,23935 53691,23935 53691,23931 53692,23931 53694,27931 53693,27933 53695,27937 53695,27942 53699,27947 53701,27949 53703,27949 53704,27949 53708,27952 55708,27953 55710,27949 55710,27953 55710,27958 55713,27959 55718,27960 55722,27962 55725,27965 55730,27965 55732,27968 55730,27969 55733,27972 55733,27975 55734,27975 55734,27979 55737,27981 55733,27982 55732,32982 55732,32979 55734,32978 55737,32978 55738,32974 55742,32977 55746,32981 55750,32985 55746,32983 55747,32987 55750,32992 55751,32995 55751,32998 55751,32998 55753,32998 55753,32993 55753,32995 55757,32999 55758,33002 55760,33002 55761,33005 55766,33005 55767,33000 55764,32997 55767,32997 55771,33001 55773,32998 55777,33001 55777,33005 55776,33004 55776,33009 55781,33014 55786,33014 55790,33015 55790,33016 55790,33015 55786,34015 55787,34019 55790,34019 55791,34021 55793,34017 55793,34019 55796,34016 55797,34020 55793,34020 55796,34023 55792,34023 54792,34025 54797,34028 54800,34029 54799,34029 54795,34034 54796,34036 54797,34041 54792,36041 54797,36045 54801,36048 54803,36051 54804,36053 54806,11439 8033,11441 8038,11441 8039,11441 8040,11445 8035,11441 8035,11442 8039,11438 8035,11438 8035,11443 8039,16443 8038,16444 8038,14444 8040,14448 12040,14451 12036,14455 12038,14455 12041,14456 12046,14459 12049,14457 12051,14458 12046,14458 12047,14459 12042,14464 12042,14465 12047,14470 12050,14471 12055,14471 12058,14468 12060,14473 10060,14477 7060,14477 7062,14474 7062,14474 7067,16474 7063,16471 7065,16474 7067,16471 7072,16471 7068,16476 7066,16481 7069,16482 7072,16487 7072,16487 7077,16488 7077,16493 7076,16493 7079,16497 7079,16500 7079,16502 7079,16502 7079,16505 7075,16504 7080,16501 7077,16497 7079,16501 7081,16497 7080,16496 7084,16500 7086,16495 7087,16498 7084,16501 7087,16496 7087,16496 7083,17496 7083,17500 7083,17505 7088,9860 41434,9864 41435,9864 41435,9865 42435,9860 42435,9862 42436,9863 42434,9863 42430,9862 40430,9863 40427,9863 40428,20608 16239,20605 16242,20610 16237,20614 16237,20615 16242,20611 16242,20612 16245,20609 16244,20604 16242,22604 16237,22608 16239,22607 16240,22610 16244,22610 16241,22615 16246,22616 16246,22614 16251,22616 16251,22617 16249,22619 16254,22623 16252,22618 16255,22618 16259,22620 16262,22615 16262,22618 16263,22622 16263,22626 16265,22629 16266,22628 16269,22633 16267,22636 16268,22636 16267,22641 16269,22646 16269,22645 16271,22646 16273,22650 16271,22655 16274,22655 16277,22658 16279,22660 16280,22658 16280,22661 20280,22663 20282,19663 20285,19658 20288,19658 20292,19661 20295,19666 20298,19670 20301,19671 20301,19675 20301,19677 20306,19675 20311,19674 20315,19678 20318,19677 20314,19680 20315,19682 20310,19684 20314,19683 20316,19687 20315,19688 20316,19688 20319,19693 20319,19698 20322,19702 20323,19698 20323,19702 21323,19707 22323,8508 20119,8509 20119,8510 20116,8515 20113,8518 20115,8519 20116,8516 20120,8520 20119,8520 20118,8525 20123,8527 20125,8527 20125,8528 20123,8530 20126,8533 20123,8535 20127,8532 20132,8534 20136,8538 20138,8542 20141,8537 20143,8537 20145,8542 20145,8547 21145,8548 24145,8552 24145,8557 24150,8560 24147,8562 24151,8566 24156,8569 24160,8574 24156,8579 24159,8584 24164,8587 24164,8585 24167,8588 24170,8591 24171,8589 24172,8590 24176,8595 24177,8593 24174,8596 24178,8600 24179,8603 24175,8602 24178,9602 24182,9605 24177,9609 24178,9610 24182,9608 24178,9603 24183,9606 24188,9608 24193,9609 24195,9614 24196,9616 24197,9618 24201,9618 24205,9613 24209,9612 24214,9608 24211,9603 24216,9607 24221,9611 24221,9615 24217,9617 24217,9618 24221,9623 24225,9623 24225,9626 24225,9630 24225,9630 24222,9626 24223,9626 22223,9627 22223,9626 22226,9629 22228,9632 22228,9636 22225,9638 22226,9639 22227,9634 22230,9634 22231,9639 22235,9639 22240,9641 22242,9642 22246,9647 22249,9652 22250,9655 22255,9651 22256,9652 22253,9652 22256,9652 22261,9655 22262,9657 22257,9659 22261,9659 22261,9657 22264,9657 22261,9656 22264,9661 22267,9662 22270,12662 22270,12665 22265,12669 22270,12669 22270,12673 22269,11356 7007,11361 7010,11361 7010,11357 7014,11356 7015,12356 7020,12357 7015,12361 7017,11361 7018,11364 7017,11359 7018,11355 7017,11354 7020,11357 7020,11361 7023,11364 12023,11368 12028,11368 12029,11371 12030,11372 12034,14372 12034,14372 12039,14372 12042,14376 12045,14381 12047,14379 12047,14381 12049,14384 12054,14385 12051,14388 12056,14384 12056,14384 12061,14381 12058,14386 12062,14386 12059,14391 12059,14396 12060,14397 12060,14398 12056,14403 12051,14408 12052,14410 12057,14409 12057,14414 12053,14414 12051,14415 12051,14420 12049,14423 12048,14427 12044,14427 12044,14425 10044,14421 10049,14424 11049,14426 11054,14427 11059,14429 11064,14433 11064,14434 11064,14437 11065,14441 11068,14444 11072,14445 11076,13445 12076,13445 12077,13445 12081,13444 14081,13446 14081,13446 14078,13449 14083,13447 14084,13450 14085,13452 14090,13453 14087,13456 14084,13457 14083,13461 14081,13463 14082,12463 14082,12463 14087,12463 14087,12464 14087,8464 14087,8465 14083,8465 14080,8467 14085,8472 14085,8473 14085,8476 14090,8474 14094,8475 14094,8480 14094,8481 14099,8476 14103,8476 14107,8480 14111,8483 14116,8488 14120,8488 14118,8488 14120,8483 14115,8481 14118,8485 17118,8485 17114,8488 17110,8488 17115,8484 21115,8484 21118,8486 21120,8487 21120,8482 21115,8487 21118,8490 21122,8494 21127,8497 21132,8497 21133,8500 23133,8503 23135,8507 23135,8508 23132,8511 23129,8512 23125,8517 23126,8522 23125,8527 23129,8522 23131,8527 23132,8530 23132,8531 23128,8533 23132,8533 23134,8533 23139,8533 23144,8536 23143,8537 23146,8533 23146,8533 23149,8537 23152,8533 23157,8530 23158,8532 23162,8536 23162,8536 23165,8536 23165,8540 23170,8544 23171,8548 23169,8547 23173,8551 23176,8552 23173,8548 23169,8553 23173,8553 23170,8548 23173,8549 23173,8546 22173,8547 22174,8551 22177,8550 22179,8552 22183,8553 22183,8553 22184,8557 22185,6557 22185,13598 20226,13601 20227,13604 20229,13608 20233,13610 20234,13605 20237,17605 20237,17610 20242,17605 20242,17602 20241,14602 20241,18602 20236,18606 20239,18606 20244,18608 20241,16608 20245,16611 20240,16615 20239,16610 20234,16611 20232,16613 20235,16608 20235,16608 20239,16613 20242,19734 46410,19734 46410,19738 46414,19737 46414,19735 46415,19737 46418,19741 46421,19744 46423,23912 53671,23908 53673,27908 53675,27913 54675,27917 58675,27921 58677,27925 58678,27930 58678,27926 58683,27930 58686,27931 58691,27931 58695,27934 58700,27936 58699,27936 58699,27941 58695,27942 58695,27947 58699,27952 58699,27954 58703,27957 58704,27962 58708,27958 58706,27959 58703,27962 58703,27967 58706,27967 58701,27965 58701,27962 58702,27966 58703,27971 58704,27976 58706,27980 58709,27980 58712,27975 58711,27971 58716,27971 58713,27968 58712,27968 58712,27971 58711,27968 58713,27968 58710,27969 58708,27972 58706,27976 58711,27978 58716,27979 58716,27983 58718,27978 58718,27981 58719,27981 58723,27986 58725,27986 58728,27986 58731,27991 58734,27996 58738,27993 58736,27995 58732,31995 58736,31990 58735,31993 58738,31990 58734,31995 58729,31996 58729,31999 58731,31994 58726,31996 58731,12463 14087,12465 14090,12465 14093,12463 14090,12463 14095,12461 14092,12464 14093,12459 14091,12459 14091,12459 14091,12459 14096,12461 14100,12458 14103,12457 14101,12452 14101,12452 14106,12453 14103,12453 17103,12455 17104,15455 17104,15460 17108,15463 17104,15458 17108,18458 17108,21458 17105,21461 17105,21464 17110,21467 17115,21464 17120,21464 17120,21468 17123,21470 17126,21465 21126,21461 21126,21464 21128,21464 21132,21468 21137,21471 21142,21475 21146,21471 21146,21476 21147,21473 21151,21475 25151,21475 25152,21477 25153,21481 29153,21479 29158,21484 29162,21488 29162,21490 29165,21487 29170,21488 29167,21489 29162,21493 29164,21493 29169,21498 29169,21499 29164,21495 29167,21498 29167,23498 29170,23498 29169,23503 29172,23505 29171,23510 29167,23514 29164,28514 29168,28514 29172,28514 29174,28512 29172,28513 29176,28518 29179,28518 29182,28521 29177,28521 29179,28519 29179,28517 29179,28515 29177,28519 29177,28519 29179,28524 29184,28527 29183,28527 29185,28523 29187,28523 29184,28525 29189,28522 29189,28518 29186,28523 29189,28519 29189,28521 29189,28526 29193,28529 29193,28529 29196,28534 29200,28538 32200,28537 30200,28539 30202,33539 30207,33539 30209,33534 30205,33535 30208,33536 30208,33538 30213,33538 30214,33542 30218,33545 30221,33548 30222,33551 30225,33552 30227,33554 30231,33555 30233,33560 30228,33563 30225,33564 30229,33565 34229,33565 34234,33570 34231,33572 34235,33572 34239,33573 34243,33578 34239,33579 34243,33574 34247,33573 34247,33576 34243,33573 37243,33573 37246,33568 37241,33568 37244,33573 37239,33578 33239,33574 33241,33574 33239,33578 38239,33583 38242,33587 38242,33590 38242,33594 38243,33596 38247,33599 38248,33599 38252,33595 38252,33598 38257,33603 38258,33604 37258,33609 37255,33604 37257,33607 37262,33607 37265,33609 37266,33614 37271,33614 37276,33616 37278,33616 38278,33616 38282,33621 38284,33621 38288,33621 38285,33618 38289,33616 38291,33616 38294,33611 38296,33608 38301,33610 38305,33610 38300,33612 38303,33617 38308,33621 38309,33625 38305,33630 38307,33634 42307,33636 42310,33638 42314,33634 42312,33631 42315,33631 42315,27931 58691,27936 58693,27937 58695,27940 58700,27943 58703,27943 58708,27946 58709,27950 58711,27950 58714,29950 58718,29951 58723,29947 58728,29947 58732,29950 58727,29950 58727,29955 58730,29960 58734,29964 58732,29961 58734,29963 58735,29968 58739,29968 58741,34968 58739,34971 58739,34972 58739,34973 58740,34968 58741,34970 58743,34974 58745,34977 58749,34979 58744,39979 58745,39979 58742,39978 58744,39982 58748,39983 58744,39983 58744,39979 58747,39979 58752,39983 58757,39982 58759,39985 58759,39986 58759,39983 60759,39986 60762,39990 60767,39994 60770,39994 60770,39997 60770,39997 60770,40000 60775,40002 60775,40003 60779,40007 60784,40008 60787,40011 60788,40015 60788,40016 60790,40016 60792,40021 60788,40025 60788,40030 60788,40026 60786,40027 60786,40030 60787,40032 60792,40037 60795,40032 60800,40032 60799,40035 64799,40035 64801,40036 64806,40041 64803,40037 64805,40038 64801,40040 64804,40036 64804,40040 64805,40045 64810,40048 64811,40051 64813,40051 64817,13491 17139,13486 18139,13489 18139,13494 20139,13492 20138,13494 20141,13499 20145,13499 20145,13499 20148,13503 20149,13500 20149,13505 20151,9367 11012,12367 11015,12369 11011,12364 11012,12364 11015,12359 11011,12354 11011,12354 11014,12359 11017,12356 11015,12361 11015,12361 12015,12365 12016,12369 8016,12374 8021,12373 8025,11373 8021,11368 8021,11373 8024,12700 27362,13700 27363,13705 27364,13710 27368,13705 27369,13707 27367,13707 27371,13709 27375,13712 27377,13714 27373,13712 27376,13714 27379,13713 27382,13718 27384,13713 27380,13713 27385,13711 27386,13715 27386,13719 27386,13719 27389,15719 27394,15724 27398,15729 27400,15734 27401,15734 27401,15729 27396,15732 27396,15735 27397,15734 27399,15733 27400,15729 27400,15734 27400,15729 27405,15734 27405,15739 27408,15739 27408,15741 27412,15743 27416,15743 27416,15740 27416,16740 31416,16743 31421,16738 31425,16742 31430,16742 31435,16743 31439,16743 31444,16741 31449,16746 31450,16747 31455,16742 31459,16738 31463,16742 31466,16742 31471,16742 31471,16742 31471,16744 31475,16749 36475,16749 36473,16753 36478,16757 36474,16761 36477,16759 36478,16761 36481,16760 36484,16761 36485,16760 36486,16765 36491,16766 36494,16771 36498,16769 36501,16771 37501,16774 37504,16769 37507,16769 37507,16772 37503,16772 37508,16774 37511,16774 37510,18774 37515,18777 37515,18772 37512,18775 37514,18777 37517,18778 37519,18779 37517,18776 37517,18778 37520,18780 37520,18785 37522,18785 37526,18787 37523,18786 37520,18790 38520,18789 38520,18792 38522,18797 38527,18802 38529,20802 38534,20804 38535,20803 38540,20802 38539,20806 38543,20811 38546,20814 38543,20812 38541,20808 38546,20811 38544,20815 38539,20816 38535,20818 38531,20815 38531,20814 38528,20814 38533,20817 38536,20816 38539,20821 38540,20818 38542,20820 38540,20816 38540,20821 38540,20823 38541,20828 38541,20831 38546,20836 38547,20836 38548,20835 38553,20835 37553,20835 37558,20837 37558,20842 37560,20846 37561,20846 37564,20849 37569,20854 37564,20854 37565,20850 37566,20852 38566,20856 39566,20861 39566,20863 39562,20867 39566,20872 39567,20868 39566,20873 39568,20876 39573,20876 39573,20880 39575,20884 39579,20885 39580,20889 39580,20891 39584,20888 38584,20889 38587,20890 38592,20891 37592,20892 37597,20894 35597,20895 35600,20897 35603,20899 35605,16678 18322,16681 18323,16682 18323,16686 18328,16690 18326,16693 18331,11693 18335,11692 18332,11695 18332,11698 18335,11703 18335,11703 18336,11702 18339,11698 18344,11702 18349,11705 18353,11704 18357,11707 18360,11707 18359,11711 18358,11716 18358,11713 18358,11712 18360,11710 18360,11710 18362,11710 18362,11710 18367,11710 18366,11707 18366,11706 18365,11710 18369,11715 18371,11714 18374,11712 18376,11711 18377,11711 18379,11712 18384,11715 18385,11711 18385,11714 18387,11717 18389,11718 18386,11721 19386,11723 19391,11722 19395,11722 19396,11723 19398,11726 19398,11729 19403,11733 19408,11736 19407,11733 19411,6733 19407,6735 19402,6738 19402,6743 19406,6746 19406,6742 19411,6742 19414,6742 19414,6746 19419,6746 19423,6746 19418,6749 19418,6747 19418,6748 19420,6748 19424,6748 19424,6751 19427,6751 19429,6752 19429,9752 19426,9754 19428,9759 19430,9756 19431,9751 19435,9753 19440,9757 19445,9755 19443,9757 19448,9757 19448,9759 19451,9763 19451,9766 19454,9766 19456,9770 19459,9770 19462,9770 19466,9766 19467,9771 19468,9772 19468,9769 19469,9768 19470,9770 19470,9774 19473,9778 19470,9781 19470,9786 19471,9789 19471,9789 19473,9792 19478,9795 19475,9800 19478,1256 2899,1260 -1101,1256 -1097,1255 -1093,1255 -1094,1259 -1089,1260 -89,2260 -84,2258 -84,2263 -88,2267 -89,2268 -91,2269 -86,2272 -86,2272 -82,2273 -77,2276 -79,2281 -81,2283 -79,2287 -75,2292 1925,2297 1930,2299 1930,2303 1932,2308 1937,2308 1936,2313 1937,2315 1934,2316 1935,2311 1936,2316 1937,2319 1938,2322 1940,2327 1940,2331 1940,2327 1943,2329 1945,2331 1950,2336 1950,2339 1954,2338 1954,7338 1954,7337 1958,7341 1960,7341 1964,8550 20152,8554 20152,8553 15152,8550 15152,8554 15154,8552 15149,8552 15153,8556 15151,8556 15148,8552 15152,8547 15149,8552 15154,8552 15155,8553 15156,8550 15156,8553 15160,8556 15164,8558 15163,8561 15163,8563 15167,8559 15169,8559 15166,8564 15167,8568 15171,8572 16171,8572 16173,8574 16170,8571 16174,8575 16174,8576 16174,8576 16174,8580 16178,8579 16183,8574 16184,8576 16184,7576 16186,7572 16181,7577 16181,7577 16185,7578 16190,7583 16185,7583 16185,7587 16185,12587 19185,12582 19188,12587 19193,12587 19195,10534 21158,10538 21162,10540 19162,10543 19158,10547 19158,10551 19160,10551 19158,10554 19158,10553 19157,10555 19157,10555 19154,10552 19156,10553 19161,10555 19166,10558 19165,10560 19165,10561 19165,10561 19165,10564 19166,10567 19164,10570 19162,10575 19165,10577 19164,10577 19168,10578 19168,10574 19171,10574 19172,10571 19175,10573 19178,6503 16143,6507 16146,6509 16142,6510 16142,6510 16143,6512 16143,6514 16146,6517 16148,6522 16143,6525 16143,6530 16143,6534 16146,6531 16144,8490 16106,8490 16106,8492 16109,8489 16110,8491 16106,8487 16109,8488 16104,8490 17104,8495 17108,8490 17109,8493 17108,8498 17111,8500 17111,8500 17109,8501 17113,8506 17118,8506 17118,8506 17123,4506 17125,4511 17123,4516 17126,4514 17125,4519 17124,4520 17126,4525 17129,4530 17124,4526 17124,4528 17124,4533 17127,4535 17127,4531 16127,4531 16124,4534 16124,4538 16125,2538 16130,2539 16131,2544 16133,2544 16129,2540 16129,2545 16129,2550 16126,7550 16126,7555 16128,7559 16124,7559 16129,7560 16132,7561 16128,7566 16132,9566 16136,9568 16136,9573 16141,9570 16144,9571 16146,9573 16150,9577 16153,9581 16148,9579 16153,9584 16157,9586 16160,9581 16162,9578 16165,10578 16162,10579 16163,10574 18163,10570 18164,10568 18164,10570 18169,10572 18170,10575 18170,10575 18175,10579 18176,10580 18176,10585 18176,10581 20176,10586 20178,10587 20178,10585 20179,10585 20177,10581 20178,10584 20183,10586 20187,10590 20187,10591 20190,10587 20188,10591 20187,10591 20192,10592 20191,10597 20195,10602 20194,10602 20195,10607 20197,10607 20198,13607 20201,13607 20200,13607 20204,13604 20204,13605 20209,13607 20209,13612 20214,13615 20218,13615 20218,13619 20220,13624 20224,13628 20219,18628 20216,18630 20213,18635 20213,18632 20211,18629 20211,18632 20215,18632 20216,18632 20217,18632 20217,18627 20214,18630 20209,18633 20212,18636 20212,18638 20217,18643 20222,22643 20219,22643 20219,22644 20219,22644 20214,22645 20216,22645 21216,22646 21220,22642 21224,22642 21221,22641 21224,22638 21229,22641 21232,22642 21235,22643 21238,22644 21236,22649 21237,22704 18411,22704 18412,22699 18412,22696 18416,22701 18412,22703 18416,22698 18416,22693 18418,22695 18422,22698 18422,22700 18426,22705 18427,22706 18427,22708 18432,22708 18432,22704 18431,22709 18427,22709 18432,22709 18436,22713 21436,22718 21438,22719 21437,22721 21440,22725 21443,22727 21445,22724 21450,22724 21451,22727 21453,22730 21453,22730 21458,22734 21460,22738 21464,20738 21464,20742 21465,22742 21465,22741 21464,22736 21464,22738 21464,22742 21460,22742 21460,22744 21458,22743 21458,22741 21455,22741 21460,22739 21456,22739 21458,22734 23458,22732 23458,22733 23463,22731 23467,22731 23469,22736 23472,22739 23472,22742 23471,22744 23471,24744 23466,24744 23468,24739 23471,24742 23474,24747 23478,24747 23481,24747 23483,24747 23486,24751 25486,24753 25489,24758 25493,24762 25497,24764 25499,24769 25496,24773 25498,24777 25499,24779 25503,24782 25500,24782 25498,24777 25498,24779 25495,24775 25495,24776 25495,24777 25495,24781 25500,24778 25503,24778 25499,24780 25500,24777 22500,24775 22505,24777 22505,24777 22501,24778 22502,24778 22505,24774 22509,24776 22509,24776 22509,24781 22509,24784 22511,24780 22513,24780 22514,24783 22515,24786 22520,24786 22520,24791 22518,24788 22517,24791 22522,24794 22525,24791 22524,24791 22528,24789 22530,24794 22530,24799 22525,24795 22524,24798 22520,24796 22516,24801 22511,24803 22516,24804 22521,24804 22526,24806 22524,24805 22524,24809 22529,24810 22531,24813 22536,24817 22536,24815 22535,24810 22530,24815 22530,24816 22530,24818 22531,24818 22531,24818 22533,24822 22533,24820 22530,24816 22529,24820 22532,24822 22533,24822 27533,24823 27536,24826 27540,24829 27541,24832 27546,24833 27549,24832 27553,24833 27552,24833 27551,24836 27551,24839 27554,24841 27554,24841 27556,24842 27559,24847 27557,24847 27562,24842 27566,24840 27564,24842 27568,24844 27563,25844 27565,25847 27569,25848 27564,25851 27561,25855 27559,25856 27556,25852 27556,25857 27561,25857 27564,25858 27564,25863 27567,25868 27567,25871 27564,25872 27565,25875 27570,25877 27573,25878 27575,25879 27574,25884 27579,25887 27577,25886 27579,25882 27582,25882 27578,25882 27582,25884 27578,25887 27583,25891 27584,25895 27582,25895 27582,25898 27583,25900 27580,11433 8033,11435 8037,11439 8040,11444 8044,11439 8048,11441 8045,11446 8044,11446 8039,11451 8038,11451 8043,11450 8046,11451 8046,11447 8049,11443 8052,11445 8057,11441 8058,11439 8060,11444 8056,11445 8053,11448 8053,11450 8049,11455 8044,11453 8042,11454 8044,11451 8049,11453 8049,11458 8052,11459 8055,11457 8053,11460 8053,11461 8055,11465 9055,11466 9056,12466 9058,12467 9054,12472 4054,12467 4056,12467 4059,12470 4058,12468 4060,14468 4064,14467 4063,14471 4060,14473 4062,14471 4067,14468 4072,14471 4076,14466 4077,14467 4074,14472 4075,14472 4080,14476 4085,14476 4090,14481 4090,14485 4091,14490 4095,14493 4095,14495 4100,14492 4100,14497 4102,14499 4100,14501 4101,14500 4106,14500 4107,14496 4108,14495 4110,14494 7110,33625 38305,38625 38310,38625 38315,38623 38318,38625 38317,38629 38318,38632 38313,38634 38313,38639 38314,38640 38317,38644 38320,38649 38321,38647 38317,38647 38322,38643 38324,38640 38319,38645 38319,38646 38319,38645 38316,38644 38318,38646 38319,38644 38324,38647 38328,38652 38325,38649 38328,38651 38332,40651 43332,40651 43335,40655 43335,40652 43339,40652 43339,40654 43336,40654 43337,40657 43333,40656 43335,40656 43338,40656 43343,40656 43341,40659 43346,45659 43348,45664 43350,45666 43346,45665 43351,45669 43355,45673 43355,45674 43359,50674 43360,50678 43363,50678 43364,50679 43367,50682 43371,50687 43374,50690 43374,50690 43377,50693 43377,50698 43382,50693 43386,50689 43386,50692 43390,50695 43392,50699 43392,50704 43397,50707 43395,50711 43391,50706 43393,50709 43393,50711 43395,50710 43397,50714 43394,50718 43394,50715 43394,50717 43399,50722 43403,50724 43407,50728 43407,50730 43408,47730 43403,47730 43404,47733 43408,47737 43409,47735 43414,47738 43416,47741 43416,47744 43421,47743 43422,47748 43424,47753 43419,47754 43420,47749 43419,52749 43423,52751 43421,52753 43421,52750 43426,52752 43428,52748 43430,52748 43426,52747 43431,52744 43431,52748 43435,52748 43435,52750 45435,52753 45440,52753 45440,52757 45442,52761 45447,52758 45447,52761 45447,52761 45452,52758 45454,52758 45455,52758 45456,52761 45460,52759 45458,52755 45463,52759 45464,52756 45461,52756 45462,52758 45467,52760 45470,52759 45469,52762 45473,52762 45474,15617 20233,15612 20238,15611 20242,15613 20237,15617 20238,15618 20239,15621 20236,15623 20240,15622 20240,15622 20245,15623 20244,15628 20242,15628 20247,15625 20246,15628 20250,15630 24250,15632 24251,15634 24253,15629 24252,15633 24250,15629 24250,15633 24248,15629 24248,15634 24248,15636 24253,15640 24253,15643 24257,15639 24254,15642 24257,15643 26257,15648 26255,15643 26256,15641 26258,15646 26262,15646 26263,15651 26263,15648 26267,15653 27267,15656 27270,15660 27272,15662 29272,15658 29276,15658 29277,15658 29272,15663 29274,15663 29274,17663 29274,17663 29279,17668 29283,17671 29285,17670 29287,17675 29289,17676 29293,17679 29296,17682 29297,17685 29299,17686 29300,17687 29305,17685 33305,17686 33310,17687 33310,17689 33306,17687 34306,17691 34304,17694 34306,17696 34306,17695 34309,17691 34314,17691 34311,17692 34306,17696 34310,17700 34310,17697 34312,17699 34316,17704 34318,17701 34318,17705 34322,17704 34321,17706 34319,17706 34319,17702 34316,17707 37316,17710 37318,19710 37313,19705 37313,19708 37308,19712 37310,19710 37312,19711 37307,19711 37307,19714 37310,19718 37312,19719 37309,19723 37312,19727 37315,19729 37317,19731 37322,19734 37323,19735 37324,19737 37322,19742 37326,19740 37331,19745 37335,19742 37335,19742 37340,19745 37341,19749 37341,19749 37342,19752 37347,19757 37347,19762 37345,19764 37341,19768 37345,19769 37350,19771 37355,19773 33355,19770 33360,19765 33364,19769 33364,19773 33365,22773 33364,22771 33360,22775 38360,22779 38364,22780 38369,22782 38371,22784 38371,22789 40371,22792 40375,22789 40375,22789 40377,22793 40376,23793 40378,23795 41378,23791 41378,23792 41378,23796 41382,23798 41383,22798 41386,22799 41390,22804 41390,22804 41391,22808 41391,22812 41393,22814 39393,22819 39393,22821 39395,22823 39397,22828 36397,22832 36392,22832 36393,22836 36396,22836 36401,22838 36402,19838 36403,19837 36408,19841 36408,19843 36409,19845 36404,19847 36405,19847 36408,19847 36411,19848 36413,19850 36415,19845 36419,19841 36417,19843 36419,19843 36419,19846 36424,19848 36425,19850 36425,19845 36425,19846 36425,19848 36430,19852 36430,19849 36435,19846 36440,19851 36440,19846 36438,19848 36439,19844 36442,19845 36446,19841 36448,19841 36449,19841 38449,19841 38452,19846 38455,19848 38458,19852 42458,19856 42462,19859 42463,19859 42465,19861 42462,19862 42463,19864 42463,19867 42467,19870 42470,19871 42468,21871 42467,26871 42464,26867 42466,26872 42463,26872 42464,26874 42463,26879 42466,26882 42466,26883 42471,26879 42476,26878 42477,27878 42479,27882 42479,27883 42480,27886 42483,27887 42487,27885 42484,27887 42483,27890 42484,27890 42485,22890 42486,22890 42489,22890 42491,22895 42494,22897 42498,22899 42502,22901 42502,22896 42503,22892 42498,22896 42498,22891 42502,22892 42505,22897 42507,22898 42511,22903 42515,22906 42510,22911 42513,17911 42508,17915 42512,17918 42509,17913 44509,17915 44514,17919 44510,17923 44514,17927 44510,17927 44513,17927 44517,17928 44521,21928 44517,21930 44516,21931 44513,21929 44513,21933 44517,21934 44519,21933 44520,21934 44520,21937 44520,21938 44520,21943 44520,21938 44523,21940 44527,21936 44532,21941 44536,21942 44541,21937 44545,21938 44545,21938 44545,21940 44543,21937 44538,21941 44543,21938 44547,21938 44547,21938 44547,21937 44551,21937 44551,21933 44556,21935 44554,21937 44558,21940 44562,21944 44564,21949 44561,21952 44566,21955 44568,21960 44569,21963 44571,21963 44571,21965 44574,25965 44579,25967 44584,25967 44584,25970 44588,22970 41588,22970 41586,22975 41585,22974 41589,22970 41593,22966 41598,22965 41598,22970 41598,22965 41601,22965 41604,22965 46604,22968 46604,27968 46602,27968 46602,25968 46601,25967 45601,25968 45602,25971 45607,25975 45610,25979 45614,25977 45612,25975 45609,26975 45609,26980 46609,26979 46613,26982 46610,26982 46611,26980 46615,26982 46616,26985 46616,26986 46617,26987 46615,30987 46617,30987 46622,30986 46626,30988 46629,30989 46627,17671 29285,17673 26285,17677 26286,17678 26285,17681 26289,15681 26292,15685 26297,10685 26297,10689 26301,10689 26297,10693 26300,10695 26301,10691 26297,10696 26299,10696 26304,10692 26306,10688 26301,10690 26302,10690 26307,10686 26305,10684 26309,10686 26312,10691 26313,10688 26318,10683 26320,10684 26325,10683 26328,14683 26328,14680 21328,14681 21331,14683 21335,14680 21333,14677 21333,14682 25333,14684 25334,14689 25338,14693 25338,14698 25341,14696 25342,18696 25343,20696 25345,20699 25349,20702 25346,20703 25351,20703 25351,20704 25351,20704 25354,20700 26354,20705 26352,20706 26351,20706 26351,20703 26354,20708 26354,20712 26355,20712 26352,20717 26349,20717 26346,20722 26351,20727 26353,20729 26348,20734 26353,24734 26349,24729 26349,24729 26352,24725 26349,24725 26353,24726 26353,24729 26355,24729 26357,24732 26359,24735 26362,24735 26364,24730 26364,24730 26363,24734 26365,24739 26368,24739 26364,24739 26366,24739 26367,24734 26370,24735 26365,24732 26367,24732 26369,24729 26372,24728 26370,24726 26365,24728 26368,24731 26370,24734 26375,24738 26378,24733 26378,24733 26381,24729 26381,13496 17147,13491 17152,13495 17148,13496 17146,13498 17141,13498 17145,13501 17147,13502 17149,13502 17153,13505 17149,13505 17152,13500 17149,13496 20149,13492 20150,13497 20155,8497 20151,8501 20153,8502 20156,8506 20159,8503 20159,12503 19159,12503 19159,12505 19164,12500 19159,12500 19164,12500 15164,12503 15169,12508 15168,12511 15170,12514 15170,12510 15169,12512 15172,12512 15172,12515 15172,12519 15175,12522 15176,12525 15180,12528 15184,23912 53663,23915 53661,28915 53666,28914 53667,28918 53664,28921 53667,28922 53667,28924 53670,28925 53674,28926 53674,28927 53672,28922 53676,28924 53677,28927 53678,28932 56678,28934 56682,28935 56683,28936 56688,28938 56688,28934 56691,28938 56693,28942 56690,28939 56694,28939 56698,28942 56695,28946 56698,28950 56701,28953 56706,28954 56706,28949 56708,28950 56708,28953 56709,28958 56706,28960 56709,28965 56707,28965 56707,28965 56705,28963 56709,28966 59709,28969 59710,28973 59711,28977 59715,28977 59717,28982 59719,28981 59715,28985 59718,28986 59718,33986 59721,35986 59723,35990 59723,35990 61723,35993 61726,35995 61728,35998 61724,36000 61721,36004 61723,36002 61718,36007 61718,36010 61719,36010 61721,36010 61721,36010 61721,36015 61721,36018 61716,36022 61717,36024 61718,36025 61723,36029 61722,36031 61726,36035 61722,36040 62722,36042 62722,36044 62722,36049 62724,36051 62720,36053 62723,36052 62719,36055 62717,36056 62712,36059 62714,36058 67714,36059 67716,40059 67716,40063 67719,40067 67722,40069 67726,40065 67724,40067 67721,40067 67722,40071 67721,40075 67726,37075 67730,37076 67733,37076 67736,37072 67741,37072 67741,37072 67744,37076 67744,37079 67745,37081 67750,37082 67750,37082 67753,37082 67753,37083 67752,37081 67753,37084 67753,37087 67757,37087 67758,37083 67753,37084 67758,37084 67761,37088 67759,37091 67762,37088 67762,37090 67767,37090 72767,37090 72771,37085 72771,37089 72774,38089 71774,38090 71771,38086 71771,38086 71774,38086 71777,38089 71782,38089 71782,38087 71780,38092 71782,38087 71785,38083 71783,38081 71781,38078 71781,38078 71783,38076 71786,38075 71787,38078 71783,38079 71781,38081 71781,41081 71783,41081 71778,41082 71778,41085 71783,41085 71783,41088 71785,41083 71789,41083 71794,41088 71796,41088 71796,41092 71798,41095 71794,41095 71789,41098 71790,41093 71790,41091 71795,41092 71796,41087 71798,41084 71796,41086 71797,41084 71799,41084 71795,41086 71798,41085 71799,41089 71803,41085 71804,41083 71802,41083 71803,41079 71803,41081 71808,41081 71809,41083 71810,41083 71809,41085 71810,41082 71814,41087 71817,41089 71818,41086 71813,41083 71813,39083 71816,39083 71814,39085 71814,39083 71814,39086 71818,39087 71820,39087 71824,39091 71826,39096 71829,39098 74829,39102 74830,39107 74833,39110 74836,39115 74835,39115 74836,39115 74838,39115 74835,39119 74838,39117 74840,39121 74840,39125 74843,39121 74848,39122 77848,39122 77844,39123 77848,39126 77851,39131 77855,39136 77857,39132 77857,39135 78857,39135 78859,39136 78864,39133 78865,39135 78866,39139 79866,39142 79870,39147 79872,39146 79872,39150 79876,39150 78876,39154 78879,39154 75879,39154 75881,39158 75881,39157 75884,39160 75884,39155 75884,39160 75889,39156 75891,39158 75888,39163 75891,39163 75894,39166 75891,39166 75895,39167 75900,39170 75901,39170 75906,35170 75907,35171 75911,35176 75906,35172 75908,35173 75908,35178 75908,35175 75909,35170 75908,35170 75903,35168 75904,35173 75906,35178 75903,35179 75904,35179 75908,35182 75905,35184 71905,35188 71902,35185 71904,35186 71907,35187 71908,35189 71903,35191 71905,35195 71900,35197 71904,35198 71909,35200 71907,35199 71903,35201 71900,40201 71896,25028 55790,25029 55785,28029 55789,28031 55790,28032 55790,28037 55794,28042 55793,28043 55798,28046 55803,30046 55803,30051 55806,30050 55810,30049 55810,30049 55812,30049 55816,30054 55820,2545 16129,2540 16133,2542 16137,2542 16139,2544 16138,2545 16139,7545 16136,7546 16139,7541 16142,7542 16142,7543 20142,7547 20143,11547 20143,11550 20139,11555 20139,11556 20137,11552 20142,11555 24142,11556 24145,11559 24140,11563 24143,11567 24139,16567 24136,16567 24139,16572 24142,16573 24147,14573 24143,14574 24147,14570 24145,14573 24150,14569 24150,14570 24145,14573 24149,14575 24150,14575 24154,14579 24149,14579 24153,14576 24157,14576 24152,14571 24149,14571 24152,14575 24150,14572 24151,15572 24153,15575 24149,15577 24154,15582 24151,15582 24153,15586 24156,15587 24152,15588 24157,15590 24162,15590 24166,15590 24166,20590 24166,17590 24169,17595 24171,17597 24172,17599 24172,17595 24174,17599 24178,17599 24181,18599 24184,18594 24187,18597 24187,18593 24189,18597 24192,18601 24192,18599 24197,18599 24197,18603 24200,18605 24204,18600 24205,18605 24201,18605 24197,18610 24202,18608 24205,18611 24204,18613 24208,18617 24203,22617 24205,22619 29205,22622 31205,22622 31209,22623 31214,22624 31212,22627 31214,22623 31214,22626 31215,22629 31214,22633 31218,22631 31221,22630 31223,22632 31227,21937 44551,21935 44555,21939 44551,21934 44553,21936 44554,21933 44556,21935 44552,21935 44553,21939 44548,21939 44551,21939 44551,21938 44555,21938 44558,21938 44559,21941 44559,21945 44558,19945 44562,19942 44560,19943 44561,19939 44565,19940 44561,19939 44556,19935 44557,9770 19466,9773 19471,9775 19471,9770 19471,9770 19468,9770 19467,9772 19466,9772 19468,9774 19469,9775 19472,12775 19470,12773 19466,12773 19467,12773 19464,12773 19466,12776 19461,12779 19461,12779 19465,12780 19465,12782 19460,12781 19458,12776 19461,12776 19461,12777 19463,12778 19466,12776 19466,12780 19463,12780 19466,12785 19468,12789 19473,12788 19477,12793 19475,12798 19480,12802 19482,12803 24482,12802 24484,16802 24486,16806 28486,16808 28486,16812 28490,16812 28494,16815 28498,16816 28498,16818 28502,16818 28504,16819 28509,19819 28513,19819 28510,19821 28515,19816 28510,19811 28510,19811 28511,19809 28511,19810 28510,19813 28515,22813 28510,22818 28514,22818 28515,22815 28516,22818 28514,22819 28514)',')')) where i = 1; +rollback; + +check table t1; + +drop table t1; + +--disable_warnings +SET GLOBAL innodb_file_per_table=default; +--enable_warnings + +# Test partial update rollback. +create table t1(i int primary key, +a geometry not null, b geometry not null, +c int, +spatial index(a),key(a(25)),key(b(25)), +unique key (c), +spatial index(b))engine=innodb; + +insert into t1 values(0, point(0,0), point(0,0), 0); +insert into t1 values(1, point(1,1), point(1,1), 1); +insert into t1 values(2, point(2,2), point(2,2), 2); +insert into t1 values(3, point(3,3), point(3,3), 3); +insert into t1 values(4, point(4,4), point(4,4), 4); + +start transaction; +# It's a partial update, hit dup key error, rollback. +--error ER_DUP_ENTRY +update t1 set a=point(5,5), b=point(5,5), c=5 where i < 3; +rollback; + +# Test partial update rollback after recovered. +# Crash the server in partial update. +--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +set session debug="+d,row_mysql_crash_if_error"; +--error 2013 +update t1 set a=point(5,5), b=point(5,5), c=5 where i < 3; + +--enable_reconnect +--source include/wait_until_connected_again.inc +--disable_reconnect + +insert into t1 values(5, point(5,5), point(5,5), 5); + +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/row_format.test b/mysql-test/suite/innodb_gis/t/row_format.test new file mode 100644 index 00000000000..23c08dae5e6 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/row_format.test @@ -0,0 +1,34 @@ +--source include/not_embedded.inc +--source include/have_innodb.inc +--source include/innodb_page_size_small.inc + +# Test the redundant format +LET $file_per_table='off'; +LET $file_format='Antelope'; +LET $row_format=REDUNDANT; + +--source include/innodb_gis_row_format_basic.inc + + +# Test the compressed format +LET $file_per_table='on'; +LET $file_format='Barracuda'; +LET $row_format=COMPRESSED; + +--source include/innodb_gis_row_format_basic.inc + + +# Test the dynamic format +LET $file_per_table='on'; +LET $file_format='Barracuda'; +LET $row_format=DYNAMIC; + +--source include/innodb_gis_row_format_basic.inc + +# Test the compact format +LET $file_per_table='off'; +LET $file_format='Antelope'; +LET $row_format=COMPACT; + +--source include/innodb_gis_row_format_basic.inc + diff --git a/mysql-test/suite/innodb_gis/t/rtree_compress.test b/mysql-test/suite/innodb_gis/t/rtree_compress.test new file mode 100644 index 00000000000..946a336a4d0 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_compress.test @@ -0,0 +1,64 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_innodb_zip.inc +--source include/have_debug.inc +--source include/big_test.inc +# Valgrind takes too much time on PB2 even in the --big-test runs. +--source include/not_valgrind.inc + +# Create table with R-tree index. +SET GLOBAL innodb_file_per_table=1; + +#Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; + +# Insert enough values to let R-tree split. +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +select count(*) from t1; +rollback; + +check table t1; + +select count(*) from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +SET DEBUG='+d,page_copy_rec_list_start_compress_fail'; +delete from t1; +SET DEBUG='-d,page_copy_rec_list_start_compress_fail'; + + +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +# Clean up. +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_compress2.test b/mysql-test/suite/innodb_gis/t/rtree_compress2.test new file mode 100644 index 00000000000..5956fc9a774 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_compress2.test @@ -0,0 +1,58 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree multi level split. + +# Restarting is not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_innodb_zip.inc +--source include/big_test.inc +# Valgrind takes too much time on PB2 even in the --big-test runs. +--source include/not_valgrind.inc + +SET GLOBAL innodb_file_per_table=1; + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +# Test level 3 rtree. +CALL insert_t1(70000); +select count(*) from t1; + +# Check table. +check table t1; + +truncate table t1; + +# Test crash recovery. +# +# +call mtr.add_suppression("InnoDB: A copy of page \[page id: space=[0-9]+, page number=[0-9]+\] in the doublewrite buffer slot [0-9]+ is not within space bounds"); + +# Test rtree enlarge recovery. +START TRANSACTION; +CALL insert_t1(5000); +#select count(*) from t1; + +# Check table. +#check table t1; + +COMMIT; + +--source include/kill_and_restart_mysqld.inc + +# Clean up. +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_concurrent_srch.test b/mysql-test/suite/innodb_gis/t/rtree_concurrent_srch.test new file mode 100644 index 00000000000..ec6f496b5cc --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_concurrent_srch.test @@ -0,0 +1,451 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/big_test.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +insert into t1 select * from t1; +insert into t1 select * from t1; + +connect (a,localhost,root,,); +connection a; +SET SESSION debug="+d,rtr_pcur_move_to_next_return"; + +set session transaction isolation level serializable; +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +SET DEBUG_SYNC = 'RESET'; +SET DEBUG_SYNC = 'row_search_for_mysql_before_return SIGNAL started WAIT_FOR go_ahead'; +--send select count(*) from t1 where MBRWithin(t1.c2, @g1); + +--echo # Establish session con1 (user=root) +connect (con1,localhost,root,,); +connection con1; +set session transaction isolation level serializable; + +SET DEBUG_SYNC = 'now WAIT_FOR started'; +insert into t1 select * from t1; +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; + +connection a; +reap; +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +connection default; +insert into t1 select * from t1; +insert into t1 select * from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set session transaction isolation level serializable; + +truncate t1; + +# Test on predicate locking +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +# Connection 'a' will place predicate lock on almost all pages +connection a; +set session transaction isolation level serializable; +select @@tx_isolation; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +# The split will replicate locks across pages +connect (b,localhost,root,,); +connection b; +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; + +select @@tx_isolation; + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +# FIXME: Put this back once we sort out the shrink business +#insert into t1 select * from t1; + +connection a; +commit; + +connection default; +select count(*) from t1; + +# Insert a record that would be in the search range +insert into t1 values (105, Point(105, 105)); + +# Connection 'a' will place predicate lock on almost all pages +connection a; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +connection b; +select @@innodb_lock_wait_timeout; +select @@tx_isolation; + +--error ER_LOCK_WAIT_TIMEOUT +insert into t1 select * from t1; +select count(*) from t1; + +connection a; +select sleep(2); +commit; + +#==================Test predicates on "MBRIntersects"========================== +connection default; +truncate t1; + +# Test on predicate locking +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +# Connection 'a' will place predicate lock on almost all pages +connection a; +set session transaction isolation level serializable; +select @@tx_isolation; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +# The split will replicate locks across pages +connection b; +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; + +select @@tx_isolation; + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +connection a; +commit; + +connection default; +select count(*) from t1; + +# Insert a record that would be in the search range +insert into t1 values (105, Point(105, 105)); + +# Connection 'a' will place predicate lock on almost all pages +connection a; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +select count(*) from t1 where MBRIntersects(t1.c2, @g1); + +connection b; +select @@innodb_lock_wait_timeout; +select @@tx_isolation; + +# this should conflict with the "MBRIntersects" predicate lock in session "a" +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 105, 200 105)')); +select count(*) from t1; + +connection a; +select sleep(2); +commit; + +#==================Test predicate lock on "delete"========================== +connection default; +truncate t1; + +# Test on predicate locking +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +# Connection default will place predicate lock on follow range +set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))'); +start transaction; +delete from t1 where MBRWithin(t1.c2, @g1); + +connection a; +set session innodb_lock_wait_timeout = 1; +select @@innodb_lock_wait_timeout; +--error ER_LOCK_WAIT_TIMEOUT +insert into t1 values(4, Point(4,4)); + +connection default; +rollback; + +#==================Test predicate lock on "select for update"================== +connection default; +truncate t1; + +# Test on predicate locking +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +# Connection default will place predicate lock on follow range +set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))'); +start transaction; +select count(*) from t1 where MBRWithin(t1.c2, @g1) for update; + +connection a; +set session innodb_lock_wait_timeout = 1; +select @@innodb_lock_wait_timeout; +--error ER_LOCK_WAIT_TIMEOUT +insert into t1 values(4, Point(4,4)); + +connection default; +rollback; +#==================Test predicates replicate through split ================= +connection default; +truncate t1; + +delimiter |; +create procedure insert_t1(IN start int, IN total int) +begin + declare i int default 1; + set i = start; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +CALL insert_t1(0, 1000); + +# Connection 'a' will place predicate lock on root and last leaf page +connection a; +set session transaction isolation level serializable; +select @@tx_isolation; +start transaction; +set @g1 = ST_GeomFromText('Polygon((800 800, 800 1000, 1000 1000, 1000 800, 800 800))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +# Connection 'b' will split the last leaf page, so the predicate +# lock should replicate +connection b; + +CALL insert_t1(1001, 2000); + +# This insert goes to the new page after split, it should be blocked +set session transaction isolation level serializable; +set session innodb_lock_wait_timeout = 1; +# Insert a record that would be in the search range +--error ER_LOCK_WAIT_TIMEOUT +insert into t1 values (1200, Point(950, 950)); + +connection a; +select sleep(2); +commit; + +connection a; +SET SESSION debug="-d,rtr_pcur_move_to_next_return"; +disconnect a; +--source include/wait_until_disconnected.inc + +connection b; +disconnect b; +--source include/wait_until_disconnected.inc + +# Clean up. +connection default; +drop table t1; + +drop procedure insert_t1; + +#============ Test row locks ======================= +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + + +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +connect (a,localhost,root,,); +connection a; +SET SESSION debug="+d,rtr_pcur_move_to_next_return"; + +set transaction isolation level serializable; +start transaction; +set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +connect (b,localhost,root,,); +connection b; + +# This should be successful +delete from t1 where c1 = 1; + +connection a; +commit; +set transaction isolation level serializable; +start transaction; +set @g1 = ST_GeomFromText('Polygon((0 0, 0 300, 300 300, 300 0, 0 0))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); + +connection b; + +set session innodb_lock_wait_timeout = 1; +--error ER_LOCK_WAIT_TIMEOUT +delete from t1 where c1 = 2; + +# Clean up. +connection a; +commit; + +connection default; +drop table t1; +SET DEBUG_SYNC= 'RESET'; + +# Test btr_discard_page adjust concurrent search path +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +start transaction; +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +insert into t1 select * from t1; + +select count(*) from t1; + +connection b; +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +set transaction isolation level read uncommitted; +SET DEBUG_SYNC= 'row_search_for_mysql_before_return SIGNAL siga WAIT_FOR sigb'; +send select count(*) from t1 where MBRWithin(t1.c2, @g1); + +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR siga'; +rollback; +SET DEBUG_SYNC= 'now SIGNAL sigb'; + +connection b; +--reap +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +connection default; +DROP TABLE t1; +SET DEBUG_SYNC = 'RESET'; + +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +start transaction; + +CALL insert_t1(100); + +connection a; +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +SET DEBUG_SYNC= 'rtr_pcur_move_to_next_return SIGNAL siga WAIT_FOR sigb'; +--send select count(*) from t1 where MBRWithin(t1.c2, @g1); + +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR siga'; +rollback; + +SET DEBUG_SYNC= 'now SIGNAL sigb'; + +connection a; +--reap; + +connection default; +drop procedure insert_t1; +DROP TABLE t1; + +connection a; +SET SESSION debug="-d,rtr_pcur_move_to_next_return"; +disconnect a; +--source include/wait_until_disconnected.inc + +connection b; +disconnect b; +--source include/wait_until_disconnected.inc + +connection default; +SET DEBUG_SYNC = 'RESET'; diff --git a/mysql-test/suite/innodb_gis/t/rtree_create_inplace.test b/mysql-test/suite/innodb_gis/t/rtree_create_inplace.test new file mode 100644 index 00000000000..ef3f017197a --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_create_inplace.test @@ -0,0 +1,49 @@ +# This is to test create GIS index with algorithm=inplace. + +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/no_valgrind_without_big.inc + +# Create table with geometry column +CREATE TABLE t1 (c1 INT, c2 GEOMETRY NOT NULL, c3 GEOMETRY NOT NULL) ENGINE=INNODB; + +# Insert enough values +INSERT INTO t1 VALUES(1, Point(1,1), ST_GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))')); +INSERT INTO t1 VALUES(2, Point(2,2), ST_GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))')); +INSERT INTO t1 VALUES(3, Point(3,3), ST_GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))')); +INSERT INTO t1 VALUES(4, Point(4,4), ST_GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))')); +INSERT INTO t1 VALUES(5, Point(5,5), ST_GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); +INSERT INTO t1 VALUES(6, Point(6,6), ST_GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))')); +INSERT INTO t1 VALUES(7, Point(7,7), ST_GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))')); +INSERT INTO t1 VALUES(8, Point(8,8), ST_GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))')); +INSERT INTO t1 VALUES(9, Point(9,9), ST_GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); + +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; + +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; + +# create spatial index +CREATE SPATIAL INDEX idx ON t1(c2); + +SELECT COUNT(*) FROM t1; + +SET @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +SELECT COUNT(*) FROM t1 WHERE MBRWithin(t1.c2, @g1); + +SET @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +SELECT COUNT(*) FROM t1 WHERE MBRWithin(t1.c2, @g1); + +ALTER TABLE t1 DROP INDEX idx, ADD SPATIAL INDEX idx3(c2); + +SET SESSION debug="+d,row_merge_instrument_log_check_flush"; +ALTER TABLE t1 DROP INDEX idx3, ADD SPATIAL INDEX idx4(c2), ADD SPATIAL INDEX idx5(c3); + +# Clean up. +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_debug.test b/mysql-test/suite/innodb_gis/t/rtree_debug.test new file mode 100644 index 00000000000..3ba8ecc0655 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_debug.test @@ -0,0 +1,73 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree multi level split. + +--source include/have_innodb.inc +--source include/big_test.inc +--source include/not_valgrind.inc +--source include/have_debug.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values + (i, Point(i, i)), + (i + 1, Point(i + 1, i + 1)), + (i + 2, Point(i + 2, i + 2)), + (i + 3, Point(i + 3, i + 3)), + (i + 4, Point(i + 4, i + 4)), + (i + 5, Point(i + 5, i + 5)), + (i + 6, Point(i + 6, i + 6)), + (i + 7, Point(i + 7, i + 7)), + (i + 8, Point(i + 8, i + 8)), + (i + 9, Point(i + 9, i + 9)); + set i = i + 10; + end while; +end| +delimiter ;| + +# Test level 1 rtree. +CALL insert_t1(5000); +select count(*) from t1; + +# Check table. +check table t1; + +# Test level 2 rtree. +truncate table t1; +CALL insert_t1(10000); +select count(*) from t1; + +drop index c2 on t1; + +create spatial index idx on t1(c2); + +show create table t1; + +SET DEBUG='+d,row_merge_ins_spatial_fail'; +--error ER_GET_ERRNO +create spatial index idx2 on t1(c2); +SET DEBUG='-d,row_merge_ins_spatial_fail'; +show create table t1; + +# Check table. +check table t1; + +# Test level 3 rtree. +truncate table t1; +CALL insert_t1(100000); +select count(*) from t1; + +# Check table. +check table t1; + +truncate table t1; + +# Clean up. +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_drop_index.test b/mysql-test/suite/innodb_gis/t/rtree_drop_index.test new file mode 100644 index 00000000000..ac23ebb66e4 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_drop_index.test @@ -0,0 +1,33 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/not_embedded.inc + +--echo # +--echo # Bug #21899444 INNODB: ASSERT FAILURE (COL->ORD_PART) +--echo # IN DICT_COL_GET_SPATIAL_STATUS() + +connect purge_control,localhost,root; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +connection default; + +CREATE TABLE t1 ( + p INT NOT NULL AUTO_INCREMENT, + g LINESTRING NOT NULL, + PRIMARY KEY(p) +) ENGINE=InnoDB ROW_FORMAT=dynamic; + +ALTER TABLE t1 ADD INDEX`si`(g(500)); +INSERT INTO t1(g) VALUES(ST_linefromtext(concat('linestring','(18 106,19 106,24 111,27 108,32 104,37 107,42 107,44 112,44 116,40 118,43 114,46 114,42 118,44 123,45 123,49 123,53 119,50 123,50 124,54 126,58 125,59 126,64 127,65 127,69 131,74 132,75 135,78 139,2078 141,2075 143,2077 143,2079 143,2084 143,2085 147,2090 -1853,2086 -1852,2086 -1856,2089 -1852,2093 -1850,2090 -1851,2090 -1852,2091 -1851,2092 -1850,2097 -1847,2102 -1848,2100 -1852,2100 -1852,7100 -1851,7103 -1850,7104 -1847,7109 -1842,65 127,67 131,66 131,61 132,61 133,62 137,65 1137,2065 1135,2061 1135,2064 1135,5064 1135,5066 1135,5070 1136,5070 1141,5071 1138,5074 1141,5075 1141,5074 1137,5076 1137,5071 1139,5066 1142,5065 2142,5068 2147,5073 2151,5069 2156,5071 2157,5072 2162,5074 2165,5069 2169,5072 2169,5076 2173,5074 2169,5078 2169,5076 2170,76 2175,74 2179,75 2184,80 2188,83 2190,87 2189,84 2193,87 2189,86 2190,87 2195,87 2200,87 1200,85 1202,86 1199,87 1200,87 1201,91 1206,92 1204,94 1204,98 1206,102 1208,105 1211,102 1216,105 1220,109 1224,110 1224,114 1225,117 1224,118 1229,117 1232,122 1237,123 1236,120 1235,124 1237,121 1236,122 1240,126 1244,127 1246,126 1249,125 5249,123 5251,127 5251,131 5251,135 5256,138 5257,135 5257,139 5257,138 5258,141 5260,146 5260,146 5260,143 10260,147 10265,151 10270,156 10266,157 10269,162 10273,166 12273,168 12274,163 12270,168 12275,170 12277,170 12277,-3830 12277,-3825 12277,-3824 12278,-3825 12276,-3825 12278,-3822 12277,-3825 12275,-3829 12278,-3828 12275,-3824 12280,-3827 12280,-3826 12282,-3822 12283,-3822 12286,-3820 12288,-3818 12289,-3816 12294,-3817 12297,-3819 12300,-3816 12297,-3813 12295,-3811 12299,-3811 12297,-3806 12298,-3806 12298,-3804 12301,-3801 12306,-3803 17306,-3803 17306,-3798 17306,-3803 17310,-3801 17314,-3798 17317,-3797 17317,-797 17321,-797 17323,-796 17325,-793 17326,-792 17322,-789 17327,-784 17331,-780 17335,-776 17339,-774 17339,-771 17342,-770 17345,-765 17348,-765 17349,-763 17353,-760 17350,-760 22350,-756 22346,-752 22349,-748 22352,-752 22348,-748 22347,-746 22345,-745 27345,-743 27346,257 27350,260 27349,261 27352,266 27348,266 22348,269 22347,271 22347,272 22347,273 22348,273 22352,278 22348,279 22344,282 22345,282 22342,283 22347,283 22347,288 22349,292 22347,292 22348,293 22348,298 22348,303 22351,306 22352,309 22352,308 22354,310 22356,311 22361,311 22358,311 22360,311 22360,315 22356,320 22358,325 22363,326 22366,321 22371,318 22373,318 22375,314 22375,316 22375,321 22376,321 22376,322 22372,32 104,36 109,40 114,40 113,40 117,44 119,49 123,49 126,49 129,53 133,50 137,50 139,49 137,48 138,43 138,42 139,46 142,46 138,41 139,45 141,4045 5141,4045 5146,4042 5147,4043 10147,4041 10150,4042 10152,4045 10152,4041 10156,4041 10152,4041 10152,4046 10153,4049 10156,4046 10155,4051 10157,4055 10159,4055 10160,4056 10161,4055 10166,4054 10169,4054 10172,4054 15172,4051 15176,4047 15177,4049 15174,4047 15176,4047 15176,4046 15177,4046 15180,4043 15184,4043 15187,4038 15190,4040 15194,4040 15199,4045 15196,4047 15197,4050 15200,4050 15204,4050 15208,4047 15212,4047 15215,4049 15216,4046 15218,4042 15223,4042 15228,4042 15232,4047 15235,4050 15236,4050 15239,4051 15243,4053 15243,4050 17243,4052 17243,4052 18243,4057 18247,4061 18249,4064 18249,4067 20249,4067 20250,4067 20255,4066 20259,4066 20259,4067 20255,4069 20256,4071 20258,4072 20254,4067 20257,4067 20260,4069 20265,4065 20267,4069 20266,4070 20267,4071 20264,4074 20259,4070 20264,4073 20260,4074 20263,4077 20268,4082 20271,4084 20273,4084 20277,4081 18277,4085 18279,4086 18276,4087 18273,4087 18275,4092 18277,4093 18279,4093 18280,4095 18280,4091 18283,4092 18281,4094 18283,4090 18287,4094 18287,138 5257,138 5255,138 5258,-1862 5254,-1860 5256,-1856 5258,-1851 5255,-1850 5260,-1847 5260,-1847 5263,-1847 5258,-1850 5257,-1850 5259,-1851 5257,-1855 5258,-1853 5261,-1849 5261,-1849 5258,-1849 5259,-1845 5264,-1847 5264,-1850 5268,-1852 5266,-1853 5270,-1856 5265,-1852 5262,-1847 5263,-1842 5263,-1842 5260,-1842 5265,-1841 5265,-1844 5265,-1842 5270,-1837 5274,-1838 5279,-1843 5275,-1842 5280,-1838 5281,-1838 5285,-1833 5285,-1828 5288,-1824 5289,-1828 5291,-1831 5291,-1826 5291,-1830 5293,-1826 5296,-1822 5301,-1826 5302,-1826 5302,-1826 5302,-1825 5297,-1820 5299,-1816 5303,-1816 5299,-3811 12299,-3809 12302,-3806 12302,-3806 12302,-3803 12304,-3798 12304,-3797 12304,-3793 12306,-3788 12306,-3783 12309,-3816 12294,-3811 12299,-3809 12297,7100 -1851,7098 -1854,7102 -1854,7107 -1856,7107 -1858,7110 -1854,7110 -1851,7113 -1851,7115 -1851,7120 -1851,7123 -1847,7124 -1852,7125 -1852,7127 -1852,7131 -1852,7129 1148,7129 1145,7133 1150,7137 1148,7138 1147,7143 1149,7147 1154,8147 1155,8152 3155,8147 3157,8143 3158,8144 3160,8144 3164,11144 3167,11146 3167,11148 3163,11152 3161,11148 3159,11149 3163,11150 3161,11151 3166,11154 3171,11154 3170,8144 3160,8144 3163,8144 3166,8145 3166,8146 3171,8146 3174,8144 3174,8144 3174,8145 3176,8141 3180,3141 3182,7141 3183,7141 7183,7136 7185,7136 7185,7133 7187,7136 7187,7131 7190,7136 7194,7137 7197,7141 7196,7139 7199,12139 7200,12143 7200,12143 7199,12144 7203,12145 7200,12141 7200,12136 7195,12136 7191,12137 7191,12137 7196,12139 7197,12140 7197,12137 7201,12140 7204,12140 7209,12143 7209,12145 7210,12147 7214,12148 9214,12152 9218,12149 9218,12149 9221,12149 9220,12150 9222,12153 10222,12153 10226,12156 10227,12159 10223,12160 10220,12161 10225,12161 10227,12163 10224,12163 10223,12158 10224,12158 10227,12158 10231,12155 12231,12157 12226,7136 7185,7139 7189,7139 7189,7139 7188,7137 7191,7139 7191,7140 7189,7143 7191,7144 7189,7144 7190,7149 7193,7152 7194,7154 7198,7153 7203,7148 7207,12148 7209,12146 7209,12145 7213,12140 7217,12139 7219,12141 7219,12138 7218,12143 7218,13143 7220,13140 7224,13142 7228,13137 7231,13142 7235,13146 7239,13149 7243,13148 7247,13150 7248,13155 7249,13155 7253,13155 7253,13155 7258,13157 7260,13162 7255,13159 7255,13163 7258,13164 7258,13164 7263,13167 7264,13167 8264,13165 8265,13169 8265,13171 13265,13175 13261,13176 13259,13176 13259,13180 13262,13181 13262,13183 13262,13188 13265,13191 13267,13191 13265,13194 13267,13191 13269,13192 13264,13196 13269,13198 13272,13200 13272,13202 13270,13207 11270,13211 11270,13211 11273,13213 11274,13217 11275,13222 11276,13222 11272,13226 11274,13231 11277,13233 11282,13236 11284,13238 11284,13236 11286,13236 11288,13236 11283,13236 11284,13238 11289,13241 11292,13244 11292,13245 11289,13241 11294,13244 11298,13249 11301,320 22358,324 24358,328 24358,327 24363,326 24359,327 24361,329 24365,334 24367,-666 24367,-670 24368,49 123,46 127,46 129,49 131,49 136,47 135,45 138,3045 135,3042 138,3044 139,3044 144,3049 144,3053 142,3055 137,3058 136,3053 139,3048 142,7048 138,7048 3138,7048 3139,7048 3140,7050 3145,7053 1145,7050 1146,7053 5146,7048 5150,7047 5146,10047 5147,10043 5147,10047 5147,10050 5152,10052 5155,10054 5156,10056 5157,10056 5159,10058 5162,10062 5164,10062 5169,10066 9169,10068 9168,10063 9164,10063 9169,10061 9171,14061 9172,14061 9174,282 22342,287 22347,288 22347,288 22343,285 22339,280 22338,278 22341,279 25341,284 25343,13241 11294,13246 11296,13243 11296,13244 11291,13245 11291,13244 11291,13246 11295,13251 11300,13253 11305,13253 11306,13258 11305,13255 11306,13256 11309,13256 11311,13261 11307,13265 11303,13267 11305,13270 11301,13275 11298,13271 11300,15271 11302,15276 11306,15279 11303,15284 11305,15286 11305,15289 11307,15290 11302,15292 11305,15296 11309,15297 11313,15298 11316,15300 11317,15304 11320,15306 11324,15306 11320,15307 11320,15312 11320,15313 11319,15317 11317,15315 11321,15317 11323,15317 11328,15319 11333,15322 11336,15322 11337,15322 11337,15324 11341,15324 11345,15325 14345,15328 13345,17328 13346,17333 13349,17337 13354,17338 13358,17342 13358,17346 13353,17348 13353,17345 13353,17348 13354,17347 13354,17347 13354,17347 13355,22347 13358,22349 13355,22351 13355,22356 13354,22358 13354,22361 13355,22362 13355,22358 13355,22359 13359,22364 13364,22369 13369,22372 13373,22376 13371,22377 13371,22377 13369,22381 13374,22386 13379,22387 13376,22387 13380,22392 13378,22390 13374,22392 13378,22391 13378,22391 13375,22392 13378,22390 13380,22393 13382,22398 13387,22398 10387,22402 10391,22399 10392,22400 10392,22400 10394,22404 10391,22403 15391,22405 15392,22407 15392,22412 15387,22412 15390,22412 15394,22408 15396,26408 15398,26407 20398,26411 20402,26415 20406,26417 20411,26420 20407,26422 20407,31422 16407,31421 16405,31421 16410,31423 16410,31426 16414,31426 16410,31430 16415,31430 16418,31435 16419,31437 16420,31438 16422,31438 16425,31438 16425,31441 16427,31439 16431,31441 16436,36441 16436,36443 18436,36442 18437,36440 18440,36440 18436,36440 18440,36442 18445,36443 18446,36447 18451,37447 23451,37452 23456,37456 23455,37458 23459,37456 23461,37458 23463,37460 23466,37464 23469,37460 23474,37462 23476,37461 26476,37466 26479,37470 26483,37471 26488,37474 26489,37474 26485,37474 26483,37474 26488,37470 26492,37474 26497,37474 26499,37478 26495,37483 26499,37483 26501,37488 26496,37491 26499,37495 26495,37500 26496,37500 26497,37500 26501,37497 26499,37497 26499,37495 26504,37498 26504,37494 26509,37497 26514,37495 26515,37498 26514,37503 26514,37508 26512,37510 26516,37511 26519,37509 26523,37506 26528,37507 26532,37512 26536,37513 26538,37510 26542,37512 26544,37517 26543,37522 26546,37527 26551,37525 26555,37529 26558,37524 26563,37524 26562,37527 26562,37522 26562,37522 26559,37526 26561,37522 26559,37523 26561,37523 26556,37524 26558,40524 26560,40524 26563,40521 26567,40525 26566,40527 26568,40532 26572,40534 26569,40533 26565,40531 26565,40535 26569,40535 26570,40539 26572,40544 26575,40543 26575,40544 26579,40548 26584,40549 26581,40553 26585,40556 26590,40552 22590,40557 22594,40556 22595,40561 22592,40561 22593,40565 22593,40568 22593,40573 22588,40570 22590,40570 22591,40570 22588,40573 22590,40573 22593,40568 22593,40567 22597,40567 22599,40571 22599,40574 22600,40574 22604,42574 22607,42577 22607,42577 22612,42579 22616,38579 22619,38580 22617,38580 22614,38575 22619,38579 22619,38579 18619,38582 18614,38582 18617,38586 18622,38590 18625,38590 18622,38594 18621,38596 18616,38597 18614,38597 18618,38600 21618,38601 21618,38605 21620,38607 25620,38611 25620,38608 25617,38608 25621,38608 25625,38611 25623,38615 25623,38615 25620,38616 25622,38619 25624,38620 25625,38620 26625,38623 26627,38623 26627,311 22358,311 22359,-1689 22360,2311 27360,2312 27360,2312 27360,2317 27362,2317 27362,2319 27359,2319 27364,2318 27359,2321 27364,2326 27367,2325 27371,2326 27373,2326 27373,2325 27377,2329 27377,2327 27377,2330 27379,2333 27379,2331 27379,2331 27381,2336 27381,6336 27382,6336 27383,40527 26568,40531 26572,40533 26574,40538 26576,40533 26580,40538 26585,40539 26588,40536 26583,40540 26587,40539 26588,40535 26593,40540 26594,40544 26597,40548 26602,40548 26601,40549 26602,40547 26602,40548 26603,40553 26606,40548 26606,40548 26603,40551 26608,40556 26612,40559 26616,40554 26619,40556 26619,40556 26623,42556 26623,42556 26624,42560 26624,42562 26626,42563 26630,42564 26630,42564 26634,42559 26635,42562 26635,42565 26637,42562 26638,42564 26642,42564 26641,42568 26641,42572 26641,42572 29641,42574 29642,39574 29641,39574 34641,39576 34643,39581 34638,39578 34638,39574 34642,39574 34645,39572 35645,34572 35648,34577 35651,39577 35655,43577 35659,43580 35655,43575 35658,43578 35658,43581 35662,43577 39662,43572 39658,43572 39661,43572 39664,43572 39666,43576 39670,43577 39667,43580 39671,43576 39673,43573 39673,43574 39677,43569 39679,43567 39679,43568 39683,43563 39686,43566 39690,43566 39692,43568 39694,43568 39695,41568 39691,41570 39692,41571 39692,41571 39693,41571 39698,41571 39698,41574 39698,41569 39698,41570 39699,41570 39704,41572 39709,41573 39712,41578 39713,41579 39717,41584 39719,41585 39720,-1850 5268,-1845 5268,-1847 5266,-1842 5268,-1840 5263,-1845 5264,-1843 5264,-1839 8264,-1839 8267,-1839 8272,-1838 8276,-1834 8273,-1834 8273,-1833 8274,-1837 8279,-1836 8283,-1834 8286,-1836 8282,-1834 8279,-1835 8279,-1834 8280,-1836 8283,-1841 8288,-1846 8289,-1843 8286,-1838 8286,-1841 8285,-1838 8285,-1834 8288,-1829 8291,-1825 8286,-1825 8289,-1825 8287,-1824 8291,-1822 8294,-1821 8298,-1818 8300,-1818 8296,-1814 8296,-1811 8295,-1808 8292,1192 8296,1192 8297,1195 11297,1192 11301,1195 11305,1197 11300,1193 11300,1193 11296,1193 11293,1194 11294,1199 11292,1204 11292,1205 11294,1210 11292,1208 11288,1204 11290,1205 11289,1207 8289,1202 8284,1204 8282,1204 8281,1206 8281,1208 8281,1212 8283,1212 13283,1213 13287,1213 13290,1216 13293,1214 13289,1217 13286,1212 13291,1208 13288,1208 13292,1209 13297,1208 13296,1204 13298,1205 13303,1209 13308,1204 13308,1209 13304,1210 13304,1214 13309,1214 13314,1215 13314,1219 13314,1219 13319,1224 13320,1229 13321,1232 13325,1233 13329,1231 13329,1234 13334,-2766 13336,-2769 13337,-2765 13340,-2762 13345,-2760 13342,2240 13342,2238 13342,2242 13342,2246 13345,2246 13346,2244 13348,2239 13348,2240 13351,2240 13352,2245 13357,2248 13357,2243 13362,2247 13362,2248 13362,2252 13363,2256 13363,2256 13363,2260 13367,2255 13372,2251 13369,2251 13369,2252 13372,2249 13376,2254 13378,2255 13382,2259 13379,2262 13379,2267 13381,2262 13381,2262 13383,2265 13383,2269 13385,2270 13386,2271 13389,2267 13391,2271 13386,2275 13391,2273 13392,2275 13387,2277 13390,2274 13390,2275 13394,2280 13395,2280 11395,2281 14395,2279 14400,2277 14403,2273 14406,2274 16406,2274 16410,2279 16410,2284 16411,2280 16409,2280 16409,2282 16409,2282 16411,2282 16412,2280 16413,3280 16418,3284 16418,3285 16423,3289 16423,3292 16427,3294 16429,3296 16431,3297 16436,3298 16435,3303 16435,3305 16434,3305 16436,3305 16436,3309 16437,3309 16438,3308 16439,3308 16439,3306 16444,3302 16441,-1698 16437,-1703 16438,-1699 16438,-1697 16438,-1698 16439,-1695 16436,-1690 16441,-1687 16446,-1683 16450,-1682 16451,-1684 16453,-1682 16457,-1682 16457,-1686 16460,-1681 16459,-1680 16456,-1677 16460,-1681 16461,-1679 16464,-1674 16465,-1673 16469,-1669 16471,-1669 16476,-1665 16474,-1665 16478,-1664 16478,-1664 16479,-1661 16474,-1656 16471,-1655 11471,-1660 11473,-1663 11475,-1666 11480,3334 15480,3338 15476,3342 15471,3345 15471,3345 15470,3350 15469,3347 15474,3351 15476,3352 15473,3353 15476,3350 15477,3350 15479,3351 15482,3352 15484,3351 15487,3353 15487,3358 15487,3353 15486,1217 13286,1222 13291,1222 13291,1225 13286,1229 13286,1231 13281,1235 13280,1236 13281,1241 13282,1245 13285,1247 13285,1247 13287,1250 13287,1247 13290,1247 13295,1247 13298,1252 13301,1249 13304,1252 13304,3252 13304,3247 13304,3249 13308,3254 13308,3257 13308,3261 17308,3261 17309,3261 17306,3259 17305,3262 17310,3263 17308,3262 17311,3259 17314,3259 17314,3257 17309,3254 17309,3253 17309,3255 17310,3253 17312,3255 17312,3255 17312,3256 17307,3257 17307,3256 17311,3256 17313,3255 17317,3251 17317,3248 17321,3253 17325,3256 17326,3258 17324,3258 17327,3263 17322,7263 17325,7265 17328,7263 17330,7265 17333,7270 17333,7273 17333,7278 17336,4278 21336,4278 21340,4279 21340,4281 21340,4286 24340,4290 24343,9290 24347,9294 24349,9296 24347,9298 25347,9301 25348,9301 25348,9304 25353,9303 25357,9303 25352,11303 25355,11304 25358,11307 25358,11312 25358,11312 25361,11310 25365,11313 25365,11314 25369,11319 25371,11321 25371,11325 25366,11329 25365,11330 25366,11329 25370,11330 25365,11334 25367,11338 25366,11343 25363,11348 25359,11345 25356,11348 25357,11349 25358,11349 25358,11352 25360,11356 30360,11360 30365,11360 30365,11362 30365,11367 30367,11368 30369,15368 30370,15373 30371,15376 30373,14376 30378,14377 30383,14381 30378,14386 30380,14388 30382,14391 30385,14393 31385,16393 31389,16396 31394,16396 31397,16392 31400,16395 31405,16398 31409,16398 31413,16397 31415,16396 31417,16401 31418,16401 31422,16402 31419,16407 31420,16411 31419,16406 31423,18406 31427,18411 31432,18415 28432,18417 28437,18418 28441,18414 28438,18417 28435,18416 28439,18420 28442,18423 28447,18427 28444,21427 28445,21428 28450,22428 28455,22432 28457,22436 28458,22441 28458,22445 28463,22448 28468,22451 28465,22456 28468,22453 28468,22458 28471,22463 28473,22460 28475,22459 28472,22463 28476,22464 28472,22468 28468,22468 28471,25468 28466,25471 28468,25473 28464,25473 28464,25475 29464,25476 29466,25479 29461,25476 29462,25476 29464,25478 29464,25483 29461,25484 29460,25486 29458,25486 29462,25490 29460,25495 26460,25498 26463,25495 26468,25495 26472,25495 26472,25499 26474,25504 26476,25504 26478,25509 26476,25513 26479,25514 26481,25519 26477,25519 26480,25518 26481,25519 26484,25524 26483,25527 26484,25522 26484,25526 26487,25528 26492,25533 26496,25535 26498,25535 26498,25539 26503,25542 26504,25543 26505,25547 26510,25552 26510,25551 26508,25550 26512,25553 26510,25557 26510,25554 26511,25552 26508,25556 26505,25556 26506,25560 26506,25560 26507,25560 26506,25565 26501,25567 26504,25569 26504,25568 26508,25571 26508,25571 26511,25576 26511,25581 26516,25581 26519,25582 26521,25585 26522,25588 26527,25588 26526,25584 26530,25587 26534,25589 26529,25593 26533,25598 26538,25599 26540,25599 26540,25599 26540,25604 26543,25603 26543,25603 26538,25606 26538,25609 26540,25611 26542,25612 26547,25612 26547,25612 26548,25617 25548,25612 25548,25613 25547,25616 25545,25616 25549,25618 25551,25620 25555,25620 25551,25622 25550,25625 25551,25622 25555,25619 25557,25617 25556,25622 28556,25625 28551,25630 28546,25634 28548,25639 28553,25643 28553,25638 25553,25634 25553,25634 25557,25639 25557,25643 25558,25644 25553,25646 25556,25647 25560,25650 25562,25650 30562,25650 30562,25650 30564,25650 30566,25652 30570,25656 30571,25661 31571,25662 31575,25663 31579,25662 31579,25665 31581,25666 31584,25671 31582,25674 31581,25674 31584,25676 31584,25673 31587,25678 31586,25679 31581,30679 31584,30675 31589,30680 31590,35680 31590,35675 31589,35677 31591,35680 31590,35681 31587,35684 31588,35685 31589,35689 31592,35689 31593,35692 31597,35696 31597,35700 34597,35699 34599,35703 34604,35703 34606,35702 34601,35705 34603,35705 34606,35708 34603,35713 34604,35717 34603,35719 34608,35715 34608,35711 34608,35713 34609,35714 34605,35714 34610,35714 34614,35718 34616,35719 34617,35722 34618,35722 34621,35725 34625,35725 34626,35725 34629,35725 34631,35725 34635,35730 34636,35727 34638,35731 34640,35735 34642,35739 34645,35741 34645,35742 34649,35738 34649,35738 34645,35741 34647,38741 34650,38741 37650,38742 37646,38746 37651,38749 37652,38753 37653,38753 37657,38757 37656,38756 37660,38761 37660,38765 37660,38760 37660,38759 37660,38760 41660,38760 41660,38762 41665,38757 41667,43757 41669,43752 41674,43752 41677,43757 41672,43758 41677,45758 41680,45758 41679,45762 41683,45765 41683,45769 41683,45770 41684,45768 46684,45773 46688,45776 46692,45774 46694,45775 46697,45778 46695,45776 46698,45774 46702,45779 46702,45784 46704,45787 46706,45791 46711,45786 46707,45790 46711,45793 46715,45796 46719,45799 46724,45797 46728,45802 46726,45797 46729,45801 46733,45802 46733,45803 46732,45804 46732,45805 46732,45808 46735,45810 46740,45810 46744,2326 27373,2322 27377,2323 27379,2325 27383,2325 27382,2322 27382,2323 27382,5323 23382,5325 23385,5329 23386,5330 23390,5335 23392,5330 23392,5330 23395,5329 23395,5333 23399,5333 23402,5338 23405,5339 23405,5334 23406,5329 23401,5332 23403,5330 23407,5333 23409,5328 20409,5324 20411,5324 20414,5329 20416,5328 20421,5325 20421,5329 20424,5330 20424,5335 21424,5331 21427,5333 21431,5334 21433,5329 21434,5330 21437,5333 21440,5338 21437,5338 21440,5334 21441,5333 21438,5329 26438,5332 26435,5335 26439,5337 26440,5338 26444,5342 26439,5342 26442,5345 26440,5349 26438,5352 26442,5349 26445,5348 30445,5350 30447,5350 30444,5354 30444,5359 30443,5363 30445,5367 30446,5367 30448,5367 30453,5371 30455,5371 30453,5373 30458,5375 30461,5380 30463,5384 30463,5383 30459,5384 30459,5383 30459,5385 30460,5390 30459,5392 30464,5394 30464,5389 30465,5393 30469,5391 30469,5391 30469,5395 30474,5396 30470,5399 30470,5401 30467,5401 30468,5404 30470,5400 30465,5401 30462,5403 30467,5404 30467,5409 30469,5412 30473,5412 30477,5407 30481,8407 30486,8408 30489,8410 30490,8410 30489,8413 30490,8414 30493,8414 30496,8419 30501,8420 30502,8415 30507,13415 30509,13411 30506,13414 30507,13412 30511,13412 30515,13417 30518,13419 30523,13418 30527,13422 30529,13418 30531,13413 35531,13409 35531,13413 35532,13417 35537,13419 35533,13423 35529,13424 35529,13423 35524,13428 35525,13433 35526,13438 35530,13443 35531,13448 35531,13452 35532,13455 35536,13457 35536,13452 35536,13455 35539,13452 35535,13457 35540,13457 35544,18457 35546,18460 35547,22460 35546,22465 35550,22466 35554,22468 35552,22473 35555,22471 35559,22470 35564,22472 35564,22470 35569,22474 35569,22474 35571,22477 35573,22482 35576,22487 35580,22488 35583,22489 35585,22493 35585,22496 35585,25496 35586,25493 35582,25494 35585,25498 35585,25496 35585,25498 35587,25503 35591,25503 35593,25499 35590,25499 35591,25495 35591,26495 35595,29495 35591,29495 35593,29498 35597,29498 35601,29500 35606,29501 30606,29502 30603,29505 30603,29510 30606,29511 30606,29514 30607,29516 30610,29518 30608,3259 17305,3263 17304,3267 17303,3271 17308,3269 17312,3269 17313,3274 17315,3277 17315,3282 17311,3285 17313,3283 17309,3278 17310,3275 17315,3275 17317,3276 17322,3280 17324,3280 17324,3276 17325,3277 17325,3276 17328,3278 17324,3273 17329,3277 17331,3280 17326,3281 17328,3276 17324,3277 17324,3277 17322,3277 17321,3277 17321,3281 17323,3282 17327,3282 17332,3287 17335,3288 17335,3288 17338,3290 17337,3294 17340,3294 17341,3299 17341,3299 12341,3299 12342,3304 12339,3301 14339,3305 14340,3307 14341,3311 14343,3313 14343,3314 16343,3310 16341,3310 16346,3312 16348,3311 16349,4311 16346,4316 16348,4321 16344,4324 16348,4322 16349,4323 16346,4323 16346,4326 16350,4322 16354,4323 16356,4325 16361,4325 16358,4322 16362,4325 20362,4325 20366,4322 20367,4326 20372,4326 20374,4331 20373,4333 20373,4338 20376,4339 20379,4341 20382,4338 20384,4339 20386,4340 20383,4340 20383,4335 20388,4336 20390,4341 20390,4346 20391,4348 20391,4349 20393,37497 26499,37494 26496,37496 26500,37496 26501,37499 26506,37497 26502,37498 26502,37500 29502,37500 29507,37505 29508,37506 33508,37508 33513,37513 33518,37517 33522,37516 33520,37521 33521,37521 33525,37516 33530,37519 33528,37520 33528,37524 33530,37527 33530,37525 33527,37528 33530,37533 33533,37534 38533,37536 38536,22358 13355,25358 13360,25361 13358,25362 13362,25362 13362,25365 13365,25363 13367,25359 13369,25357 13374,25360 13374,2247 13362,2252 13366,2254 13363,2257 13363,2261 13358,2264 13354,2264 13356,2269 13361,2272 13363,2274 13363,2275 13363,2273 13362,2274 13365,2278 13365,2280 13370,2284 13366,2284 13365,2289 13368,2290 13366,2293 13368,2298 13373,2298 13372,2295 13375,271 22347,273 22350,4273 22347,4269 22348,4270 22350,4271 22355,4272 22360,4276 22363,4281 22365,4284 24365,4279 24365,4282 24365,4285 24365,4287 24364,4289 24362,4294 24360,4295 24362,4298 24365,4301 24369,1301 24370,1301 24371,1305 24375,1305 24376,1307 24377,1312 24380,1314 24382,1318 24380,1316 24382,1316 24387,1318 24387,1318 29387,1321 29387,1316 29383,1320 29386,1321 29389,1326 29389,1327 29389,2327 29394,2327 29394,2332 29393,-666 24367,-663 24368,-661 24368,-656 24371,-653 24372,-649 24372,-647 24374,-643 24370,-638 24375,-635 24380,-638 24382,-638 24384,-638 24384,-636 24388,-637 24390,-632 24386,-630 24386,-629 24386,371 24389,376 24394,374 24392,377 24397,3377 24400,6377 24405,6378 24408,6373 24406,6370 24406,6375 24403,6370 24403,6375 24403,6379 24406,6374 24409,6378 24411,6380 24412,6378 24415,6378 24419,6383 24423,6385 24425,6387 24428,6390 24433,6386 24430,6386 24435,6387 24436,6388 24440,6387 24444,6383 29444,6383 29447,6386 29451,6382 29446,6387 29447,6390 29452,6393 29452,6397 29455,6400 29459,6400 29463,6397 29467,6393 29467,6395 29470,6397 29473,6399 29468,6394 29467,6397 29470,6396 29473,6396 29470,6393 29465,6389 29469,6390 29470,6389 29465,6389 29468,6392 29470,6388 33470,6390 33466,6391 33466,6392 33467,6394 33467,322 22372,322 22374,323 22377,327 22378,331 22382,330 22383,332 22386,333 22383,331 22383,330 22387,332 22391,332 22396,337 22397,339 22394,340 22399,340 22398,340 22396,343 22396,343 22396,341 22400,342 22404,343 22402,348 22403,345 22407,347 22411,342 22411,345 22413,340 22417,345 22417,348 22422,348 22426,351 22427,352 22432,352 22436,4352 22438,4353 22442,4354 22444,4354 22447,4357 22449,4360 22450,4364 22450,4367 22451,4369 22453,4366 22455,4369 22453,4373 22458,4377 22459,4380 22459,4380 22464,4385 22467,4385 22467,4390 22469,4385 22469,4385 22472,25571 26508,25574 26507,25578 26512,25581 26512,25581 26512,25583 26508,25583 26513,25587 26516,25589 26515,25590 26515,25591 26517,25589 26520,25587 26522,23587 26526,23585 26531,23589 26534,23592 26538,24592 26543,24588 26545,24593 26547,24598 26543,24598 26548,24602 26545,24598 26540,24600 26545,24600 26548,24600 31548,24605 31549,24608 31551,24613 31552,24615 36552,24616 36557,24619 36557,24622 36560,24622 36564,24627 35564,24627 35569,24632 35569,25632 35570,25635 35569,25636 35573,25636 35573,25638 35576,25641 35580,25641 35583,25641 35588,25642 40588,20642 40593,20645 40593,20650 40595,20651 40591,20651 40594,20648 40591,20648 40591,20652 40596,20652 40596,20656 40597,20656 40600,20656 40601,20659 40598,20662 40597,20662 40597,20663 40600,20668 40601,20665 40606,1215 13314,1214 13319,1212 13317,1209 13312,1210 13312,1211 13317,6211 13320,6214 13320,6216 13320,6211 13323,6214 13318,6214 13323,6214 13324,6216 13319,6219 13323,6218 13321,6219 13321,6218 13326,6221 13329,6225 13331,6230 13335,6231 13339,6231 13343,6235 13338,6234 13342,6234 13344,6236 13345,25524 26483,25521 26484,25524 26489,25527 26487,25529 26484,25530 26482,25534 27482,25539 27486,25537 27488,25541 27483,25544 27486,25547 27490,25550 27491,25550 27491,25554 27486,25559 27486,25563 27489,25561 27489,25563 27493,25561 27491,25563 27493,25563 27495,25564 27497,25563 27497,25563 27497,25558 27498,25563 27499,25565 27503,25567 27503,25569 27503,25567 27504,25565 27505,25565 27505,25565 27505,25566 27505,25570 27501,25570 27497,25574 27498,25570 32498,25570 32501,25573 32501,25576 32497,25576 32498,25577 32501,25579 32503,25583 32504,25588 32507,25592 32512,25596 32507,25599 32507,25594 32503,25597 32506,25597 32510,25594 32509,25594 32510,25596 32513,25592 32513,25594 32515,25594 32520,25598 32520,25602 32517,25603 32518,27603 32520,27607 32523,27608 31523,27613 31527,27615 31527,30615 31530,30617 31530,30618 31532,30619 31536,30623 31537,30623 31538,30625 31538,30626 31541,30627 31541,30624 31540,30623 31540,30624 31545,34624 31546,34619 31543,34623 31545,34624 31549,34624 31548,34626 31550,34626 31555,34626 31551,34628 31555,34633 31555,34636 31559,34634 31564,34636 31564,34639 31562,34639 31560,36639 31555,36636 27555,41636 27557,41640 27554,41644 27558,41647 27559,41648 27555,41653 27555,41658 27555,41658 27552,41658 27552,41660 27550,41656 27554,41661 27558,41664 27561,41667 27566,41662 27562,41663 27563,41663 27565,41662 27569,41661 27569,41664 27571,41664 27567,41659 30567,41660 30565,41660 30561,41665 30566,41664 30561,41664 30561,41664 30562,41664 30563,41660 30558,1312 24380,4312 25380,4315 25384,4315 25385,4319 25383,4322 25388,6322 25387,6322 25387,6326 25392,6321 25397,6324 25397,6324 25401,6319 25404,9319 25405,9314 25400,9312 25402,9310 25403,9313 25403,9313 25403,9316 25400,9319 25401,4319 25396,8319 25398,8315 25400,8315 25396,8315 25397,8311 25398,8307 25394,8309 25394,8311 25397,8315 25402,8310 25403,11310 25365,11311 25365,11316 25370,11320 25375,11325 25375,11325 25380,11325 25382,11326 25378,14326 25380,14328 25382,14331 25383,14334 25385,14336 25386,19336 25386,19336 25389,19332 25390,19332 25391,19335 25388,19338 25391,19342 25393,19340 25393,19345 25396,19345 25394,19347 25394,19349 25393,19351 25397,19350 25398,19348 25399,19349 25403,19352 25399,19350 25402,19354 25400,19353 25405,23353 25402,23354 25402,23356 25405,23358 25409,23360 25413,23363 25414,23367 25412,23365 25411,23367 25414,23363 25413,23367 25416,23367 25416,23370 25418,24370 25414,24370 25419,24373 27419,24378 27419,24380 27416,24380 27412,24380 27410,24380 27406,24376 27406,24374 27410,24370 27414,24370 27415,24371 27420,24375 27415,24378 27411,24375 27415,24378 27418,24382 27421,24383 27426,24383 27425,24385 27430,24390 27431,24394 27432,24395 27436,24399 30436,24400 30439,24404 30443,24403 30439,24406 30438,24410 30442,24406 30446,24408 30445,24403 30445,24408 30442,24412 30446,24416 30446,24416 30449,19416 30449,19416 30447,19418 30452,19420 30453,19423 30458,15423 30462,15423 30464,15425 30466,16425 30467,16424 30471,16421 30474,16426 30474,16428 30476,16428 30476,16424 30474,16424 33474,16425 33474,16427 33477,16425 33479,16426 33477,16422 33480,16425 33482,16430 33479,16430 33478,16429 33482,16424 33482,16427 33484,16430 33488,16431 33488,16434 33488,16435 33491,16432 33487,16436 37487,16434 37490,16438 37485,16443 37482,16446 37480,16447 37480,16447 37482,16451 37478,16454 37479,16458 37479,16454 37479,16454 37482,16459 37486,16460 37491,16463 37495,16464 37492,16465 37493,16466 37494,16468 37497,16468 37501,16468 37501,16473 37503,16473 37503,16473 37498,16476 37494,21476 33494,21473 33493,21476 33489,21478 33491,21478 33496,21478 33492,21480 33496,21483 33501,21484 33504,21483 33500,21484 33505,21484 33505,21488 35505,21491 35505,21494 35506,21496 35510,21492 35506,21492 35509,21489 35514,21490 35517,21487 35519,23487 35523,23485 35528,23487 35533,23483 35534,23487 35535,23488 35537,23493 35539,23495 35542,23495 35546,23495 35550,23491 35549,23488 35552,23492 35555,23495 35560,23500 35559,23496 35557,4322 16354,4317 16358,4318 16358,4320 16363,4315 16363,4315 16362,4316 20362,4320 20365,4323 20363,4326 20366,4329 20367,4332 20370,4337 20374,4338 20375,4333 20375,4338 20375,4341 20377,4342 20377,4342 20378,4343 20381,4346 20386,4346 20386,4346 20386,4346 20386,4349 20390,4352 20395,4354 20396,4355 20400,4358 20400,4360 20401,4360 20404,4363 20405,4368 20406,4372 20411,4371 20416,4367 20417,4364 20422,4367 20420,4372 20425,4373 20422,4374 20418,4377 20418,4381 20422,4382 20423,4384 20418,4389 20421,4385 20423,4390 20423,4390 20425,4392 20429,4396 20434,41574 39698,41578 39702,41576 39704,45576 39704,45575 39709,45577 39713,45581 39715,45581 39718,45583 39721,45578 39726,47578 39722,47581 39719,47586 39722,47586 39726,47589 39730,47592 39733,47597 39733,47593 39733,47596 39735,47597 39735,47595 39735,47591 39739,47593 39744,47593 39747,4074 20263,4077 20268,4079 20268,4078 20271,4078 22271,4083 22276,4087 22272,4088 22275,4086 22279,4082 22280,4084 22282,4086 22277,4082 22277,4087 22281,4090 22281,4092 22281,4092 22286,4094 22287,4097 22290,4097 22291,4095 22286,4095 22288,4095 22293,4095 22288,4092 22285,4089 22286,4090 22286,4095 22281,4100 22286,4103 22285,4104 22288,4104 22289,4107 22294,4112 22292,4117 22290,4120 22295,120 22300,121 22303,122 22300,122 22300,121 26300,125 26303,129 26303,127 26305,127 26306,132 26306,132 26307,136 26307,141 26309,140 26311,143 26313,140 26314,145 26318,149 26318,153 26321,153 29321,158 29326,158 29329,162 29324,162 34324,165 34329,168 34328,167 34332,169 34333,173 34334,173 34336,177 34338,178 34340,178 34344,182 34348,177 34348,182 34348,184 34353,184 34358,181 34360,183 34365,187 34365,192 34365,197 34367,199 34366,203 34368,205 34368,202 34363,204 34360,1204 34360,1205 34364,1205 30364,1205 30359,1206 30361,1207 30364,1210 30366,1210 30366,1214 30367,1218 30372,1219 30375,1214 30379,1214 30384,1217 30382,1222 30383,1223 30382,1225 30380,1228 30379,1231 30383,1232 30383,1235 30384,1237 30388,1242 30386,1244 30389,2244 30392,2241 30395,2245 30397,2245 30399,2244 30394,2242 30395,2246 32395,2246 32395,2249 32398,2251 32393,5251 32390,5251 32395,5255 32399,5255 32397,5257 32397,5257 32401,5261 32406,5261 32411,5266 32412,5271 32416,5273 32419,5276 32420,5281 32422,5279 32425,6279 33425,6284 33429,6284 33430,6282 33431,6282 33428,6286 33425,6288 32425,6288 32421,6286 32424,6288 32424,11288 32427,11292 32425,11292 32429,11290 32434,11286 32437,11286 32437,11283 32442,11278 32442,11279 32443,11283 32445,11284 32445,11283 32448,13283 32447,13287 32442,16287 32446,16282 32445,16283 32445,16284 32448,16285 32448,16284 32446,16286 32443,16290 32446,16291 32446,16292 32450,16291 32450,16291 32450,16291 32445,16287 32447,16288 32452,16287 32457,16291 36457,16289 36462,16293 36462,16294 36462,16297 36462,16301 36464,16306 36469,16310 36467,16310 36463,16313 36459,16312 36460,16313 36465,16313 36469,16308 36470,16309 36468,16314 36470,16319 41470,16322 41471,16325 44471,16330 44471,16330 44471,16330 44473,16330 44474,16335 44479,16332 44477,8414 30496,8415 30497,8419 30497,8414 30501,8416 30500,8418 30495,8421 35495,8423 35494,8427 35497,8429 35499,8432 35499,8436 35503,8438 35503,8443 35505,8440 35508,8443 35509,8440 35509,8440 35511,8441 35515,8445 35511,8448 35512,8443 35517,8443 35519,8442 35524,8444 35526,8441 35527,8436 35527,8433 35523,8429 35527,8430 35530,8431 35532,8429 35533,8433 35535,8437 32535,8435 32536,8439 32536,8436 32539,9436 32542,9434 32537,9429 32534,9429 32534,9433 32537,9433 32542,9429 32543,9434 32538,9436 32538,9436 34538,7436 34538,7438 34543,7439 34543,7439 34543,7439 34548,7438 34549,7438 34552,7438 34553,7438 34556,11438 34561,11434 34559,11436 34555,7436 34553,7436 34549,120 1235,124 1239,125 1236,125 1238,129 1235,128 1235,125 1236,123 1239,128 2239,132 2242,131 2242,135 2242,140 2242,145 2247,146 2252,144 2253,146 2248,144 2245,146 2244,150 2249,155 2245,159 2242,160 2243,160 2245,155 2244,156 2245,3156 2246,3159 2248,3159 2250,3164 2254,3165 2257,3166 2255,3169 2257,3171 2262,3169 2263,3174 2268,3177 2273,3174 2276,3178 2275,3173 2279,3177 2276,3180 2279,3182 2284,3185 2289,5185 2286,5185 2288,5181 2286,5185 2288,5184 2293,5187 2293,5187 2297,5190 2299,5187 2299,5185 2300,5181 6300,5182 6297,5187 6300,5189 6298,5191 6296,5193 6296,5193 6296,5195 6297,5195 6300,5197 6297,5195 6300,5190 6302,5191 6306,5192 6308,5195 6312,24395 27436,24391 27437,24393 27433,24398 27436,24398 27437,16286 32443,21286 32443,21286 32444,21282 32448,21283 32446,21283 32448,21285 32451,21281 32456,21282 32458,21282 32463,21282 32468,21284 32470,21289 32471,21287 32471,21287 32469,21287 32474,21284 32477,21288 32482,21291 32482,21291 32486,21296 32485,21299 32486,21301 32487,21303 32484,21301 32482,21305 32487,21310 32491,21312 32495,21313 32491,21315 32495,21312 32495,21314 32498,21316 32501,21311 32506,21311 32508,21312 32513,21317 32516,21319 32516,21324 32516,21327 32521,21328 32526,21332 32527,21328 36527,21331 41527,21336 41527,21334 41531,21337 41533,21335 41535,21339 41540,21340 41540,21343 41536,25343 41539,25340 41542,25337 41542,25337 41545,25335 41542,25335 41543,25335 46543,25339 46548,30339 46551,30340 46556,30343 46557,30342 46553,30337 46556,30341 46561,30337 46565,30336 46563,30338 46564,24373 27419,24373 27421,24375 27424,24377 27425,24377 27430,24374 27435,24379 27437,24384 27432,24385 27434,24382 27437,24381 27442,24381 31442,24381 33442,20381 33439,20383 34439,20382 34440,20378 34444,20381 34446,20381 34442,20384 34443,20388 34446,20392 34447,20393 34442,20393 34447,20396 29447,20395 29443,20399 29443,20400 29439,20399 29436,20404 29439,20409 29440,20410 29440,20410 29444,20408 29445,20413 29448,20413 29451,20412 29455,20413 29458,20418 29461,20413 29463,20415 29464,20416 29464,20416 29463,20416 29463,20418 29464,20414 29465,20418 29463,20413 29460,20413 26460,20418 26458,20421 26459,20421 26461,20421 26460,43578 35658,43578 35654,43578 35658,43578 35660,43583 35661,43583 35659,43583 35662,43579 35663,43583 35661,43587 35666,25625 25551,25629 25551,25630 25554,25630 25559,25632 25560,25627 25561,25623 25557,25623 25559,25624 25561,26624 25566,26627 25566,29627 25571,29626 25574,29625 25575,29622 25579,29625 25583,29630 25588,29632 25589,29635 25591,29635 25594,29637 25598,29642 25596,29643 25597,29644 25597,29649 25598,29654 25602,29656 25602,29661 25603,29661 25601,29664 26601,29666 26604,29665 26604,29668 26607,29672 26607,29669 26611,29671 26616,29674 26613,29679 26616,29680 26616,29681 26615,29682 26619,29679 26617,29684 26622,29686 26624,29689 26624,29690 26628,29691 26630,29693 26625,29694 26620,29698 26617,29703 29617,29707 29616,29706 29620,29709 29623,34709 29626,34710 29628,34710 29627,2282 16411,2283 16412,2283 16412,2287 16417,2292 16421,2297 16421,2298 16426,2303 16426,2304 16429,2309 11429,2313 11432,2308 14432,2308 14431,2311 14433,2310 14437,2308 14438,2309 14440,2311 14440,2309 14443,2312 14443,2314 14447,2314 14452,2314 14450,2309 14451,2309 14451,2309 14456,2313 14461,2313 14461,2309 19461,2309 19461,2311 19462,2315 19465,2318 19465,2321 19462,2317 19464,2321 19467,2322 19467,2322 19469,2322 19469,2320 19464,2321 19462,2322 19461,2327 19466,2327 19461,2322 19461,2322 19463,2317 19467,2318 19471,2102 -1848,2107 -1848,2111 -1846,2114 1154,2114 1156,2115 1157,2114 6157,2116 6162,2121 6165,2124 6170,2121 6175,2124 6179,2124 6183,2128 6178,2126 6179,2125 6178,2126 6181,2122 10181,2127 10186,2128 10189,2130 10188,2130 10191,2127 11191,2127 11195,2131 11196,2132 11192,2131 11197,2135 11201,2135 11203,2139 11199,2142 11203,2143 11204,2147 11208,2142 11210,2142 11211,2147 11212,2150 11217,2150 11219,2151 11219,2152 11222,2152 11222,2148 11224,2150 11220,2150 11223,2146 11218,2143 11219,2140 11221,2143 11218,2140 11219,2140 11223,2145 11225,2147 11226,2152 11226,2155 11224,2157 11229,2157 11229,2153 11233,2153 11238,2149 11239,7149 10239,7154 10241,7157 10241,7162 10243,7164 10248,7164 10251,7169 10253,7171 10253,7172 10257,7177 10260,7182 10256,7187 10260,7191 8260,7195 8256,7200 8258,7204 8258,7203 8261,7203 8262,7205 8266,7209 8270,7209 8273,7214 8273,7214 8276,7210 8276,7211 8276,7213 8279,7218 8278,7222 8283,7223 8279,7220 10279,7221 10283,7223 10284,7228 10286,7230 10290,7231 10290,7231 10293,7232 10294,7232 10297,7234 10299,7229 10295,7226 10294,7221 10293,7223 10295,7228 10299,7229 10303,7232 10307,7232 10311,7233 10316,7234 9316,7239 9318,7244 9321,7241 9326,7241 9328,7238 9331,7235 9330,7237 9335,7236 9335,7236 9337,7236 9338,7231 14338,7230 14333,7232 14338,7237 18338,4082 22280,4081 22280,6081 22283,6076 22285,6076 22289,6078 22286,6080 22287,6084 22292,6084 22293,6085 22293,6086 22291,6091 22294,6092 22293,9092 22290,9095 22294,9096 22295,9096 22297,9091 22292,9096 22295,9098 22290,9094 18290,9097 18290,9096 18294,9099 18292,9098 18297,9103 18299,9103 18302,9103 18305,9100 18301,9102 18302,9106 18305,9102 18310,9101 18306,9103 18308,9103 18312,9107 18310,9107 18315,9107 18320,9111 18322,9111 18326,9113 18329,9111 18329,9116 18329,9121 18329,9121 18332,9123 18331,9124 18332,9125 18328,9127 18325,9125 18328,9128 18329,9133 18329,9136 18333,9141 18337,9142 18342,9143 18340,9148 18344,9152 18341,9150 18346,9149 18341,9149 18341,9154 18343,9158 18345,9161 18346,9161 18347,9163 18352,9164 18352,9162 18349,9165 18352,9165 18351,9165 18352,9165 18356,9163 18352,9167 18353,9167 18349,9168 18351,9168 18347,9173 18347,9175 18347,9179 18348,9182 18349,9187 18352,9186 18357,9189 18360,9192 18360,9196 18362,13196 18367,13196 18369,13196 18371,13199 18374,13194 18374,13197 18375,13200 18377,13205 18380,13210 18384,13209 18379,13209 18374,13213 18375,13216 20375,13212 20375,13215 20375,13211 20375,13211 20372,13208 20373,13204 20373,13204 20369,13205 20369,13207 20366,13212 20367,13216 20367,13221 20372,13222 20377,13225 20381,13226 20386,13230 20383,9230 20388,9228 20384,9228 20386,9223 20389,9223 20392,4223 20397,4223 20396,4225 20399,4222 20404,4220 20408,4220 20411,4223 20416,4227 20421,4230 20418,4234 20421,4232 20422,4236 20423,4238 20423,4239 20423,4235 20427,4231 20427,4230 20426,4228 20428,4232 20427,4232 20431,4236 20433,4241 20431,4241 22431,4236 22436,4239 22437,4239 22439,4236 22443,4232 22439,4236 22444,4236 22446,4239 22447,4239 22452,4241 22454,4245 22457,4245 22460,4250 22462,4251 22465,4253 22465,4249 22465,4251 22460,4251 22464,4255 22469,4257 22473,4256 22478,4259 22479,4260 22480,4257 22485,6257 22489,6260 22490,6260 22493,6262 22496,6262 22500,6267 22495,6271 22495,6276 22491,6276 22489,6281 22487,6286 22490,6289 22490,6294 22490,6294 22489,6292 22485,6292 22489,6288 22489,6288 22494,6288 22496,6286 22497,6288 22501,6292 22500,5292 22503,5292 22503,5296 22508,5295 22510,5300 22510,5305 22513,5302 22514,5306 22510,5309 22513,5313 27513,5313 27513,5317 27513,5322 22513,5326 22517,6326 22516,6323 22518,6323 22523,6320 22523,6321 22526,6323 22531,6323 22531,6324 22532,6324 22532,6325 22529,6321 22531,6323 22534,6328 22534,6329 22530,6324 22527,10324 22522,10319 22524,10315 22520,10314 22525,10311 22525,10307 22526,10304 22531,10306 22527,10306 22528,10309 22530,10312 27530,10312 27534,10312 27534,10307 27536,10307 27532,11307 27531,11307 27533,11308 27535,11303 27531,11298 27532,11294 27534,11294 27534,11299 27538,11297 27542,11302 27547,11306 27547,11311 27549,11313 30549,11317 30551,11313 30546,11316 30541,11316 30540,11319 30545,11318 30546,11323 30550,11326 30554,11326 34554,11330 34558,11331 34558,11333 34558,11332 34561,11328 34561,11331 34562,11336 34562,11336 34567,11340 34570,11342 34569,11345 34568,11344 34569,11345 34571,11349 34574,15349 34574,15354 34569,15359 34566,15362 34571,15363 34576,15367 34577,15368 34577,15371 34581,15374 34576,15379 34574,15383 34579,15384 34584,15387 34583,17387 34578,17392 34578,17391 34578,17396 34573,17397 34578,17397 34580,17397 39580,17402 39584,17397 39587,17402 39587,17406 39582,17403 39587,17407 39589,17409 39592,17406 39592,17409 39595,17409 39599,17412 39603,17416 39608,17417 39608,17417 39608,17421 39607,17422 39609,17424 39608,17427 39604,17425 39605,17426 39609,17423 39611,17422 39610,17425 39613,17428 39618,17428 39619,17429 39616,17432 39616,13432 39615,13432 39617,13432 39617,13432 44617,13434 44621,13434 44623,13439 44627,13442 44632,13442 44635,13440 44631,13442 44631,13445 44635,13447 44639,13445 44637,13445 44638,13450 44639,13454 44644,13457 44644,13459 44642,15459 44639,15457 44644,15461 44644,15462 44642,15459 44645,15459 44647,15463 44650,15458 44651,15459 44653,15461 44657,15463 44661,15463 44661,15463 44663,15467 44666,15472 44668,15474 44664,15470 44668,15471 44670,15473 44674,15475 44675,-3806 12298,-3804 12301,-3805 13301,-3804 13296,-3808 13292,-3809 13295,-3806 13300,-3804 13297,-3801 13301,-3801 13302,-3796 18302,-3801 18306,-3799 18311,-3802 18311,-3799 18312,-3801 18314,-3796 18319,-3795 18322,-3791 18321,-3786 18320,-3786 18321,-3784 18321,-3782 18321,-3781 18324,-3782 18325,-3783 18320,-3788 18324,-1788 18324,-1788 18329,-1784 18333,-1784 18334,-1781 18329,-1777 18334,-6777 18337,-6774 18339,-6776 18341,-6781 18341,-6779 18341,-6779 18343,-6779 18339,-6777 18343,-6782 18338,-6779 18341,-6778 18341,-6776 18336,-6776 18333,-6776 18333,-6780 18338,-6784 18338,-6787 18335,-6786 18336,-6781 22336,-6781 22335,-6778 22331,-6777 22326,-6777 22331,-6777 22335,-6772 22335,-6774 22340,-6769 22341,-6767 22337,-6767 22335,-6767 22335,-6767 22333,-6767 22336,-6762 22331,-6759 22331,-6764 22332,-6765 22334,-6767 22339,-6762 22334,-6760 22334,-6760 22334,-6758 22337,-6754 22341,-6754 22342,-6750 22339,-4750 22343,-4747 22343,-4752 22343,-4751 22344,-4749 22345,-4745 22348,-4740 22353,-4736 22358,-4738 22363,-4740 22358,21336 41527,21334 41527,21330 41526,21330 41526,21333 41529,21328 41529,21329 41530,21326 41532,21328 41532,21324 41537,21328 41532,21330 41535,21334 41532,21336 40532,21334 40536,21339 40534,21341 40534,21344 40534,21346 40532,21350 40532,21353 40535,21357 40539,21359 40542,21360 40546,21355 40546,21360 40547,21359 40550,21356 40551,21356 40550,21357 40550,21361 40554,21358 45554,21362 45556,21366 45553,21370 45557,21374 45556,21377 45553,22377 45549,22382 45549,22382 45552,22386 45557,22387 45557,22388 45553,22392 45557,24392 45561,22392 45558,22397 45561,22399 45558,22398 45561,22400 45564,22400 45569,22404 45573,22406 45577,22406 45581,22404 45581,22407 45582,22409 45579,22409 45575,22409 45579,22407 45579,22402 45582,22402 45582,22404 45587,22406 45587,22406 45589,22411 45589,22413 45590,22417 45591,22417 45592,22422 45587,22425 45583,22428 50583,22428 50585,22428 50585,22430 50588,22435 50590,22435 50585,22435 50590,22439 50595,22440 50590,22445 50587,22442 50584,22442 50586,22443 54586,22443 54590,22446 54595,22448 54597,22448 59597,22444 59593,22449 59596,22449 59599,22452 59600,22457 59600,22458 59605,22457 59602,22462 59603,22463 59604,22461 59605,22458 59602,22457 59601,22457 59601,22455 59605,25455 59606,25457 59611,25462 59613,25464 59614,25467 59617,25472 59612,25476 59613,25478 59610,25482 59615,25482 59616,25486 59612,25483 59614,25487 59619,25492 59623,25497 59625,146 2252,150 2249,150 2249,152 2254,157 2249,158 2253,157 2252,161 2255,159 3255,161 3258,161 3255,163 3255,168 3259,168 3259,172 3263,167 3267,172 3271,172 3272,172 3274,175 3278,179 3282,181 3283,184 3280,185 3282,187 3282,191 3284,192 3286,191 6286,193 6289,198 6285,195 6290,194 6289,195 6289,199 6293,200 6288,198 6290,202 6291,207 6296,212 6301,215 6301,216 6301,211 6304,212 6304,216 6309,216 6304,214 6308,213 6308,211 6305,212 6309,217 6314,220 6317,224 6322,222 6327,220 6323,41573 39712,41572 39709,41576 40709,41580 40714,41576 40717,36576 40717,36577 40719,36582 40716,36585 40721,36590 43721,36585 43721,36582 43724,36585 43729,36590 43731,36590 43730,15289 11307,15285 11312,15286 11315,15289 11315,15294 11315,15295 11316,15296 13316,38742 37646,38743 37650,38745 37655,38744 37658,38739 37659,38737 37662,38742 37662,38745 37657,38748 37662,38748 37662,38752 37667,38753 37667,38748 37669,38748 37668,38752 37673,38754 37674,38756 37676,38758 37674,38760 37679,38760 37675,38758 37675,38763 37675,38767 37674,38772 40674,38767 40679,38772 40683,38774 44683,38778 44686,38780 44690,38780 44690,38779 44695,38782 44700,38780 44695,38775 44696,38775 44696,38775 44696,38779 44699,38783 44696,38784 44696,38786 44692,38786 44692,38786 44696,38791 44698,38793 44699,38795 44703,38800 44708,38803 44708,38807 44709,38802 44706,38806 44708,38809 44709,36809 44709,36814 44704,36813 44705,36814 44705,36816 44709,36811 44712,36812 48712,36811 48717,36815 48721,36816 51721,36818 51717,36822 51720,40822 51715,40827 51712,40830 51716,40829 51719,40832 51723,40835 51724,40840 51721,40841 51721,40836 51725,40841 51730,40846 51734,40848 51738,40849 51740,40851 51743,40854 51745,40855 51746,40857 51750,40857 51746,40861 51748,40866 51751,40862 51750,40866 51750,40869 51752,40865 51752,40863 51755,40858 51757,40855 51753,40855 51758,40852 51758,40853 51760,40857 51761,40855 51757,40852 51760,40853 51761,40855 51762,40858 51757,40859 51756,40863 51757,40863 51759,40860 51764,40859 51764,40854 51768,40850 51765,40852 51767,40852 51767,40848 51772,40852 51776,40854 51778,40852 51778,43852 51778,43854 52778,43856 52781,43859 52781,43859 52776,37512 26536,37517 26531,37520 26535,37520 26540,37522 26544,37527 26544,37532 26549,37537 26544,37540 26549,37545 26544,37549 26547,37549 26550,37548 26551,37549 26553,37546 26553,37546 26553,37549 26556,37549 26559,37552 26559,37556 26564,37560 26559,37561 26561,37565 26565,41565 26565,41569 26568,41571 26573,41571 26573,41576 29573,41571 29573,41573 29576,41573 29578,46573 29578,46569 29582,45569 29583,45572 29583,45568 29583,45573 29581,45575 29578,45571 29581,45572 29584,45572 29585,45576 29585,45578 29588,45581 29591,45582 29593,45582 29598,45584 29597,45589 29600,45585 29605,45589 33605,45593 36605,45594 36607,45599 36609,45600 36604,45604 36604,45604 36608,45604 36607,45608 36610,50608 36613,50611 36609,50614 36609,50619 36605,50624 36605,50625 36606,50625 36605,50629 36606,50624 36608,50625 36610,50626 36610,50629 36608,50627 36610,50628 36614,50632 36618,46632 34618,46632 35618,46636 35622,46636 35617,46637 35620,46639 35619,46643 35620,46645 35625,46643 35630,46648 35635,46648 35640,46649 35643,46651 35647,46655 35650,46652 35655,46657 35656,46658 35657,46662 35660,46659 35663,46662 35664,46665 35663,46667 35667,46667 35663,46670 35666,46672 35671,46674 35671,47674 35668,47676 35672,47677 35673,47677 35678,47677 35677,47677 35677,47677 35682,47672 35683,47671 35683,49671 35685,49674 35689,49677 35692,49675 35692,54675 35697,54678 35699,54674 35699,54670 35701,54670 35700,54675 35703,54676 34703,54676 34703,54679 34706,54683 34708,54688 34706,54688 34707,54685 34702,54687 34702,54692 34707,54687 36707,54687 36706,54682 36707,54685 38707,54680 38710,54680 38714,54677 38714,54679 38719,54682 38720,54687 38716,54688 38717,54692 38722,54697 38726,54699 38727,54700 38724,54702 38720,52702 38719,52702 38719,52702 38721,52702 38725,52704 38726,52706 38728,52707 38729,52711 38728,52711 35728,52713 35733,52712 35737,52712 35739,52713 35742,52713 35745,52708 35745,52710 39745,52713 39749,52716 39748,52721 39749,52720 39753,52716 39756,52716 40756,47716 40757,47717 40761,47722 40761,47722 40761,47722 40766,47726 40769,47728 40772,47733 40777,47731 40773,50731 40777,51731 40779,51733 40782,51734 40786,51737 40784,51741 41784,51739 41783,51739 41785,51739 41785,51736 41789,51731 41789,52731 41790,52735 41791,52738 41790,52742 41789,52746 41785,52747 41785,52745 41785,52750 41782,52753 41786,52753 41787,52758 41792,52754 42792,52749 42793,52752 42794,52756 42791,52757 42790,52762 42793,52766 42797,52766 42797,52769 42802,52774 42806,52774 42805,52771 42807,52774 42807,52770 42808,52771 42811,52767 42811,52766 42812,52767 42817,52771 42817,52771 42817,52775 42815,52779 42811,52779 42812,52780 42815,52776 42818,52774 42818,52777 42822,52780 42823,52781 42827,52776 42829,52780 42832,54780 42835,54780 42840,2135 11201,2140 11203,2137 11204,2140 11209,2142 11213,2147 11211,2145 11213,2145 11213,2150 11218,2150 11221,2153 11225,2157 13225,2162 13228,2167 13231,2171 13232,2167 13229,2168 13233,2171 13237,2173 13239,2168 13234,2168 13235,2173 13235,2175 13234,2177 13235,2177 13234,2179 13229,2179 13226,2180 13226,2177 13226,2177 13231,2180 13231,2181 10231,2176 10233,2177 10232,2180 10235,2185 10237,2182 10240,6182 10240,6184 10244,6182 10242,6183 10243,6185 10246,6190 10244,6194 10244,6194 10247,6192 10247,6192 10252,6195 10256,6194 10260,6195 9260,6195 9260,6195 9264,6199 9269,6204 9272,6199 9268,6201 9268,6203 9265,6208 9268,6204 9270,6204 9275,6201 9279,6201 9281,6201 9286,6206 9281,6206 9277,6202 9281,6200 9285,6202 9288,6198 9290,7198 9293,7200 9297,7201 9297,7205 9298,7209 9298,7209 9299,8209 9302,8214 10302,8218 10306,8222 10308,8226 10313,8231 10313,8235 10318,8237 10318,8237 10323,8233 10326,8233 10327,8237 10325,8238 10328,8238 10330,8234 10330,11234 10332,11236 10333,11241 10337,14241 10338,14240 10338,14237 10339,14238 10337,14237 10339,14242 10339,14246 10339,14250 10339,14250 10339,14251 10337,14254 10337,14256 10334,14256 10332,14252 10336,14255 10340,14259 10342,14262 10347,11148 3159,11153 3163,11154 3162,11154 3165,11158 3167,11161 3172,11162 3175,11162 3176,11166 3179,11166 3181,11171 3185,11176 3180,11178 3179,11176 3181,11179 3183,11174 3182,52776 42818,52778 42822,52777 42822,52782 42817,52783 42822,52784 42823,52789 42826,52789 42823,56789 42828,56786 42829,56786 42832,56789 42836,56789 42835,56785 42838,56786 42843,51786 42844,51788 42846,51790 42847,51794 42842,51796 42842,51801 42846,53801 42849,53806 42849,53809 42852,53812 42850,53817 42846,53817 42848,53818 42853,53822 42856,53823 42854,53826 42858,53825 42860,53826 42860,53826 42864,53830 42868,53835 42873,53839 42873,53841 42872,53841 42876,53841 42879,53841 42884,53836 42888,53836 42889,53836 44889,53833 44889,53835 44893,53838 44897,53842 44897,53844 44900,53844 44904,53845 44905,53850 44903,53853 44904,53858 44906,53856 44907,53861 44909,53856 44913,53858 44916,53863 44916,53868 44918,53867 43918,53869 43921,53869 43919,53867 43919,53862 43918,53860 43923,53864 43928,53869 43930,53874 43933,53874 43932,53874 43932,53875 43930,53877 43928,53878 43924,53883 43927,55883 43929,55883 43925,55879 43929,55881 43929,55884 43928,55881 43928,55882 43929,55883 45929,55883 45933,55883 45936,55884 45941,55884 45941,55886 45946,55882 45948,55883 45952,55888 45956,55890 45957,55894 45953,55892 45954,55897 45950,55893 45954,55896 45956,55892 45955,55897 45959,55899 45961,55899 45961,55894 45962,55898 45957,55893 49957,55896 47957,55894 47956,55898 47960,55901 47964,55901 47967,55901 47970,55896 47973,55898 47969,55894 47974,55895 47975,55891 47976,55896 47979,55899 47984,55902 47983,55897 47987,55899 47989,55904 47992,55904 47993,55905 47997,55902 48001,55902 48003,55907 48000,55910 47998,55915 47999,55911 47994,55906 47998,55910 48003,55914 48000,55918 48000,55914 48000,55919 48000,55921 48003,55921 48007,55924 48007,55919 48010,55922 48005,55927 48009,55928 48008,55928 48008,55930 48012,55925 48012,55925 48016,54925 48014,54922 48018,54922 44018,54926 44013,54929 44012,54932 44016,55932 44017,55935 44017,55936 44020,55937 44022,55936 44020,55939 44015,55944 44018,55945 44022,55947 44023,55950 44024,55953 44020,55956 44023,53867 43919,53871 43921,52871 43921,53871 43923,53876 43923,53881 43923,53880 43927,53882 43931,53886 43936,53884 43937,53879 43934,53879 43937,53877 43939,53878 43938,53879 43942,53880 43947,53881 43948,53884 45948,53884 45949,53882 45953,53883 45954,53878 45956,53880 45953,53885 45958,53885 45958,53886 45957,53886 48957,53886 48962,53891 48962,53892 48964,53897 48965,49897 48962,49902 48965,49906 48967,49902 48967,49904 48971,49901 48967,49904 48970,54904 48971,54904 48971,54904 48975,54909 48979,54907 48975,54910 48975,54906 48971,54909 48973,54911 48975,54915 48978,54920 48978,54923 48981,54918 48984,54921 48984,56921 48984,56926 48986,56924 48981,56929 48980,56932 48979,56932 48977,56936 48979,56937 48981,56937 48982,61937 48984,61937 48980,61934 51980,61935 51981,61935 51984,61935 51984,61931 51986,5329 23395,5331 23395,5333 23390,5337 23392,5340 23395,5345 27395,5345 27397,5350 27398,5355 27399,5356 27402,6356 27405,6360 27407,6361 27406,6364 27402,6366 26402,6371 26402,6371 26402,6372 26405,6370 26405,6375 26406,6380 26411,6385 26413,6387 26414,6388 26419,6390 26419,6391 26424,6393 30424,6390 30429,6390 30432,6390 30430,6394 30434,6394 30437,6394 30441,6396 30442,6398 30439,6399 30436,6404 30435,6405 30435,6400 30435,6405 30440,6404 30443,6405 30447,6409 30447,6411 30447,6412 30448,6417 30446,6421 30450,6418 30448,6417 30444,6418 30449,6420 30451,6425 30456,6426 30456,6425 30458,6426 30458,6426 34458,6427 34459,6432 39459,6434 39462,6434 39467,6439 39470,6443 39467,6444 39468,6449 39473,6451 39476,6452 39481,6452 39479,6452 39476,8452 39476,8456 39478,8460 39480,10460 39482,10455 39482,10456 39484,10460 39484,10463 39484,10468 39486,10473 39482,10475 39484,10475 39486,10476 39488,10477 39492,10475 39494,10480 39499,10476 39501,10479 39506,10480 39510,10475 39508,10480 39513,10481 39516,10481 39516,10485 39521,10487 39522,10490 39523,10490 39520,10493 39520,10496 44520,10491 44519,10491 44524,10492 44520,10497 44525,10499 44525,10502 44527,10500 44531,10502 44535,10506 44535,10511 44532,13511 44536,13513 44533,13510 44535,13507 44540,13511 44543,13515 44548,13517 44549,13522 44550,13525 42550,13520 42551,13522 42553,13525 42552,13529 42557,13529 42558,13524 42559,13525 42559,13525 42562,13520 42564,13523 42567,15523 42569,15523 42572,15524 42577,15529 42577,15530 42582,15532 42584,15532 42588,15531 42587,15531 42592,15530 42587,15530 42583,15533 42583,15536 47583,15532 47583,15535 47587,15534 47590,15536 47594,11536 47590,11533 47590,11529 47590,11533 47592,11533 47592,11533 47593,11537 47598,11538 47603,11538 47603,11538 47605,11541 47609,11544 47613,14544 47614,14539 47610,14537 47610,14537 47614,14535 50614,14537 50619,14539 50619,14540 50623,14538 50623,14537 50619,25599 26540,25599 26541,25599 26544,25594 26542,25599 26543,25596 26544,25597 26543,25598 26543,25593 26544,25588 26542,25593 26545,25595 26544,25596 26544,25599 26541,25594 26544,25592 26549,25593 26548,25597 26549,25596 26550,25594 26551,25590 26550,25594 26554,25597 26550,25598 26552,25593 26555,25598 22555,25599 22557,25604 22559,25605 22558,25606 22562,25605 22559,25605 22564,30605 22569,30610 22571,30610 22575,30609 22575,30609 22576,30609 22581,30605 22581,30610 22583,30610 22584,30613 22579,30613 22581,30616 22577,30619 22577,30621 22580,30621 22585,30626 22590,30628 22593,30629 22598,30626 22603,30628 22606,30629 22607,30629 22604,30627 22606,30632 22608,30633 22608,30636 22612,30641 17612,30642 17614,30647 17614,30651 17615,30654 17610,30655 17607,30658 17611,30653 17610,30654 17606,30654 17607,30659 17606,30660 17611,30658 17616,30659 17616,30664 17619,30665 17621,30665 17620,30667 17621,30671 17624,30673 17624,30673 17624,30678 17627,30675 17632,30675 17635,30678 17640,30681 17643,30686 17639,30691 17641,30696 19641,30699 19640,30700 19640,30696 19645,30698 19643,30699 19645,30702 19646,30703 19649,30699 19651,30704 19648,30706 19652,30709 19653,30709 19655,30709 19655,30712 19657,30708 19658,30705 19660,30700 19662,30701 19663,30706 19664,30711 19663,30707 19667,30704 19670,30708 19672,30709 19673,30711 19673,30711 19674,30713 19678,30718 19682,30723 20682,30721 20686,30725 20691,30726 20693,30729 20695,30728 20690,30730 20692,30733 20694,30736 20692,30736 20691,30740 20694,30741 20695,30741 20697,30746 20700,30747 20702,30750 20701,30751 20698,30753 24698,30749 24701,30748 24703,30746 24704,30747 29704,30747 29705,30749 29707,30752 29712,30757 29712,30760 34712,30760 34716,30763 34716,30759 34713,30759 34717,30763 34717,30758 34717,30757 34721,30760 34726,30758 34726,30763 34727,30763 34727,30764 34727,30759 34729,30759 34732,30762 34734,30757 34735,30761 34736,30759 34736,30762 34738,30757 34733,30760 34735,30762 34737,30760 34736,30765 34733,32765 34737,32768 34737,32765 34740,32765 34742,32768 34747,32772 34751,32772 34752,32777 34749,32782 34751,32783 33751,32783 33746,36783 33749,36783 33754,36786 33756,36787 33755,36787 33758,36791 33754,36796 33754,36801 33756,36801 33758,36801 33762,36802 33765,36802 33765,36806 33770,33806 33772,33806 33777,33809 33777,33814 33780,33814 33785,33818 33782,33821 33784,33826 33781,33822 33781,33824 33783,33822 33784,33826 33787,33823 33792,33827 33795,33828 33798,33829 33799,33833 33801,33833 33801,33836 33805,33839 33809,33842 33805,33847 33810,33845 32810,33847 32808,33849 32812,33851 32815,33849 32818,33849 32822,33847 32822,33847 32826,33850 32831,33854 32836,33857 32833,33856 32828,33859 32829,33860 32832,33857 32834,33857 32830,33855 32830,33857 32830,33855 32834,33859 32829,33859 32833,33862 32836,33864 32837,33864 32839,33866 32837,33869 32835,33872 32840,33874 37840,33879 37845,33881 37850,33881 37855,33886 37856,33891 37860,33896 37860,33893 37863,33894 38863,33896 38859,28896 38864,28899 39864,33899 39869,33896 39871,33898 39875,33902 39873,33902 39875,33907 39879,33912 39884,33908 39887,33908 39888,33905 39890,33909 39895,33911 39896,33908 39900,33912 39901,33915 39902,33915 39902,33915 39902,33910 39907,33910 39904,33914 39903,33912 39906,33916 39909,33920 39909,33922 39912,33923 39916,33928 39916,33931 39918,33932 39919,33935 39915,33936 39912,33934 39909,35934 39914,35931 39915,35935 39917,35939 39920,35939 39915,35940 39911,35944 39916,35944 39911,35944 39908,35945 39904,35945 39908,35945 39912,35950 39915,35955 39917,38955 39916,38960 39921,38962 39920,38962 39920,38967 39922,38967 39924,38970 39928,38975 39928,38973 39928,38977 39931,38980 39934,38984 39936,38982 39939,38983 39942,38985 39943,38987 39945,38992 41945,38988 41950,38989 41954,38992 41958,38992 41962,38992 41965,38993 41970,38997 41970,38997 41970,38994 41974,38994 41979,38997 41979,38999 41982,38994 41980,38998 41985,38998 41984,5334 23406,5330 23406,5325 23403,9325 23404,12325 23408,12325 23408,12322 23406,13322 23411,13325 23416,13326 23412,13322 23414,13327 23419,13328 23422,13329 23425,13333 23422,13337 23424,23491 35549,23490 35544,23494 35546,23499 35548,23495 35549,21495 35553,21490 35556,21492 35558,21492 35556,21494 35559,21494 35564,21494 35566,21499 35566,21502 35562,21502 35567,17502 35568,17506 35573,17507 35574,17511 35578,17512 35583,17513 35588,18513 35591,18514 35592,18515 35594,18513 35596,16513 35601,16513 37601,16513 37602,16511 37604,16513 37609,16514 37611,16518 37616,16522 34616,16524 34613,16528 34615,16528 34620,16533 34624,16535 34627,16538 34628,16539 34630,16539 34631,16542 34628,16542 34633,16544 34638,16547 38638,16547 38640,16543 38645,16543 38640,16540 38640,16543 38640,16542 38641,16546 38646,16541 38649,16541 38645,18541 38648,18544 38648,18544 38653,18544 38656,18549 38651,18547 38651,18550 38656,18547 38658,23547 38663,23544 38664,23548 38668,23548 38670,28548 38672,28549 38669,28549 38673,28545 38669,28549 38670,28554 38670,28557 38674,28560 38669,28562 38674,28562 38669,28561 38669,28564 38671,28569 38671,38779 44699,38780 44695,38778 44698,38783 44700,38785 44700,38781 44701,38782 44696,38786 44691,38789 44692,38794 44692,38799 44688,38799 44693,38803 44697,38808 44697,38806 44697,38806 44700,38803 44702,38803 44706,38802 44707,38807 48707,38808 48707,38806 48707,38810 48712,38810 48709,38810 48711,38810 48711,38806 48707,38802 48710,38803 48706,38805 48711,38810 48711,38805 48709,38809 48710,38809 48710,38814 48707,38815 48703,38816 48703,38816 48704,38820 48704,38822 48709,38820 48710,38818 48714,38822 48716,38822 48719,38827 48722,38828 48727,38832 48725,38830 48730,38831 48726,38832 48724,38829 48728,8431 35532,8431 35537,4431 35532,4434 35537,4438 35537,4439 35533,4443 35535,4442 35530,4445 35527,4449 35527,4453 35530,4458 35530,4459 39530,4460 39531,4461 39531,4464 39531,4468 39531,4470 39534,4465 39534,4465 39532,4469 39532,4471 39537,4466 39538,4470 39539,4473 39540,4476 39540,4480 39543,4485 39548,4483 39546,4484 39547,4484 39549,4484 39551,4486 39553,4486 39554,4487 39551,4483 39553,4486 39554,4490 39556,4493 39557,4498 39561,4494 39562,-4749 22345,-4752 22345,-4748 22348,-4744 22351,-4740 22356,-4741 22358,-4739 22361,-4734 22359,-4730 25359,-4730 25360,-4725 25360,-4727 25360,-4727 25361,-6727 25360,-6729 25365,-6730 25365,-6727 25365,-6731 25364,-6730 27364,-6727 27366,-6723 27367,-3723 27363,-3719 27368,-3720 27371,-3718 27366,-3717 27369,-3716 27369,-3714 27372,-3711 27370,-3712 27371,-3712 27370,-3710 27375,-3708 27377,-3707 27382,-3706 27385,-3706 27389,-3705 32389,-3704 32392,-3704 32392,-3699 32391,-3699 32395,-3694 32399,-3694 32400,-3695 32404,-3695 32408,-3693 32410,-3693 32410,-3697 32410,-3692 32413,-3691 32418,-3686 32420,-3683 32425,-3681 32420,-3678 32424,-3673 32424,-3676 32427,-3673 32426,-3671 32426,-3676 33426,-3678 33428,-3676 33428,-3679 33428,-3679 33433,-3677 33434,-3676 33438,-3681 33440,1319 33444,1321 33441,1325 33444,1329 33439,1326 33444,1326 33439,1327 33439,1327 33440,1332 33444,1333 33449,1338 33453,1338 33450,1343 33450,1347 33454,1346 33457,1346 33455,1342 33459,1341 33462,1346 33462,1347 33463,1343 33463,1344 33462,1348 33457,1347 33460,1352 33464,1356 33468,1361 33469,1363 33468,1365 33469,1368 33472,1369 33475,-2631 33478,-2633 33483,-2629 33486,-2632 34486,-2628 36486,-2625 36488,-2621 36488,-2624 36488,-2622 36492,-2624 36491,-2629 36491,-2627 36496,-2623 36499,-2628 36502,-2631 36506,-2626 36506,-2622 36506,-2622 36509,-2619 36514,-2624 36512,-2621 36510,-2619 36510,-2619 36508,-2617 36512,-2615 36512,-2615 36513,-2615 36511,-2615 36506,-2612 36507,-2609 36511,-2606 37511,-2606 37508,-2610 37505,-2607 37508,-2602 37512,-2599 37512,-2595 37510,-2597 37511,-2592 37515,-2597 37514,-2592 37519,-2592 37524,-2592 37526,-2594 37521,-2594 37516,-2591 36516,-2588 36517,-2589 36513,-2586 36514,-2584 36514,-2583 36516,-2579 36514,-2578 36518,-2578 35518,-2575 35519,-2577 35519,-2578 35524,-2578 35529,-2578 35532,-2578 35534,-2580 35537,-2584 35541,-2586 35542,-2587 35544,-2585 35540,-2585 35544,-2584 35543,-2580 35548,-2576 35550,-2571 35553,-2567 35555,-2565 35560,-2560 35560,-2557 35564,-2553 35564,-5553 36564,-5548 36564,-5544 36565,-5547 36565,-5545 36570,-5542 36565,-5543 36566,-5543 36568,-5543 36570,-5540 36575,-5537 36577,-5535 36581,-5532 36580,-5528 36575,-5526 38575,-5526 38576,-5526 38571,-5522 38571,-5518 38576,-5514 42576,-5510 42581,-5512 42583,-5512 42582,-5507 42582,-5510 42585,-2510 42589,-2511 42592,-2508 42594,-2506 42597,-2503 42598,-2503 42603,-2498 42608,-2501 42611,-2500 42616,-2502 42613,-2502 42616,-4502 42616,-4502 42620,-4502 42622,-4506 42619,-4509 42621,-4511 42624,-4515 42625,-4510 42625,-4507 42628,-4502 42624,-4501 42629,-4505 45629,-4503 45630,-4499 45631,-4496 45630,-4497 45628,-4495 45630,-4494 46630,-4491 46634,-4487 46629,-4483 46631,21336 40532,21341 40533,21346 40534,21346 40536,21345 40536,21346 40536,21345 40536,21344 40538,21347 40543,21348 40543,21351 40540,21351 40542,21348 40545,21351 40546,21352 40546,21353 40546,21358 40546,21359 40545,21359 40550,21357 40555,21362 40560,21364 40555,21363 40555,21364 40560,25364 40564,25365 40566,25368 40566,25371 45566,25372 45567,25372 45562,25376 45564,25381 42564,25385 42560,25389 42564,25389 42568,25393 42572,25390 42572,28390 42569,28389 42570,28385 42574,28386 42576,28389 42577,31389 42578,31385 42582,31387 42582,31390 42578,31391 42579,31392 42576,29392 42580,29396 42582,29398 43582,29402 43584,29406 43585,29407 43587,29411 43592,29413 43594,29414 43595,25414 43600,25412 43595,25415 43599,25420 43602,25418 43604,25423 43599,25426 43599,25429 43602,25434 42602,25429 42604,25432 42600,25435 42605,25436 47605,25440 50605,25441 50610,25439 50614,25444 50617,25447 50621,25444 50624,25444 50626,25445 50627,25450 50632,25450 50628,25451 50630,25451 50632,25454 50633,25458 50637,25462 50641,25463 50640,25463 51640,25467 51644,25469 51649,25473 51650,25474 51653,25475 51654,26475 51658,26475 51662,26474 51665,26476 51665,26481 51661,26483 55661,26485 55664,30485 55667,30485 55670,30489 55671,30489 55668,30491 55670,30492 55670,30493 55675,30497 55675,30501 55671,30503 55676,30500 55677,30498 55672,30494 55675,30499 55676,30500 55676,30505 55681,30501 55684,30496 55685,30500 55685,30502 55687,30506 55692,30507 55693,30506 55692,30511 55693,30516 55694,30514 55699,30514 55701,30512 55701,34512 55705,34516 55708,34520 55704,34518 56704,34519 56704,34520 56706,34517 56706,34515 56701,34519 59701,34522 59706,34522 59708,34522 59713,34526 59715,34528 59717,34533 59712,34538 59715,34538 59717,34541 59717,34546 59720,34548 59721,34552 63721,34547 63726,34549 63728,34554 63726,34556 63726,34557 63721,34556 63725,34561 63730,34558 63730,37558 63725,37561 63729,37565 63724,37569 63720,37573 63718,37578 63722,37577 63718,37579 63720,37579 63722,37580 63719,37580 63720,37579 63724,37574 63725,37574 63727,37576 63725,37581 63729,37583 63732,37586 63732,37590 63737,37592 63734,37597 63731,37600 63730,37596 63731,37596 63733,37600 63733,37601 63735,37596 63735,37591 63732,37596 63733,37601 63738,37602 63733,37599 63738,37594 63740,37598 63744,37603 63745,37605 63747,37607 63752,37607 63756,37603 63757,37603 63761,37604 63761,37608 63758,37609 63762,37604 63764,37604 63764,41604 63765,41600 63761,41599 63761,41600 63766,41596 63766,41599 63766,41601 63770,41604 63768,41608 63768,41611 63772,41614 63767,41609 63763,41612 63765,41615 63760,38615 63764,38615 63768,38618 63768,35618 63769,35618 63774,35617 63775,35618 63776,35613 63775,35615 63780,35612 63782,35613 63779,35614 63775,35618 63774,35619 63776,35624 63778,35624 63780,35629 63785,35629 63780,35626 63781,35624 63782,35629 63784,35634 63787,35638 63782,35634 63783,35634 63778,35633 63777,35638 63782,35641 63786,35644 63791,35648 63793,35647 63793,35649 63797,35653 63801,35654 63804,35654 63804,35656 63804,35655 63806,35658 63810,35658 63805,35662 63805,35657 67805,35658 67808,35660 67811,35664 67808,35660 67803,35658 67803,35661 67803,35663 67808,35666 67810,35670 67814,35669 67813,35669 67816,37669 67820,37664 67820,2275 13363,2278 16363,2274 16363,2275 16362,2279 16362,2282 16362,2287 16366,2284 16366,4284 16366,4286 16371,4290 16375,4294 18375,4295 18377,9295 18381,9296 18381,9299 18382,9303 18379,9305 19379,9308 19375,8308 19380,8312 19380,38746 37651,38749 37652,38754 37653,38757 37656,38753 37661,38753 37661,38758 37663,38763 37664,38763 42664,38768 42666,38765 42668,38770 42664,38767 42659,38768 42659,38773 42654,38771 42659,38775 42661,41775 42663,41778 42665,41781 42669,41782 42667,41779 42669,41784 42672,41781 42672,41783 42672,41780 42672,41783 42675,41784 42675,41788 42676,41792 42677,41792 42675,41793 42680,41793 42676,41796 42681,41801 42685,41804 42684,41806 42685,41804 42690,41802 42692,41805 42696,41800 42697,41802 42698,41804 42700,41809 42704,41813 42705,36813 42708,36813 42704,36810 42703,36811 42705,40811 42706,40815 46706,40816 46708,40820 46708,40818 46712,40822 46717,40825 46720,40829 46724,40827 46727,40831 46727,40833 46731,40829 46733,40830 46733,36830 46738,36830 46741,36834 46744,36831 46749,36826 46748,36822 46748,36824 46751,36819 46755,36823 46758,36823 46762,36824 46766,36822 46769,36826 46772,36831 46774,36828 42774,36833 42776,36833 42777,36838 42782)'))); +INSERT INTO t1(g) VALUES (ST_linefromtext(concat('linestring','(20 110, 21 110, 26 115, 29 112, 34 108, 39 111, 44 111, 46 116, 46 120, 42 122, 45 118, 48 118, 44 122, 46 127, 47 127, 51 127, 55 123, 52 127, 52 128, 56 130, 60 129, 61 130, 66 131, 67 131, 71 135, 76 136, 77 139, 80 143, 2080 145, 2077 147, 2079 147, 2081 147, 2086 147, 2087 151, 2092 -1849, 2088 -1848, 2088 -1852, 2091 -1848, 2095 -1846, 2092 -1847, 2092 -1848, 2093 -1847, 2094 -1846, 2099 -1843, 2104 -1844, 2102 -1848, 2102 -1848, 7102 -1847, 7105 -1846, 7106 -1843, 7111 -1838, 67 131, 69 135, 68 135, 63 136, 63 137, 64 141, 67 1141, 2067 1139, 2063 1139, 2066 1139, 5066 1139, 5068 1139, 5072 1140, 5072 1145, 5073 1142, 5076 1145, 5077 1145, 5076 1141, 5078 1141, 5073 1143, 5068 1146, 5067 2146, 5070 2151, 5075 2155, 5071 2160, 5073 2161, 5074 2166, 5076 2169, 5071 2173, 5074 2173, 5078 2177, 5076 2173, 5080 2173, 5078 2174, 78 2179, 76 2183, 77 2188, 82 2192, 85 2194, 89 2193, 86 2197, 89 2193, 88 2194, 89 2199, 89 2204, 89 1204, 87 1206, 88 1203, 89 1204, 89 1205, 93 1210, 94 1208, 96 1208, 100 1210, 104 1212, 107 1215, 104 1220, 107 1224, 111 1228, 112 1228, 116 1229, 119 1228, 120 1233, 119 1236, 124 1241, 125 1240, 122 1239, 126 1241, 123 1240, 124 1244, 128 1248, 129 1250, 128 1253, 127 5253, 125 5255, 129 5255, 133 5255, 137 5260, 140 5261, 137 5261, 141 5261, 140 5262, 143 5264, 148 5264, 148 5264, 145 10264, 149 10269, 153 10274, 158 10270, 159 10273, 164 10277, 168 12277, 170 12278, 165 12274, 170 12279, 172 12281, 172 12281, -3828 12281, -3823 12281, -3822 12282, -3823 12280, -3823 12282, -3820 12281, -3823 12279, -3827 12282, -3826 12279, -3822 12284, -3825 12284, -3824 12286, -3820 12287, -3820 12290, -3818 12292, -3816 12293, -3814 12298, -3815 12301, -3817 12304, -3814 12301, -3811 12299, -3809 12303, -3809 12301, -3804 12302, -3804 12302, -3802 12305, -3799 12310, -3801 17310, -3801 17310, -3796 17310, -3801 17314, -3799 17318, -3796 17321, -3795 17321, -795 17325, -795 17327, -794 17329, -791 17330, -790 17326, -787 17331, -782 17335, -778 17339, -774 17343, -772 17343, -769 17346, -768 17349, -763 17352, -763 17353, -761 17357, -758 17354, -758 22354, -754 22350, -750 22353, -746 22356, -750 22352, -746 22351, -744 22349, -743 27349, -741 27350, 259 27354, 262 27353, 263 27356, 268 27352, 268 22352, 271 22351, 273 22351, 274 22351, 275 22352, 275 22356, 280 22352, 281 22348, 284 22349, 284 22346, 285 22351, 285 22351, 290 22353, 294 22351, 294 22352, 295 22352, 300 22352, 305 22355, 308 22356, 311 22356, 310 22358, 312 22360, 313 22365, 313 22362, 313 22364, 313 22364, 317 22360, 322 22362, 327 22367, 328 22370, 323 22375, 320 22377, 320 22379, 316 22379, 318 22379, 323 22380, 323 22380, 324 22376, 34 108, 38 113, 42 118, 42 117, 42 121, 46 123, 51 127, 51 130, 51 133, 55 137, 52 141, 52 143, 51 141, 50 142, 45 142, 44 143, 48 146, 48 142, 43 143, 47 145, 4047 5145, 4047 5150, 4044 5151, 4045 10151, 4043 10154, 4044 10156, 4047 10156, 4043 10160, 4043 10156, 4043 10156, 4048 10157, 4051 10160, 4048 10159, 4053 10161, 4057 10163, 4057 10164, 4058 10165, 4057 10170, 4056 10173, 4056 10176, 4056 15176, 4053 15180, 4049 15181, 4051 15178, 4049 15180, 4049 15180, 4048 15181, 4048 15184, 4045 15188, 4045 15191, 4040 15194, 4042 15198, 4042 15203, 4047 15200, 4049 15201, 4052 15204, 4052 15208, 4052 15212, 4049 15216, 4049 15219, 4051 15220, 4048 15222, 4044 15227, 4044 15232, 4044 15236, 4049 15239, 4052 15240, 4052 15243, 4053 15247, 4055 15247, 4052 17247, 4054 17247, 4054 18247, 4059 18251, 4063 18253, 4066 18253, 4069 20253, 4069 20254, 4069 20259, 4068 20263, 4068 20263, 4069 20259, 4071 20260, 4073 20262, 4074 20258, 4069 20261, 4069 20264, 4071 20269, 4067 20271, 4071 20270, 4072 20271, 4073 20268, 4076 20263, 4072 20268, 4075 20264, 4076 20267, 4079 20272, 4084 20275, 4086 20277, 4086 20281, 4083 18281, 4087 18283, 4088 18280, 4089 18277, 4089 18279, 4094 18281, 4095 18283, 4095 18284, 4097 18284, 4093 18287, 4094 18285, 4096 18287, 4092 18291, 4096 18291, 140 5261, 140 5259, 140 5262, -1860 5258, -1858 5260, -1854 5262, -1849 5259, -1848 5264, -1845 5264, -1845 5267, -1845 5262, -1848 5261, -1848 5263, -1849 5261, -1853 5262, -1851 5265, -1847 5265, -1847 5262, -1847 5263, -1843 5268, -1845 5268, -1848 5272, -1850 5270, -1851 5274, -1854 5269, -1850 5266, -1845 5267, -1840 5267, -1840 5264, -1840 5269, -1839 5269, -1842 5269, -1840 5274, -1835 5278, -1836 5283, -1841 5279, -1840 5284, -1836 5285, -1836 5289, -1831 5289, -1826 5292, -1822 5293, -1826 5295, -1829 5295, -1824 5295, -1828 5297, -1824 5300, -1820 5305, -1824 5306, -1824 5306, -1824 5306, -1823 5301, -1818 5303, -1814 5307, -1814 5303, -3809 12303, -3807 12306, -3804 12306, -3804 12306, -3801 12308, -3796 12308, -3795 12308, -3791 12310, -3786 12310, -3781 12313, -3814 12298, -3809 12303, -3807 12301, 7102 -1847, 7100 -1850, 7104 -1850, 7109 -1852, 7109 -1854, 7112 -1850, 7112 -1847, 7115 -1847, 7117 -1847, 7122 -1847, 7125 -1843, 7126 -1848, 7127 -1848, 7129 -1848, 7133 -1848, 7131 1152, 7131 1149, 7135 1154, 7139 1152, 7140 1151, 7145 1153, 7149 1158, 8149 1159, 8154 3159, 8149 3161, 8145 3162, 8146 3164, 8146 3168, 11146 3171, 11148 3171, 11150 3167, 11154 3165, 11150 3163, 11151 3167, 11152 3165, 11153 3170, 11156 3175, 11156 3174, 8146 3164, 8146 3167, 8146 3170, 8147 3170, 8148 3175, 8148 3178, 8146 3178, 8146 3178, 8147 3180, 8143 3184, 3143 3186, 7143 3187, 7143 7187, 7138 7189, 7138 7189, 7135 7191, 7138 7191, 7133 7194, 7138 7198, 7139 7201, 7143 7200, 7141 7203, 12141 7204, 12145 7204, 12145 7203, 12146 7207, 12147 7204, 12143 7204, 12138 7199, 12138 7195, 12139 7195, 12139 7200, 12141 7201, 12142 7201, 12139 7205, 12142 7208, 12142 7213, 12145 7213, 12147 7214, 12149 7218, 12150 9218, 12154 9222, 12151 9222, 12151 9225, 12151 9224, 12152 9226, 12155 10226, 12155 10230, 12158 10231, 12161 10227, 12162 10224, 12163 10229, 12163 10231, 12165 10228, 12165 10227, 12160 10228, 12160 10231, 12160 10235, 12157 12235, 12159 12230, 7138 7189, 7141 7193, 7141 7193, 7141 7192, 7139 7195, 7141 7195, 7142 7193, 7145 7195, 7146 7193, 7146 7194, 7151 7197, 7154 7198, 7156 7202, 7155 7207, 7150 7211, 12150 7213, 12148 7213, 12147 7217, 12142 7221, 12141 7223, 12143 7223, 12140 7222, 12145 7222, 13145 7224, 13142 7228, 13144 7232, 13139 7235, 13144 7239, 13148 7243, 13151 7247, 13150 7251, 13152 7252, 13157 7253, 13157 7257, 13157 7257, 13157 7262, 13159 7264, 13164 7259, 13161 7259, 13165 7262, 13166 7262, 13166 7267, 13169 7268, 13169 8268, 13167 8269, 13171 8269, 13173 13269, 13177 13265, 13178 13263, 13178 13263, 13182 13266, 13183 13266, 13185 13266, 13190 13269, 13193 13271, 13193 13269, 13196 13271, 13193 13273, 13194 13268, 13198 13273, 13200 13276, 13202 13276, 13204 13274, 13209 11274, 13213 11274, 13213 11277, 13215 11278, 13219 11279, 13224 11280, 13224 11276, 13228 11278, 13233 11281, 13235 11286, 13238 11288, 13240 11288, 13238 11290, 13238 11292, 13238 11287, 13238 11288, 13240 11293, 13243 11296, 13246 11296, 13247 11293, 13243 11298, 13246 11302, 13251 11305, 322 22362, 326 24362, 330 24362, 329 24367, 328 24363, 329 24365, 331 24369, 336 24371, -664 24371, -668 24372, 51 127, 48 131, 48 133, 51 135, 51 140, 49 139, 47 142, 3047 139, 3044 142, 3046 143, 3046 148, 3051 148, 3055 146, 3057 141, 3060 140, 3055 143, 3050 146, 7050 142, 7050 3142, 7050 3143, 7050 3144, 7052 3149, 7055 1149, 7052 1150, 7055 5150, 7050 5154, 7049 5150, 10049 5151, 10045 5151, 10049 5151, 10052 5156, 10054 5159, 10056 5160, 10058 5161, 10058 5163, 10060 5166, 10064 5168, 10064 5173, 10068 9173, 10070 9172, 10065 9168, 10065 9173, 10063 9175, 14063 9176, 14063 9178, 284 22346, 289 22351, 290 22351, 290 22347, 287 22343, 282 22342, 280 22345, 281 25345, 286 25347, 13243 11298, 13248 11300, 13245 11300, 13246 11295, 13247 11295, 13246 11295, 13248 11299, 13253 11304, 13255 11309, 13255 11310, 13260 11309, 13257 11310, 13258 11313, 13258 11315, 13263 11311, 13267 11307, 13269 11309, 13272 11305, 13277 11302, 13273 11304, 15273 11306, 15278 11310, 15281 11307, 15286 11309, 15288 11309, 15291 11311, 15292 11306, 15294 11309, 15298 11313, 15299 11317, 15300 11320, 15302 11321, 15306 11324, 15308 11328, 15308 11324, 15309 11324, 15314 11324, 15315 11323, 15319 11321, 15317 11325, 15319 11327, 15319 11332, 15321 11337, 15324 11340, 15324 11341, 15324 11341, 15326 11345, 15326 11349, 15327 14349, 15330 13349, 17330 13350, 17335 13353, 17339 13358, 17340 13362, 17344 13362, 17348 13357, 17350 13357, 17347 13357, 17350 13358, 17349 13358, 17349 13358, 17349 13359, 22349 13362, 22351 13359, 22353 13359, 22358 13358, 22360 13358, 22363 13359, 22364 13359, 22360 13359, 22361 13363, 22366 13368, 22371 13373, 22374 13377, 22378 13375, 22379 13375, 22379 13373, 22383 13378, 22388 13383, 22389 13380, 22389 13384, 22394 13382, 22392 13378, 22394 13382, 22393 13382, 22393 13379, 22394 13382, 22392 13384, 22395 13386, 22400 13391, 22400 10391, 22404 10395, 22401 10396, 22402 10396, 22402 10398, 22406 10395, 22405 15395, 22407 15396, 22409 15396, 22414 15391, 22414 15394, 22414 15398, 22410 15400, 26410 15402, 26409 20402, 26413 20406, 26417 20410, 26419 20415, 26422 20411, 26424 20411, 31424 16411, 31423 16409, 31423 16414, 31425 16414, 31428 16418, 31428 16414, 31432 16419, 31432 16422, 31437 16423, 31439 16424, 31440 16426, 31440 16429, 31440 16429, 31443 16431, 31441 16435, 31443 16440, 36443 16440, 36445 18440, 36444 18441, 36442 18444, 36442 18440, 36442 18444, 36444 18449, 36445 18450, 36449 18455, 37449 23455, 37454 23460, 37458 23459, 37460 23463, 37458 23465, 37460 23467, 37462 23470, 37466 23473, 37462 23478, 37464 23480, 37463 26480, 37468 26483, 37472 26487, 37473 26492, 37476 26493, 37476 26489, 37476 26487, 37476 26492, 37472 26496, 37476 26501, 37476 26503, 37480 26499, 37485 26503, 37485 26505, 37490 26500, 37493 26503, 37497 26499, 37502 26500, 37502 26501, 37502 26505, 37499 26503, 37499 26503, 37497 26508, 37500 26508, 37496 26513, 37499 26518, 37497 26519, 37500 26518, 37505 26518, 37510 26516, 37512 26520, 37513 26523, 37511 26527, 37508 26532, 37509 26536, 37514 26540, 37515 26542, 37512 26546, 37514 26548, 37519 26547, 37524 26550, 37529 26555, 37527 26559, 37531 26562, 37526 26567, 37526 26566, 37529 26566, 37524 26566, 37524 26563, 37528 26565, 37524 26563, 37525 26565, 37525 26560, 37526 26562, 40526 26564, 40526 26567, 40523 26571, 40527 26570, 40529 26572, 40534 26576, 40536 26573, 40535 26569, 40533 26569, 40537 26573, 40537 26574, 40541 26576, 40546 26579, 40545 26579, 40546 26583, 40550 26588, 40551 26585, 40555 26589, 40558 26594, 40554 22594, 40559 22598, 40558 22599, 40563 22596, 40563 22597, 40567 22597, 40570 22597, 40575 22592, 40572 22594, 40572 22595, 40572 22592, 40575 22594, 40575 22597, 40570 22597, 40569 22601, 40569 22603, 40573 22603, 40576 22604, 40576 22608, 42576 22611, 42579 22611, 42579 22616, 42581 22620, 38581 22623, 38582 22621, 38582 22618, 38577 22623, 38581 22623, 38581 18623, 38584 18618, 38584 18621, 38588 18626, 38592 18629, 38592 18626, 38596 18625, 38598 18620, 38599 18618, 38599 18622, 38602 21622, 38603 21622, 38607 21624, 38609 25624, 38613 25624, 38610 25621, 38610 25625, 38610 25629, 38613 25627, 38617 25627, 38617 25624, 38618 25626, 38621 25628, 38622 25629, 38622 26629, 38625 26631, 38625 26631, 313 22362, 313 22363, -1687 22364, 2313 27364, 2314 27364, 2314 27364, 2319 27366, 2319 27366, 2321 27363, 2321 27368, 2320 27363, 2323 27368, 2328 27371, 2327 27375, 2328 27377, 2328 27377, 2327 27381, 2331 27381, 2329 27381, 2332 27383, 2335 27383, 2333 27383, 2333 27385, 2338 27385, 6338 27386, 6338 27387, 40529 26572, 40533 26576, 40535 26578, 40540 26580, 40535 26584, 40540 26589, 40541 26592, 40538 26587, 40542 26591, 40541 26592, 40537 26597, 40542 26598, 40546 26601, 40550 26606, 40550 26605, 40551 26606, 40549 26606, 40550 26607, 40555 26610, 40550 26610, 40550 26607, 40553 26612, 40558 26616, 40561 26620, 40556 26623, 40558 26623, 40558 26627, 42558 26627, 42558 26628, 42562 26628, 42564 26630, 42565 26634, 42566 26634, 42566 26638, 42561 26639, 42564 26639, 42567 26641, 42564 26642, 42566 26646, 42566 26645, 42570 26645, 42574 26645, 42574 29645, 42576 29646, 39576 29645, 39576 34645, 39578 34647, 39583 34642, 39580 34642, 39576 34646, 39576 34649, 39574 35649, 34574 35652, 34579 35655, 39579 35659, 43579 35663, 43582 35659, 43577 35662, 43580 35662, 43583 35666, 43579 39666, 43574 39662, 43574 39665, 43574 39668, 43574 39670, 43578 39674, 43579 39671, 43582 39675, 43578 39677, 43575 39677, 43576 39681, 43571 39683, 43569 39683, 43570 39687, 43565 39690, 43568 39694, 43568 39696, 43570 39698, 43570 39699, 41570 39695, 41572 39696, 41573 39696, 41573 39697, 41573 39702, 41573 39702, 41576 39702, 41571 39702, 41572 39703, 41572 39708, 41574 39713, 41575 39716, 41580 39717, 41581 39721, 41586 39723, 41587 39724, -1848 5272, -1843 5272, -1845 5270, -1840 5272, -1838 5267, -1843 5268, -1841 5268, -1837 8268, -1837 8271, -1837 8276, -1836 8280, -1832 8277, -1832 8277, -1831 8278, -1835 8283, -1834 8287, -1832 8290, -1834 8286, -1832 8283, -1833 8283, -1832 8284, -1834 8287, -1839 8292, -1844 8293, -1841 8290, -1836 8290, -1839 8289, -1836 8289, -1832 8292, -1827 8295, -1823 8290, -1823 8293, -1823 8291, -1822 8295, -1820 8298, -1819 8302, -1816 8304, -1816 8300, -1812 8300, -1809 8299, -1806 8296, 1194 8300, 1194 8301, 1197 11301, 1194 11305, 1197 11309, 1199 11304, 1195 11304, 1195 11300, 1195 11297, 1196 11298, 1201 11296, 1206 11296, 1207 11298, 1212 11296, 1210 11292, 1206 11294, 1207 11293, 1209 8293, 1204 8288, 1206 8286, 1206 8285, 1208 8285, 1210 8285, 1214 8287, 1214 13287, 1215 13291, 1215 13294, 1218 13297, 1216 13293, 1219 13290, 1214 13295, 1210 13292, 1210 13296, 1211 13301, 1210 13300, 1206 13302, 1207 13307, 1211 13312, 1206 13312, 1211 13308, 1212 13308, 1216 13313, 1216 13318, 1217 13318, 1221 13318, 1221 13323, 1226 13324, 1231 13325, 1234 13329, 1235 13333, 1233 13333, 1236 13338, -2764 13340, -2767 13341, -2763 13344, -2760 13349, -2758 13346, 2242 13346, 2240 13346, 2244 13346, 2248 13349, 2248 13350, 2246 13352, 2241 13352, 2242 13355, 2242 13356, 2247 13361, 2250 13361, 2245 13366, 2249 13366, 2250 13366, 2254 13367, 2258 13367, 2258 13367, 2262 13371, 2257 13376, 2253 13373, 2253 13373, 2254 13376, 2251 13380, 2256 13382, 2257 13386, 2261 13383, 2264 13383, 2269 13385, 2264 13385, 2264 13387, 2267 13387, 2271 13389, 2272 13390, 2273 13393, 2269 13395, 2273 13390, 2277 13395, 2275 13396, 2277 13391, 2279 13394, 2276 13394, 2277 13398, 2282 13399, 2282 11399, 2283 14399, 2281 14404, 2279 14407, 2275 14410, 2276 16410, 2276 16414, 2281 16414, 2286 16415, 2282 16413, 2282 16413, 2284 16413, 2284 16415, 2284 16416, 2282 16417, 3282 16422, 3286 16422, 3287 16427, 3291 16427, 3294 16431, 3296 16433, 3298 16435, 3299 16440, 3300 16439, 3305 16439, 3307 16438, 3307 16440, 3307 16440, 3311 16441, 3311 16442, 3310 16443, 3310 16443, 3308 16448, 3304 16445, -1696 16441, -1701 16442, -1697 16442, -1695 16442, -1696 16443, -1693 16440, -1688 16445, -1685 16450, -1681 16454, -1680 16455, -1682 16457, -1680 16461, -1680 16461, -1684 16464, -1679 16463, -1678 16460, -1675 16464, -1679 16465, -1677 16468, -1672 16469, -1671 16473, -1667 16475, -1667 16480, -1663 16478, -1663 16482, -1662 16482, -1662 16483, -1659 16478, -1654 16475, -1653 11475, -1658 11477, -1661 11479, -1664 11484, 3336 15484, 3340 15480, 3344 15475, 3347 15475, 3347 15474, 3352 15473, 3349 15478, 3353 15480, 3354 15477, 3355 15480, 3352 15481, 3352 15483, 3353 15486, 3354 15488, 3353 15491, 3355 15491, 3360 15491, 3355 15490, 1219 13290, 1224 13295, 1224 13295, 1227 13290, 1231 13290, 1233 13285, 1237 13284, 1238 13285, 1243 13286, 1247 13289, 1249 13289, 1249 13291, 1252 13291, 1249 13294, 1249 13299, 1249 13302, 1254 13305, 1251 13308, 1254 13308, 3254 13308, 3249 13308, 3251 13312, 3256 13312, 3259 13312, 3263 17312, 3263 17313, 3263 17310, 3261 17309, 3264 17314, 3265 17312, 3264 17315, 3261 17318, 3261 17318, 3259 17313, 3256 17313, 3255 17313, 3257 17314, 3255 17316, 3257 17316, 3257 17316, 3258 17311, 3259 17311, 3258 17315, 3258 17317, 3257 17321, 3253 17321, 3250 17325, 3255 17329, 3258 17330, 3260 17328, 3260 17331, 3265 17326, 7265 17329, 7267 17332, 7265 17334, 7267 17337, 7272 17337, 7275 17337, 7280 17340, 4280 21340, 4280 21344, 4281 21344, 4283 21344, 4288 24344, 4292 24347, 9292 24351, 9296 24353, 9298 24351, 9300 25351, 9303 25352, 9303 25352, 9306 25357, 9305 25361, 9305 25356, 11305 25359, 11306 25362, 11309 25362, 11314 25362, 11314 25365, 11312 25369, 11315 25369, 11316 25373, 11321 25375, 11323 25375, 11327 25370, 11331 25369, 11332 25370, 11331 25374, 11332 25369, 11336 25371, 11340 25370, 11345 25367, 11350 25363, 11347 25360, 11350 25361, 11351 25362, 11351 25362, 11354 25364, 11358 30364, 11362 30369, 11362 30369, 11364 30369, 11369 30371, 11370 30373, 15370 30374, 15375 30375, 15378 30377, 14378 30382, 14379 30387, 14383 30382, 14388 30384, 14390 30386, 14393 30389, 14395 31389, 16395 31393, 16398 31398, 16398 31401, 16394 31404, 16397 31409, 16400 31413, 16400 31417, 16399 31419, 16398 31421, 16403 31422, 16403 31426, 16404 31423, 16409 31424, 16413 31423, 16408 31427, 18408 31431, 18413 31436, 18417 28436, 18419 28441, 18420 28445, 18416 28442, 18419 28439, 18418 28443, 18422 28446, 18425 28451, 18429 28448, 21429 28449, 21430 28454, 22430 28459, 22434 28461, 22438 28462, 22443 28462, 22447 28467, 22450 28472, 22453 28469, 22458 28472, 22455 28472, 22460 28475, 22465 28477, 22462 28479, 22461 28476, 22465 28480, 22466 28476, 22470 28472, 22470 28475, 25470 28470, 25473 28472, 25475 28468, 25475 28468, 25477 29468, 25478 29470, 25481 29465, 25478 29466, 25478 29468, 25480 29468, 25485 29465, 25486 29464, 25488 29462, 25488 29466, 25492 29464, 25497 26464, 25500 26467, 25497 26472, 25497 26476, 25497 26476, 25501 26478, 25506 26480, 25506 26482, 25511 26480, 25515 26483, 25516 26485, 25521 26481, 25521 26484, 25520 26485, 25521 26488, 25526 26487, 25529 26488, 25524 26488, 25528 26491, 25530 26496, 25535 26500, 25537 26502, 25537 26502, 25541 26507, 25544 26508, 25545 26509, 25549 26514, 25554 26514, 25553 26512, 25552 26516, 25555 26514, 25559 26514, 25556 26515, 25554 26512, 25558 26509, 25558 26510, 25562 26510, 25562 26511, 25562 26510, 25567 26505, 25569 26508, 25571 26508, 25570 26512, 25573 26512, 25573 26515, 25578 26515, 25583 26520, 25583 26523, 25584 26525, 25587 26526, 25590 26531, 25590 26530, 25586 26534, 25589 26538, 25591 26533, 25595 26537, 25600 26542, 25601 26544, 25601 26544, 25601 26544, 25606 26547, 25605 26547, 25605 26542, 25608 26542, 25611 26544, 25613 26546, 25614 26551, 25614 26551, 25614 26552, 25619 25552, 25614 25552, 25615 25551, 25618 25549, 25618 25553, 25620 25555, 25622 25559, 25622 25555, 25624 25554, 25627 25555, 25624 25559, 25621 25561, 25619 25560, 25624 28560, 25627 28555, 25632 28550, 25636 28552, 25641 28557, 25645 28557, 25640 25557, 25636 25557, 25636 25561, 25641 25561, 25645 25562, 25646 25557, 25648 25560, 25649 25564, 25652 25566, 25652 30566, 25652 30566, 25652 30568, 25652 30570, 25654 30574, 25658 30575, 25663 31575, 25664 31579, 25665 31583, 25664 31583, 25667 31585, 25668 31588, 25673 31586, 25676 31585, 25676 31588, 25678 31588, 25675 31591, 25680 31590, 25681 31585, 30681 31588, 30677 31593, 30682 31594, 35682 31594, 35677 31593, 35679 31595, 35682 31594, 35683 31591, 35686 31592, 35687 31593, 35691 31596, 35691 31597, 35694 31601, 35698 31601, 35702 34601, 35701 34603, 35705 34608, 35705 34610, 35704 34605, 35707 34607, 35707 34610, 35710 34607, 35715 34608, 35719 34607, 35721 34612, 35717 34612, 35713 34612, 35715 34613, 35716 34609, 35716 34614, 35716 34618, 35720 34620, 35721 34621, 35724 34622, 35724 34625, 35727 34629, 35727 34630, 35727 34633, 35727 34635, 35727 34639, 35732 34640, 35729 34642, 35733 34644, 35737 34646, 35741 34649, 35743 34649, 35744 34653, 35740 34653, 35740 34649, 35743 34651, 38743 34654, 38743 37654, 38744 37650, 38748 37655, 38751 37656, 38755 37657, 38755 37661, 38759 37660, 38758 37664, 38763 37664, 38767 37664, 38762 37664, 38761 37664, 38762 41664, 38762 41664, 38764 41669, 38759 41671, 43759 41673, 43754 41678, 43754 41681, 43759 41676, 43760 41681, 45760 41684, 45760 41683, 45764 41687, 45767 41687, 45771 41687, 45772 41688, 45770 46688, 45775 46692, 45778 46696, 45776 46698, 45777 46701, 45780 46699, 45778 46702, 45776 46706, 45781 46706, 45786 46708, 45789 46710, 45793 46715, 45788 46711, 45792 46715, 45795 46719, 45798 46723, 45801 46728, 45799 46732, 45804 46730, 45799 46733, 45803 46737, 45804 46737, 45805 46736, 45806 46736, 45807 46736, 45810 46739, 45812 46744, 45812 46748, 2328 27377, 2324 27381, 2325 27383, 2327 27387, 2327 27386, 2324 27386, 2325 27386, 5325 23386, 5327 23389, 5331 23390, 5332 23394, 5337 23396, 5332 23396, 5332 23399, 5331 23399, 5335 23403, 5335 23406, 5340 23409, 5341 23409, 5336 23410, 5331 23405, 5334 23407, 5332 23411, 5335 23413, 5330 20413, 5326 20415, 5326 20418, 5331 20420, 5330 20425, 5327 20425, 5331 20428, 5332 20428, 5337 21428, 5333 21431, 5335 21435, 5336 21437, 5331 21438, 5332 21441, 5335 21444, 5340 21441, 5340 21444, 5336 21445, 5335 21442, 5331 26442, 5334 26439, 5337 26443, 5339 26444, 5340 26448, 5344 26443, 5344 26446, 5347 26444, 5351 26442, 5354 26446, 5351 26449, 5350 30449, 5352 30451, 5352 30448, 5356 30448, 5361 30447, 5365 30449, 5369 30450, 5369 30452, 5369 30457, 5373 30459, 5373 30457, 5375 30462, 5377 30465, 5382 30467, 5386 30467, 5385 30463, 5386 30463, 5385 30463, 5387 30464, 5392 30463, 5394 30468, 5396 30468, 5391 30469, 5395 30473, 5393 30473, 5393 30473, 5397 30478, 5398 30474, 5401 30474, 5403 30471, 5403 30472, 5406 30474, 5402 30469, 5403 30466, 5405 30471, 5406 30471, 5411 30473, 5414 30477, 5414 30481, 5409 30485, 8409 30490, 8410 30493, 8412 30494, 8412 30493, 8415 30494, 8416 30497, 8416 30500, 8421 30505, 8422 30506, 8417 30511, 13417 30513, 13413 30510, 13416 30511, 13414 30515, 13414 30519, 13419 30522, 13421 30527, 13420 30531, 13424 30533, 13420 30535, 13415 35535, 13411 35535, 13415 35536, 13419 35541, 13421 35537, 13425 35533, 13426 35533, 13425 35528, 13430 35529, 13435 35530, 13440 35534, 13445 35535, 13450 35535, 13454 35536, 13457 35540, 13459 35540, 13454 35540, 13457 35543, 13454 35539, 13459 35544, 13459 35548, 18459 35550, 18462 35551, 22462 35550, 22467 35554, 22468 35558, 22470 35556, 22475 35559, 22473 35563, 22472 35568, 22474 35568, 22472 35573, 22476 35573, 22476 35575, 22479 35577, 22484 35580, 22489 35584, 22490 35587, 22491 35589, 22495 35589, 22498 35589, 25498 35590, 25495 35586, 25496 35589, 25500 35589, 25498 35589, 25500 35591, 25505 35595, 25505 35597, 25501 35594, 25501 35595, 25497 35595, 26497 35599, 29497 35595, 29497 35597, 29500 35601, 29500 35605, 29502 35610, 29503 30610, 29504 30607, 29507 30607, 29512 30610, 29513 30610, 29516 30611, 29518 30614, 29520 30612, 3261 17309, 3265 17308, 3269 17307, 3273 17312, 3271 17316, 3271 17317, 3276 17319, 3279 17319, 3284 17315, 3287 17317, 3285 17313, 3280 17314, 3277 17319, 3277 17321, 3278 17326, 3282 17328, 3282 17328, 3278 17329, 3279 17329, 3278 17332, 3280 17328, 3275 17333, 3279 17335, 3282 17330, 3283 17332, 3278 17328, 3279 17328, 3279 17326, 3279 17325, 3279 17325, 3283 17327, 3284 17331, 3284 17336, 3289 17339, 3290 17339, 3290 17342, 3292 17341, 3296 17344, 3296 17345, 3301 17345, 3301 12345, 3301 12346, 3306 12343, 3303 14343, 3307 14344, 3309 14345, 3313 14347, 3315 14347, 3316 16347, 3312 16345, 3312 16350, 3314 16352, 3313 16353, 4313 16350, 4318 16352, 4323 16348, 4326 16352, 4324 16353, 4325 16350, 4325 16350, 4328 16354, 4324 16358, 4325 16360, 4327 16365, 4327 16362, 4324 16366, 4327 20366, 4327 20370, 4324 20371, 4328 20376, 4328 20378, 4333 20377, 4335 20377, 4340 20380, 4341 20383, 4343 20386, 4340 20388, 4341 20390, 4342 20387, 4342 20387, 4337 20392, 4338 20394, 4343 20394, 4348 20395, 4350 20395, 4351 20397, 37499 26503, 37496 26500, 37498 26504, 37498 26505, 37501 26510, 37499 26506, 37500 26506, 37502 29506, 37502 29511, 37507 29512, 37508 33512, 37510 33517, 37515 33522, 37519 33526, 37518 33524, 37523 33525, 37523 33529, 37518 33534, 37521 33532, 37522 33532, 37526 33534, 37529 33534, 37527 33531, 37530 33534, 37535 33537, 37536 38537, 37538 38540, 22360 13359, 25360 13364, 25363 13362, 25364 13366, 25364 13366, 25367 13369, 25365 13371, 25361 13373, 25359 13378, 25362 13378, 2249 13366, 2254 13370, 2256 13367, 2259 13367, 2263 13362, 2266 13358, 2266 13360, 2271 13365, 2274 13367, 2276 13367, 2277 13367, 2275 13366, 2276 13369, 2280 13369, 2282 13374, 2286 13370, 2286 13369, 2291 13372, 2292 13370, 2295 13372, 2300 13377, 2300 13376, 2297 13379, 273 22351, 275 22354, 4275 22351, 4271 22352, 4272 22354, 4273 22359, 4274 22364, 4278 22367, 4283 22369, 4286 24369, 4281 24369, 4284 24369, 4287 24369, 4289 24368, 4291 24366, 4296 24364, 4297 24366, 4300 24369, 4303 24373, 1303 24374, 1303 24375, 1307 24379, 1307 24380, 1309 24381, 1314 24384, 1316 24386, 1320 24384, 1318 24386, 1318 24391, 1320 24391, 1320 29391, 1323 29391, 1318 29387, 1322 29390, 1323 29393, 1328 29393, 1329 29393, 2329 29398, 2329 29398, 2334 29397, -664 24371, -661 24372, -659 24372, -654 24375, -651 24376, -647 24376, -645 24378, -641 24374, -636 24379, -633 24384, -636 24386, -636 24388, -636 24388, -634 24392, -635 24394, -630 24390, -628 24390, -627 24390, 373 24393, 378 24398, 376 24396, 379 24401, 3379 24404, 6379 24409, 6380 24412, 6375 24410, 6372 24410, 6377 24407, 6372 24407, 6377 24407, 6381 24410, 6376 24413, 6380 24415, 6382 24416, 6380 24419, 6380 24423, 6385 24427, 6387 24429, 6389 24432, 6392 24437, 6388 24434, 6388 24439, 6389 24440, 6390 24444, 6389 24448, 6385 29448, 6385 29451, 6388 29455, 6384 29450, 6389 29451, 6392 29456, 6395 29456, 6399 29459, 6402 29463, 6402 29467, 6399 29471, 6395 29471, 6397 29474, 6399 29477, 6401 29472, 6396 29471, 6399 29474, 6398 29477, 6398 29474, 6395 29469, 6391 29473, 6392 29474, 6391 29469, 6391 29472, 6394 29474, 6390 33474, 6392 33470, 6393 33470, 6394 33471, 6396 33471, 324 22376, 324 22378, 325 22381, 329 22382, 333 22386, 332 22387, 334 22390, 335 22387, 333 22387, 332 22391, 334 22395, 334 22400, 339 22401, 341 22398, 342 22403, 342 22402, 342 22400, 345 22400, 345 22400, 343 22404, 344 22408, 345 22406, 350 22407, 347 22411, 349 22415, 344 22415, 347 22417, 342 22421, 347 22421, 350 22426, 350 22430, 353 22431, 354 22436, 354 22440, 4354 22442, 4355 22446, 4356 22448, 4356 22451, 4359 22453, 4362 22454, 4366 22454, 4369 22455, 4371 22457, 4368 22459, 4371 22457, 4375 22462, 4379 22463, 4382 22463, 4382 22468, 4387 22471, 4387 22471, 4392 22473, 4387 22473, 4387 22476, 25573 26512, 25576 26511, 25580 26516, 25583 26516, 25583 26516, 25585 26512, 25585 26517, 25589 26520, 25591 26519, 25592 26519, 25593 26521, 25591 26524, 25589 26526, 23589 26530, 23587 26535, 23591 26538, 23594 26542, 24594 26547, 24590 26549, 24595 26551, 24600 26547, 24600 26552, 24604 26549, 24600 26544, 24602 26549, 24602 26552, 24602 31552, 24607 31553, 24610 31555, 24615 31556, 24617 36556, 24618 36561, 24621 36561, 24624 36564, 24624 36568, 24629 35568, 24629 35573, 24634 35573, 25634 35574, 25637 35573, 25638 35577, 25638 35577, 25640 35580, 25643 35584, 25643 35587, 25643 35592, 25644 40592, 20644 40597, 20647 40597, 20652 40599, 20653 40595, 20653 40598, 20650 40595, 20650 40595, 20654 40600, 20654 40600, 20658 40601, 20658 40604, 20658 40605, 20661 40602, 20664 40601, 20664 40601, 20665 40604, 20670 40605, 20667 40610, 1217 13318, 1216 13323, 1214 13321, 1211 13316, 1212 13316, 1213 13321, 6213 13324, 6216 13324, 6218 13324, 6213 13327, 6216 13322, 6216 13327, 6216 13328, 6218 13323, 6221 13327, 6220 13325, 6221 13325, 6220 13330, 6223 13333, 6227 13335, 6232 13339, 6233 13343, 6233 13347, 6237 13342, 6236 13346, 6236 13348, 6238 13349, 25526 26487, 25523 26488, 25526 26493, 25529 26491, 25531 26488, 25532 26486, 25536 27486, 25541 27490, 25539 27492, 25543 27487, 25546 27490, 25549 27494, 25552 27495, 25552 27495, 25556 27490, 25561 27490, 25565 27493, 25563 27493, 25565 27497, 25563 27495, 25565 27497, 25565 27499, 25566 27501, 25565 27501, 25565 27501, 25560 27502, 25565 27503, 25567 27507, 25569 27507, 25571 27507, 25569 27508, 25567 27509, 25567 27509, 25567 27509, 25568 27509, 25572 27505, 25572 27501, 25576 27502, 25572 32502, 25572 32505, 25575 32505, 25578 32501, 25578 32502, 25579 32505, 25581 32507, 25585 32508, 25590 32511, 25594 32516, 25598 32511, 25601 32511, 25596 32507, 25599 32510, 25599 32514, 25596 32513, 25596 32514, 25598 32517, 25594 32517, 25596 32519, 25596 32524, 25600 32524, 25604 32521, 25605 32522, 27605 32524, 27609 32527, 27610 31527, 27615 31531, 27617 31531, 30617 31534, 30619 31534, 30620 31536, 30621 31540, 30625 31541, 30625 31542, 30627 31542, 30628 31545, 30629 31545, 30626 31544, 30625 31544, 30626 31549, 34626 31550, 34621 31547, 34625 31549, 34626 31553, 34626 31552, 34628 31554, 34628 31559, 34628 31555, 34630 31559, 34635 31559, 34638 31563, 34636 31568, 34638 31568, 34641 31566, 34641 31564, 36641 31559, 36638 27559, 41638 27561, 41642 27558, 41646 27562, 41649 27563, 41650 27559, 41655 27559, 41660 27559, 41660 27556, 41660 27556, 41662 27554, 41658 27558, 41663 27562, 41666 27565, 41669 27570, 41664 27566, 41665 27567, 41665 27569, 41664 27573, 41663 27573, 41666 27575, 41666 27571, 41661 30571, 41662 30569, 41662 30565, 41667 30570, 41666 30565, 41666 30565, 41666 30566, 41666 30567, 41662 30562, 1314 24384, 4314 25384, 4317 25388, 4317 25389, 4321 25387, 4324 25392, 6324 25391, 6324 25391, 6328 25396, 6323 25401, 6326 25401, 6326 25405, 6321 25408, 9321 25409, 9316 25404, 9314 25406, 9312 25407, 9315 25407, 9315 25407, 9318 25404, 9321 25405, 4321 25400, 8321 25402, 8317 25404, 8317 25400, 8317 25401, 8313 25402, 8309 25398, 8311 25398, 8313 25401, 8317 25406, 8312 25407, 11312 25369, 11313 25369, 11318 25374, 11322 25379, 11327 25379, 11327 25384, 11327 25386, 11328 25382, 14328 25384, 14330 25386, 14333 25387, 14336 25389, 14338 25390, 19338 25390, 19338 25393, 19334 25394, 19334 25395, 19337 25392, 19340 25395, 19344 25397, 19342 25397, 19347 25400, 19347 25398, 19349 25398, 19351 25397, 19353 25401, 19352 25402, 19350 25403, 19351 25407, 19354 25403, 19352 25406, 19356 25404, 19355 25409, 23355 25406, 23356 25406, 23358 25409, 23360 25413, 23362 25417, 23365 25418, 23369 25416, 23367 25415, 23369 25418, 23365 25417, 23369 25420, 23369 25420, 23372 25422, 24372 25418, 24372 25423, 24375 27423, 24380 27423, 24382 27420, 24382 27416, 24382 27414, 24382 27410, 24378 27410, 24376 27414, 24372 27418, 24372 27419, 24373 27424, 24377 27419, 24380 27415, 24377 27419, 24380 27422, 24384 27425, 24385 27430, 24385 27429, 24387 27434, 24392 27435, 24396 27436, 24397 27440, 24401 30440, 24402 30443, 24406 30447, 24405 30443, 24408 30442, 24412 30446, 24408 30450, 24410 30449, 24405 30449, 24410 30446, 24414 30450, 24418 30450, 24418 30453, 19418 30453, 19418 30451, 19420 30456, 19422 30457, 19425 30462, 15425 30466, 15425 30468, 15427 30470, 16427 30471, 16426 30475, 16423 30478, 16428 30478, 16430 30480, 16430 30480, 16426 30478, 16426 33478, 16427 33478, 16429 33481, 16427 33483, 16428 33481, 16424 33484, 16427 33486, 16432 33483, 16432 33482, 16431 33486, 16426 33486, 16429 33488, 16432 33492, 16433 33492, 16436 33492, 16437 33495, 16434 33491, 16438 37491, 16436 37494, 16440 37489, 16445 37486, 16448 37484, 16449 37484, 16449 37486, 16453 37482, 16456 37483, 16460 37483, 16456 37483, 16456 37486, 16461 37490, 16462 37495, 16465 37499, 16466 37496, 16467 37497, 16468 37498, 16470 37501, 16470 37505, 16470 37505, 16475 37507, 16475 37507, 16475 37502, 16478 37498, 21478 33498, 21475 33497, 21478 33493, 21480 33495, 21480 33500, 21480 33496, 21482 33500, 21485 33505, 21486 33508, 21485 33504, 21486 33509, 21486 33509, 21490 35509, 21493 35509, 21496 35510, 21498 35514, 21494 35510, 21494 35513, 21491 35518, 21492 35521, 21489 35523, 23489 35527, 23487 35532, 23489 35537, 23485 35538, 23489 35539, 23490 35541, 23495 35543, 23497 35546, 23497 35550, 23497 35554, 23493 35553, 23490 35556, 23494 35559, 23497 35564, 23502 35563, 23498 35561, 4324 16358, 4319 16362, 4320 16362, 4322 16367, 4317 16367, 4317 16366, 4318 20366, 4322 20369, 4325 20367, 4328 20370, 4331 20371, 4334 20374, 4339 20378, 4340 20379, 4335 20379, 4340 20379, 4343 20381, 4344 20381, 4344 20382, 4345 20385, 4348 20390, 4348 20390, 4348 20390, 4348 20390, 4351 20394, 4354 20399, 4356 20400, 4357 20404, 4360 20404, 4362 20405, 4362 20408, 4365 20409, 4370 20410, 4374 20415, 4373 20420, 4369 20421, 4366 20426, 4369 20424, 4374 20429, 4375 20426, 4376 20422, 4379 20422, 4383 20426, 4384 20427, 4386 20422, 4391 20425, 4387 20427, 4392 20427, 4392 20429, 4394 20433, 4398 20438, 41576 39702, 41580 39706, 41578 39708, 45578 39708, 45577 39713, 45579 39717, 45583 39719, 45583 39722, 45585 39725, 45580 39730, 47580 39726, 47583 39723, 47588 39726, 47588 39730, 47591 39734, 47594 39737, 47599 39737, 47595 39737, 47598 39739, 47599 39739, 47597 39739, 47593 39743, 47595 39748, 47595 39751, 4076 20267, 4079 20272, 4081 20272, 4080 20275, 4080 22275, 4085 22280, 4089 22276, 4090 22279, 4088 22283, 4084 22284, 4086 22286, 4088 22281, 4084 22281, 4089 22285, 4092 22285, 4094 22285, 4094 22290, 4096 22291, 4099 22294, 4099 22295, 4097 22290, 4097 22292, 4097 22297, 4097 22292, 4094 22289, 4091 22290, 4092 22290, 4097 22285, 4102 22290, 4105 22289, 4106 22292, 4106 22293, 4109 22298, 4114 22296, 4119 22294, 4122 22299, 122 22304, 123 22307, 124 22304, 124 22304, 123 26304, 127 26307, 131 26307, 129 26309, 129 26310, 134 26310, 134 26311, 138 26311, 143 26313, 142 26315, 145 26317, 142 26318, 147 26322, 151 26322, 155 26325, 155 29325, 160 29330, 160 29333, 164 29328, 164 34328, 167 34333, 170 34332, 169 34336, 171 34337, 175 34338, 175 34340, 179 34342, 180 34344, 180 34348, 184 34352, 179 34352, 184 34352, 186 34357, 186 34362, 183 34364, 185 34369, 189 34369, 194 34369, 199 34371, 201 34370, 205 34372, 207 34372, 204 34367, 206 34364, 1206 34364, 1207 34368, 1207 30368, 1207 30363, 1208 30365, 1209 30368, 1212 30370, 1212 30370, 1216 30371, 1220 30376, 1221 30379, 1216 30383, 1216 30388, 1219 30386, 1224 30387, 1225 30386, 1227 30384, 1230 30383, 1233 30387, 1234 30387, 1237 30388, 1239 30392, 1244 30390, 1246 30393, 2246 30396, 2243 30399, 2247 30401, 2247 30403, 2246 30398, 2244 30399, 2248 32399, 2248 32399, 2251 32402, 2253 32397, 5253 32394, 5253 32399, 5257 32403, 5257 32401, 5259 32401, 5259 32405, 5263 32410, 5263 32415, 5268 32416, 5273 32420, 5275 32423, 5278 32424, 5283 32426, 5281 32429, 6281 33429, 6286 33433, 6286 33434, 6284 33435, 6284 33432, 6288 33429, 6290 32429, 6290 32425, 6288 32428, 6290 32428, 11290 32431, 11294 32429, 11294 32433, 11292 32438, 11288 32441, 11288 32441, 11285 32446, 11280 32446, 11281 32447, 11285 32449, 11286 32449, 11285 32452, 13285 32451, 13289 32446, 16289 32450, 16284 32449, 16285 32449, 16286 32452, 16287 32452, 16286 32450, 16288 32447, 16292 32450, 16293 32450, 16294 32454, 16293 32454, 16293 32454, 16293 32449, 16289 32451, 16290 32456, 16289 32461, 16293 36461, 16291 36466, 16295 36466, 16296 36466, 16299 36466, 16303 36468, 16308 36473, 16312 36471, 16312 36467, 16315 36463, 16314 36464, 16315 36469, 16315 36473, 16310 36474, 16311 36472, 16316 36474, 16321 41474, 16324 41475, 16327 44475, 16332 44475, 16332 44475, 16332 44477, 16332 44478, 16337 44483, 16334 44481, 8416 30500, 8417 30501, 8421 30501, 8416 30505, 8418 30504, 8420 30499, 8423 35499, 8425 35498, 8429 35501, 8431 35503, 8434 35503, 8438 35507, 8440 35507, 8445 35509, 8442 35512, 8445 35513, 8442 35513, 8442 35515, 8443 35519, 8447 35515, 8450 35516, 8445 35521, 8445 35523, 8444 35528, 8446 35530, 8443 35531, 8438 35531, 8435 35527, 8431 35531, 8432 35534, 8433 35536, 8431 35537, 8435 35539, 8439 32539, 8437 32540, 8441 32540, 8438 32543, 9438 32546, 9436 32541, 9431 32538, 9431 32538, 9435 32541, 9435 32546, 9431 32547, 9436 32542, 9438 32542, 9438 34542, 7438 34542, 7440 34547, 7441 34547, 7441 34547, 7441 34552, 7440 34553, 7440 34556, 7440 34557, 7440 34560, 11440 34565, 11436 34563, 11438 34559, 7438 34557, 7438 34553, 122 1239, 126 1243, 127 1240, 127 1242, 131 1239, 130 1239, 127 1240, 125 1243, 130 2243, 134 2246, 133 2246, 137 2246, 142 2246, 147 2251, 148 2256, 146 2257, 148 2252, 146 2249, 148 2248, 152 2253, 157 2249, 161 2246, 162 2247, 162 2249, 157 2248, 158 2249, 3158 2250, 3161 2252, 3161 2254, 3166 2258, 3167 2261, 3168 2259, 3171 2261, 3173 2266, 3171 2267, 3176 2272, 3179 2277, 3176 2280, 3180 2279, 3175 2283, 3179 2280, 3182 2283, 3184 2288, 3187 2293, 5187 2290, 5187 2292, 5183 2290, 5187 2292, 5186 2297, 5189 2297, 5189 2301, 5192 2303, 5189 2303, 5187 2304, 5183 6304, 5184 6301, 5189 6304, 5191 6302, 5193 6300, 5195 6300, 5195 6300, 5197 6301, 5197 6304, 5199 6301, 5197 6304, 5192 6306, 5193 6310, 5194 6312, 5197 6316, 24397 27440, 24393 27441, 24395 27437, 24400 27440, 24400 27441, 16288 32447, 21288 32447, 21288 32448, 21284 32452, 21285 32450, 21285 32452, 21287 32455, 21283 32460, 21284 32462, 21284 32467, 21284 32472, 21286 32474, 21291 32475, 21289 32475, 21289 32473, 21289 32478, 21286 32481, 21290 32486, 21293 32486, 21293 32490, 21298 32489, 21301 32490, 21303 32491, 21305 32488, 21303 32486, 21307 32491, 21312 32495, 21314 32499, 21315 32495, 21317 32499, 21314 32499, 21316 32502, 21318 32505, 21313 32510, 21313 32512, 21314 32517, 21319 32520, 21321 32520, 21326 32520, 21329 32525, 21330 32530, 21334 32531, 21330 36531, 21333 41531, 21338 41531, 21336 41535, 21339 41537, 21337 41539, 21341 41544, 21342 41544, 21345 41540, 25345 41543, 25342 41546, 25339 41546, 25339 41549, 25337 41546, 25337 41547, 25337 46547, 25341 46552, 30341 46555, 30342 46560, 30345 46561, 30344 46557, 30339 46560, 30343 46565, 30339 46569, 30338 46567, 30340 46568, 24375 27423, 24375 27425, 24377 27428, 24379 27429, 24379 27434, 24376 27439, 24381 27441, 24386 27436, 24387 27438, 24384 27441, 24383 27446, 24383 31446, 24383 33446, 20383 33443, 20385 34443, 20384 34444, 20380 34448, 20383 34450, 20383 34446, 20386 34447, 20390 34450, 20394 34451, 20395 34446, 20395 34451, 20398 29451, 20397 29447, 20401 29447, 20402 29443, 20401 29440, 20406 29443, 20411 29444, 20412 29444, 20412 29448, 20410 29449, 20415 29452, 20415 29455, 20414 29459, 20415 29462, 20420 29465, 20415 29467, 20417 29468, 20418 29468, 20418 29467, 20418 29467, 20420 29468, 20416 29469, 20420 29467, 20415 29464, 20415 26464, 20420 26462, 20423 26463, 20423 26465, 20423 26464, 43580 35662, 43580 35658, 43580 35662, 43580 35664, 43585 35665, 43585 35663, 43585 35666, 43581 35667, 43585 35665, 43589 35670, 25627 25555, 25631 25555, 25632 25558, 25632 25563, 25634 25564, 25629 25565, 25625 25561, 25625 25563, 25626 25565, 26626 25570, 26629 25570, 29629 25575, 29628 25578, 29627 25579, 29624 25583, 29627 25587, 29632 25592, 29634 25593, 29637 25595, 29637 25598, 29639 25602, 29644 25600, 29645 25601, 29646 25601, 29651 25602, 29656 25606, 29658 25606, 29663 25607, 29663 25605, 29666 26605, 29668 26608, 29667 26608, 29670 26611, 29674 26611, 29671 26615, 29673 26620, 29676 26617, 29681 26620, 29682 26620, 29683 26619, 29684 26623, 29681 26621, 29686 26626, 29688 26628, 29691 26628, 29692 26632, 29693 26634, 29695 26629, 29696 26624, 29700 26621, 29705 29621, 29709 29620, 29708 29624, 29711 29627, 34711 29630, 34712 29632, 34712 29631, 2284 16415, 2285 16416, 2285 16416, 2289 16421, 2294 16425, 2299 16425, 2300 16430, 2305 16430, 2306 16433, 2311 11433, 2315 11436, 2310 14436, 2310 14435, 2313 14437, 2312 14441, 2310 14442, 2311 14444, 2313 14444, 2311 14447, 2314 14447, 2316 14451, 2316 14456, 2316 14454, 2311 14455, 2311 14455, 2311 14460, 2315 14465, 2315 14465, 2311 19465, 2311 19465, 2313 19466, 2317 19469, 2320 19469, 2323 19466, 2319 19468, 2323 19471, 2324 19471, 2324 19473, 2324 19473, 2322 19468, 2323 19466, 2324 19465, 2329 19470, 2329 19465, 2324 19465, 2324 19467, 2319 19471, 2320 19475, 2104 -1844, 2109 -1844, 2113 -1842, 2116 1158, 2116 1160, 2117 1161, 2116 6161, 2118 6166, 2123 6169, 2126 6174, 2123 6179, 2126 6183, 2126 6187, 2130 6182, 2128 6183, 2127 6182, 2128 6185, 2124 10185, 2129 10190, 2130 10193, 2132 10192, 2132 10195, 2129 11195, 2129 11199, 2133 11200, 2134 11196, 2133 11201, 2137 11205, 2137 11207, 2141 11203, 2144 11207, 2145 11208, 2149 11212, 2144 11214, 2144 11215, 2149 11216, 2152 11221, 2152 11223, 2153 11223, 2154 11226, 2154 11226, 2150 11228, 2152 11224, 2152 11227, 2148 11222, 2145 11223, 2142 11225, 2145 11222, 2142 11223, 2142 11227, 2147 11229, 2149 11230, 2154 11230, 2157 11228, 2159 11233, 2159 11233, 2155 11237, 2155 11242, 2151 11243, 7151 10243, 7156 10245, 7159 10245, 7164 10247, 7166 10252, 7166 10255, 7171 10257, 7173 10257, 7174 10261, 7179 10264, 7184 10260, 7189 10264, 7193 8264, 7197 8260, 7202 8262, 7206 8262, 7205 8265, 7205 8266, 7207 8270, 7211 8274, 7211 8277, 7216 8277, 7216 8280, 7212 8280, 7213 8280, 7215 8283, 7220 8282, 7224 8287, 7225 8283, 7222 10283, 7223 10287, 7225 10288, 7230 10290, 7232 10294, 7233 10294, 7233 10297, 7234 10298, 7234 10301, 7236 10303, 7231 10299, 7228 10298, 7223 10297, 7225 10299, 7230 10303, 7231 10307, 7234 10311, 7234 10315, 7235 10320, 7236 9320, 7241 9322, 7246 9325, 7243 9330, 7243 9332, 7240 9335, 7237 9334, 7239 9339, 7238 9339, 7238 9341, 7238 9342, 7233 14342, 7232 14337, 7234 14342, 7239 18342, 4084 22284, 4083 22284, 6083 22287, 6078 22289, 6078 22293, 6080 22290, 6082 22291, 6086 22296, 6086 22297, 6087 22297, 6088 22295, 6093 22298, 6094 22297, 9094 22294, 9097 22298, 9098 22299, 9098 22301, 9093 22296, 9098 22299, 9100 22294, 9096 18294, 9099 18294, 9098 18298, 9101 18296, 9100 18301, 9105 18303, 9105 18306, 9105 18309, 9102 18305, 9104 18306, 9108 18309, 9104 18314, 9103 18310, 9105 18312, 9105 18316, 9109 18314, 9109 18319, 9109 18324, 9113 18326, 9113 18330, 9115 18333, 9113 18333, 9118 18333, 9123 18333, 9123 18336, 9125 18335, 9126 18336, 9127 18332, 9129 18329, 9127 18332, 9130 18333, 9135 18333, 9138 18337, 9143 18341, 9144 18346, 9145 18344, 9150 18348, 9154 18345, 9152 18350, 9151 18345, 9151 18345, 9156 18347, 9160 18349, 9163 18350, 9163 18351, 9165 18356, 9166 18356, 9164 18353, 9167 18356, 9167 18355, 9167 18356, 9167 18360, 9165 18356, 9169 18357, 9169 18353, 9170 18355, 9170 18351, 9175 18351, 9177 18351, 9181 18352, 9184 18353, 9189 18356, 9188 18361, 9191 18364, 9194 18364, 9198 18366, 13198 18371, 13198 18373, 13198 18375, 13201 18378, 13196 18378, 13199 18379, 13202 18381, 13207 18384, 13212 18388, 13211 18383, 13211 18378, 13215 18379, 13218 20379, 13214 20379, 13217 20379, 13213 20379, 13213 20376, 13210 20377, 13206 20377, 13206 20373, 13207 20373, 13209 20370, 13214 20371, 13218 20371, 13223 20376, 13224 20381, 13227 20385, 13228 20390, 13232 20387, 9232 20392, 9230 20388, 9230 20390, 9225 20393, 9225 20396, 4225 20401, 4225 20400, 4227 20403, 4224 20408, 4222 20412, 4222 20415, 4225 20420, 4229 20425, 4232 20422, 4236 20425, 4234 20426, 4238 20427, 4240 20427, 4241 20427, 4237 20431, 4233 20431, 4232 20430, 4230 20432, 4234 20431, 4234 20435, 4238 20437, 4243 20435, 4243 22435, 4238 22440, 4241 22441, 4241 22443, 4238 22447, 4234 22443, 4238 22448, 4238 22450, 4241 22451, 4241 22456, 4243 22458, 4247 22461, 4247 22464, 4252 22466, 4253 22469, 4255 22469, 4251 22469, 4253 22464, 4253 22468, 4257 22473, 4259 22477, 4258 22482, 4261 22483, 4262 22484, 4259 22489, 6259 22493, 6262 22494, 6262 22497, 6264 22500, 6264 22504, 6269 22499, 6273 22499, 6278 22495, 6278 22493, 6283 22491, 6288 22494, 6291 22494, 6296 22494, 6296 22493, 6294 22489, 6294 22493, 6290 22493, 6290 22498, 6290 22500, 6288 22501, 6290 22505, 6294 22504, 5294 22507, 5294 22507, 5298 22512, 5297 22514, 5302 22514, 5307 22517, 5304 22518, 5308 22514, 5311 22517, 5315 27517, 5315 27517, 5319 27517, 5324 22517, 5328 22521, 6328 22520, 6325 22522, 6325 22527, 6322 22527, 6323 22530, 6325 22535, 6325 22535, 6326 22536, 6326 22536, 6327 22533, 6323 22535, 6325 22538, 6330 22538, 6331 22534, 6326 22531, 10326 22526, 10321 22528, 10317 22524, 10316 22529, 10313 22529, 10309 22530, 10306 22535, 10308 22531, 10308 22532, 10311 22534, 10314 27534, 10314 27538, 10314 27538, 10309 27540, 10309 27536, 11309 27535, 11309 27537, 11310 27539, 11305 27535, 11300 27536, 11296 27538, 11296 27538, 11301 27542, 11299 27546, 11304 27551, 11308 27551, 11313 27553, 11315 30553, 11319 30555, 11315 30550, 11318 30545, 11318 30544, 11321 30549, 11320 30550, 11325 30554, 11328 30558, 11328 34558, 11332 34562, 11333 34562, 11335 34562, 11334 34565, 11330 34565, 11333 34566, 11338 34566, 11338 34571, 11342 34574, 11344 34573, 11347 34572, 11346 34573, 11347 34575, 11351 34578, 15351 34578, 15356 34573, 15361 34570, 15364 34575, 15365 34580, 15369 34581, 15370 34581, 15373 34585, 15376 34580, 15381 34578, 15385 34583, 15386 34588, 15389 34587, 17389 34582, 17394 34582, 17393 34582, 17398 34577, 17399 34582, 17399 34584, 17399 39584, 17404 39588, 17399 39591, 17404 39591, 17408 39586, 17405 39591, 17409 39593, 17411 39596, 17408 39596, 17411 39599, 17411 39603, 17414 39607, 17418 39612, 17419 39612, 17419 39612, 17423 39611, 17424 39613, 17426 39612, 17429 39608, 17427 39609, 17428 39613, 17425 39615, 17424 39614, 17427 39617, 17430 39622, 17430 39623, 17431 39620, 17434 39620, 13434 39619, 13434 39621, 13434 39621, 13434 44621, 13436 44625, 13436 44627, 13441 44631, 13444 44636, 13444 44639, 13442 44635, 13444 44635, 13447 44639, 13449 44643, 13447 44641, 13447 44642, 13452 44643, 13456 44648, 13459 44648, 13461 44646, 15461 44643, 15459 44648, 15463 44648, 15464 44646, 15461 44649, 15461 44651, 15465 44654, 15460 44655, 15461 44657, 15463 44661, 15465 44665, 15465 44665, 15465 44667, 15469 44670, 15474 44672, 15476 44668, 15472 44672, 15473 44674, 15475 44678, 15477 44679, -3804 12302, -3802 12305, -3803 13305, -3802 13300, -3806 13296, -3807 13299, -3804 13304, -3802 13301, -3799 13305, -3799 13306, -3794 18306, -3799 18310, -3797 18315, -3800 18315, -3797 18316, -3799 18318, -3794 18323, -3793 18326, -3789 18325, -3784 18324, -3784 18325, -3782 18325, -3780 18325, -3779 18328, -3780 18329, -3781 18324, -3786 18328, -1786 18328, -1786 18333, -1782 18337, -1782 18338, -1779 18333, -1775 18338, -6775 18341, -6772 18343, -6774 18345, -6779 18345, -6777 18345, -6777 18347, -6777 18343, -6775 18347, -6780 18342, -6777 18345, -6776 18345, -6774 18340, -6774 18337, -6774 18337, -6778 18342, -6782 18342, -6785 18339, -6784 18340, -6779 22340, -6779 22339, -6776 22335, -6775 22330, -6775 22335, -6775 22339, -6770 22339, -6772 22344, -6767 22345, -6765 22341, -6765 22339, -6765 22339, -6765 22337, -6765 22340, -6760 22335, -6757 22335, -6762 22336, -6763 22338, -6765 22343, -6760 22338, -6758 22338, -6758 22338, -6756 22341, -6752 22345, -6752 22346, -6748 22343, -4748 22347, -4745 22347, -4750 22347, -4749 22348, -4747 22349, -4743 22352, -4738 22357, -4734 22362, -4736 22367, -4738 22362, 21338 41531, 21336 41531, 21332 41530, 21332 41530, 21335 41533, 21330 41533, 21331 41534, 21328 41536, 21330 41536, 21326 41541, 21330 41536, 21332 41539, 21336 41536, 21338 40536, 21336 40540, 21341 40538, 21343 40538, 21346 40538, 21348 40536, 21352 40536, 21355 40539, 21359 40543, 21361 40546, 21362 40550, 21357 40550, 21362 40551, 21361 40554, 21358 40555, 21358 40554, 21359 40554, 21363 40558, 21360 45558, 21364 45560, 21368 45557, 21372 45561, 21376 45560, 21379 45557, 22379 45553, 22384 45553, 22384 45556, 22388 45561, 22389 45561, 22390 45557, 22394 45561, 24394 45565, 22394 45562, 22399 45565, 22401 45562, 22400 45565, 22402 45568, 22402 45573, 22406 45577, 22408 45581, 22408 45585, 22406 45585, 22409 45586, 22411 45583, 22411 45579, 22411 45583, 22409 45583, 22404 45586, 22404 45586, 22406 45591, 22408 45591, 22408 45593, 22413 45593, 22415 45594, 22419 45595, 22419 45596, 22424 45591, 22427 45587, 22430 50587, 22430 50589, 22430 50589, 22432 50592, 22437 50594, 22437 50589, 22437 50594, 22441 50599, 22442 50594, 22447 50591, 22444 50588, 22444 50590, 22445 54590, 22445 54594, 22448 54599, 22450 54601, 22450 59601, 22446 59597, 22451 59600, 22451 59603, 22454 59604, 22459 59604, 22460 59609, 22459 59606, 22464 59607, 22465 59608, 22463 59609, 22460 59606, 22459 59605, 22459 59605, 22457 59609, 25457 59610, 25459 59615, 25464 59617, 25466 59618, 25469 59621, 25474 59616, 25478 59617, 25480 59614, 25484 59619, 25484 59620, 25488 59616, 25485 59618, 25489 59623, 25494 59627, 25499 59629, 148 2256, 152 2253, 152 2253, 154 2258, 159 2253, 160 2257, 159 2256, 163 2259, 161 3259, 163 3262, 163 3259, 165 3259, 170 3263, 170 3263, 174 3267, 169 3271, 174 3275, 174 3276, 174 3278, 177 3282, 181 3286, 183 3287, 186 3284, 187 3286, 189 3286, 193 3288, 194 3290, 193 6290, 195 6293, 200 6289, 197 6294, 196 6293, 197 6293, 201 6297, 202 6292, 200 6294, 204 6295, 209 6300, 214 6305, 217 6305, 218 6305, 213 6308, 214 6308, 218 6313, 218 6308, 216 6312, 215 6312, 213 6309, 214 6313, 219 6318, 222 6321, 226 6326, 224 6331, 222 6327, 41575 39716, 41574 39713, 41578 40713, 41582 40718, 41578 40721, 36578 40721, 36579 40723, 36584 40720, 36587 40725, 36592 43725, 36587 43725, 36584 43728, 36587 43733, 36592 43735, 36592 43734, 15291 11311, 15287 11316, 15288 11319, 15291 11319, 15296 11319, 15297 11320, 15298 13320, 38744 37650, 38745 37654, 38747 37659, 38746 37662, 38741 37663, 38739 37666, 38744 37666, 38747 37661, 38750 37666, 38750 37666, 38754 37671, 38755 37671, 38750 37673, 38750 37672, 38754 37677, 38756 37678, 38758 37680, 38760 37678, 38762 37683, 38762 37679, 38760 37679, 38765 37679, 38769 37678, 38774 40678, 38769 40683, 38774 40687, 38776 44687, 38780 44690, 38782 44694, 38782 44694, 38781 44699, 38784 44704, 38782 44699, 38777 44700, 38777 44700, 38777 44700, 38781 44703, 38785 44700, 38786 44700, 38788 44696, 38788 44696, 38788 44700, 38793 44702, 38795 44703, 38797 44707, 38802 44712, 38805 44712, 38809 44713, 38804 44710, 38808 44712, 38811 44713, 36811 44713, 36816 44708, 36815 44709, 36816 44709, 36818 44713, 36813 44716, 36814 48716, 36813 48721, 36817 48725, 36818 51725, 36820 51721, 36824 51724, 40824 51719, 40829 51716, 40832 51720, 40831 51723, 40834 51727, 40837 51728, 40842 51725, 40843 51725, 40838 51729, 40843 51734, 40848 51738, 40850 51742, 40851 51744, 40853 51747, 40856 51749, 40857 51750, 40859 51754, 40859 51750, 40863 51752, 40868 51755, 40864 51754, 40868 51754, 40871 51756, 40867 51756, 40865 51759, 40860 51761, 40857 51757, 40857 51762, 40854 51762, 40855 51764, 40859 51765, 40857 51761, 40854 51764, 40855 51765, 40857 51766, 40860 51761, 40861 51760, 40865 51761, 40865 51763, 40862 51768, 40861 51768, 40856 51772, 40852 51769, 40854 51771, 40854 51771, 40850 51776, 40854 51780, 40856 51782, 40854 51782, 43854 51782, 43856 52782, 43858 52785, 43861 52785, 43861 52780, 37514 26540, 37519 26535, 37522 26539, 37522 26544, 37524 26548, 37529 26548, 37534 26553, 37539 26548, 37542 26553, 37547 26548, 37551 26551, 37551 26554, 37550 26555, 37551 26557, 37548 26557, 37548 26557, 37551 26560, 37551 26563, 37554 26563, 37558 26568, 37562 26563, 37563 26565, 37567 26569, 41567 26569, 41571 26572, 41573 26577, 41573 26577, 41578 29577, 41573 29577, 41575 29580, 41575 29582, 46575 29582, 46571 29586, 45571 29587, 45574 29587, 45570 29587, 45575 29585, 45577 29582, 45573 29585, 45574 29588, 45574 29589, 45578 29589, 45580 29592, 45583 29595, 45584 29597, 45584 29602, 45586 29601, 45591 29604, 45587 29609, 45591 33609, 45595 36609, 45596 36611, 45601 36613, 45602 36608, 45606 36608, 45606 36612, 45606 36611, 45610 36614, 50610 36617, 50613 36613, 50616 36613, 50621 36609, 50626 36609, 50627 36610, 50627 36609, 50631 36610, 50626 36612, 50627 36614, 50628 36614, 50631 36612, 50629 36614, 50630 36618, 50634 36622, 46634 34622, 46634 35622, 46638 35626, 46638 35621, 46639 35624, 46641 35623, 46645 35624, 46647 35629, 46645 35634, 46650 35639, 46650 35644, 46651 35647, 46653 35651, 46657 35654, 46654 35659, 46659 35660, 46660 35661, 46664 35664, 46661 35667, 46664 35668, 46667 35667, 46669 35671, 46669 35667, 46672 35670, 46674 35675, 46676 35675, 47676 35672, 47678 35676, 47679 35677, 47679 35682, 47679 35681, 47679 35681, 47679 35686, 47674 35687, 47673 35687, 49673 35689, 49676 35693, 49679 35696, 49677 35696, 54677 35701, 54680 35703, 54676 35703, 54672 35705, 54672 35704, 54677 35707, 54678 34707, 54678 34707, 54681 34710, 54685 34712, 54690 34710, 54690 34711, 54687 34706, 54689 34706, 54694 34711, 54689 36711, 54689 36710, 54684 36711, 54687 38711, 54682 38714, 54682 38718, 54679 38718, 54681 38723, 54684 38724, 54689 38720, 54690 38721, 54694 38726, 54699 38730, 54701 38731, 54702 38728, 54704 38724, 52704 38723, 52704 38723, 52704 38725, 52704 38729, 52706 38730, 52708 38732, 52709 38733, 52713 38732, 52713 35732, 52715 35737, 52714 35741, 52714 35743, 52715 35746, 52715 35749, 52710 35749, 52712 39749, 52715 39753, 52718 39752, 52723 39753, 52722 39757, 52718 39760, 52718 40760, 47718 40761, 47719 40765, 47724 40765, 47724 40765, 47724 40770, 47728 40773, 47730 40776, 47735 40781, 47733 40777, 50733 40781, 51733 40783, 51735 40786, 51736 40790, 51739 40788, 51743 41788, 51741 41787, 51741 41789, 51741 41789, 51738 41793, 51733 41793, 52733 41794, 52737 41795, 52740 41794, 52744 41793, 52748 41789, 52749 41789, 52747 41789, 52752 41786, 52755 41790, 52755 41791, 52760 41796, 52756 42796, 52751 42797, 52754 42798, 52758 42795, 52759 42794, 52764 42797, 52768 42801, 52768 42801, 52771 42806, 52776 42810, 52776 42809, 52773 42811, 52776 42811, 52772 42812, 52773 42815, 52769 42815, 52768 42816, 52769 42821, 52773 42821, 52773 42821, 52777 42819, 52781 42815, 52781 42816, 52782 42819, 52778 42822, 52776 42822, 52779 42826, 52782 42827, 52783 42831, 52778 42833, 52782 42836, 54782 42839, 54782 42844, 2137 11205, 2142 11207, 2139 11208, 2142 11213, 2144 11217, 2149 11215, 2147 11217, 2147 11217, 2152 11222, 2152 11225, 2155 11229, 2159 13229, 2164 13232, 2169 13235, 2173 13236, 2169 13233, 2170 13237, 2173 13241, 2175 13243, 2170 13238, 2170 13239, 2175 13239, 2177 13238, 2179 13239, 2179 13238, 2181 13233, 2181 13230, 2182 13230, 2179 13230, 2179 13235, 2182 13235, 2183 10235, 2178 10237, 2179 10236, 2182 10239, 2187 10241, 2184 10244, 6184 10244, 6186 10248, 6184 10246, 6185 10247, 6187 10250, 6192 10248, 6196 10248, 6196 10251, 6194 10251, 6194 10256, 6197 10260, 6196 10264, 6197 9264, 6197 9264, 6197 9268, 6201 9273, 6206 9276, 6201 9272, 6203 9272, 6205 9269, 6210 9272, 6206 9274, 6206 9279, 6203 9283, 6203 9285, 6203 9290, 6208 9285, 6208 9281, 6204 9285, 6202 9289, 6204 9292, 6200 9294, 7200 9297, 7202 9301, 7203 9301, 7207 9302, 7211 9302, 7211 9303, 8211 9306, 8216 10306, 8220 10310, 8224 10312, 8228 10317, 8233 10317, 8237 10322, 8239 10322, 8239 10327, 8235 10330, 8235 10331, 8239 10329, 8240 10332, 8240 10334, 8236 10334, 11236 10336, 11238 10337, 11243 10341, 14243 10342, 14242 10342, 14239 10343, 14240 10341, 14239 10343, 14244 10343, 14248 10343, 14252 10343, 14252 10343, 14253 10341, 14256 10341, 14258 10338, 14258 10336, 14254 10340, 14257 10344, 14261 10346, 14264 10351, 11150 3163, 11155 3167, 11156 3166, 11156 3169, 11160 3171, 11163 3176, 11164 3179, 11164 3180, 11168 3183, 11168 3185, 11173 3189, 11178 3184, 11180 3183, 11178 3185, 11181 3187, 11176 3186, 52778 42822, 52780 42826, 52779 42826, 52784 42821, 52785 42826, 52786 42827, 52791 42830, 52791 42827, 56791 42832, 56788 42833, 56788 42836, 56791 42840, 56791 42839, 56787 42842, 56788 42847, 51788 42848, 51790 42850, 51792 42851, 51796 42846, 51798 42846, 51803 42850, 53803 42853, 53808 42853, 53811 42856, 53814 42854, 53819 42850, 53819 42852, 53820 42857, 53824 42860, 53825 42858, 53828 42862, 53827 42864, 53828 42864, 53828 42868, 53832 42872, 53837 42877, 53841 42877, 53843 42876, 53843 42880, 53843 42883, 53843 42888, 53838 42892, 53838 42893, 53838 44893, 53835 44893, 53837 44897, 53840 44901, 53844 44901, 53846 44904, 53846 44908, 53847 44909, 53852 44907, 53855 44908, 53860 44910, 53858 44911, 53863 44913, 53858 44917, 53860 44920, 53865 44920, 53870 44922, 53869 43922, 53871 43925, 53871 43923, 53869 43923, 53864 43922, 53862 43927, 53866 43932, 53871 43934, 53876 43937, 53876 43936, 53876 43936, 53877 43934, 53879 43932, 53880 43928, 53885 43931, 55885 43933, 55885 43929, 55881 43933, 55883 43933, 55886 43932, 55883 43932, 55884 43933, 55885 45933, 55885 45937, 55885 45940, 55886 45945, 55886 45945, 55888 45950, 55884 45952, 55885 45956, 55890 45960, 55892 45961, 55896 45957, 55894 45958, 55899 45954, 55895 45958, 55898 45960, 55894 45959, 55899 45963, 55901 45965, 55901 45965, 55896 45966, 55900 45961, 55895 49961, 55898 47961, 55896 47960, 55900 47964, 55903 47968, 55903 47971, 55903 47974, 55898 47977, 55900 47973, 55896 47978, 55897 47979, 55893 47980, 55898 47983, 55901 47988, 55904 47987, 55899 47991, 55901 47993, 55906 47996, 55906 47997, 55907 48001, 55904 48005, 55904 48007, 55909 48004, 55912 48002, 55917 48003, 55913 47998, 55908 48002, 55912 48007, 55916 48004, 55920 48004, 55916 48004, 55921 48004, 55923 48007, 55923 48011, 55926 48011, 55921 48014, 55924 48009, 55929 48013, 55930 48012, 55930 48012, 55932 48016, 55927 48016, 55927 48020, 54927 48018, 54924 48022, 54924 44022, 54928 44017, 54931 44016, 54934 44020, 55934 44021, 55937 44021, 55938 44024, 55939 44026, 55938 44024, 55941 44019, 55946 44022, 55947 44026, 55949 44027, 55952 44028, 55955 44024, 55958 44027, 53869 43923, 53873 43925, 52873 43925, 53873 43927, 53878 43927, 53883 43927, 53882 43931, 53884 43935, 53888 43940, 53886 43941, 53881 43938, 53881 43941, 53879 43943, 53880 43942, 53881 43946, 53882 43951, 53883 43952, 53886 45952, 53886 45953, 53884 45957, 53885 45958, 53880 45960, 53882 45957, 53887 45962, 53887 45962, 53888 45961, 53888 48961, 53888 48966, 53893 48966, 53894 48968, 53899 48969, 49899 48966, 49904 48969, 49908 48971, 49904 48971, 49906 48975, 49903 48971, 49906 48974, 54906 48975, 54906 48975, 54906 48979, 54911 48983, 54909 48979, 54912 48979, 54908 48975, 54911 48977, 54913 48979, 54917 48982, 54922 48982, 54925 48985, 54920 48988, 54923 48988, 56923 48988, 56928 48990, 56926 48985, 56931 48984, 56934 48983, 56934 48981, 56938 48983, 56939 48985, 56939 48986, 61939 48988, 61939 48984, 61936 51984, 61937 51985, 61937 51988, 61937 51988, 61933 51990, 5331 23399, 5333 23399, 5335 23394, 5339 23396, 5342 23399, 5347 27399, 5347 27401, 5352 27402, 5357 27403, 5358 27406, 6358 27409, 6362 27411, 6363 27410, 6366 27406, 6368 26406, 6373 26406, 6373 26406, 6374 26409, 6372 26409, 6377 26410, 6382 26415, 6387 26417, 6389 26418, 6390 26423, 6392 26423, 6393 26428, 6395 30428, 6392 30433, 6392 30436, 6392 30434, 6396 30438, 6396 30441, 6396 30445, 6398 30446, 6400 30443, 6401 30440, 6406 30439, 6407 30439, 6402 30439, 6407 30444, 6406 30447, 6407 30451, 6411 30451, 6413 30451, 6414 30452, 6419 30450, 6423 30454, 6420 30452, 6419 30448, 6420 30453, 6422 30455, 6427 30460, 6428 30460, 6427 30462, 6428 30462, 6428 34462, 6429 34463, 6434 39463, 6436 39466, 6436 39471, 6441 39474, 6445 39471, 6446 39472, 6451 39477, 6453 39480, 6454 39485, 6454 39483, 6454 39480, 8454 39480, 8458 39482, 8462 39484, 10462 39486, 10457 39486, 10458 39488, 10462 39488, 10465 39488, 10470 39490, 10475 39486, 10477 39488, 10477 39490, 10478 39492, 10479 39496, 10477 39498, 10482 39503, 10478 39505, 10481 39510, 10482 39514, 10477 39512, 10482 39517, 10483 39520, 10483 39520, 10487 39525, 10489 39526, 10492 39527, 10492 39524, 10495 39524, 10498 44524, 10493 44523, 10493 44528, 10494 44524, 10499 44529, 10501 44529, 10504 44531, 10502 44535, 10504 44539, 10508 44539, 10513 44536, 13513 44540, 13515 44537, 13512 44539, 13509 44544, 13513 44547, 13517 44552, 13519 44553, 13524 44554, 13527 42554, 13522 42555, 13524 42557, 13527 42556, 13531 42561, 13531 42562, 13526 42563, 13527 42563, 13527 42566, 13522 42568, 13525 42571, 15525 42573, 15525 42576, 15526 42581, 15531 42581, 15532 42586, 15534 42588, 15534 42592, 15533 42591, 15533 42596, 15532 42591, 15532 42587, 15535 42587, 15538 47587, 15534 47587, 15537 47591, 15536 47594, 15538 47598, 11538 47594, 11535 47594, 11531 47594, 11535 47596, 11535 47596, 11535 47597, 11539 47602, 11540 47607, 11540 47607, 11540 47609, 11543 47613, 11546 47617, 14546 47618, 14541 47614, 14539 47614, 14539 47618, 14537 50618, 14539 50623, 14541 50623, 14542 50627, 14540 50627, 14539 50623, 25601 26544, 25601 26545, 25601 26548, 25596 26546, 25601 26547, 25598 26548, 25599 26547, 25600 26547, 25595 26548, 25590 26546, 25595 26549, 25597 26548, 25598 26548, 25601 26545, 25596 26548, 25594 26553, 25595 26552, 25599 26553, 25598 26554, 25596 26555, 25592 26554, 25596 26558, 25599 26554, 25600 26556, 25595 26559, 25600 22559, 25601 22561, 25606 22563, 25607 22562, 25608 22566, 25607 22563, 25607 22568, 30607 22573, 30612 22575, 30612 22579, 30611 22579, 30611 22580, 30611 22585, 30607 22585, 30612 22587, 30612 22588, 30615 22583, 30615 22585, 30618 22581, 30621 22581, 30623 22584, 30623 22589, 30628 22594, 30630 22597, 30631 22602, 30628 22607, 30630 22610, 30631 22611, 30631 22608, 30629 22610, 30634 22612, 30635 22612, 30638 22616, 30643 17616, 30644 17618, 30649 17618, 30653 17619, 30656 17614, 30657 17611, 30660 17615, 30655 17614, 30656 17610, 30656 17611, 30661 17610, 30662 17615, 30660 17620, 30661 17620, 30666 17623, 30667 17625, 30667 17624, 30669 17625, 30673 17628, 30675 17628, 30675 17628, 30680 17631, 30677 17636, 30677 17639, 30680 17644, 30683 17647, 30688 17643, 30693 17645, 30698 19645, 30701 19644, 30702 19644, 30698 19649, 30700 19647, 30701 19649, 30704 19650, 30705 19653, 30701 19655, 30706 19652, 30708 19656, 30711 19657, 30711 19659, 30711 19659, 30714 19661, 30710 19662, 30707 19664, 30702 19666, 30703 19667, 30708 19668, 30713 19667, 30709 19671, 30706 19674, 30710 19676, 30711 19677, 30713 19677, 30713 19678, 30715 19682, 30720 19686, 30725 20686, 30723 20690, 30727 20695, 30728 20697, 30731 20699, 30730 20694, 30732 20696, 30735 20698, 30738 20696, 30738 20695, 30742 20698, 30743 20699, 30743 20701, 30748 20704, 30749 20706, 30752 20705, 30753 20702, 30755 24702, 30751 24705, 30750 24707, 30748 24708, 30749 29708, 30749 29709, 30751 29711, 30754 29716, 30759 29716, 30762 34716, 30762 34720, 30765 34720, 30761 34717, 30761 34721, 30765 34721, 30760 34721, 30759 34725, 30762 34730, 30760 34730, 30765 34731, 30765 34731, 30766 34731, 30761 34733, 30761 34736, 30764 34738, 30759 34739, 30763 34740, 30761 34740, 30764 34742, 30759 34737, 30762 34739, 30764 34741, 30762 34740, 30767 34737, 32767 34741, 32770 34741, 32767 34744, 32767 34746, 32770 34751, 32774 34755, 32774 34756, 32779 34753, 32784 34755, 32785 33755, 32785 33750, 36785 33753, 36785 33758, 36788 33760, 36789 33759, 36789 33762, 36793 33758, 36798 33758, 36803 33760, 36803 33762, 36803 33766, 36804 33769, 36804 33769, 36808 33774, 33808 33776, 33808 33781, 33811 33781, 33816 33784, 33816 33789, 33820 33786, 33823 33788, 33828 33785, 33824 33785, 33826 33787, 33824 33788, 33828 33791, 33825 33796, 33829 33799, 33830 33802, 33831 33803, 33835 33805, 33835 33805, 33838 33809, 33841 33813, 33844 33809, 33849 33814, 33847 32814, 33849 32812, 33851 32816, 33853 32819, 33851 32822, 33851 32826, 33849 32826, 33849 32830, 33852 32835, 33856 32840, 33859 32837, 33858 32832, 33861 32833, 33862 32836, 33859 32838, 33859 32834, 33857 32834, 33859 32834, 33857 32838, 33861 32833, 33861 32837, 33864 32840, 33866 32841, 33866 32843, 33868 32841, 33871 32839, 33874 32844, 33876 37844, 33881 37849, 33883 37854, 33883 37859, 33888 37860, 33893 37864, 33898 37864, 33895 37867, 33896 38867, 33898 38863, 28898 38868, 28901 39868, 33901 39873, 33898 39875, 33900 39879, 33904 39877, 33904 39879, 33909 39883, 33914 39888, 33910 39891, 33910 39892, 33907 39894, 33911 39899, 33913 39900, 33910 39904, 33914 39905, 33917 39906, 33917 39906, 33917 39906, 33912 39911, 33912 39908, 33916 39907, 33914 39910, 33918 39913, 33922 39913, 33924 39916, 33925 39920, 33930 39920, 33933 39922, 33934 39923, 33937 39919, 33938 39916, 33936 39913, 35936 39918, 35933 39919, 35937 39921, 35941 39924, 35941 39919, 35942 39915, 35946 39920, 35946 39915, 35946 39912, 35947 39908, 35947 39912, 35947 39916, 35952 39919, 35957 39921, 38957 39920, 38962 39925, 38964 39924, 38964 39924, 38969 39926, 38969 39928, 38972 39932, 38977 39932, 38975 39932, 38979 39935, 38982 39938, 38986 39940, 38984 39943, 38985 39946, 38987 39947, 38989 39949, 38994 41949, 38990 41954, 38991 41958, 38994 41962, 38994 41966, 38994 41969, 38995 41974, 38999 41974, 38999 41974, 38996 41978, 38996 41983, 38999 41983, 39001 41986, 38996 41984, 39000 41989, 39000 41988, 5336 23410, 5332 23410, 5327 23407, 9327 23408, 12327 23412, 12327 23412, 12324 23410, 13324 23415, 13327 23420, 13328 23416, 13324 23418, 13329 23423, 13330 23426, 13331 23429, 13335 23426, 13339 23428, 23493 35553, 23492 35548, 23496 35550, 23501 35552, 23497 35553, 21497 35557, 21492 35560, 21494 35562, 21494 35560, 21496 35563, 21496 35568, 21496 35570, 21501 35570, 21504 35566, 21504 35571, 17504 35572, 17508 35577, 17509 35578, 17513 35582, 17514 35587, 17515 35592, 18515 35595, 18516 35596, 18517 35598, 18515 35600, 16515 35605, 16515 37605, 16515 37606, 16513 37608, 16515 37613, 16516 37615, 16520 37620, 16524 34620, 16526 34617, 16530 34619, 16530 34624, 16535 34628, 16537 34631, 16540 34632, 16541 34634, 16541 34635, 16544 34632, 16544 34637, 16546 34642, 16549 38642, 16549 38644, 16545 38649, 16545 38644, 16542 38644, 16545 38644, 16544 38645, 16548 38650, 16543 38653, 16543 38649, 18543 38652, 18546 38652, 18546 38657, 18546 38660, 18551 38655, 18549 38655, 18552 38660, 18549 38662, 23549 38667, 23546 38668, 23550 38672, 23550 38674, 28550 38676, 28551 38673, 28551 38677, 28547 38673, 28551 38674, 28556 38674, 28559 38678, 28562 38673, 28564 38678, 28564 38673, 28563 38673, 28566 38675, 28571 38675, 38781 44703, 38782 44699, 38780 44702, 38785 44704, 38787 44704, 38783 44705, 38784 44700, 38788 44695, 38791 44696, 38796 44696, 38801 44692, 38801 44697, 38805 44701, 38810 44701, 38808 44701, 38808 44704, 38805 44706, 38805 44710, 38804 44711, 38809 48711, 38810 48711, 38808 48711, 38812 48716, 38812 48713, 38812 48715, 38812 48715, 38808 48711, 38804 48714, 38805 48710, 38807 48715, 38812 48715, 38807 48713, 38811 48714, 38811 48714, 38816 48711, 38817 48707, 38818 48707, 38818 48708, 38822 48708, 38824 48713, 38822 48714, 38820 48718, 38824 48720, 38824 48723, 38829 48726, 38830 48731, 38834 48729, 38832 48734, 38833 48730, 38834 48728, 38831 48732, 8433 35536, 8433 35541, 4433 35536, 4436 35541, 4440 35541, 4441 35537, 4445 35539, 4444 35534, 4447 35531, 4451 35531, 4455 35534, 4460 35534, 4461 39534, 4462 39535, 4463 39535, 4466 39535, 4470 39535, 4472 39538, 4467 39538, 4467 39536, 4471 39536, 4473 39541, 4468 39542, 4472 39543, 4475 39544, 4478 39544, 4482 39547, 4487 39552, 4485 39550, 4486 39551, 4486 39553, 4486 39555, 4488 39557, 4488 39558, 4489 39555, 4485 39557, 4488 39558, 4492 39560, 4495 39561, 4500 39565, 4496 39566, -4747 22349, -4750 22349, -4746 22352, -4742 22355, -4738 22360, -4739 22362, -4737 22365, -4732 22363, -4728 25363, -4728 25364, -4723 25364, -4725 25364, -4725 25365, -6725 25364, -6727 25369, -6728 25369, -6725 25369, -6729 25368, -6728 27368, -6725 27370, -6721 27371, -3721 27367, -3717 27372, -3718 27375, -3716 27370, -3715 27373, -3714 27373, -3712 27376, -3709 27374, -3710 27375, -3710 27374, -3708 27379, -3706 27381, -3705 27386, -3704 27389, -3704 27393, -3703 32393, -3702 32396, -3702 32396, -3697 32395, -3697 32399, -3692 32403, -3692 32404, -3693 32408, -3693 32412, -3691 32414, -3691 32414, -3695 32414, -3690 32417, -3689 32422, -3684 32424, -3681 32429, -3679 32424, -3676 32428, -3671 32428, -3674 32431, -3671 32430, -3669 32430, -3674 33430, -3676 33432, -3674 33432, -3677 33432, -3677 33437, -3675 33438, -3674 33442, -3679 33444, 1321 33448, 1323 33445, 1327 33448, 1331 33443, 1328 33448, 1328 33443, 1329 33443, 1329 33444, 1334 33448, 1335 33453, 1340 33457, 1340 33454, 1345 33454, 1349 33458, 1348 33461, 1348 33459, 1344 33463, 1343 33466, 1348 33466, 1349 33467, 1345 33467, 1346 33466, 1350 33461, 1349 33464, 1354 33468, 1358 33472, 1363 33473, 1365 33472, 1367 33473, 1370 33476, 1371 33479, -2629 33482, -2631 33487, -2627 33490, -2630 34490, -2626 36490, -2623 36492, -2619 36492, -2622 36492, -2620 36496, -2622 36495, -2627 36495, -2625 36500, -2621 36503, -2626 36506, -2629 36510, -2624 36510, -2620 36510, -2620 36513, -2617 36518, -2622 36516, -2619 36514, -2617 36514, -2617 36512, -2615 36516, -2613 36516, -2613 36517, -2613 36515, -2613 36510, -2610 36511, -2607 36515, -2604 37515, -2604 37512, -2608 37509, -2605 37512, -2600 37516, -2597 37516, -2593 37514, -2595 37515, -2590 37519, -2595 37518, -2590 37523, -2590 37528, -2590 37530, -2592 37525, -2592 37520, -2589 36520, -2586 36521, -2587 36517, -2584 36518, -2582 36518, -2581 36520, -2577 36518, -2576 36522, -2576 35522, -2573 35523, -2575 35523, -2576 35528, -2576 35533, -2576 35536, -2576 35538, -2578 35541, -2582 35545, -2584 35546, -2585 35548, -2583 35544, -2583 35548, -2582 35547, -2578 35552, -2574 35554, -2569 35557, -2565 35559, -2563 35564, -2558 35564, -2555 35568, -2551 35568, -5551 36568, -5546 36568, -5542 36569, -5545 36569, -5543 36574, -5540 36569, -5541 36570, -5541 36572, -5541 36574, -5538 36579, -5535 36581, -5533 36585, -5530 36584, -5526 36579, -5524 38579, -5524 38580, -5524 38575, -5520 38575, -5516 38580, -5512 42580, -5508 42585, -5510 42587, -5510 42586, -5505 42586, -5508 42589, -2508 42593, -2509 42596, -2506 42598, -2504 42601, -2501 42602, -2501 42607, -2496 42612, -2499 42615, -2498 42620, -2500 42617, -2500 42620, -4500 42620, -4500 42624, -4500 42626, -4504 42623, -4507 42625, -4509 42628, -4513 42629, -4508 42629, -4505 42632, -4500 42628, -4499 42633, -4503 45633, -4501 45634, -4497 45635, -4494 45634, -4495 45632, -4493 45634, -4492 46634, -4489 46638, -4485 46633, -4481 46635, 21338 40536, 21343 40537, 21348 40538, 21348 40540, 21347 40540, 21348 40540, 21347 40540, 21346 40542, 21349 40547, 21350 40547, 21353 40544, 21353 40546, 21350 40549, 21353 40550, 21354 40550, 21355 40550, 21360 40550, 21361 40549, 21361 40554, 21359 40559, 21364 40564, 21366 40559, 21365 40559, 21366 40564, 25366 40568, 25367 40570, 25370 40570, 25373 45570, 25374 45571, 25374 45566, 25378 45568, 25383 42568, 25387 42564, 25391 42568, 25391 42572, 25395 42576, 25392 42576, 28392 42573, 28391 42574, 28387 42578, 28388 42580, 28391 42581, 31391 42582, 31387 42586, 31389 42586, 31392 42582, 31393 42583, 31394 42580, 29394 42584, 29398 42586, 29400 43586, 29404 43588, 29408 43589, 29409 43591, 29413 43596, 29415 43598, 29416 43599, 25416 43604, 25414 43599, 25417 43603, 25422 43606, 25420 43608, 25425 43603, 25428 43603, 25431 43606, 25436 42606, 25431 42608, 25434 42604, 25437 42609, 25438 47609, 25442 50609, 25443 50614, 25441 50618, 25446 50621, 25449 50625, 25446 50628, 25446 50630, 25447 50631, 25452 50636, 25452 50632, 25453 50634, 25453 50636, 25456 50637, 25460 50641, 25464 50645, 25465 50644, 25465 51644, 25469 51648, 25471 51653, 25475 51654, 25476 51657, 25477 51658, 26477 51662, 26477 51666, 26476 51669, 26478 51669, 26483 51665, 26485 55665, 26487 55668, 30487 55671, 30487 55674, 30491 55675, 30491 55672, 30493 55674, 30494 55674, 30495 55679, 30499 55679, 30503 55675, 30505 55680, 30502 55681, 30500 55676, 30496 55679, 30501 55680, 30502 55680, 30507 55685, 30503 55688, 30498 55689, 30502 55689, 30504 55691, 30508 55696, 30509 55697, 30508 55696, 30513 55697, 30518 55698, 30516 55703, 30516 55705, 30514 55705, 34514 55709, 34518 55712, 34522 55708, 34520 56708, 34521 56708, 34522 56710, 34519 56710, 34517 56705, 34521 59705, 34524 59710, 34524 59712, 34524 59717, 34528 59719, 34530 59721, 34535 59716, 34540 59719, 34540 59721, 34543 59721, 34548 59724, 34550 59725, 34554 63725, 34549 63730, 34551 63732, 34556 63730, 34558 63730, 34559 63725, 34558 63729, 34563 63734, 34560 63734, 37560 63729, 37563 63733, 37567 63728, 37571 63724, 37575 63722, 37580 63726, 37579 63722, 37581 63724, 37581 63726, 37582 63723, 37582 63724, 37581 63728, 37576 63729, 37576 63731, 37578 63729, 37583 63733, 37585 63736, 37588 63736, 37592 63741, 37594 63738, 37599 63735, 37602 63734, 37598 63735, 37598 63737, 37602 63737, 37603 63739, 37598 63739, 37593 63736, 37598 63737, 37603 63742, 37604 63737, 37601 63742, 37596 63744, 37600 63748, 37605 63749, 37607 63751, 37609 63756, 37609 63760, 37605 63761, 37605 63765, 37606 63765, 37610 63762, 37611 63766, 37606 63768, 37606 63768, 41606 63769, 41602 63765, 41601 63765, 41602 63770, 41598 63770, 41601 63770, 41603 63774, 41606 63772, 41610 63772, 41613 63776, 41616 63771, 41611 63767, 41614 63769, 41617 63764, 38617 63768, 38617 63772, 38620 63772, 35620 63773, 35620 63778, 35619 63779, 35620 63780, 35615 63779, 35617 63784, 35614 63786, 35615 63783, 35616 63779, 35620 63778, 35621 63780, 35626 63782, 35626 63784, 35631 63789, 35631 63784, 35628 63785, 35626 63786, 35631 63788, 35636 63791, 35640 63786, 35636 63787, 35636 63782, 35635 63781, 35640 63786, 35643 63790, 35646 63795, 35650 63797, 35649 63797, 35651 63801, 35655 63805, 35656 63808, 35656 63808, 35658 63808, 35657 63810, 35660 63814, 35660 63809, 35664 63809, 35659 67809, 35660 67812, 35662 67815, 35666 67812, 35662 67807, 35660 67807, 35663 67807, 35665 67812, 35668 67814, 35672 67818, 35671 67817, 35671 67820, 37671 67824, 37666 67824, 2277 13367, 2280 16367, 2276 16367, 2277 16366, 2281 16366, 2284 16366, 2289 16370, 2286 16370, 4286 16370, 4288 16375, 4292 16379, 4296 18379, 4297 18381, 9297 18385, 9298 18385, 9301 18386, 9305 18383, 9307 19383, 9310 19379, 8310 19384, 8314 19384, 38748 37655, 38751 37656, 38756 37657, 38759 37660, 38755 37665, 38755 37665, 38760 37667, 38765 37668, 38765 42668, 38770 42670, 38767 42672, 38772 42668, 38769 42663, 38770 42663, 38775 42658, 38773 42663, 38777 42665, 41777 42667, 41780 42669, 41783 42673, 41784 42671, 41781 42673, 41786 42676, 41783 42676, 41785 42676, 41782 42676, 41785 42679, 41786 42679, 41790 42680, 41794 42681, 41794 42679, 41795 42684, 41795 42680, 41798 42685, 41803 42689, 41806 42688, 41808 42689, 41806 42694, 41804 42696, 41807 42700, 41802 42701, 41804 42702, 41806 42704, 41811 42708, 41815 42709, 36815 42712, 36815 42708, 36812 42707, 36813 42709, 40813 42710, 40817 46710, 40818 46712, 40822 46712, 40820 46716, 40824 46721, 40827 46724, 40831 46728, 40829 46731, 40833 46731, 40835 46735, 40831 46737, 40832 46737, 36832 46742, 36832 46745, 36836 46748, 36833 46753, 36828 46752, 36824 46752, 36826 46755, 36821 46759, 36825 46762, 36825 46766, 36826 46770, 36824 46773, 36828 46776, 36833 46778, 36830 42778, 36835 42780, 36835 42781, 36840 42786)'))); +UPDATE t1 SET g = ST_linefromtext('linestring(-5 -576,0 -576,0 -571,0 -571,5 -568,6 -564,6 -565,6 -563)') WHERE p = 2; + +alter table t1 drop index `si`; + +connection purge_control; +COMMIT; +disconnect purge_control; +connection default; + +set global innodb_fast_shutdown = 0; +--source include/restart_mysqld.inc +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_estimate.test b/mysql-test/suite/innodb_gis/t/rtree_estimate.test new file mode 100644 index 00000000000..4caa5feb5b1 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_estimate.test @@ -0,0 +1,79 @@ +# +# BUG#21245805 HA_INNOBASE::RECORDS_IN_RANGE() RETURNS CONSTANT FOR SPATIAL INDEXES +# + +--source include/have_innodb.inc +--source include/have_debug.inc + +CREATE TABLE t1 ( + g GEOMETRY NOT NULL +) ENGINE=InnoDB; + +ALTER TABLE t1 ADD SPATIAL(g); + +SET @g1 = ST_GeomFromText('POINT(10 10)'); +SET @g2 = ST_GeomFromText('POLYGON((5 5, 20 5, 20 21, 5 21, 5 5))'); +SET @g3 = ST_GeomFromText('POLYGON((1.79769e+308 1.79769e+308, 20 5, -1.79769e+308 -1.79769e+308, 1.79769e+308 1.79769e+308))'); + +# Test empty table +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +# Insert gis data +INSERT INTO t1 VALUES(@g1); +INSERT INTO t1 VALUES(@g2); +INSERT INTO t1 VALUES(@g3); + +SELECT ST_AsText(g) FROM t1; + +ANALYZE TABLE t1; + +# Test g1 +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g1); + +# Test g2 +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g2); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g2); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g2); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g2); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g2); + +# Test g3 +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRContains(g, @g3); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRDisjoint(g, @g3); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBREquals(g, @g3); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRIntersects(g, @g3); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); + +EXPLAIN SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); +SELECT ST_AsText(g) FROM t1 WHERE MBRWithin(g, @g3); + +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_multi_pk.test b/mysql-test/suite/innodb_gis/t/rtree_multi_pk.test new file mode 100644 index 00000000000..928b1878e69 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_multi_pk.test @@ -0,0 +1,125 @@ +# WL#6745 InnoDB R-tree support +# This test case will test basic R-tree support features. + +--source include/have_innodb.inc + +# Create table with R-tree index. +create table t1 (i int, i2 char(10), g geometry not null, primary key (i, i2), spatial index (g))engine=innodb; + +# Insert values. +insert into t1 values (1, "111", POINT(1,1)); +insert into t1 values (2, "222", POINT(1.5,1.5)); +insert into t1 values (3, "333", POINT(3,3)); +insert into t1 values (4, "444", POINT(3.1,3.1)); +insert into t1 values (5, "555", POINT(5,5)); + +analyze table t1; + +# Select by R-tree index. +set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); +explain select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1); +select ST_astext(t1.g) from t1 where MBRWithin(t1.g, @g1); + +# Delete values. +set @g1 = ST_GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'); +delete from t1 where MBRWithin(t1.g, @g1); +check table t1; + +select ST_astext(t1.g) from t1; + +# Update values. +set @g1 = ST_GeomFromText('Polygon((5 5,5 5,5 5,5 5,5 5))'); +update t1 set g = POINT(2,2) where MBRWithin(t1.g, @g1); +check table t1; + +select ST_astext(t1.g) from t1; + +# Show index. +--replace_column 7 # +show indexes from t1; + +# Cleanup. +drop table t1; + +# Test functions. +create table t1 (name VARCHAR(100), square GEOMETRY not null, spatial index (square))engine=innodb; + + +INSERT INTO t1 VALUES("small", ST_GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); +INSERT INTO t1 VALUES("big", ST_GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); + +INSERT INTO t1 VALUES("up", ST_GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))')); +INSERT INTO t1 VALUES("up2", ST_GeomFromText('POLYGON (( 0 2, 0 4, 2 4, 2 2, 0 2))')); +INSERT INTO t1 VALUES("up3", ST_GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))')); + +INSERT INTO t1 VALUES("down", ST_GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))')); +INSERT INTO t1 VALUES("down2", ST_GeomFromText('POLYGON (( 0 -2, 0 0, 2 0, 2 -2, 0 -2))')); +INSERT INTO t1 VALUES("down3", ST_GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))')); + +INSERT INTO t1 VALUES("right", ST_GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))')); +INSERT INTO t1 VALUES("right2", ST_GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))')); +INSERT INTO t1 VALUES("right3", ST_GeomFromText('POLYGON (( 3 0, 3 2, 5 2, 5 0, 3 0))')); + +INSERT INTO t1 VALUES("left", ST_GeomFromText('POLYGON (( -1 0, -1 2, 1 2, 1 0, -1 0))')); +INSERT INTO t1 VALUES("left2", ST_GeomFromText('POLYGON (( -2 0, -2 2, 0 2, 0 0, -2 0))')); +INSERT INTO t1 VALUES("left3", ST_GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))')); + +SET @p = ST_GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'); +SELECT name, ST_AsText(square) from t1 where MBRContains(@p, square); +SELECT name, ST_AsText(square) from t1 where MBRDisjoint(@p, square); +SELECT name, ST_AsText(square) from t1 where MBREquals(@p, square); +SELECT name, ST_AsText(square) from t1 where MBRIntersects(@p, square); +SELECT name, ST_AsText(square) from t1 where MBROverlaps(@p, square); +SELECT name, ST_AsText(square) from t1 where MBRTouches(@p, square); +SELECT name, ST_AsText(square) from t1 where MBRWithin(@p, square); + +# MBROverlaps needs a few more tests, with point and line dimensions + +--error ER_GIS_INVALID_DATA +SET @vert1 = ST_GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))'); +--error ER_GIS_INVALID_DATA +SET @horiz1 = ST_GeomFromText('POLYGON ((-2 0, 2 0, -2 0))'); +--error ER_GIS_INVALID_DATA +SET @horiz2 = ST_GeomFromText('POLYGON ((-1 0, 3 0, -1 0))'); +--error ER_GIS_INVALID_DATA +SET @horiz3 = ST_GeomFromText('POLYGON ((2 0, 3 0, 2 0))'); +--error ER_GIS_INVALID_DATA +SET @point1 = ST_GeomFromText('POLYGON ((0 0))'); +--error ER_GIS_INVALID_DATA +SET @point2 = ST_GeomFromText('POLYGON ((-2 0))'); + +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @vert1) GROUP BY a1.name; +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS MBRoverlaps FROM t1 a1 WHERE MBROverlaps(a1.square, @horiz1) GROUP BY a1.name; +SELECT MBROverlaps(@horiz1, @vert1) FROM DUAL; +SELECT MBROverlaps(@horiz1, @horiz2) FROM DUAL; +SELECT MBROverlaps(@horiz1, @horiz3) FROM DUAL; +SELECT MBROverlaps(@horiz1, @point1) FROM DUAL; +SELECT MBROverlaps(@horiz1, @point2) FROM DUAL; + +DROP TABLE t1; + +# Inplace create spatial index is not supported +create table t1 (i int not null, g geometry not null)engine=innodb; + +# Insert values. +insert into t1 values (1, POINT(1,1)); +insert into t1 values (2, POINT(1.5,1.5)); +insert into t1 values (3, POINT(3,3)); +insert into t1 values (4, POINT(3.1,3.1)); +insert into t1 values (5, POINT(5,5)); + +alter table t1 add primary key(i), algorithm=inplace; +alter table t1 drop primary key; + +create spatial index idx on t1(g) algorithm=inplace; + +create spatial index idx2 on t1(g); + +alter table t1 add primary key(i), algorithm=inplace; + +show create table t1; + +drop index idx on t1; + +drop table t1; + diff --git a/mysql-test/suite/innodb_gis/t/rtree_old.test b/mysql-test/suite/innodb_gis/t/rtree_old.test new file mode 100644 index 00000000000..0c793488bf3 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_old.test @@ -0,0 +1,1015 @@ +# This is a testcase ported from mysql-test/t/gis-rtree.test + +-- source include/have_geometry.inc +-- source include/have_innodb.inc + +# +# test of rtree (using with spatial data) +# +--disable_warnings +DROP TABLE IF EXISTS t1, t2; +--enable_warnings + +CREATE TABLE t1 ( + fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + g GEOMETRY NOT NULL, + SPATIAL KEY(g) +) ENGINE=InnoDB; + +SHOW CREATE TABLE t1; + +let $1=150; +let $2=150; +while ($1) +{ + eval INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString($1 $1, $2 $2)')); + dec $1; + inc $2; +} + +SELECT count(*) FROM t1; +SELECT fid, ST_AsText(g) FROM t1 WHERE MBRWithin(g, ST_GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))')) ORDER BY fid; + +DROP TABLE t1; + +CREATE TABLE t2 ( + fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + g GEOMETRY NOT NULL +) ENGINE=InnoDB; + +let $1=10; +while ($1) +{ + let $2=10; + while ($2) + { + eval INSERT INTO t2 (g) VALUES (LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10))); + dec $2; + } + dec $1; +} + +ALTER TABLE t2 ADD SPATIAL KEY(g); +SHOW CREATE TABLE t2; +SELECT count(*) FROM t2; +SELECT fid, ST_AsText(g) FROM t2 WHERE MBRWithin(g, + ST_GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))')) ORDER BY fid; + +let $1=10; +while ($1) +{ + let $2=10; + while ($2) + { + eval DELETE FROM t2 WHERE MBRWithin(g, ST_Envelope(ST_GeometryFromWKB(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10)))); + SELECT count(*) FROM t2; + dec $2; + } + dec $1; +} + +DROP TABLE t2; + +drop table if exists t1; +CREATE TABLE t1 (a geometry NOT NULL, SPATIAL (a)); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +INSERT INTO t1 VALUES (ST_GeomFromText("LINESTRING(100 100, 200 200, 300 300)")); +check table t1; +analyze table t1; +drop table t1; + +# +# The following crashed gis +# + +CREATE TABLE t1 ( + fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + g GEOMETRY NOT NULL, + SPATIAL KEY(g) +) ENGINE=InnoDB; + +INSERT INTO t1 (g) VALUES (ST_GeomFromText('LineString(1 2, 2 3)')),(ST_GeomFromText('LineString(1 2, 2 4)')); +#select * from t1 where g<ST_GeomFromText('LineString(1 2, 2 3)'); +drop table t1; + +CREATE TABLE t1 ( + line LINESTRING NOT NULL, + kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po', + name VARCHAR(32), + + SPATIAL KEY (line) + + +) engine=InnoDB; + +ALTER TABLE t1 DISABLE KEYS; +--error ER_CANT_CREATE_GEOMETRY_OBJECT +INSERT INTO t1 (name, kind, line) VALUES + ("Aadaouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")), + ("Aadassiye", "pp", ST_GeomFromText("POINT(35.816667 36.216667)")), + ("Aadbel", "pp", ST_GeomFromText("POINT(34.533333 36.100000)")), + ("Aadchit", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")), + ("Aadchite", "pp", ST_GeomFromText("POINT(33.347222 35.423611)")), + ("Aadchit el Qoussair", "pp", ST_GeomFromText("POINT(33.283333 35.483333)")), + ("Aaddaye", "pp", ST_GeomFromText("POINT(36.716667 40.833333)")), + ("'Aadeissa", "pp", ST_GeomFromText("POINT(32.823889 35.698889)")), + ("Aaderup", "pp", ST_GeomFromText("POINT(55.216667 11.766667)")), + ("Qalaat Aades", "pp", ST_GeomFromText("POINT(33.503333 35.377500)")), + ("A ad'ino", "pp", ST_GeomFromText("POINT(54.812222 38.209167)")), + ("Aadi Noia", "pp", ST_GeomFromText("POINT(13.800000 39.833333)")), + ("Aad La Macta", "pp", ST_GeomFromText("POINT(35.779444 -0.129167)")), + ("Aadland", "pp", ST_GeomFromText("POINT(60.366667 5.483333)")), + ("Aadliye", "pp", ST_GeomFromText("POINT(33.366667 36.333333)")), + ("Aadloun", "pp", ST_GeomFromText("POINT(33.403889 35.273889)")), + ("Aadma", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")), + ("Aadma Asundus", "pp", ST_GeomFromText("POINT(58.798333 22.663889)")), + ("Aadmoun", "pp", ST_GeomFromText("POINT(34.150000 35.650000)")), + ("Aadneram", "pp", ST_GeomFromText("POINT(59.016667 6.933333)")), + ("Aadneskaar", "pp", ST_GeomFromText("POINT(58.083333 6.983333)")), + ("Aadorf", "pp", ST_GeomFromText("POINT(47.483333 8.900000)")), + ("Aadorp", "pp", ST_GeomFromText("POINT(52.366667 6.633333)")), + ("Aadouane", "pp", ST_GeomFromText("POINT(32.816667 35.983333)")), + ("Aadoui", "pp", ST_GeomFromText("POINT(34.450000 35.983333)")), + ("Aadouiye", "pp", ST_GeomFromText("POINT(34.583333 36.183333)")), + ("Aadouss", "pp", ST_GeomFromText("POINT(33.512500 35.601389)")), + ("Aadra", "pp", ST_GeomFromText("POINT(33.616667 36.500000)")), + ("Aadzi", "pp", ST_GeomFromText("POINT(38.100000 64.850000)")); + +ALTER TABLE t1 ENABLE KEYS; +INSERT INTO t1 (name, kind, line) VALUES ("austria", "pp", ST_GeomFromText('LINESTRING(14.9906 48.9887,14.9946 48.9904,14.9947 48.9916)')); +drop table t1; + +CREATE TABLE t1 (st varchar(100)); +INSERT INTO t1 VALUES ("Fake string"); +CREATE TABLE t2 (geom GEOMETRY NOT NULL, SPATIAL KEY gk(geom)); +--error ER_GIS_INVALID_DATA +INSERT INTO t2 SELECT ST_GeomFromText(st) FROM t1; +drop table t1, t2; + +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, -18.6055555000 +-66.8158332999, -18.7186111000 -66.8102777000, -18.7211111000 -66.9269443999, +-18.6086111000 -66.9327777000))')); + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, -65.7372222000 +-96.5516666000, -65.8502777000 -96.5461111000, -65.8527777000 -96.6627777000, +-65.7402776999 -96.6686111000))')); +check table t1 extended; + +drop table t1; + +CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((2 2, 2 8, 10 8, 10 2, 2 2))')); + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((2 12, 15 12, 15 18, 2 18, 2 12))')); + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((3 5, 3 18, 10 18, 10 5, 3 5))')); + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((4 6, 4 8, 10 8, 10 4, 4 6))')); + +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); + +select count(*) from t1 where MBRWithin(t1.geometry, @g1); + +start transaction; + +INSERT INTO t1 (geometry) VALUES +(ST_PolygonFromText('POLYGON((4 6, 4 8, 10 8, 10 4, 4 6))')); + +select count(*) from t1 where MBRWithin(t1.geometry, @g1); + +rollback; + +select count(*) from t1 where MBRWithin(t1.geometry, @g1); + +set @g2 = ST_GeomFromText('POINT(2 2)'); + +select count(*) from t1 where MBRcontains(t1.geometry, @g2); + +select count(*) from t1 where MBRintersects(t1.geometry, @g2); + +set @g3 = ST_GeomFromText('LINESTRING(2 2, 2 12)'); + +select count(*) from t1 where MBRintersects(t1.geometry, @g3); + +DROP TABLE t1; + +# +# Bug#17877 - Corrupted spatial index +# +CREATE TABLE t1 ( + c1 geometry NOT NULL default '', + SPATIAL KEY i1 (c1) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO t1 (c1) VALUES ( + ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +# This showed a missing key. +CHECK TABLE t1 EXTENDED; +DROP TABLE t1; +# +CREATE TABLE t1 ( + c1 geometry NOT NULL default '', + SPATIAL KEY i1 (c1) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO t1 (c1) VALUES ( + ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +INSERT INTO t1 (c1) VALUES ( + ST_PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, + -65.7372222000 -96.5516666000, + -65.8502777000 -96.5461111000, + -65.8527777000 -96.6627777000, + -65.7402776999 -96.6686111000))')); +# This is the same as the first insert to get a non-unique key. +INSERT INTO t1 (c1) VALUES ( + ST_PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, + -18.6055555000 -66.8158332999, + -18.7186111000 -66.8102777000, + -18.7211111000 -66.9269443999, + -18.6086111000 -66.9327777000))')); +# This showed (and still shows) OK. +CHECK TABLE t1 EXTENDED; +DROP TABLE t1; +SET sql_mode = default; + +# +# Bug #21888: Query on GEOMETRY field using PointFromWKB() results in lost connection +# +CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) ); +INSERT INTO t1 (foo) VALUES (POINT(1,1)); +INSERT INTO t1 (foo) VALUES (POINT(1,0)); +INSERT INTO t1 (foo) VALUES (POINT(0,1)); +INSERT INTO t1 (foo) VALUES (POINT(0,0)); +SELECT 1 FROM t1 WHERE foo != POINT(0,0); +DROP TABLE t1; + +# +# Bug#25673 - spatial index corruption, error 126 incorrect key file for table +# +CREATE TABLE t1 (id bigint(12) unsigned NOT NULL auto_increment, + c2 varchar(15) collate utf8_bin default NULL, + c1 varchar(15) collate utf8_bin default NULL, + c3 varchar(10) collate utf8_bin default NULL, + spatial_point point NOT NULL, + PRIMARY KEY(id), + SPATIAL KEY (spatial_point) + )ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +# +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('y', 's', 'j', ST_GeomFromText('POINT(167 74)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(215 118)')), + ('g', 'n', 'e', ST_GeomFromText('POINT(203 98)')), + ('h', 'd', 'd', ST_GeomFromText('POINT(54 193)')), + ('r', 'x', 'y', ST_GeomFromText('POINT(47 69)')), + ('t', 'q', 'r', ST_GeomFromText('POINT(109 42)')), + ('a', 'z', 'd', ST_GeomFromText('POINT(0 154)')), + ('x', 'v', 'o', ST_GeomFromText('POINT(174 131)')), + ('b', 'r', 'a', ST_GeomFromText('POINT(114 253)')), + ('x', 'z', 'i', ST_GeomFromText('POINT(163 21)')), + ('w', 'p', 'i', ST_GeomFromText('POINT(42 102)')), + ('g', 'j', 'j', ST_GeomFromText('POINT(170 133)')), + ('m', 'g', 'n', ST_GeomFromText('POINT(28 22)')), + ('b', 'z', 'h', ST_GeomFromText('POINT(174 28)')), + ('q', 'k', 'f', ST_GeomFromText('POINT(233 73)')), + ('w', 'w', 'a', ST_GeomFromText('POINT(124 200)')), + ('t', 'j', 'w', ST_GeomFromText('POINT(252 101)')), + ('d', 'r', 'd', ST_GeomFromText('POINT(98 18)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(165 31)')), + ('y', 'h', 't', ST_GeomFromText('POINT(14 220)')), + ('d', 'p', 'u', ST_GeomFromText('POINT(223 196)')), + ('g', 'y', 'g', ST_GeomFromText('POINT(207 96)')), + ('x', 'm', 'n', ST_GeomFromText('POINT(214 3)')), + ('g', 'v', 'e', ST_GeomFromText('POINT(140 205)')), + ('g', 'm', 'm', ST_GeomFromText('POINT(10 236)')), + ('i', 'r', 'j', ST_GeomFromText('POINT(137 228)')), + ('w', 's', 'p', ST_GeomFromText('POINT(115 6)')), + ('o', 'n', 'k', ST_GeomFromText('POINT(158 129)')), + ('j', 'h', 'l', ST_GeomFromText('POINT(129 72)')), + ('f', 'x', 'l', ST_GeomFromText('POINT(139 207)')), + ('u', 'd', 'n', ST_GeomFromText('POINT(125 109)')), + ('b', 'a', 'z', ST_GeomFromText('POINT(30 32)')), + ('m', 'h', 'o', ST_GeomFromText('POINT(251 251)')), + ('f', 'r', 'd', ST_GeomFromText('POINT(243 211)')), + ('b', 'd', 'r', ST_GeomFromText('POINT(232 80)')), + ('g', 'k', 'v', ST_GeomFromText('POINT(15 100)')), + ('i', 'f', 'c', ST_GeomFromText('POINT(109 66)')), + ('r', 't', 'j', ST_GeomFromText('POINT(178 6)')), + ('y', 'n', 'f', ST_GeomFromText('POINT(233 211)')), + ('f', 'y', 'm', ST_GeomFromText('POINT(99 16)')), + ('z', 'q', 'l', ST_GeomFromText('POINT(39 49)')), + ('j', 'c', 'r', ST_GeomFromText('POINT(75 187)')), + ('c', 'y', 'y', ST_GeomFromText('POINT(246 253)')), + ('w', 'u', 'd', ST_GeomFromText('POINT(56 190)')), + ('n', 'q', 'm', ST_GeomFromText('POINT(73 149)')), + ('d', 'y', 'a', ST_GeomFromText('POINT(134 6)')), + ('z', 's', 'w', ST_GeomFromText('POINT(216 225)')), + ('d', 'u', 'k', ST_GeomFromText('POINT(132 70)')), + ('f', 'v', 't', ST_GeomFromText('POINT(187 141)')), + ('r', 'r', 'a', ST_GeomFromText('POINT(152 39)')), + ('y', 'p', 'o', ST_GeomFromText('POINT(45 27)')), + ('p', 'n', 'm', ST_GeomFromText('POINT(228 148)')), + ('e', 'g', 'e', ST_GeomFromText('POINT(88 81)')), + ('m', 'a', 'h', ST_GeomFromText('POINT(35 29)')), + ('m', 'h', 'f', ST_GeomFromText('POINT(30 71)')), + ('h', 'k', 'i', ST_GeomFromText('POINT(244 78)')), + ('z', 'v', 'd', ST_GeomFromText('POINT(241 38)')), + ('q', 'l', 'j', ST_GeomFromText('POINT(13 71)')), + ('s', 'p', 'g', ST_GeomFromText('POINT(108 38)')), + ('q', 's', 'j', ST_GeomFromText('POINT(92 101)')), + ('l', 'h', 'g', ST_GeomFromText('POINT(120 78)')), + ('w', 't', 'b', ST_GeomFromText('POINT(193 109)')), + ('b', 's', 's', ST_GeomFromText('POINT(223 211)')), + ('w', 'w', 'y', ST_GeomFromText('POINT(122 42)')), + ('q', 'c', 'c', ST_GeomFromText('POINT(104 102)')), + ('w', 'g', 'n', ST_GeomFromText('POINT(213 120)')), + ('p', 'q', 'a', ST_GeomFromText('POINT(247 148)')), + ('c', 'z', 'e', ST_GeomFromText('POINT(18 106)')), + ('z', 'u', 'n', ST_GeomFromText('POINT(70 133)')), + ('j', 'n', 'x', ST_GeomFromText('POINT(232 13)')), + ('e', 'h', 'f', ST_GeomFromText('POINT(22 135)')), + ('w', 'l', 'f', ST_GeomFromText('POINT(9 180)')), + ('a', 'v', 'q', ST_GeomFromText('POINT(163 228)')), + ('i', 'z', 'o', ST_GeomFromText('POINT(180 100)')), + ('e', 'c', 'l', ST_GeomFromText('POINT(182 231)')), + ('c', 'k', 'o', ST_GeomFromText('POINT(19 60)')), + ('q', 'f', 'p', ST_GeomFromText('POINT(79 95)')), + ('m', 'd', 'r', ST_GeomFromText('POINT(3 127)')), + ('m', 'e', 't', ST_GeomFromText('POINT(136 154)')), + ('w', 'w', 'w', ST_GeomFromText('POINT(102 15)')), + ('l', 'n', 'q', ST_GeomFromText('POINT(71 196)')), + ('p', 'k', 'c', ST_GeomFromText('POINT(47 139)')), + ('j', 'o', 'r', ST_GeomFromText('POINT(177 128)')), + ('j', 'q', 'a', ST_GeomFromText('POINT(170 6)')), + ('b', 'a', 'o', ST_GeomFromText('POINT(63 211)')), + ('g', 's', 'o', ST_GeomFromText('POINT(144 251)')), + ('w', 'u', 'w', ST_GeomFromText('POINT(221 214)')), + ('g', 'a', 'm', ST_GeomFromText('POINT(14 102)')), + ('u', 'q', 'z', ST_GeomFromText('POINT(86 200)')), + ('k', 'a', 'm', ST_GeomFromText('POINT(144 222)')), + ('j', 'u', 'r', ST_GeomFromText('POINT(216 142)')), + ('q', 'k', 'v', ST_GeomFromText('POINT(121 236)')), + ('p', 'o', 'r', ST_GeomFromText('POINT(108 102)')), + ('b', 'd', 'x', ST_GeomFromText('POINT(127 198)')), + ('k', 's', 'a', ST_GeomFromText('POINT(2 150)')), + ('f', 'm', 'f', ST_GeomFromText('POINT(160 191)')), + ('q', 'y', 'x', ST_GeomFromText('POINT(98 111)')), + ('o', 'f', 'm', ST_GeomFromText('POINT(232 218)')), + ('c', 'w', 'j', ST_GeomFromText('POINT(156 165)')), + ('s', 'q', 'v', ST_GeomFromText('POINT(98 161)')); +SET @@RAND_SEED1=692635050, @@RAND_SEED2=297339954; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=159925977, @@RAND_SEED2=942570618; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=328169745, @@RAND_SEED2=410451954; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=178507359, @@RAND_SEED2=332493072; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=1034033013, @@RAND_SEED2=558966507; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(230 9)') where c1 like 'y%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(95 35)') where c1 like 'j%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(93 99)') where c1 like 'a%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(19 81)') where c1 like 'r%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(20 177)') where c1 like 'h%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(221 193)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(195 205)') where c1 like 'd%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(15 213)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(214 63)') where c1 like 'n%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(243 171)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(198 82)') where c1 like 'y%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('f', 'y', 'p', ST_GeomFromText('POINT(109 235)')), + ('b', 'e', 'v', ST_GeomFromText('POINT(20 48)')), + ('i', 'u', 'f', ST_GeomFromText('POINT(15 55)')), + ('o', 'r', 'z', ST_GeomFromText('POINT(105 64)')), + ('a', 'p', 'a', ST_GeomFromText('POINT(142 236)')), + ('g', 'i', 'k', ST_GeomFromText('POINT(10 49)')), + ('x', 'z', 'x', ST_GeomFromText('POINT(192 200)')), + ('c', 'v', 'r', ST_GeomFromText('POINT(94 168)')), + ('y', 'z', 'e', ST_GeomFromText('POINT(141 51)')), + ('h', 'm', 'd', ST_GeomFromText('POINT(35 251)')), + ('v', 'm', 'q', ST_GeomFromText('POINT(44 90)')), + ('j', 'l', 'z', ST_GeomFromText('POINT(67 237)')), + ('i', 'v', 'a', ST_GeomFromText('POINT(75 14)')), + ('b', 'q', 't', ST_GeomFromText('POINT(153 33)')), + ('e', 'm', 'a', ST_GeomFromText('POINT(247 49)')), + ('l', 'y', 'g', ST_GeomFromText('POINT(56 203)')), + ('v', 'o', 'r', ST_GeomFromText('POINT(90 54)')), + ('r', 'n', 'd', ST_GeomFromText('POINT(135 83)')), + ('j', 't', 'u', ST_GeomFromText('POINT(174 239)')), + ('u', 'n', 'g', ST_GeomFromText('POINT(104 191)')), + ('p', 'q', 'y', ST_GeomFromText('POINT(63 171)')), + ('o', 'q', 'p', ST_GeomFromText('POINT(192 103)')), + ('f', 'x', 'e', ST_GeomFromText('POINT(244 30)')), + ('n', 'x', 'c', ST_GeomFromText('POINT(92 103)')), + ('r', 'q', 'z', ST_GeomFromText('POINT(166 20)')), + ('s', 'a', 'j', ST_GeomFromText('POINT(137 205)')), + ('z', 't', 't', ST_GeomFromText('POINT(99 134)')), + ('o', 'm', 'j', ST_GeomFromText('POINT(217 3)')), + ('n', 'h', 'j', ST_GeomFromText('POINT(211 17)')), + ('v', 'v', 'a', ST_GeomFromText('POINT(41 137)')), + ('q', 'o', 'j', ST_GeomFromText('POINT(5 92)')), + ('z', 'y', 'e', ST_GeomFromText('POINT(175 212)')), + ('j', 'z', 'h', ST_GeomFromText('POINT(224 194)')), + ('a', 'g', 'm', ST_GeomFromText('POINT(31 119)')), + ('p', 'c', 'f', ST_GeomFromText('POINT(17 221)')), + ('t', 'h', 'k', ST_GeomFromText('POINT(26 203)')), + ('u', 'w', 'p', ST_GeomFromText('POINT(47 185)')), + ('z', 'a', 'c', ST_GeomFromText('POINT(61 133)')), + ('u', 'k', 'a', ST_GeomFromText('POINT(210 115)')), + ('k', 'f', 'h', ST_GeomFromText('POINT(125 113)')), + ('t', 'v', 'y', ST_GeomFromText('POINT(12 239)')), + ('u', 'v', 'd', ST_GeomFromText('POINT(90 24)')), + ('m', 'y', 'w', ST_GeomFromText('POINT(25 243)')), + ('d', 'n', 'g', ST_GeomFromText('POINT(122 92)')), + ('z', 'm', 'f', ST_GeomFromText('POINT(235 110)')), + ('q', 'd', 'f', ST_GeomFromText('POINT(233 217)')), + ('a', 'v', 'u', ST_GeomFromText('POINT(69 59)')), + ('x', 'k', 'p', ST_GeomFromText('POINT(240 14)')), + ('i', 'v', 'r', ST_GeomFromText('POINT(154 42)')), + ('w', 'h', 'l', ST_GeomFromText('POINT(178 156)')), + ('d', 'h', 'n', ST_GeomFromText('POINT(65 157)')), + ('c', 'k', 'z', ST_GeomFromText('POINT(62 33)')), + ('e', 'l', 'w', ST_GeomFromText('POINT(162 1)')), + ('r', 'f', 'i', ST_GeomFromText('POINT(127 71)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(63 118)')), + ('c', 'h', 'u', ST_GeomFromText('POINT(205 203)')), + ('d', 't', 'p', ST_GeomFromText('POINT(234 87)')), + ('s', 'g', 'h', ST_GeomFromText('POINT(149 34)')), + ('o', 'b', 'q', ST_GeomFromText('POINT(159 179)')), + ('k', 'u', 'f', ST_GeomFromText('POINT(202 254)')), + ('u', 'f', 'g', ST_GeomFromText('POINT(70 15)')), + ('x', 's', 'b', ST_GeomFromText('POINT(25 181)')), + ('s', 'c', 'g', ST_GeomFromText('POINT(252 17)')), + ('a', 'c', 'f', ST_GeomFromText('POINT(89 67)')), + ('r', 'e', 'q', ST_GeomFromText('POINT(55 54)')), + ('f', 'i', 'k', ST_GeomFromText('POINT(178 230)')), + ('p', 'e', 'l', ST_GeomFromText('POINT(198 28)')), + ('w', 'o', 'd', ST_GeomFromText('POINT(204 189)')), + ('c', 'a', 'g', ST_GeomFromText('POINT(230 178)')), + ('r', 'o', 'e', ST_GeomFromText('POINT(61 116)')), + ('w', 'a', 'a', ST_GeomFromText('POINT(178 237)')), + ('v', 'd', 'e', ST_GeomFromText('POINT(70 85)')), + ('k', 'c', 'e', ST_GeomFromText('POINT(147 118)')), + ('d', 'q', 't', ST_GeomFromText('POINT(218 77)')), + ('k', 'g', 'f', ST_GeomFromText('POINT(192 113)')), + ('w', 'n', 'e', ST_GeomFromText('POINT(92 124)')), + ('r', 'm', 'q', ST_GeomFromText('POINT(130 65)')), + ('o', 'r', 'r', ST_GeomFromText('POINT(174 233)')), + ('k', 'n', 't', ST_GeomFromText('POINT(175 147)')), + ('q', 'm', 'r', ST_GeomFromText('POINT(18 208)')), + ('l', 'd', 'i', ST_GeomFromText('POINT(13 104)')), + ('w', 'o', 'y', ST_GeomFromText('POINT(207 39)')), + ('p', 'u', 'o', ST_GeomFromText('POINT(114 31)')), + ('y', 'a', 'p', ST_GeomFromText('POINT(106 59)')), + ('a', 'x', 'z', ST_GeomFromText('POINT(17 57)')), + ('v', 'h', 'x', ST_GeomFromText('POINT(170 13)')), + ('t', 's', 'u', ST_GeomFromText('POINT(84 18)')), + ('z', 'z', 'f', ST_GeomFromText('POINT(250 197)')), + ('l', 'z', 't', ST_GeomFromText('POINT(59 80)')), + ('j', 'g', 's', ST_GeomFromText('POINT(54 26)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(89 98)')), + ('q', 'v', 'b', ST_GeomFromText('POINT(39 240)')), + ('x', 'k', 'v', ST_GeomFromText('POINT(246 207)')), + ('k', 'u', 'i', ST_GeomFromText('POINT(105 111)')), + ('w', 'z', 's', ST_GeomFromText('POINT(235 8)')), + ('d', 'd', 'd', ST_GeomFromText('POINT(105 4)')), + ('c', 'z', 'q', ST_GeomFromText('POINT(13 140)')), + ('m', 'k', 'i', ST_GeomFromText('POINT(208 120)')), + ('g', 'a', 'g', ST_GeomFromText('POINT(9 182)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(149 153)')), + ('h', 'f', 'g', ST_GeomFromText('POINT(81 236)')), + ('m', 'e', 'q', ST_GeomFromText('POINT(209 215)')), + ('c', 'h', 'y', ST_GeomFromText('POINT(235 70)')), + ('i', 'e', 'g', ST_GeomFromText('POINT(138 26)')), + ('m', 't', 'u', ST_GeomFromText('POINT(119 237)')), + ('o', 'w', 's', ST_GeomFromText('POINT(193 166)')), + ('f', 'm', 'q', ST_GeomFromText('POINT(85 96)')), + ('x', 'l', 'x', ST_GeomFromText('POINT(58 115)')), + ('x', 'q', 'u', ST_GeomFromText('POINT(108 210)')), + ('b', 'h', 'i', ST_GeomFromText('POINT(250 139)')), + ('y', 'd', 'x', ST_GeomFromText('POINT(199 135)')), + ('w', 'h', 'p', ST_GeomFromText('POINT(247 233)')), + ('p', 'z', 't', ST_GeomFromText('POINT(148 249)')), + ('q', 'a', 'u', ST_GeomFromText('POINT(174 78)')), + ('v', 't', 'm', ST_GeomFromText('POINT(70 228)')), + ('t', 'n', 'f', ST_GeomFromText('POINT(123 2)')), + ('x', 't', 'b', ST_GeomFromText('POINT(35 50)')), + ('r', 'j', 'f', ST_GeomFromText('POINT(200 51)')), + ('s', 'q', 'o', ST_GeomFromText('POINT(23 184)')), + ('u', 'v', 'z', ST_GeomFromText('POINT(7 113)')), + ('v', 'u', 'l', ST_GeomFromText('POINT(145 190)')), + ('o', 'k', 'i', ST_GeomFromText('POINT(161 122)')), + ('l', 'y', 'e', ST_GeomFromText('POINT(17 232)')), + ('t', 'b', 'e', ST_GeomFromText('POINT(120 50)')), + ('e', 's', 'u', ST_GeomFromText('POINT(254 1)')), + ('d', 'd', 'u', ST_GeomFromText('POINT(167 140)')), + ('o', 'b', 'x', ST_GeomFromText('POINT(186 237)')), + ('m', 's', 's', ST_GeomFromText('POINT(172 149)')), + ('t', 'y', 'a', ST_GeomFromText('POINT(149 85)')), + ('x', 't', 'r', ST_GeomFromText('POINT(10 165)')), + ('g', 'c', 'e', ST_GeomFromText('POINT(95 165)')), + ('e', 'e', 'z', ST_GeomFromText('POINT(98 65)')), + ('f', 'v', 'i', ST_GeomFromText('POINT(149 144)')), + ('o', 'p', 'm', ST_GeomFromText('POINT(233 67)')), + ('t', 'u', 'b', ST_GeomFromText('POINT(109 215)')), + ('o', 'o', 'b', ST_GeomFromText('POINT(130 48)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(88 189)')), + ('e', 'v', 'y', ST_GeomFromText('POINT(55 29)')), + ('e', 't', 'm', ST_GeomFromText('POINT(129 55)')), + ('p', 'p', 'i', ST_GeomFromText('POINT(126 222)')), + ('c', 'i', 'c', ST_GeomFromText('POINT(19 158)')), + ('c', 'b', 's', ST_GeomFromText('POINT(13 19)')), + ('u', 'y', 'a', ST_GeomFromText('POINT(114 5)')), + ('a', 'o', 'f', ST_GeomFromText('POINT(227 232)')), + ('t', 'c', 'z', ST_GeomFromText('POINT(63 62)')), + ('d', 'o', 'k', ST_GeomFromText('POINT(48 228)')), + ('x', 'c', 'e', ST_GeomFromText('POINT(204 2)')), + ('e', 'e', 'g', ST_GeomFromText('POINT(125 43)')), + ('o', 'r', 'f', ST_GeomFromText('POINT(171 140)')); +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(163 157)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(53 151)') where c1 like 'd%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(96 183)') where c1 like 'r%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(57 91)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(202 110)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(120 137)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(207 147)') where c1 like 'c%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(31 125)') where c1 like 'e%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(27 36)') where c1 like 'r%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('b', 'c', 'e', ST_GeomFromText('POINT(41 137)')), + ('p', 'y', 'k', ST_GeomFromText('POINT(50 22)')), + ('s', 'c', 'h', ST_GeomFromText('POINT(208 173)')), + ('x', 'u', 'l', ST_GeomFromText('POINT(199 175)')), + ('s', 'r', 'h', ST_GeomFromText('POINT(85 192)')), + ('j', 'k', 'u', ST_GeomFromText('POINT(18 25)')), + ('p', 'w', 'h', ST_GeomFromText('POINT(152 197)')), + ('e', 'd', 'c', ST_GeomFromText('POINT(229 3)')), + ('o', 'x', 'k', ST_GeomFromText('POINT(187 155)')), + ('o', 'b', 'k', ST_GeomFromText('POINT(208 150)')), + ('d', 'a', 'j', ST_GeomFromText('POINT(70 87)')), + ('f', 'e', 'k', ST_GeomFromText('POINT(156 96)')), + ('u', 'y', 'p', ST_GeomFromText('POINT(239 193)')), + ('n', 'v', 'p', ST_GeomFromText('POINT(223 98)')), + ('z', 'j', 'r', ST_GeomFromText('POINT(87 89)')), + ('h', 'x', 'x', ST_GeomFromText('POINT(92 0)')), + ('r', 'v', 'r', ST_GeomFromText('POINT(159 139)')), + ('v', 'g', 'g', ST_GeomFromText('POINT(16 229)')), + ('z', 'k', 'u', ST_GeomFromText('POINT(99 52)')), + ('p', 'p', 'o', ST_GeomFromText('POINT(105 125)')), + ('w', 'h', 'y', ST_GeomFromText('POINT(105 154)')), + ('v', 'y', 'z', ST_GeomFromText('POINT(134 238)')), + ('x', 'o', 'o', ST_GeomFromText('POINT(178 88)')), + ('z', 'w', 'd', ST_GeomFromText('POINT(123 60)')), + ('q', 'f', 'u', ST_GeomFromText('POINT(64 90)')), + ('s', 'n', 't', ST_GeomFromText('POINT(50 138)')), + ('v', 'p', 't', ST_GeomFromText('POINT(114 91)')), + ('a', 'o', 'n', ST_GeomFromText('POINT(78 43)')), + ('k', 'u', 'd', ST_GeomFromText('POINT(185 161)')), + ('w', 'd', 'n', ST_GeomFromText('POINT(25 92)')), + ('k', 'w', 'a', ST_GeomFromText('POINT(59 238)')), + ('t', 'c', 'f', ST_GeomFromText('POINT(65 87)')), + ('g', 's', 'p', ST_GeomFromText('POINT(238 126)')), + ('d', 'n', 'y', ST_GeomFromText('POINT(107 173)')), + ('l', 'a', 'w', ST_GeomFromText('POINT(125 152)')), + ('m', 'd', 'j', ST_GeomFromText('POINT(146 53)')), + ('q', 'm', 'c', ST_GeomFromText('POINT(217 187)')), + ('i', 'r', 'r', ST_GeomFromText('POINT(6 113)')), + ('e', 'j', 'b', ST_GeomFromText('POINT(37 83)')), + ('w', 'w', 'h', ST_GeomFromText('POINT(83 199)')), + ('k', 'b', 's', ST_GeomFromText('POINT(170 64)')), + ('s', 'b', 'c', ST_GeomFromText('POINT(163 130)')), + ('c', 'h', 'a', ST_GeomFromText('POINT(141 3)')), + ('k', 'j', 'u', ST_GeomFromText('POINT(143 76)')), + ('r', 'h', 'o', ST_GeomFromText('POINT(243 92)')), + ('i', 'd', 'b', ST_GeomFromText('POINT(205 13)')), + ('r', 'y', 'q', ST_GeomFromText('POINT(138 8)')), + ('m', 'o', 'i', ST_GeomFromText('POINT(36 45)')), + ('v', 'g', 'm', ST_GeomFromText('POINT(0 40)')), + ('f', 'e', 'i', ST_GeomFromText('POINT(76 6)')), + ('c', 'q', 'q', ST_GeomFromText('POINT(115 248)')), + ('x', 'c', 'i', ST_GeomFromText('POINT(29 74)')), + ('l', 's', 't', ST_GeomFromText('POINT(83 18)')), + ('t', 't', 'a', ST_GeomFromText('POINT(26 168)')), + ('u', 'n', 'x', ST_GeomFromText('POINT(200 110)')), + ('j', 'b', 'd', ST_GeomFromText('POINT(216 136)')), + ('s', 'p', 'w', ST_GeomFromText('POINT(38 156)')), + ('f', 'b', 'v', ST_GeomFromText('POINT(29 186)')), + ('v', 'e', 'r', ST_GeomFromText('POINT(149 40)')), + ('v', 't', 'm', ST_GeomFromText('POINT(184 24)')), + ('y', 'g', 'a', ST_GeomFromText('POINT(219 105)')), + ('s', 'f', 'i', ST_GeomFromText('POINT(114 130)')), + ('e', 'q', 'h', ST_GeomFromText('POINT(203 135)')), + ('h', 'g', 'b', ST_GeomFromText('POINT(9 208)')), + ('o', 'l', 'r', ST_GeomFromText('POINT(245 79)')), + ('s', 's', 'v', ST_GeomFromText('POINT(238 198)')), + ('w', 'w', 'z', ST_GeomFromText('POINT(209 232)')), + ('v', 'd', 'n', ST_GeomFromText('POINT(30 193)')), + ('q', 'w', 'k', ST_GeomFromText('POINT(133 18)')), + ('o', 'h', 'o', ST_GeomFromText('POINT(42 140)')), + ('f', 'f', 'h', ST_GeomFromText('POINT(145 1)')), + ('u', 's', 'r', ST_GeomFromText('POINT(70 62)')), + ('x', 'n', 'q', ST_GeomFromText('POINT(33 86)')), + ('u', 'p', 'v', ST_GeomFromText('POINT(232 220)')), + ('z', 'e', 'a', ST_GeomFromText('POINT(130 69)')), + ('r', 'u', 'z', ST_GeomFromText('POINT(243 241)')), + ('b', 'n', 't', ST_GeomFromText('POINT(120 12)')), + ('u', 'f', 's', ST_GeomFromText('POINT(190 212)')), + ('a', 'd', 'q', ST_GeomFromText('POINT(235 191)')), + ('f', 'q', 'm', ST_GeomFromText('POINT(176 2)')), + ('n', 'c', 's', ST_GeomFromText('POINT(218 163)')), + ('e', 'm', 'h', ST_GeomFromText('POINT(163 108)')), + ('c', 'f', 'l', ST_GeomFromText('POINT(220 115)')), + ('c', 'v', 'q', ST_GeomFromText('POINT(66 45)')), + ('w', 'v', 'x', ST_GeomFromText('POINT(251 220)')), + ('f', 'w', 'z', ST_GeomFromText('POINT(146 149)')), + ('h', 'n', 'h', ST_GeomFromText('POINT(148 128)')), + ('y', 'k', 'v', ST_GeomFromText('POINT(28 110)')), + ('c', 'x', 'q', ST_GeomFromText('POINT(13 13)')), + ('e', 'd', 's', ST_GeomFromText('POINT(91 190)')), + ('c', 'w', 'c', ST_GeomFromText('POINT(10 231)')), + ('u', 'j', 'n', ST_GeomFromText('POINT(250 21)')), + ('w', 'n', 'x', ST_GeomFromText('POINT(141 69)')), + ('f', 'p', 'y', ST_GeomFromText('POINT(228 246)')), + ('d', 'q', 'f', ST_GeomFromText('POINT(194 22)')), + ('d', 'z', 'l', ST_GeomFromText('POINT(233 181)')), + ('c', 'a', 'q', ST_GeomFromText('POINT(183 96)')), + ('m', 'i', 'd', ST_GeomFromText('POINT(117 226)')), + ('z', 'y', 'y', ST_GeomFromText('POINT(62 81)')), + ('g', 'v', 'm', ST_GeomFromText('POINT(66 158)')); +SET @@RAND_SEED1=481064922, @@RAND_SEED2=438133497; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=280535103, @@RAND_SEED2=444518646; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=1072017234, @@RAND_SEED2=484203885; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=358851897, @@RAND_SEED2=358495224; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +SET @@RAND_SEED1=509031459, @@RAND_SEED2=675962925; +DELETE FROM t1 ORDER BY RAND() LIMIT 10; +#UPDATE t1 set spatial_point=ST_GeomFromText('POINT(61 203)') where c1 like 'y%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(202 194)') where c1 like 'f%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(228 18)') where c1 like 'h%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(88 18)') where c1 like 'l%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(176 94)') where c1 like 'e%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(44 47)') where c1 like 'g%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(95 191)') where c1 like 'b%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(179 218)') where c1 like 'y%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(239 40)') where c1 like 'g%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(248 41)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(167 82)') where c1 like 't%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(13 104)') where c1 like 'u%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(139 84)') where c1 like 'a%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(145 108)') where c1 like 'p%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(147 57)') where c1 like 't%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(217 144)') where c1 like 'n%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(160 224)') where c1 like 'w%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(38 28)') where c1 like 'j%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(104 114)') where c1 like 'q%'; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(88 19)') where c1 like 'c%'; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('f', 'x', 'p', ST_GeomFromText('POINT(92 181)')), + ('s', 'i', 'c', ST_GeomFromText('POINT(49 60)')), + ('c', 'c', 'i', ST_GeomFromText('POINT(7 57)')), + ('n', 'g', 'k', ST_GeomFromText('POINT(252 105)')), + ('g', 'b', 'm', ST_GeomFromText('POINT(180 11)')), + ('u', 'l', 'r', ST_GeomFromText('POINT(32 90)')), + ('c', 'x', 'e', ST_GeomFromText('POINT(143 24)')), + ('x', 'u', 'a', ST_GeomFromText('POINT(123 92)')), + ('s', 'b', 'h', ST_GeomFromText('POINT(190 108)')), + ('c', 'x', 'b', ST_GeomFromText('POINT(104 100)')), + ('i', 'd', 't', ST_GeomFromText('POINT(214 104)')), + ('r', 'w', 'g', ST_GeomFromText('POINT(29 67)')), + ('b', 'f', 'g', ST_GeomFromText('POINT(149 46)')), + ('r', 'r', 'd', ST_GeomFromText('POINT(242 196)')), + ('j', 'l', 'a', ST_GeomFromText('POINT(90 196)')), + ('e', 't', 'b', ST_GeomFromText('POINT(190 64)')), + ('l', 'x', 'w', ST_GeomFromText('POINT(250 73)')), + ('q', 'y', 'r', ST_GeomFromText('POINT(120 182)')), + ('s', 'j', 'a', ST_GeomFromText('POINT(180 175)')), + ('n', 'i', 'y', ST_GeomFromText('POINT(124 136)')), + ('s', 'x', 's', ST_GeomFromText('POINT(176 209)')), + ('u', 'f', 's', ST_GeomFromText('POINT(215 173)')), + ('m', 'j', 'x', ST_GeomFromText('POINT(44 140)')), + ('v', 'g', 'x', ST_GeomFromText('POINT(177 233)')), + ('u', 't', 'b', ST_GeomFromText('POINT(136 197)')), + ('f', 'g', 'b', ST_GeomFromText('POINT(10 8)')), + ('v', 'c', 'j', ST_GeomFromText('POINT(13 81)')), + ('d', 's', 'q', ST_GeomFromText('POINT(200 100)')), + ('a', 'p', 'j', ST_GeomFromText('POINT(33 40)')), + ('i', 'c', 'g', ST_GeomFromText('POINT(168 204)')), + ('k', 'h', 'i', ST_GeomFromText('POINT(93 243)')), + ('s', 'b', 's', ST_GeomFromText('POINT(157 13)')), + ('v', 'l', 'l', ST_GeomFromText('POINT(103 6)')), + ('r', 'b', 'k', ST_GeomFromText('POINT(244 137)')), + ('l', 'd', 'r', ST_GeomFromText('POINT(162 254)')), + ('q', 'b', 'z', ST_GeomFromText('POINT(136 246)')), + ('x', 'x', 'p', ST_GeomFromText('POINT(120 37)')), + ('m', 'e', 'z', ST_GeomFromText('POINT(203 167)')), + ('q', 'n', 'p', ST_GeomFromText('POINT(94 119)')), + ('b', 'g', 'u', ST_GeomFromText('POINT(93 248)')), + ('r', 'v', 'v', ST_GeomFromText('POINT(53 88)')), + ('y', 'a', 'i', ST_GeomFromText('POINT(98 219)')), + ('a', 's', 'g', ST_GeomFromText('POINT(173 138)')), + ('c', 'a', 't', ST_GeomFromText('POINT(235 135)')), + ('q', 'm', 'd', ST_GeomFromText('POINT(224 208)')), + ('e', 'p', 'k', ST_GeomFromText('POINT(161 238)')), + ('n', 'g', 'q', ST_GeomFromText('POINT(35 204)')), + ('t', 't', 'x', ST_GeomFromText('POINT(230 178)')), + ('w', 'f', 'a', ST_GeomFromText('POINT(150 221)')), + ('z', 'm', 'z', ST_GeomFromText('POINT(119 42)')), + ('l', 'j', 's', ST_GeomFromText('POINT(97 96)')), + ('f', 'z', 'x', ST_GeomFromText('POINT(208 65)')), + ('i', 'v', 'c', ST_GeomFromText('POINT(145 79)')), + ('l', 'f', 'k', ST_GeomFromText('POINT(83 234)')), + ('u', 'a', 's', ST_GeomFromText('POINT(250 49)')), + ('o', 'k', 'p', ST_GeomFromText('POINT(46 50)')), + ('d', 'e', 'z', ST_GeomFromText('POINT(30 198)')), + ('r', 'r', 'l', ST_GeomFromText('POINT(78 189)')), + ('y', 'l', 'f', ST_GeomFromText('POINT(188 132)')), + ('d', 'q', 'm', ST_GeomFromText('POINT(247 107)')), + ('p', 'j', 'n', ST_GeomFromText('POINT(148 227)')), + ('b', 'o', 'i', ST_GeomFromText('POINT(172 25)')), + ('e', 'v', 'd', ST_GeomFromText('POINT(94 248)')), + ('q', 'd', 'f', ST_GeomFromText('POINT(15 29)')), + ('w', 'b', 'b', ST_GeomFromText('POINT(74 111)')), + ('g', 'q', 'f', ST_GeomFromText('POINT(107 215)')), + ('o', 'h', 'r', ST_GeomFromText('POINT(25 168)')), + ('u', 't', 'w', ST_GeomFromText('POINT(251 188)')), + ('h', 's', 'w', ST_GeomFromText('POINT(254 247)')), + ('f', 'f', 'b', ST_GeomFromText('POINT(166 103)')); +SET @@RAND_SEED1=866613816, @@RAND_SEED2=92289615; +INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES + ('l', 'c', 'l', ST_GeomFromText('POINT(202 98)')), + ('k', 'c', 'b', ST_GeomFromText('POINT(46 206)')), + ('r', 'y', 'm', ST_GeomFromText('POINT(74 140)')), + ('y', 'z', 'd', ST_GeomFromText('POINT(200 160)')), + ('s', 'y', 's', ST_GeomFromText('POINT(156 205)')), + ('u', 'v', 'p', ST_GeomFromText('POINT(86 82)')), + ('j', 's', 's', ST_GeomFromText('POINT(91 233)')), + ('x', 'j', 'f', ST_GeomFromText('POINT(3 14)')), + ('l', 'z', 'v', ST_GeomFromText('POINT(123 156)')), + ('h', 'i', 'o', ST_GeomFromText('POINT(145 229)')), + ('o', 'r', 'd', ST_GeomFromText('POINT(15 22)')), + ('f', 'x', 't', ST_GeomFromText('POINT(21 60)')), + ('t', 'g', 'h', ST_GeomFromText('POINT(50 153)')), + ('g', 'u', 'b', ST_GeomFromText('POINT(82 85)')), + ('v', 'a', 'p', ST_GeomFromText('POINT(231 178)')), + ('n', 'v', 'o', ST_GeomFromText('POINT(183 25)')), + ('j', 'n', 'm', ST_GeomFromText('POINT(50 144)')), + ('e', 'f', 'i', ST_GeomFromText('POINT(46 16)')), + ('d', 'w', 'a', ST_GeomFromText('POINT(66 6)')), + ('f', 'x', 'a', ST_GeomFromText('POINT(107 197)')), + ('m', 'o', 'a', ST_GeomFromText('POINT(142 80)')), + ('q', 'l', 'g', ST_GeomFromText('POINT(251 23)')), + ('c', 's', 's', ST_GeomFromText('POINT(158 43)')), + ('y', 'd', 'o', ST_GeomFromText('POINT(196 228)')), + ('d', 'p', 'l', ST_GeomFromText('POINT(107 5)')), + ('h', 'a', 'b', ST_GeomFromText('POINT(183 166)')), + ('m', 'w', 'p', ST_GeomFromText('POINT(19 59)')), + ('b', 'y', 'o', ST_GeomFromText('POINT(178 30)')), + ('x', 'w', 'i', ST_GeomFromText('POINT(168 94)')), + ('t', 'k', 'z', ST_GeomFromText('POINT(171 5)')), + ('r', 'm', 'a', ST_GeomFromText('POINT(222 19)')), + ('u', 'v', 'e', ST_GeomFromText('POINT(224 80)')), + ('q', 'r', 'k', ST_GeomFromText('POINT(212 218)')), + ('d', 'p', 'j', ST_GeomFromText('POINT(169 7)')), + ('d', 'r', 'v', ST_GeomFromText('POINT(193 23)')), + ('n', 'y', 'y', ST_GeomFromText('POINT(130 178)')), + ('m', 'z', 'r', ST_GeomFromText('POINT(81 200)')), + ('j', 'e', 'w', ST_GeomFromText('POINT(145 239)')), + ('v', 'h', 'x', ST_GeomFromText('POINT(24 105)')), + ('z', 'm', 'a', ST_GeomFromText('POINT(175 129)')), + ('b', 'c', 'v', ST_GeomFromText('POINT(213 10)')), + ('t', 't', 'u', ST_GeomFromText('POINT(2 129)')), + ('r', 's', 'v', ST_GeomFromText('POINT(209 192)')), + ('x', 'p', 'g', ST_GeomFromText('POINT(43 63)')), + ('t', 'e', 'u', ST_GeomFromText('POINT(139 210)')), + ('l', 'e', 't', ST_GeomFromText('POINT(245 148)')), + ('a', 'i', 'k', ST_GeomFromText('POINT(167 195)')), + ('m', 'o', 'h', ST_GeomFromText('POINT(206 120)')), + ('g', 'z', 's', ST_GeomFromText('POINT(169 240)')), + ('z', 'u', 's', ST_GeomFromText('POINT(202 120)')), + ('i', 'b', 'a', ST_GeomFromText('POINT(216 18)')), + ('w', 'y', 'g', ST_GeomFromText('POINT(119 236)')), + ('h', 'y', 'p', ST_GeomFromText('POINT(161 24)')); +CHECK TABLE t1 EXTENDED; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(33 100)') where c1 like 't%'; +CHECK TABLE t1 EXTENDED; +UPDATE t1 set spatial_point=ST_GeomFromText('POINT(41 46)') where c1 like 'f%'; +CHECK TABLE t1 EXTENDED; +DROP TABLE t1; + +# +# Bug #30286 spatial index cause corruption and server crash! +# + +create table t1 (a geometry not null, spatial index(a)); +insert into t1 values (POINT(1.1517219314031e+164, 131072)); +insert into t1 values (POINT(9.1248812352444e+192, 2.9740338169556e+284)); +insert into t1 values (POINT(4.7783097267365e-299, -0)); +insert into t1 values (POINT(1.49166814624e-154, 2.0880974297595e-53)); +insert into t1 values (POINT(4.0917382598702e+149, 1.2024538023802e+111)); +insert into t1 values (POINT(2.0349165139404e+236, 2.9993936277913e-241)); +insert into t1 values (POINT(2.5243548967072e-29, 1.2024538023802e+111)); +insert into t1 values (POINT(0, 6.9835074892995e-251)); +insert into t1 values (POINT(2.0880974297595e-53, 3.1050361846014e+231)); +insert into t1 values (POINT(2.8728483499323e-188, 2.4600631144627e+260)); +insert into t1 values (POINT(3.0517578125e-05, 2.0349165139404e+236)); +insert into t1 values (POINT(1.1517219314031e+164, 1.1818212630766e-125)); +insert into t1 values (POINT(2.481040258324e-265, 5.7766220027675e-275)); +insert into t1 values (POINT(2.0880974297595e-53, 2.5243548967072e-29)); +insert into t1 values (POINT(5.7766220027675e-275, 9.9464647281957e+86)); +insert into t1 values (POINT(2.2181357552967e+130, 3.7857669957337e-270)); +insert into t1 values (POINT(4.5767114681874e-246, 3.6893488147419e+19)); +insert into t1 values (POINT(4.5767114681874e-246, 3.7537584144024e+255)); +insert into t1 values (POINT(3.7857669957337e-270, 1.8033161362863e-130)); +insert into t1 values (POINT(0, 5.8774717541114e-39)); +insert into t1 values (POINT(1.1517219314031e+164, 2.2761049594727e-159)); +insert into t1 values (POINT(6.243497100632e+144, 3.7857669957337e-270)); +insert into t1 values (POINT(3.7857669957337e-270, 2.6355494858076e-82)); +insert into t1 values (POINT(2.0349165139404e+236, 3.8518598887745e-34)); +insert into t1 values (POINT(4.6566128730774e-10, 2.0880974297595e-53)); +insert into t1 values (POINT(2.0880974297595e-53, 1.8827498946116e-183)); +insert into t1 values (POINT(1.8033161362863e-130, 9.1248812352444e+192)); +insert into t1 values (POINT(4.7783097267365e-299, 2.2761049594727e-159)); +insert into t1 values (POINT(1.94906280228e+289, 1.2338789709327e-178)); +drop table t1; + +# End of 4.1 tests + +# +# bug #21790 (UNKNOWN ERROR on NULLs in RTree) +# +CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) ); +--error 1048 +INSERT INTO t1(foo) VALUES (NULL); +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +--error 1416 +INSERT INTO t1() VALUES (); +SET sql_mode = default; +--error 1416 +INSERT INTO t1(foo) VALUES (''); +DROP TABLE t1; + +# +# Bug #23578: Corruption prevents Optimize table from working properly with a +# spatial index +# + +CREATE TABLE t1 (a INT AUTO_INCREMENT, b POINT NOT NULL, KEY (a), SPATIAL KEY (b)); + +INSERT INTO t1 (b) VALUES (ST_GeomFromText('POINT(1 2)')); +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; +INSERT INTO t1 (b) SELECT b FROM t1; + +OPTIMIZE TABLE t1; +DROP TABLE t1; + + +# +# Bug #29070: Error in spatial index +# + +CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b)); +INSERT INTO t1 VALUES (1, ST_GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); +INSERT INTO t1 VALUES (2, ST_GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)')); + +# must return the same number as the next select +SELECT COUNT(*) FROM t1 WHERE + MBRINTERSECTS(b, ST_GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); +SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE + MBRINTERSECTS(b, ST_GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') ); + +DROP TABLE t1; + + +--echo # +--echo # Bug #48258: Assertion failed when using a spatial index +--echo # +CREATE TABLE t1(a LINESTRING NOT NULL, SPATIAL KEY(a)); +INSERT INTO t1 VALUES + (ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)')), + (ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)')); +EXPLAIN SELECT 1 FROM t1 WHERE a = ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +SELECT 1 FROM t1 WHERE a = ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT 1 FROM t1 WHERE a < ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +SELECT 1 FROM t1 WHERE a < ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT 1 FROM t1 WHERE a <= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +SELECT 1 FROM t1 WHERE a <= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT 1 FROM t1 WHERE a > ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +SELECT 1 FROM t1 WHERE a > ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +EXPLAIN SELECT 1 FROM t1 WHERE a >= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +--error ER_WRONG_ARGUMENTS +SELECT 1 FROM t1 WHERE a >= ST_GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'); +DROP TABLE t1; + + +--echo # +--echo # Bug #51357: crash when using handler commands on spatial indexes +--echo # + +CREATE TABLE t1(a GEOMETRY NOT NULL,SPATIAL INDEX a(a)); +HANDLER t1 OPEN; +HANDLER t1 READ a FIRST; +HANDLER t1 READ a NEXT; +HANDLER t1 READ a PREV; +HANDLER t1 READ a LAST; +HANDLER t1 CLOSE; + +# second crash fixed when the tree has changed since the last search. +HANDLER t1 OPEN; +HANDLER t1 READ a FIRST; +INSERT INTO t1 VALUES (ST_GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))')); +--echo # should not crash +--disable_result_log +HANDLER t1 READ a NEXT; +--enable_result_log +HANDLER t1 CLOSE; + +DROP TABLE t1; + + +--echo End of 5.0 tests. + + +--echo # +--echo # Bug #57323/11764487: myisam corruption with insert ignore +--echo # and invalid spatial data +--echo # + +CREATE TABLE t1(a LINESTRING NOT NULL, b GEOMETRY NOT NULL, + SPATIAL KEY(a), SPATIAL KEY(b)) ENGINE=InnoDB; +--error ER_CANT_CREATE_GEOMETRY_OBJECT +INSERT INTO t1 VALUES(ST_GEOMFROMTEXT("point (0 0)"), ST_GEOMFROMTEXT("point (1 1)")); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +INSERT IGNORE INTO t1 SET a=ST_GEOMFROMTEXT("point (-6 0)"), b=ST_GEOMFROMTEXT("error"); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +INSERT IGNORE INTO t1 SET a=ST_GEOMFROMTEXT("point (-6 0)"), b=NULL; +SELECT ST_ASTEXT(a), ST_ASTEXT(b) FROM t1; +DROP TABLE t1; + +CREATE TABLE t1(a INT NOT NULL, b GEOMETRY NOT NULL, + KEY(a), SPATIAL KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 VALUES(0, ST_GEOMFROMTEXT("point (1 1)")); +--error ER_GIS_INVALID_DATA +INSERT IGNORE INTO t1 SET a=0, b=ST_GEOMFROMTEXT("error"); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +INSERT IGNORE INTO t1 SET a=1, b=NULL; +SELECT a, ST_ASTEXT(b) FROM t1; +DROP TABLE t1; + +--echo End of 5.1 tests diff --git a/mysql-test/suite/innodb_gis/t/rtree_purge.test b/mysql-test/suite/innodb_gis/t/rtree_purge.test new file mode 100644 index 00000000000..86a1ecb88da --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_purge.test @@ -0,0 +1,52 @@ +# This test case will test R-tree purge. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_innodb_zip.inc +--source include/have_debug.inc +--source include/big_test.inc +# Valgrind takes too much time on PB2 even in the --big-test runs. +--source include/not_valgrind.inc + +# Temporarily disable it for 4k page size. Since it'll take too long +# time. +--disable_warnings +if (`SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_page_size' AND variable_value = 4096`) +{ + --skip Test requires InnoDB with not 4k Page size. +} +--enable_warnings + +create table t ( + a point not null,b point not null,c point, + d point not null,e point,f point, + spatial key (d),spatial key (b) +) engine=innodb; + +delimiter |; +create procedure p(i int) +begin + declare n int default 0; + declare continue handler for sqlexception begin end; + delete from t; + repeat + set @p=point(1,1); + insert into t values(@p,@p,@p,@p,@p,@p); + insert into t values(@p,@p,@p,@p,@p,@p); + insert into t select @p,@p,@p,@p,@p,@p + from t a,t b,t c,t d,t e,t f,t g,t h,t i,t j; + delete from t; + set n:=n+1; + until n >= i end repeat; +end| +delimiter ;| + +call p(200); + +--source include/wait_all_purged.inc + +# Clean up. +drop procedure p; +drop table t; diff --git a/mysql-test/suite/innodb_gis/t/rtree_recovery.test b/mysql-test/suite/innodb_gis/t/rtree_recovery.test new file mode 100644 index 00000000000..9e332c089f2 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_recovery.test @@ -0,0 +1,77 @@ +# WL#6745 InnoDB R-tree support +# This test case test R-tree crash/recovery. + +# Restart is not supported in embedded +--source include/not_embedded.inc +--source include/have_innodb.inc +--source include/no_valgrind_without_big.inc + +# Do a clean shutdown and restart so that the redo log is cleaned up from previous tests. +--source include/restart_mysqld.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +# Update values +delimiter |; +create procedure update_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + update t1 set c2 = Point(i + 10000, i + 10000) where c2 = Point(i, i); + set i = i + 1; + end while; +end| +delimiter ;| + + +# Test crash recovery. +# + +# Test level 1 rtree. +CALL insert_t1(367); +COMMIT; + +--source include/kill_and_restart_mysqld.inc + +# Check table. +check table t1; + +# Clean up. +drop table t1; + +# Test crash recovery on point spatial index. +create table t1 (c1 int, c2 point not null, spatial index (c2))engine=innodb; + +# Some DML on point spatial index. +CALL insert_t1(367); +CALL update_t1(367); + +SET @poly1 = ST_GeomFromText('POLYGON((10000 10000, 10000 10350, 10350 10350, 10350 10000, 10000 10000))'); +delete from t1 where ST_Contains(@poly1, c2); +COMMIT; + +--source include/kill_and_restart_mysqld.inc + +# Check table. +check table t1; + +select count(*) from t1; +select c1, ST_astext(c2) from t1; + +# Clean up. +drop procedure insert_t1; +drop procedure update_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_rollback1.test b/mysql-test/suite/innodb_gis/t/rtree_rollback1.test new file mode 100644 index 00000000000..123bccf76a1 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_rollback1.test @@ -0,0 +1,54 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/big_test.inc +--source include/not_valgrind.inc +--source include/have_innodb_16k.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +select count(*) from t1; +rollback; +check table t1; + +select count(*) from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +# Clean up. +drop table t1; + diff --git a/mysql-test/suite/innodb_gis/t/rtree_rollback2.test b/mysql-test/suite/innodb_gis/t/rtree_rollback2.test new file mode 100644 index 00000000000..cddbaf5592d --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_rollback2.test @@ -0,0 +1,34 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/big_test.inc +--source include/not_valgrind.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +start transaction; +CALL insert_t1(70000); +rollback; +check table t1; + +# Clean up. +drop procedure insert_t1; +drop table t1; + diff --git a/mysql-test/suite/innodb_gis/t/rtree_search.test b/mysql-test/suite/innodb_gis/t/rtree_search.test new file mode 100644 index 00000000000..3c591004042 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_search.test @@ -0,0 +1,140 @@ +# WL#6968 InnoDB R-tree cursor support + +# Not supported in embedded +--source include/not_embedded.inc +--source include/not_valgrind.inc + +--source include/have_innodb.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +# Test level 1 rtree. +CALL insert_t1(1000); +select count(*) from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); + +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((100 100,100 800,800 800,800 100,100 100))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +#SET DEBUG='+d, rtr_pessimistic_position'; +#select count(*) from t1 where MBRWithin(t1.c2, @g1); +#SET DEBUG='-d, rtr_pessimistic_position'; + +# Equality search +set @g1 = ST_GeomFromText('Point(1 1)'); +select count(*) from t1 where MBRequals(t1.c2, @g1); + +# MBRDisjoint search +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRdisjoint(t1.c2, @g1); + +# Clean up. +DROP PROCEDURE insert_t1; + +truncate t1; + +let $1=150; +let $2=150; +while ($1) +{ + eval INSERT INTO t1 VALUES ($1, ST_GeomFromText('LineString($1 $1, $2 $2)')); + dec $1; + inc $2; +} + +select count(*) from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))'); +select count(*) from t1 where MBRwithin(t1.c2, @g1); +truncate t1; + +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)')); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +# Testing "MBRtouches" +# This is apparently now treated as "intersects" +set @g1 = ST_GeomFromText('Polygon((0 0,0 2, 2 2, 2 0, 0 0))'); +select count(*) from t1 where MBRtouches(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +# Test MBRequals +set @g1 = ST_GeomFromText('LineString(2 2, 150 150)'); +select count(*) from t1 where MBRequals(t1.c2, @g1); + +# Test store procedure with open cursor +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +create table t3 (a int) engine = innodb; + +delimiter |; + +CREATE PROCEDURE curdemo() +BEGIN + DECLARE done INT DEFAULT FALSE; + DECLARE a INT; + + DECLARE cur1 CURSOR FOR SELECT c1 from t1 where MBRWithin(t1.c2, @g1); + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN cur1; + read_loop: LOOP + FETCH cur1 INTO a; + IF done THEN + LEAVE read_loop; + END IF; + INSERT INTO test.t3 VALUES (a); +END LOOP; + +CLOSE cur1; +END| + +delimiter ;| + +call curdemo(); + +select count(*) from t3; + +drop procedure curdemo; +drop table t3; +drop table t1; + diff --git a/mysql-test/suite/innodb_gis/t/rtree_split.test b/mysql-test/suite/innodb_gis/t/rtree_split.test new file mode 100644 index 00000000000..e6925940fcd --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_split.test @@ -0,0 +1,102 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree split, mostly on duplciate records. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/big_test.inc +--source include/not_valgrind.inc +--source include/have_debug.inc + +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +#Check second round spliting. +SET SESSION debug="+d, rtr_page_need_second_split"; +insert into t1 select * from t1; +SET SESSION debug="-d, rtr_page_need_second_split"; + +delete from t1; + +insert into t1 values(1, Point(1,1)); +insert into t1 values(2, Point(2,2)); +insert into t1 values(3, Point(3,3)); +insert into t1 values(4, Point(4,4)); +insert into t1 values(5, Point(5,5)); +insert into t1 values(6, Point(6,6)); +insert into t1 values(7, Point(7,7)); +insert into t1 values(8, Point(8,8)); +insert into t1 values(9, Point(9,9)); + +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; + +insert into t1 select * from t1; +insert into t1 select * from t1; + +insert into t1 select * from t1; +insert into t1 select * from t1; +start transaction; +insert into t1 select * from t1; +rollback; +check table t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +insert into t1 select * from t1; +check table t1; + +select count(*) from t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +drop index c2 on t1; + +# Test create index with algorithm=inplace +create spatial index idx2 on t1(c2); + +show create table t1; + +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +# test read only case +let $restart_parameters = restart: --innodb-read-only; +--source include/restart_mysqld.inc +set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))'); +select count(*) from t1 where MBRWithin(t1.c2, @g1); + +let $restart_parameters = restart; +--source include/restart_mysqld.inc + +# Clean up. +drop table t1; diff --git a/mysql-test/suite/innodb_gis/t/rtree_undo.test b/mysql-test/suite/innodb_gis/t/rtree_undo.test new file mode 100644 index 00000000000..5ed11f6165d --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_undo.test @@ -0,0 +1,38 @@ +# +# BUG#21340268 INNODB: BOGUS CHECK FOR MAXIMUM RECORD LENGTH WITH SPATIAL KEY +# BUG#21508582 UNDO LOG DOES NOT CONTAIN ENOUGH INFORMATION ON SPATIAL COLUMNS +# + +--source include/have_innodb.inc +--source include/count_sessions.inc + +connect (con1,localhost,root,,); +connection default; + +let $row_format = DYNAMIC; +let $prefix_size = 767; + +let $index = spatial_none; +--source include/innodb_gis_undo.inc + +let $index = spatial_only; +--source include/innodb_gis_undo.inc + +let $index = spatial_mixed; +--source include/innodb_gis_undo.inc + + +let $row_format = COMPACT; +let $prefix_size = 767; + +let $index = spatial_none; +--source include/innodb_gis_undo.inc + +let $index = spatial_only; +--source include/innodb_gis_undo.inc + +let $index = spatial_mixed; +--source include/innodb_gis_undo.inc + +disconnect con1; +--source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb_gis/t/types.test b/mysql-test/suite/innodb_gis/t/types.test new file mode 100644 index 00000000000..bd03e7b1dbe --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/types.test @@ -0,0 +1,89 @@ +# WL#6455 GEOMETRY datatypes support +# In order to implement GIS indexing in InnoDB, +# InnoDB needs to support GEOMETRY datatypes, +# so that InnoDB stores them properly and understands them. + +# Restarting is not supported in embedded +--source include/not_embedded.inc +--source include/have_innodb.inc +--source include/have_debug.inc + +# Avoid CrashReporter popup on Mac +--source include/not_crashrep.inc + +# Turn on the geometry data print. +SET SESSION debug="+d,row_print_geometry_data"; + +# Test GEOMETRY datatype. +CREATE TABLE t_wl6455 ( i INT, g GEOMETRY NOT NULL) ENGINE=InnoDB; +SHOW CREATE TABLE t_wl6455; + +# Insert Point. +INSERT INTO t_wl6455 VALUES(1, POINT(1,1)); + +INSERT INTO t_wl6455 VALUES(2, POINT(2,2)); + +# Insert MultiPoint. +SET @mp = 'MULTIPOINT(0 0, 20 20, 60 60)'; +INSERT INTO t_wl6455 VALUES(3, ST_GeomFromText(@mp)); + +# Insert LineString. +INSERT INTO t_wl6455 VALUES(4, LINESTRING(POINT(1,1), POINT(4, 4))); + +INSERT INTO t_wl6455 VALUES(5, LINESTRING(POINT(2,2), POINT(5, 5))); + +# Insert MultiLineString. +SET @mls = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; +INSERT INTO t_wl6455 VALUES(6, ST_GeomFromText(@mls)); + +# Insert Polygon. +SET @poly = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; +INSERT INTO t_wl6455 VALUES(7, ST_GeomFromText(@poly)); + +# Insert MultiPolygon. +SET @mpoly = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; +INSERT INTO t_wl6455 VALUES(8, ST_GeomFromText(@mpoly)); + +# Insert GeometryCollection. +SET @gc = 'GeometryCollection(Point(1 1),LineString(2 2, 3 3))'; +INSERT INTO t_wl6455 VALUES(9, ST_GeomFromText(@gc)); + +# Show result. +SELECT ST_AsText(g) FROM t_wl6455; + +# Test create prefix index. +CREATE INDEX i_p ON t_wl6455 (g(10)); + +# Select on prefix index. +--replace_column 10 # +EXPLAIN SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(2,2); +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(2,2); + +# Test rollback/commit +SET AUTOCOMMIT = 0; +INSERT INTO t_wl6455 VALUES(10, POINT(10,10)); +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(10,10); +ROLLBACK; +SELECT ST_AsText(g) FROM t_wl6455 WHERE g = POINT(10,10); + +INSERT INTO t_wl6455 VALUES(10, POINT(10,10)); +COMMIT; + +INSERT INTO t_wl6455 VALUES(11, POINT(11,11)); +BEGIN; +INSERT INTO t_wl6455 VALUES(1, POINT(1,1)); + +--source include/kill_and_restart_mysqld.inc + +CHECK TABLE t_wl6455; +SELECT ST_AsText(g) FROM t_wl6455; + +# Check information_schema, the mtype of GEOMETRY datatype is 14. +SELECT sc.name, sc.pos, sc.mtype +FROM information_schema.innodb_sys_columns sc +INNER JOIN information_schema.innodb_sys_tables st +ON sc.TABLE_ID=st.TABLE_ID +WHERE st.NAME='test/t_wl6455' AND sc.NAME='g'; + +# Clean up +DROP TABLE t_wl6455; diff --git a/mysql-test/suite/innodb_gis/t/update_root.test b/mysql-test/suite/innodb_gis/t/update_root.test new file mode 100644 index 00000000000..395fc715f31 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/update_root.test @@ -0,0 +1,39 @@ +# WL#6745 InnoDB R-tree support +# This test case will test R-tree multi level split. + +# Not supported in embedded +--source include/not_embedded.inc + +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/big_test.inc +--source include/not_valgrind.inc +# Create table with R-tree index. +create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; + +# Insert enough values to let R-tree split. +delimiter |; +create procedure insert_t1(IN total int) +begin + declare i int default 1; + while (i <= total) DO + insert into t1 values (i, Point(i, i)); + set i = i + 1; + end while; +end| +delimiter ;| + +# Test level 3 rtree. +CALL insert_t1(70000); + +CALL insert_t1(90); +CALL insert_t1(90); +CALL insert_t1(83); + +insert into t1 values (0, Point(0.9, 0.9)); + +# Check table. +check table t1; + +drop procedure insert_t1; +drop table t1; diff --git a/mysql-test/suite/innodb_zip/r/16k.result b/mysql-test/suite/innodb_zip/r/16k.result index 5b3ab412cfc..c1efeea329b 100644 --- a/mysql-test/suite/innodb_zip/r/16k.result +++ b/mysql-test/suite/innodb_zip/r/16k.result @@ -37,10 +37,10 @@ test/t3 5 41 PRIMARY 3 3 1 50 test/t4 5 33 PRIMARY 3 3 1 50 === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t1 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t1.ibd -test/t2 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t2.ibd +test/t1 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t1.ibd +test/t2 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t2.ibd test/t3 Single DEFAULT 8192 Compressed MYSQLD_DATADIR/test/t3.ibd -test/t4 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4.ibd +test/t4 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4.ibd DROP TABLE t1, t2, t3, t4; # Test 4) The maximum row size is dependent upon the page size. # Redundant: 8123, Compact: 8126. @@ -398,9 +398,10 @@ CREATE INDEX t1e ON t1 (e(767)); UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c; CREATE INDEX t1f ON t1 (f(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -433,8 +434,9 @@ UPDATE t1 SET r=@e; CREATE INDEX t1s ON t1 (s(767)); UPDATE t1 SET s=@e; CREATE INDEX t1t ON t1 (t(767)); +BEGIN; UPDATE t1 SET t=@e; -ERROR HY000: Undo log record is too big +ROLLBACK; CREATE INDEX t1u ON t1 (u(767)); CREATE INDEX t1ut ON t1 (u(767), t(767)); CREATE INDEX t1st ON t1 (s(767), t(767)); @@ -611,11 +613,11 @@ PRIMARY KEY (b(10), a), INDEX (c(767)), INDEX(b(767)) ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; INSERT INTO bug12547647 VALUES (5,REPEAT('khdfo5AlOq',1900),REPEAT('g',7751)); COMMIT; +BEGIN; UPDATE bug12547647 SET c = REPEAT('b',16928); -ERROR HY000: Undo log record is too big SHOW WARNINGS; Level Code Message -Error 1713 Undo log record is too big +ROLLBACK; DROP TABLE bug12547647; SET SESSION innodb_strict_mode = off; CREATE TABLE t1( diff --git a/mysql-test/suite/innodb_zip/r/4k.result b/mysql-test/suite/innodb_zip/r/4k.result index 36721852b7e..585e54f1b94 100644 --- a/mysql-test/suite/innodb_zip/r/4k.result +++ b/mysql-test/suite/innodb_zip/r/4k.result @@ -41,10 +41,10 @@ test/t3 5 37 PRIMARY 3 3 1 50 test/t4 5 33 PRIMARY 3 3 1 50 === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t1 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t1.ibd -test/t2 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t2.ibd +test/t1 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t1.ibd +test/t2 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t2.ibd test/t3 Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t3.ibd -test/t4 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4.ibd +test/t4 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4.ibd DROP TABLE t1, t2, t3, t4; # Test 4) The maximum row size is dependent upon the page size. # Redundant: 1979, Compact: 1982. @@ -263,9 +263,10 @@ CREATE INDEX t1a ON t1 (a(767)); UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c; CREATE INDEX t1b ON t1 (b(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -274,8 +275,9 @@ COMMIT; CREATE INDEX t1c ON t1 (c(767)); UPDATE t1 SET c=@e; CREATE INDEX t1d ON t1 (d(767)); +BEGIN; UPDATE t1 SET d=@e; -ERROR HY000: Undo log record is too big +ROLLBACK; CREATE INDEX t1e ON t1 (e(767)); SHOW CREATE TABLE t1; Table Create Table diff --git a/mysql-test/suite/innodb_zip/r/8k.result b/mysql-test/suite/innodb_zip/r/8k.result index f466b6d1feb..c6ca2c7a9d3 100644 --- a/mysql-test/suite/innodb_zip/r/8k.result +++ b/mysql-test/suite/innodb_zip/r/8k.result @@ -41,10 +41,10 @@ test/t3 5 39 PRIMARY 3 3 1 50 test/t4 5 33 PRIMARY 3 3 1 50 === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t1 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t1.ibd -test/t2 Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t2.ibd +test/t1 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t1.ibd +test/t2 Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t2.ibd test/t3 Single DEFAULT 4096 Compressed MYSQLD_DATADIR/test/t3.ibd -test/t4 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4.ibd +test/t4 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4.ibd DROP TABLE t1, t2, t3, t4; # Test 4) The maximum row size is dependent upon the page size. # Redundant: 4027, Compact: 4030. @@ -276,9 +276,10 @@ CREATE INDEX t1b ON t1 (b(767)); UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c; CREATE INDEX t1c ON t1 (c(767)); +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; -ERROR HY000: Undo log record is too big +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -298,8 +299,9 @@ CREATE INDEX t1i ON t1 (i(767)); UPDATE t1 SET i=@e; CREATE INDEX t1k ON t1 (j(767)); CREATE INDEX t1j ON t1 (j(500)); +BEGIN; UPDATE t1 SET j=@e; -ERROR HY000: Undo log record is too big +ROLLBACK; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/suite/innodb_zip/r/restart.result b/mysql-test/suite/innodb_zip/r/restart.result index 88bd79cd428..c4e6daf73fe 100644 --- a/mysql-test/suite/innodb_zip/r/restart.result +++ b/mysql-test/suite/innodb_zip/r/restart.result @@ -211,18 +211,18 @@ test/t7_restart#p#p1#sp#s2 test/t7_restart#p#p1#sp#s2 97 8 Dynamic 0 Single test/t7_restart#p#p1#sp#s3 test/t7_restart#p#p1#sp#s3 97 8 Dynamic 0 Single === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t1_restart Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t1_restart.ibd -test/t2_restart Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t2_restart.ibd +test/t1_restart Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t1_restart.ibd +test/t2_restart Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t2_restart.ibd test/t3_restart Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t3_restart.ibd -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t5_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd -test/t6_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd -test/t6_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd -test/t6_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd -test/t7_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd -test/t7_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd -test/t7_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd -test/t7_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t5_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd +test/t6_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd +test/t6_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd +test/t6_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd +test/t7_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd +test/t7_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd +test/t7_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd +test/t7_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd # # Shutdown the server and list the tablespace OS files # @@ -394,18 +394,18 @@ test/t7_restart#p#p1#sp#s2 test/t7_restart#p#p1#sp#s2 97 8 Dynamic 0 Single test/t7_restart#p#p1#sp#s3 test/t7_restart#p#p1#sp#s3 97 8 Dynamic 0 Single === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t1_restart Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t1_restart.ibd -test/t2_restart Single DEFAULT 0 Compact or Redundant MYSQLD_DATADIR/test/t2_restart.ibd +test/t1_restart Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t1_restart.ibd +test/t2_restart Single DEFAULT DEFAULT Compact or Redundant MYSQLD_DATADIR/test/t2_restart.ibd test/t3_restart Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t3_restart.ibd -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t5_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd -test/t6_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd -test/t6_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd -test/t6_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd -test/t7_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd -test/t7_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd -test/t7_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd -test/t7_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t5_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd +test/t6_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd +test/t6_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd +test/t6_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd +test/t7_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd +test/t7_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd +test/t7_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd +test/t7_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd DROP TABLE t1_restart; DROP TABLE t2_restart; DROP TABLE t3_restart; @@ -417,15 +417,15 @@ ALTER TABLE t6_restart TRUNCATE PARTITION p2; ALTER TABLE t7_restart TRUNCATE PARTITION p1; === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t5_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd -test/t6_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd -test/t6_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd -test/t6_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd -test/t7_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd -test/t7_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd -test/t7_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd -test/t7_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t5_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd +test/t6_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd +test/t6_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd +test/t6_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd +test/t7_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd +test/t7_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd +test/t7_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd +test/t7_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd INSERT INTO t5_restart VALUES (1000000000, 'MySQL', 'InnoDB', '2011-11-11', 'Read this after reboot'); INSERT INTO t5_restart (SELECT 0, c2, c3, c4, c5 FROM t5_restart); INSERT INTO t5_restart (SELECT 0, c2, c3, c4, c5 FROM t5_restart); @@ -520,15 +520,15 @@ Variable_name Value innodb_file_per_table ON === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t5_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd -test/t6_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd -test/t6_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd -test/t6_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd -test/t7_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd -test/t7_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd -test/t7_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd -test/t7_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t5_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t5_restart.ibd +test/t6_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p0.ibd +test/t6_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p1.ibd +test/t6_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t6_restart#p#p2.ibd +test/t7_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s0.ibd +test/t7_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p0#sp#s1.ibd +test/t7_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s2.ibd +test/t7_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t7_restart#p#p1#sp#s3.ibd SELECT count(*) FROM t5_restart; count(*) 8 @@ -620,15 +620,15 @@ RENAME TABLE t6_restart TO t66_restart; RENAME TABLE t7_restart TO t77_restart; === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t55_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd -test/t66_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd -test/t66_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd -test/t66_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd -test/t77_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd -test/t77_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd -test/t77_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd -test/t77_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t55_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd +test/t66_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd +test/t66_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd +test/t66_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd +test/t77_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd +test/t77_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd +test/t77_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd +test/t77_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd INSERT INTO t55_restart (SELECT 0, c2, c3, c4, c5 FROM t55_restart); SELECT count(*) FROM t55_restart; count(*) @@ -716,15 +716,15 @@ Variable_name Value innodb_file_per_table ON === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t55_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd -test/t66_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd -test/t66_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd -test/t66_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd -test/t77_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd -test/t77_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd -test/t77_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd -test/t77_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t55_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t55_restart.ibd +test/t66_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p0.ibd +test/t66_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p1.ibd +test/t66_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/alt_dir/test/t66_restart#p#p2.ibd +test/t77_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s0.ibd +test/t77_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p0#sp#s1.ibd +test/t77_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s2.ibd +test/t77_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/alt_dir/test/t77_restart#p#p1#sp#s3.ibd INSERT INTO t55_restart (SELECT 0, c2, c3, c4, c5 FROM t55_restart); SELECT count(*) FROM t55_restart; count(*) @@ -847,15 +847,15 @@ t77_restart#p#p1#sp#s3.ibd # === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t4_restart.ibd -test/t55_restart Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t55_restart.ibd -test/t66_restart#p#p0 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p0.ibd -test/t66_restart#p#p1 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p1.ibd -test/t66_restart#p#p2 Single DEFAULT 2048 Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p2.ibd -test/t77_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s0.ibd -test/t77_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s1.ibd -test/t77_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s2.ibd -test/t77_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t4_restart.ibd +test/t55_restart Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t55_restart.ibd +test/t66_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p0.ibd +test/t66_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p1.ibd +test/t66_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQL_TMP_DIR/new_dir/test/t66_restart#p#p2.ibd +test/t77_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s0.ibd +test/t77_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p0#sp#s1.ibd +test/t77_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s2.ibd +test/t77_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQL_TMP_DIR/new_dir/test/t77_restart#p#p1#sp#s3.ibd INSERT INTO t4_restart (SELECT 0, c2, c3, c4, c5 FROM t4_restart); SELECT count(*) FROM t4_restart; count(*) @@ -982,15 +982,15 @@ t77_restart.par # === information_schema.innodb_sys_tablespaces and innodb_sys_datafiles === Space_Name Space_Type Page_Size Zip_Size Formats_Permitted Path -test/t4_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t4_restart.ibd -test/t55_restart Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t55_restart.ibd -test/t66_restart#p#p0 Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t66_restart#p#p0.ibd -test/t66_restart#p#p1 Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t66_restart#p#p1.ibd -test/t66_restart#p#p2 Single DEFAULT 2048 Compressed MYSQLD_DATADIR/test/t66_restart#p#p2.ibd -test/t77_restart#p#p0#sp#s0 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s0.ibd -test/t77_restart#p#p0#sp#s1 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s1.ibd -test/t77_restart#p#p1#sp#s2 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s2.ibd -test/t77_restart#p#p1#sp#s3 Single DEFAULT 0 Dynamic MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s3.ibd +test/t4_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t4_restart.ibd +test/t55_restart Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t55_restart.ibd +test/t66_restart#p#p0 Single DEFAULT DEFAULT Compressed MYSQLD_DATADIR/test/t66_restart#p#p0.ibd +test/t66_restart#p#p1 Single DEFAULT DEFAULT Compressed MYSQLD_DATADIR/test/t66_restart#p#p1.ibd +test/t66_restart#p#p2 Single DEFAULT DEFAULT Compressed MYSQLD_DATADIR/test/t66_restart#p#p2.ibd +test/t77_restart#p#p0#sp#s0 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s0.ibd +test/t77_restart#p#p0#sp#s1 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t77_restart#p#p0#sp#s1.ibd +test/t77_restart#p#p1#sp#s2 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s2.ibd +test/t77_restart#p#p1#sp#s3 Single DEFAULT DEFAULT Dynamic MYSQLD_DATADIR/test/t77_restart#p#p1#sp#s3.ibd INSERT INTO t4_restart (SELECT 0, c2, c3, c4, c5 FROM t4_restart); SELECT count(*) FROM t4_restart; count(*) diff --git a/mysql-test/suite/innodb_zip/t/16k.test b/mysql-test/suite/innodb_zip/t/16k.test index b6f8467ebce..6a829e6bbb6 100644 --- a/mysql-test/suite/innodb_zip/t/16k.test +++ b/mysql-test/suite/innodb_zip/t/16k.test @@ -439,9 +439,10 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, # But a single transaction can update the columns in separate statements. # because the UNDO records will be smaller. CREATE INDEX t1f ON t1 (f(767)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -480,8 +481,9 @@ UPDATE t1 SET s=@e; # This is a problem. It means that the DDL is allowed to create a table # that CANNOT be updated. See bug#12953735. CREATE INDEX t1t ON t1 (t(767)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET t=@e; +ROLLBACK; CREATE INDEX t1u ON t1 (u(767)); CREATE INDEX t1ut ON t1 (u(767), t(767)); @@ -618,9 +620,10 @@ PRIMARY KEY (b(10), a), INDEX (c(767)), INDEX(b(767)) INSERT INTO bug12547647 VALUES (5,REPEAT('khdfo5AlOq',1900),REPEAT('g',7751)); COMMIT; # The following used to cause a hang while doing infinite undo log allocation. ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE bug12547647 SET c = REPEAT('b',16928); SHOW WARNINGS; +ROLLBACK; DROP TABLE bug12547647; # The following should fail in non-strict mode too. diff --git a/mysql-test/suite/innodb_zip/t/4k.test b/mysql-test/suite/innodb_zip/t/4k.test index 9f2db6a540a..3b8c1771a96 100644 --- a/mysql-test/suite/innodb_zip/t/4k.test +++ b/mysql-test/suite/innodb_zip/t/4k.test @@ -19,7 +19,7 @@ SELECT variable_value FROM information_schema.global_status --echo # Test 2) The number of buffer pool pages is dependent upon the page size. --disable_warnings ---replace_result 6144 {checked_valid} +--replace_result 2048 {checked_valid} SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total'; --enable_warnings @@ -276,9 +276,10 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, # But a single transaction can update the columns in separate statements. # because the UNDO records will be smaller. CREATE INDEX t1b ON t1 (b(767)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -293,8 +294,9 @@ UPDATE t1 SET c=@e; # This is a problem. It means that the DDL is allowed to create a table # that CANNOT be updated. See bug#12953735. CREATE INDEX t1d ON t1 (d(767)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET d=@e; +ROLLBACK; --replace_regex /> [0-9]*/> max_row_size/ CREATE INDEX t1e ON t1 (e(767)); diff --git a/mysql-test/suite/innodb_zip/t/8k.test b/mysql-test/suite/innodb_zip/t/8k.test index 216c5a7b5b4..e10d48cb284 100644 --- a/mysql-test/suite/innodb_zip/t/8k.test +++ b/mysql-test/suite/innodb_zip/t/8k.test @@ -19,7 +19,7 @@ SELECT variable_value FROM information_schema.global_status --echo # Test 2) The number of buffer pool pages is dependent upon the page size. --disable_warnings ---replace_result 3071 {checked_valid} 3072 {checked_valid} +--replace_result 1023 {checked_valid} 1024 {checked_valid} SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total'; --enable_warnings @@ -294,9 +294,10 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c, # But a single transaction can update the columns in separate statements. # because the UNDO records will be smaller. CREATE INDEX t1c ON t1 (c(767)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d,f=@d,g=@d,h=@d,i=@d,j=@d, k=@d,l=@d,m=@d,n=@d,o=@d,p=@d,q=@d,r=@d,s=@d,t=@d,u=@d; +ROLLBACK; BEGIN; UPDATE t1 SET a=@d,b=@d,c=@d,d=@d,e=@d; UPDATE t1 SET f=@d,g=@d,h=@d,i=@d,j=@d,k=@d,l=@d,m=@d, @@ -326,8 +327,9 @@ CREATE INDEX t1k ON t1 (j(767)); # See bug#12953735 --replace_regex /> [0-9]*/> max_row_size/ CREATE INDEX t1j ON t1 (j(500)); ---error ER_UNDO_RECORD_TOO_BIG +BEGIN; UPDATE t1 SET j=@e; +ROLLBACK; SHOW CREATE TABLE t1; DROP TABLE t1; diff --git a/mysql-test/suite/maria/maria.result b/mysql-test/suite/maria/maria.result index b5fbcbe113d..c7a08c4d95e 100644 --- a/mysql-test/suite/maria/maria.result +++ b/mysql-test/suite/maria/maria.result @@ -1607,8 +1607,16 @@ t1 CREATE TABLE `t1` ( `v` mediumtext CHARACTER SET utf8 DEFAULT NULL ) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 drop table t1; +set statement sql_mode='' for create table t1 (v varchar(65535)); -ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs +Warnings: +Note 1246 Converting column 'v' from VARCHAR to TEXT +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `v` text DEFAULT NULL +) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 +drop table t1; set @save_concurrent_insert=@@concurrent_insert; set global concurrent_insert=1; create table t1 (a int) ROW_FORMAT=FIXED; diff --git a/mysql-test/suite/maria/maria.test b/mysql-test/suite/maria/maria.test index e710f32ef80..24b97577d5e 100644 --- a/mysql-test/suite/maria/maria.test +++ b/mysql-test/suite/maria/maria.test @@ -931,8 +931,10 @@ show create table t1; drop table t1; # ARIA specific varchar tests ---error 1118 +set statement sql_mode='' for create table t1 (v varchar(65535)); +show create table t1; +drop table t1; # # Test concurrent insert diff --git a/mysql-test/suite/mariabackup/compress_qpress.result b/mysql-test/suite/mariabackup/compress_qpress.result new file mode 100644 index 00000000000..f8dfb46e4db --- /dev/null +++ b/mysql-test/suite/mariabackup/compress_qpress.result @@ -0,0 +1,15 @@ +CREATE TABLE t(i INT) ENGINE INNODB; +INSERT INTO t VALUES(1); +# xtrabackup backup +INSERT INTO t VALUES(2); +# xtrabackup prepare +t.frm.qp +t.ibd.qp +# shutdown server +# remove datadir +# xtrabackup move back +# restart server +SELECT * FROM t; +i +1 +DROP TABLE t; diff --git a/mysql-test/suite/mariabackup/compress_qpress.test b/mysql-test/suite/mariabackup/compress_qpress.test new file mode 100644 index 00000000000..f86efe44e5d --- /dev/null +++ b/mysql-test/suite/mariabackup/compress_qpress.test @@ -0,0 +1,24 @@ +CREATE TABLE t(i INT) ENGINE INNODB; +INSERT INTO t VALUES(1); +echo # xtrabackup backup; +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; + +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --compress --target-dir=$targetdir; +--enable_result_log + +INSERT INTO t VALUES(2); + + +echo # xtrabackup prepare; +--disable_result_log +list_files $targetdir/test *.qp; +exec $XTRABACKUP --decompress --remove-original --target-dir=$targetdir; +list_files $targetdir/test *.qp; +exec $XTRABACKUP --prepare --target-dir=$targetdir; +-- source include/restart_and_restore.inc +--enable_result_log + +SELECT * FROM t; +DROP TABLE t; +rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/suite.pm b/mysql-test/suite/mariabackup/suite.pm index 26d5c06cdad..9242bbc051f 100644 --- a/mysql-test/suite/mariabackup/suite.pm +++ b/mysql-test/suite/mariabackup/suite.pm @@ -23,9 +23,13 @@ $ENV{XBSTREAM}= ::mtr_exe_maybe_exists( $ENV{INNOBACKUPEX}= "$mariabackup_exe --innobackupex"; +my $have_qpress = index(`qpress 2>&1`,"Compression") > 0; + + sub skip_combinations { my %skip; $skip{'include/have_file_key_management.inc'} = 'needs file_key_management plugin' unless $ENV{FILE_KEY_MANAGEMENT_SO}; + $skip{'compress_qpress.test'}= 'needs qpress executable in PATH' unless $have_qpress; %skip; } diff --git a/mysql-test/suite/mariabackup/xb_file_key_management.result b/mysql-test/suite/mariabackup/xb_file_key_management.result index 8972da32f8b..721d10a9d91 100644 --- a/mysql-test/suite/mariabackup/xb_file_key_management.result +++ b/mysql-test/suite/mariabackup/xb_file_key_management.result @@ -9,6 +9,7 @@ INSERT INTO t VALUES('foobar2'); # remove datadir # xtrabackup move back # restart server +ib_logfile0 SELECT * FROM t; c foobar1 diff --git a/mysql-test/suite/mariabackup/xb_file_key_management.test b/mysql-test/suite/mariabackup/xb_file_key_management.test index 3887a889aaa..2a176952053 100644 --- a/mysql-test/suite/mariabackup/xb_file_key_management.test +++ b/mysql-test/suite/mariabackup/xb_file_key_management.test @@ -24,6 +24,7 @@ exec $XTRABACKUP --prepare --target-dir=$targetdir; --enable_result_log --list_files $targetdir ib_logfile* +--cat_file $targetdir/ib_logfile0 SELECT * FROM t; DROP TABLE t; diff --git a/mysql-test/suite/parts/r/partition_alter_maria.result b/mysql-test/suite/parts/r/partition_alter_maria.result new file mode 100644 index 00000000000..6343566e408 --- /dev/null +++ b/mysql-test/suite/parts/r/partition_alter_maria.result @@ -0,0 +1,18 @@ +create table t1 ( +pk bigint not null auto_increment, +dt datetime default null, +unique (pk, dt) +) engine=aria row_format=dynamic +partition by range columns(dt) ( +partition `p20171231` values less than ('2017-12-31'), +partition `p20181231` values less than ('2018-12-31') +); +insert into t1 values (1,'2017-09-28 15:12:00'); +select * from t1; +pk dt +1 2017-09-28 15:12:00 +alter table t1 drop partition p20181231; +select * from t1; +pk dt +1 2017-09-28 15:12:00 +drop table t1; diff --git a/mysql-test/suite/parts/t/partition_alter_maria.test b/mysql-test/suite/parts/t/partition_alter_maria.test new file mode 100644 index 00000000000..db249591158 --- /dev/null +++ b/mysql-test/suite/parts/t/partition_alter_maria.test @@ -0,0 +1,18 @@ +# +# MDEV-13937 Aria engine: Internal Error 160 after partition handling +# +source include/have_partition.inc; +create table t1 ( + pk bigint not null auto_increment, + dt datetime default null, + unique (pk, dt) +) engine=aria row_format=dynamic + partition by range columns(dt) ( + partition `p20171231` values less than ('2017-12-31'), + partition `p20181231` values less than ('2018-12-31') +); +insert into t1 values (1,'2017-09-28 15:12:00'); +select * from t1; +alter table t1 drop partition p20181231; +select * from t1; +drop table t1; diff --git a/mysql-test/suite/roles/definer.result b/mysql-test/suite/roles/definer.result index f7f3e946809..0a83262add1 100644 --- a/mysql-test/suite/roles/definer.result +++ b/mysql-test/suite/roles/definer.result @@ -630,3 +630,122 @@ show grants for utest; Grants for utest GRANT SELECT ON *.* TO 'utest' drop role utest; +# +# MDEV-13676: Field "create Procedure" is NULL, even if the the user +# has role which is the definer. (SHOW CREATE PROCEDURE) +# +create database rtest; +create role r1; +create role r2; +create role r3; +grant all privileges on rtest.* to r1; +create user user1; +grant r1 to user1; +grant r1 to r2; +grant r2 to user1; +grant r3 to user1; +connect user1, localhost,user1,,,,,; +set role r2; +use rtest; +CREATE DEFINER=current_role() PROCEDURE user1_proc() SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END;// +set role r2; +show create procedure user1_proc; +Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation +user1_proc STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`r2` PROCEDURE `user1_proc`() + SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END latin1 latin1_swedish_ci latin1_swedish_ci +# +# Currently one can not use as definer any role except CURRENT_ROLE +# +CREATE DEFINER='r1' PROCEDURE user1_proc2() SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END;// +ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation +set role r1; +CREATE DEFINER='r1' PROCEDURE user1_proc2() SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END;// +show create procedure user1_proc2; +Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation +user1_proc2 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`r1` PROCEDURE `user1_proc2`() + SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END latin1 latin1_swedish_ci latin1_swedish_ci +# +# Test to see if the user can still see the procedure code if the +# role that owns it is granted to him indirectly. +# +set role r2; +show create procedure user1_proc2; +Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation +user1_proc2 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`r1` PROCEDURE `user1_proc2`() + SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END latin1 latin1_swedish_ci latin1_swedish_ci +# +# One should not be able to see the procedure code if the role that owns +# the procedure is not set by the user or is not in the subgraph of the +# currently active role. +# +set role r3; +show create procedure user1_proc2; +ERROR 42000: PROCEDURE user1_proc2 does not exist +connection default; +use rtest; +# +# Try a few edge cases, with usernames identical to role name; +# +create user user_like_role; +create user foo; +create role user_like_role; +grant select on rtest.* to user_like_role; +grant select on rtest.* to foo; +grant select on rtest.* to user_like_role@'%'; +grant user_like_role to foo; +# +# Here we have a procedure that is owned by user_like_role USER +# We don't want user_like_role ROLE to have access to its code. +# +CREATE DEFINER=`user_like_role`@`%` PROCEDURE sensitive_proc() SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END;// +connect user_like_role, localhost, user_like_role,,,,,; +use rtest; +show create procedure sensitive_proc; +Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation +sensitive_proc STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`user_like_role`@`%` PROCEDURE `sensitive_proc`() + SQL SECURITY INVOKER +BEGIN +SELECT NOW(), VERSION(); +END latin1 latin1_swedish_ci latin1_swedish_ci +connect foo, localhost, foo,,,,,; +set role user_like_role; +use rtest; +# +# Foo has the set rolename identical to the procedure's definer's username. +# Foo should not have access to this procedure. +# +show create procedure sensitive_proc; +ERROR 42000: PROCEDURE sensitive_proc does not exist +connection default; +drop role r1; +drop role r2; +drop role r3; +drop role user_like_role; +drop user user1; +drop user foo; +drop user user_like_role; +drop procedure user1_proc; +drop procedure user1_proc2; +drop procedure sensitive_proc; +drop database rtest; diff --git a/mysql-test/suite/roles/definer.test b/mysql-test/suite/roles/definer.test index a4a65a77a9b..16d23386741 100644 --- a/mysql-test/suite/roles/definer.test +++ b/mysql-test/suite/roles/definer.test @@ -336,3 +336,125 @@ execute stmt1; show grants for utest; drop role utest; +--echo # +--echo # MDEV-13676: Field "create Procedure" is NULL, even if the the user +--echo # has role which is the definer. (SHOW CREATE PROCEDURE) +--echo # + +create database rtest; +create role r1; +create role r2; +create role r3; +grant all privileges on rtest.* to r1; + +create user user1; +grant r1 to user1; +grant r1 to r2; +grant r2 to user1; +grant r3 to user1; + +connect (user1, localhost,user1,,,,,); +set role r2; +use rtest; + +DELIMITER //; +CREATE DEFINER=current_role() PROCEDURE user1_proc() SQL SECURITY INVOKER + BEGIN + SELECT NOW(), VERSION(); + END;// +DELIMITER ;// + +set role r2; +show create procedure user1_proc; + +--echo # +--echo # Currently one can not use as definer any role except CURRENT_ROLE +--echo # +DELIMITER //; +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +CREATE DEFINER='r1' PROCEDURE user1_proc2() SQL SECURITY INVOKER + BEGIN + SELECT NOW(), VERSION(); + END;// +DELIMITER ;// + +set role r1; +DELIMITER //; +CREATE DEFINER='r1' PROCEDURE user1_proc2() SQL SECURITY INVOKER + BEGIN + SELECT NOW(), VERSION(); + END;// +DELIMITER ;// + +show create procedure user1_proc2; +--echo # +--echo # Test to see if the user can still see the procedure code if the +--echo # role that owns it is granted to him indirectly. +--echo # +set role r2; +show create procedure user1_proc2; + +--echo # +--echo # One should not be able to see the procedure code if the role that owns +--echo # the procedure is not set by the user or is not in the subgraph of the +--echo # currently active role. +--echo # +set role r3; +--error ER_SP_DOES_NOT_EXIST +show create procedure user1_proc2; + +connection default; + +use rtest; + +--echo # +--echo # Try a few edge cases, with usernames identical to role name; +--echo # + +create user user_like_role; +create user foo; +create role user_like_role; +grant select on rtest.* to user_like_role; +grant select on rtest.* to foo; +grant select on rtest.* to user_like_role@'%'; + +grant user_like_role to foo; + +--echo # +--echo # Here we have a procedure that is owned by user_like_role USER +--echo # We don't want user_like_role ROLE to have access to its code. +--echo # +DELIMITER //; +CREATE DEFINER=`user_like_role`@`%` PROCEDURE sensitive_proc() SQL SECURITY INVOKER + BEGIN + SELECT NOW(), VERSION(); + END;// +DELIMITER ;// + +connect (user_like_role, localhost, user_like_role,,,,,); +use rtest; +show create procedure sensitive_proc; + +connect (foo, localhost, foo,,,,,); +set role user_like_role; +use rtest; + +--echo # +--echo # Foo has the set rolename identical to the procedure's definer's username. +--echo # Foo should not have access to this procedure. +--echo # +--error ER_SP_DOES_NOT_EXIST +show create procedure sensitive_proc; + +connection default; +drop role r1; +drop role r2; +drop role r3; +drop role user_like_role; +drop user user1; +drop user foo; +drop user user_like_role; +drop procedure user1_proc; +drop procedure user1_proc2; +drop procedure sensitive_proc; +drop database rtest; diff --git a/mysql-test/suite/sql_sequence/create.result b/mysql-test/suite/sql_sequence/create.result index a5eb64802db..0a44dfe8931 100644 --- a/mysql-test/suite/sql_sequence/create.result +++ b/mysql-test/suite/sql_sequence/create.result @@ -498,3 +498,138 @@ previous value for t1 drop sequence t1; create table t1 (a int) engine=sql_sequence; ERROR 42000: Unknown storage engine 'sql_sequence' +# +# MDEV-13711 assertion on CREATE LIKE fix +# +create sequence s; +create table t like s; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `next_not_cached_value` bigint(21) NOT NULL, + `minimum_value` bigint(21) NOT NULL, + `maximum_value` bigint(21) NOT NULL, + `start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used', + `increment` bigint(21) NOT NULL COMMENT 'increment value', + `cache_size` bigint(21) unsigned NOT NULL, + `cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed', + `cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done' +) ENGINE=MyISAM SEQUENCE=1 +show create sequence t; +Table Create Table +t CREATE SEQUENCE `t` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM +drop tables t, s; +# +# MDEV-13714 SEQUENCE option fix +# +create or replace table s ( +`next_value` bigint(21) not null, +`min_value` bigint(21) not null, +`max_value` bigint(21) not null, +`start` bigint(21) not null, +`increment` bigint(21) not null, +`cache` bigint(21) not null, +`cycle` tinyint(1) unsigned not null, +`round` bigint(21) not null) +sequence=0; +create or replace table s2 ( +`next_value` bigint(21) not null, +`min_value` bigint(21) not null, +`max_value` bigint(21) not null, +`start` bigint(21) not null, +`increment` bigint(21) not null, +`cache` bigint(21) not null, +`cycle` tinyint(1) unsigned not null, +`round` bigint(21) not null) +sequence=default; +show create table s; +Table Create Table +s CREATE TABLE `s` ( + `next_value` bigint(21) NOT NULL, + `min_value` bigint(21) NOT NULL, + `max_value` bigint(21) NOT NULL, + `start` bigint(21) NOT NULL, + `increment` bigint(21) NOT NULL, + `cache` bigint(21) NOT NULL, + `cycle` tinyint(1) unsigned NOT NULL, + `round` bigint(21) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +show create table s2; +Table Create Table +s2 CREATE TABLE `s2` ( + `next_value` bigint(21) NOT NULL, + `min_value` bigint(21) NOT NULL, + `max_value` bigint(21) NOT NULL, + `start` bigint(21) NOT NULL, + `increment` bigint(21) NOT NULL, + `cache` bigint(21) NOT NULL, + `cycle` tinyint(1) unsigned NOT NULL, + `round` bigint(21) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +show create sequence s; +ERROR 42S02: 'test.s' is not a SEQUENCE +show create sequence s2; +ERROR 42S02: 'test.s2' is not a SEQUENCE +drop table s,s2; +# +# MDEV-13721 Assertion is_lock_owner() failed in mysql_rm_table_no_locks +# +create or replace sequence s; +create temporary table s (i int); +drop sequence s; +show create table s; +Table Create Table +s CREATE TEMPORARY TABLE `s` ( + `i` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table s; +create or replace sequence s; +create temporary sequence s; +show create table s; +Table Create Table +s CREATE TEMPORARY TABLE `s` ( + `next_not_cached_value` bigint(21) NOT NULL, + `minimum_value` bigint(21) NOT NULL, + `maximum_value` bigint(21) NOT NULL, + `start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used', + `increment` bigint(21) NOT NULL COMMENT 'increment value', + `cache_size` bigint(21) unsigned NOT NULL, + `cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed', + `cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done' +) ENGINE=MyISAM SEQUENCE=1 +drop sequence s; +show create table s; +Table Create Table +s CREATE TABLE `s` ( + `next_not_cached_value` bigint(21) NOT NULL, + `minimum_value` bigint(21) NOT NULL, + `maximum_value` bigint(21) NOT NULL, + `start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used', + `increment` bigint(21) NOT NULL COMMENT 'increment value', + `cache_size` bigint(21) unsigned NOT NULL, + `cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed', + `cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done' +) ENGINE=MyISAM SEQUENCE=1 +drop table s; +create or replace sequence s; +create temporary sequence s; +drop temporary sequence s; +show create table s; +Table Create Table +s CREATE TABLE `s` ( + `next_not_cached_value` bigint(21) NOT NULL, + `minimum_value` bigint(21) NOT NULL, + `maximum_value` bigint(21) NOT NULL, + `start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used', + `increment` bigint(21) NOT NULL COMMENT 'increment value', + `cache_size` bigint(21) unsigned NOT NULL, + `cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed', + `cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done' +) ENGINE=MyISAM SEQUENCE=1 +drop table s; +create temporary sequence s; +drop temporary table s; +create temporary table s (i int); +drop temporary sequence s; +ERROR 42S02: Unknown SEQUENCE: 'test.s' +drop table s; diff --git a/mysql-test/suite/sql_sequence/create.test b/mysql-test/suite/sql_sequence/create.test index 23c32939efc..6696e78db92 100644 --- a/mysql-test/suite/sql_sequence/create.test +++ b/mysql-test/suite/sql_sequence/create.test @@ -375,3 +375,77 @@ drop sequence t1; --error ER_UNKNOWN_STORAGE_ENGINE create table t1 (a int) engine=sql_sequence; + +--echo # +--echo # MDEV-13711 assertion on CREATE LIKE fix +--echo # + +create sequence s; +create table t like s; +show create table t; +show create sequence t; +drop tables t, s; + +--echo # +--echo # MDEV-13714 SEQUENCE option fix +--echo # + +create or replace table s ( + `next_value` bigint(21) not null, + `min_value` bigint(21) not null, + `max_value` bigint(21) not null, + `start` bigint(21) not null, + `increment` bigint(21) not null, + `cache` bigint(21) not null, + `cycle` tinyint(1) unsigned not null, + `round` bigint(21) not null) +sequence=0; + +create or replace table s2 ( + `next_value` bigint(21) not null, + `min_value` bigint(21) not null, + `max_value` bigint(21) not null, + `start` bigint(21) not null, + `increment` bigint(21) not null, + `cache` bigint(21) not null, + `cycle` tinyint(1) unsigned not null, + `round` bigint(21) not null) +sequence=default; + +show create table s; +show create table s2; +--error ER_NOT_SEQUENCE +show create sequence s; +--error ER_NOT_SEQUENCE +show create sequence s2; +drop table s,s2; + +--echo # +--echo # MDEV-13721 Assertion is_lock_owner() failed in mysql_rm_table_no_locks +--echo # + +create or replace sequence s; +create temporary table s (i int); +drop sequence s; +show create table s; +drop table s; + +create or replace sequence s; +create temporary sequence s; +show create table s; +drop sequence s; +show create table s; +drop table s; + +create or replace sequence s; +create temporary sequence s; +drop temporary sequence s; +show create table s; +drop table s; + +create temporary sequence s; +drop temporary table s; +create temporary table s (i int); +--error ER_UNKNOWN_SEQUENCES +drop temporary sequence s; +drop table s; diff --git a/mysql-test/suite/sql_sequence/next.result b/mysql-test/suite/sql_sequence/next.result index a10c131e0e1..d138c342c9d 100644 --- a/mysql-test/suite/sql_sequence/next.result +++ b/mysql-test/suite/sql_sequence/next.result @@ -512,3 +512,10 @@ def PREVIOUS VALUE FOR s1 8 20 1 Y 32896 0 63 NEXT VALUE FOR s1 PREVIOUS VALUE FOR s1 1 1 DROP SEQUENCE s1; +# +# MDEV-13720 ER_NOT_SEQUENCE for temporary table +# +create temporary table tmp (i int); +select next value for tmp; +ERROR 42S02: 'test.tmp' is not a SEQUENCE +drop table tmp; diff --git a/mysql-test/suite/sql_sequence/next.test b/mysql-test/suite/sql_sequence/next.test index 271c4a6558a..79249002d8f 100644 --- a/mysql-test/suite/sql_sequence/next.test +++ b/mysql-test/suite/sql_sequence/next.test @@ -260,3 +260,12 @@ SELECT DROP SEQUENCE s1; --enable_ps_protocol --disable_metadata + +--echo # +--echo # MDEV-13720 ER_NOT_SEQUENCE for temporary table +--echo # + +create temporary table tmp (i int); +--error ER_NOT_SEQUENCE +select next value for tmp; +drop table tmp; diff --git a/mysql-test/suite/sql_sequence/partition.result b/mysql-test/suite/sql_sequence/partition.result new file mode 100644 index 00000000000..223285ce95d --- /dev/null +++ b/mysql-test/suite/sql_sequence/partition.result @@ -0,0 +1,7 @@ +# +# MDEV-13715 ha_partition::engine_name() segfault fix +# +create sequence s; +alter table s partition by hash(start_value) partitions 2; +ERROR HY000: Table storage engine 'partition' does not support the create option 'SEQUENCE' +drop sequence s; diff --git a/mysql-test/suite/sql_sequence/partition.test b/mysql-test/suite/sql_sequence/partition.test new file mode 100644 index 00000000000..d820b46987e --- /dev/null +++ b/mysql-test/suite/sql_sequence/partition.test @@ -0,0 +1,11 @@ +--source include/have_partition.inc +--source include/have_sequence.inc + +--echo # +--echo # MDEV-13715 ha_partition::engine_name() segfault fix +--echo # + +create sequence s; +--error ER_ILLEGAL_HA_CREATE_OPTION +alter table s partition by hash(start_value) partitions 2; +drop sequence s; diff --git a/mysql-test/suite/sql_sequence/slave_nextval.result b/mysql-test/suite/sql_sequence/slave_nextval.result new file mode 100644 index 00000000000..bfbc472e117 --- /dev/null +++ b/mysql-test/suite/sql_sequence/slave_nextval.result @@ -0,0 +1,108 @@ +include/master-slave.inc +[connection master] +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,4,1,1,1,0,0); +show create sequence s; +Table Create Table +s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 4 increment by 1 cache 1 nocycle ENGINE=MyISAM +SELECT NEXTVAL(s); +NEXTVAL(s) +1 +connection slave; +SELECT NEXTVAL(s); +NEXTVAL(s) +2 +SELECT NEXTVAL(s); +NEXTVAL(s) +3 +connection master; +SELECT NEXTVAL(s); +NEXTVAL(s) +2 +SELECT NEXTVAL(s); +NEXTVAL(s) +3 +SELECT NEXTVAL(s); +NEXTVAL(s) +4 +select * from s; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +5 1 4 1 1 1 0 0 +connection slave; +select * from s; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +5 1 4 1 1 1 0 0 +connection master; +DROP SEQUENCE s; +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,3,1,1,1,1,0); +show create sequence s; +Table Create Table +s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 3 increment by 1 cache 1 cycle ENGINE=MyISAM +SELECT NEXTVAL(s); +NEXTVAL(s) +1 +connection slave; +SELECT NEXTVAL(s); +NEXTVAL(s) +2 +SELECT NEXTVAL(s); +NEXTVAL(s) +3 +connection master; +SELECT NEXTVAL(s); +NEXTVAL(s) +2 +SELECT NEXTVAL(s); +NEXTVAL(s) +3 +SELECT NEXTVAL(s); +NEXTVAL(s) +1 +select * from s; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +2 1 3 1 1 1 1 1 +connection slave; +select * from s; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +2 1 3 1 1 1 1 1 +connection master; +DROP SEQUENCE s; +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,3,1,1,1,1,0); +SELECT NEXTVAL(s); +NEXTVAL(s) +1 +CREATE PROCEDURE pr(n INT) +BEGIN +DECLARE i INT DEFAULT 0; +WHILE i < n +DO +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SET i= i+1; +END WHILE; +END $ +connect con1,localhost,root,,; +CALL pr(100); +connect con2,localhost,root,,; +CALL pr(100); +connect con3,localhost,root,,; +CALL pr(100); +connect con4,localhost,root,,; +CALL pr(100); +connect con5,localhost,root,,; +CALL pr(100); +connect con6,localhost,root,,; +CALL pr(100); +connect con7,localhost,root,,; +CALL pr(100); +connect con8,localhost,root,,; +CALL pr(100); +connection master; +connection slave; +connection master; +DROP SEQUENCE s; +DROP PROCEDURE pr; +include/rpl_end.inc diff --git a/mysql-test/suite/sql_sequence/slave_nextval.test b/mysql-test/suite/sql_sequence/slave_nextval.test new file mode 100644 index 00000000000..70da1044540 --- /dev/null +++ b/mysql-test/suite/sql_sequence/slave_nextval.test @@ -0,0 +1,132 @@ +--source include/master-slave.inc +--source include/have_binlog_format_row.inc + +# +# MDEV-14092 NEXTVAL() fails on slave +# + +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,4,1,1,1,0,0); +show create sequence s; +SELECT NEXTVAL(s); + +--sync_slave_with_master +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); + +--connection master +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); + +select * from s; + +--sync_slave_with_master + +select * from s; +--connection master +DROP SEQUENCE s; + +# +# Same as above, but with cycles +# + +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,3,1,1,1,1,0); +show create sequence s; +SELECT NEXTVAL(s); + +--sync_slave_with_master +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); + +--connection master +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); + +select * from s; + +--sync_slave_with_master + +select * from s; + +--connection master +DROP SEQUENCE s; + +# Here is a bit more complicated concurrent scenario that +# causes the same effect without any updates on the slave. You might +# need to replace 100 with a bigger value if it doesn't happen on your +# machine right away. + +CREATE SEQUENCE s; +INSERT INTO s VALUES (1,1,3,1,1,1,1,0); +SELECT NEXTVAL(s); + +--delimiter $ +CREATE PROCEDURE pr(n INT) +BEGIN +DECLARE i INT DEFAULT 0; +WHILE i < n +DO +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SELECT NEXTVAL(s); +SET i= i+1; +END WHILE; +END $ +--delimiter ; + +--connect (con1,localhost,root,,) +--send CALL pr(100) +--connect (con2,localhost,root,,) +--send CALL pr(100) +--connect (con3,localhost,root,,) +--send CALL pr(100) +--connect (con4,localhost,root,,) +--send CALL pr(100) +--connect (con5,localhost,root,,) +--send CALL pr(100) +--connect (con6,localhost,root,,) +--send CALL pr(100) +--connect (con7,localhost,root,,) +--send CALL pr(100) +--connect (con8,localhost,root,,) +--send CALL pr(100) + + +--disable_query_log +--disable_result_log + +--connection con1 +--reap +--connection con2 +--reap +--connection con3 +--reap +--connection con4 +--reap +--connection con5 +--reap +--connection con6 +--reap +--connection con7 +--reap +--connection con8 +--reap + +--enable_query_log +--enable_result_log + +--connection master + +--sync_slave_with_master + +--connection master +DROP SEQUENCE s; +DROP PROCEDURE pr; + +# +# Cleanup +# +--source include/rpl_end.inc diff --git a/mysql-test/suite/sys_vars/inc/explicit_defaults_for_timestamp.inc b/mysql-test/suite/sys_vars/inc/explicit_defaults_for_timestamp.inc index 4cf3914e60a..1fea4ca5bb9 100644 --- a/mysql-test/suite/sys_vars/inc/explicit_defaults_for_timestamp.inc +++ b/mysql-test/suite/sys_vars/inc/explicit_defaults_for_timestamp.inc @@ -97,3 +97,16 @@ CREATE TABLE t1 (a INT); ALTER TABLE t1 ADD b TIMESTAMP; SHOW CREATE TABLE t1; DROP TABLE t1; + +--echo # +--echo # MDEV-10802 TIMESTAMP NOT NULL field with explicit_defaults_for_timestamp and NO_ZERO_DATE shouldn't throw error +--echo # + +SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30'); +SET sql_mode='ANSI,NO_ZERO_DATE'; +CREATE TABLE t1 (a TIMESTAMP NOT NULL); +INSERT INTO t1 VALUES (); +SELECT * FROM t1; +DROP TABLE t1; +SET sql_mode=DEFAULT; +SET timestamp=DEFAULT; diff --git a/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_off.result b/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_off.result index f214e6d7dac..e94766be8bd 100644 --- a/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_off.result +++ b/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_off.result @@ -173,3 +173,16 @@ t1 CREATE TABLE `t1` ( `b` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; +# +# MDEV-10802 TIMESTAMP NOT NULL field with explicit_defaults_for_timestamp and NO_ZERO_DATE shouldn't throw error +# +SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30'); +SET sql_mode='ANSI,NO_ZERO_DATE'; +CREATE TABLE t1 (a TIMESTAMP NOT NULL); +INSERT INTO t1 VALUES (); +SELECT * FROM t1; +a +2001-01-01 10:20:30 +DROP TABLE t1; +SET sql_mode=DEFAULT; +SET timestamp=DEFAULT; diff --git a/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_on.result b/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_on.result index 5219fd4e9c4..dac796b4319 100644 --- a/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_on.result +++ b/mysql-test/suite/sys_vars/r/explicit_defaults_for_timestamp_on.result @@ -178,3 +178,18 @@ t1 CREATE TABLE `t1` ( `b` timestamp NULL DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; +# +# MDEV-10802 TIMESTAMP NOT NULL field with explicit_defaults_for_timestamp and NO_ZERO_DATE shouldn't throw error +# +SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30'); +SET sql_mode='ANSI,NO_ZERO_DATE'; +CREATE TABLE t1 (a TIMESTAMP NOT NULL); +INSERT INTO t1 VALUES (); +Warnings: +Warning 1364 Field 'a' doesn't have a default value +SELECT * FROM t1; +a +0000-00-00 00:00:00 +DROP TABLE t1; +SET sql_mode=DEFAULT; +SET timestamp=DEFAULT; diff --git a/mysql-test/suite/sys_vars/r/sql_mode_basic.result b/mysql-test/suite/sys_vars/r/sql_mode_basic.result index 1bd35c0656f..3bd813334eb 100644 --- a/mysql-test/suite/sys_vars/r/sql_mode_basic.result +++ b/mysql-test/suite/sys_vars/r/sql_mode_basic.result @@ -362,12 +362,12 @@ SET @@global.sql_mode = 500000; SELECT @@global.sql_mode; @@global.sql_mode REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,HIGH_NOT_PRECEDENCE -SET @@global.sql_mode = 4294967295; +SET @@global.sql_mode = 8589934591; SELECT @@global.sql_mode; @@global.sql_mode -REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH -SET @@global.sql_mode = 4294967296; -ERROR 42000: Variable 'sql_mode' can't be set to the value of '4294967296' +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL +SET @@global.sql_mode = 8589934592; +ERROR 42000: Variable 'sql_mode' can't be set to the value of '8589934592' SET @@global.sql_mode = 0.4; ERROR 42000: Incorrect argument type to variable 'sql_mode' '#---------------------FN_DYNVARS_152_08----------------------#' diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result index 4bb95b990ab..9d15f3f5a78 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result +++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result @@ -2402,7 +2402,7 @@ READ_ONLY YES COMMAND_LINE_ARGUMENT NONE VARIABLE_NAME INNODB_VERSION SESSION_VALUE NULL -GLOBAL_VALUE 5.7.19 +GLOBAL_VALUE 5.7.20 GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE NULL VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 3e510fb12ac..2cd193e4d5c 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -3787,7 +3787,7 @@ VARIABLE_COMMENT Sets the sql mode NUMERIC_MIN_VALUE NULL NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL -ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH +ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME SQL_NOTES diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 6124cf4a908..69ecca3312f 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -4543,7 +4543,7 @@ VARIABLE_COMMENT Sets the sql mode NUMERIC_MIN_VALUE NULL NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL -ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH +ENUM_VALUE_LIST REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,IGNORE_BAD_TABLE_OPTIONS,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH,EMPTY_STRING_IS_NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME SQL_NOTES diff --git a/mysql-test/suite/sys_vars/t/sql_mode_basic.test b/mysql-test/suite/sys_vars/t/sql_mode_basic.test index ad1c722303c..1730af50c17 100644 --- a/mysql-test/suite/sys_vars/t/sql_mode_basic.test +++ b/mysql-test/suite/sys_vars/t/sql_mode_basic.test @@ -307,11 +307,11 @@ SELECT @@global.sql_mode; SET @@global.sql_mode = 500000; SELECT @@global.sql_mode; -SET @@global.sql_mode = 4294967295; +SET @@global.sql_mode = 8589934591; SELECT @@global.sql_mode; --Error ER_WRONG_VALUE_FOR_VAR -SET @@global.sql_mode = 4294967296; +SET @@global.sql_mode = 8589934592; # use of decimal values diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 2f737c5c51b..130eb0ff51a 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -336,7 +336,26 @@ tsv timestamp as (adddate(ts, interval 1 day)) virtual drop table t1; set sql_mode=default; # -# Start of 10.1 tests +# MDEV-11819 NO_ZERO_IN_DATE: Incorrect generated column value +# +SET sql_mode='NO_ZERO_IN_DATE'; +CREATE TABLE t1 +( +a datetime DEFAULT NULL, +b datetime DEFAULT NULL, +c time GENERATED ALWAYS AS (timediff(`a`,`b`)) VIRTUAL +); +INSERT INTO t1 VALUES ('2008-12-31 23:59:59.000001','2008-12-30 01:01:01.000002',DEFAULT); +SELECT * FROM t1; +a b c +2008-12-31 23:59:59 2008-12-30 01:01:01 46:58:58 +DROP TABLE t1; +SET sql_mode=DEFAULT; +# +# End of 5.5 tests +# +# +# End of 10.0 tests # # # MDEV-8441 Bad SHOW CREATE TABLE output for a table with a virtual column diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 5bdd927070a..2244967a968 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -305,9 +305,28 @@ create table t1 ( drop table t1; set sql_mode=default; +--echo # +--echo # MDEV-11819 NO_ZERO_IN_DATE: Incorrect generated column value +--echo # + +SET sql_mode='NO_ZERO_IN_DATE'; +CREATE TABLE t1 +( + a datetime DEFAULT NULL, + b datetime DEFAULT NULL, + c time GENERATED ALWAYS AS (timediff(`a`,`b`)) VIRTUAL +); +INSERT INTO t1 VALUES ('2008-12-31 23:59:59.000001','2008-12-30 01:01:01.000002',DEFAULT); +SELECT * FROM t1; +DROP TABLE t1; +SET sql_mode=DEFAULT; --echo # ---echo # Start of 10.1 tests +--echo # End of 5.5 tests +--echo # + +--echo # +--echo # End of 10.0 tests --echo # --echo # @@ -331,7 +350,6 @@ SELECT COLUMN_GET(@aaa, 'price' AS DECIMAL) aaa; SELECT COLUMN_GET(@aaa, 'price' AS INT) aaa; SELECT COLUMN_GET(@aaa, 'price' AS DOUBLE) aaa; - --echo # --echo # End of 10.1 tests --echo # diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index 487990b61cd..79a01d5e0c4 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -1254,6 +1254,48 @@ execute stmt1; deallocate prepare stmt1; drop table t2; +--echo # +--echo # MDEV-8960 Can't refer the same column twice in one ALTER TABLE +--echo # + +CREATE TABLE t1 ( + `a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; + +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, +ALTER COLUMN `consultant_id` DROP DEFAULT; + +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1 ( + `a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; + +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, +ALTER COLUMN `consultant_id` SET DEFAULT 2; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1 ( + `a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; + +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, +ALTER COLUMN `consultant_id` DROP DEFAULT; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1 ( + `a` int(11) DEFAULT NULL +) DEFAULT CHARSET=utf8; + +ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, +ALTER COLUMN `consultant_id` DROP DEFAULT, +MODIFY COLUMN `consultant_id` BIGINT; +SHOW CREATE TABLE t1; +DROP TABLE t1; + # # Test of ALTER TABLE IF [NOT] EXISTS # @@ -1766,49 +1808,7 @@ SHOW CREATE TABLE t1; DROP TABLE t1; --echo # ---echo # MDEV-8960 Can't refer the same column twice in one ALTER TABLE ---echo # - -CREATE TABLE t1 ( - `a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; - -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, -ALTER COLUMN `consultant_id` DROP DEFAULT; - -SHOW CREATE TABLE t1; -DROP TABLE t1; - -CREATE TABLE t1 ( - `a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; - -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL, -ALTER COLUMN `consultant_id` SET DEFAULT 2; -SHOW CREATE TABLE t1; -DROP TABLE t1; - -CREATE TABLE t1 ( - `a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; - -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, -ALTER COLUMN `consultant_id` DROP DEFAULT; -SHOW CREATE TABLE t1; -DROP TABLE t1; - -CREATE TABLE t1 ( - `a` int(11) DEFAULT NULL -) DEFAULT CHARSET=utf8; - -ALTER TABLE t1 ADD COLUMN `consultant_id` integer NOT NULL DEFAULT 2, -ALTER COLUMN `consultant_id` DROP DEFAULT, -MODIFY COLUMN `consultant_id` BIGINT; -SHOW CREATE TABLE t1; -DROP TABLE t1; - ---echo # ---echo # Start of 10.1 tests +--echo # End of 10.0 tests --echo # --echo # @@ -1830,6 +1830,10 @@ SHOW CREATE TABLE t1; DROP TABLE t1; --echo # +--echo # End of 10.1 tests +--echo # + +--echo # --echo # MDEV-10421 duplicate CHECK CONSTRAINTs --echo # CREATE TABLE t1 (a INT, b INT) engine=myisam; @@ -1877,3 +1881,7 @@ alter table t1 drop column a; alter table t1 drop column a, drop index a; show create table t1; drop table t1; + +--echo # +--echo # End of 10.2 tests +--echo # diff --git a/mysql-test/t/case.test b/mysql-test/t/case.test index 52db7588855..018f5fa946b 100644 --- a/mysql-test/t/case.test +++ b/mysql-test/t/case.test @@ -174,6 +174,18 @@ drop table t1, t2; --echo End of 5.0 tests +--echo # +--echo # Bug#19875294 ASSERTION `SRC' FAILED IN MY_STRNXFRM_UNICODE +--echo # (SIG 6 -STRINGS/CTYPE-UTF8.C:5151) +--echo # + +set @@sql_mode=''; +CREATE TABLE t1(c1 SET('','')CHARACTER SET ucs2); +INSERT INTO t1 VALUES(990101.102); +SELECT COALESCE(c1)FROM t1 ORDER BY 1; +DROP TABLE t1; +set @@sql_mode=default; + # # lp:1001510 # Bug #11764313 57135: CRASH IN ITEM_FUNC_CASE::FIND_ITEM WITH CASE WHEN diff --git a/mysql-test/t/cte_nonrecursive.test b/mysql-test/t/cte_nonrecursive.test index 980bff01694..57b7ae1658f 100644 --- a/mysql-test/t/cte_nonrecursive.test +++ b/mysql-test/t/cte_nonrecursive.test @@ -724,3 +724,22 @@ deallocate prepare stmt2; drop view v1,v2; drop table t1,t2; + +--echo # +--echo # MDEV-13796: UNION of two materialized CTEs +--echo # + +CREATE TABLE t1 (id int, k int); +CREATE TABLE t2 (id int); +INSERT INTO t1 VALUES (3,5), (1,7), (4,3); +INSERT INTO t2 VALUES (4), (3), (2); + +let $q= +WITH d1 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id), + d2 AS (SELECT SUM(k) FROM t1, t2 as t2 WHERE t1.id = t2.id) +SELECT * FROM d1 UNION SELECT * FROM d2; + +eval $q; +eval explain $q; + +DROP TABLE t1,t2; diff --git a/mysql-test/t/ctype_gbk.test b/mysql-test/t/ctype_gbk.test index aa2d15b9b71..a3dc7f4af44 100644 --- a/mysql-test/t/ctype_gbk.test +++ b/mysql-test/t/ctype_gbk.test @@ -199,6 +199,20 @@ let $ctype_unescape_combinations=selected; SET NAMES gbk; --source include/ctype_E05C.inc +--echo # +--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant +--echo # + +SET NAMES latin1; +CREATE TABLE t1 (a TEXT CHARACTER SET gbk); +INSERT INTO t1 VALUES (0xEE5D); +SELECT a<>0xEE5D AS a FROM t1; +CREATE VIEW v1 AS SELECT a<>0xEE5D AS a FROM t1; +SHOW CREATE VIEW v1; +SELECT * FROM v1; +DROP VIEW v1; +DROP TABLE t1; + --echo # --echo # End of 10.0 tests diff --git a/mysql-test/t/ctype_latin1.test b/mysql-test/t/ctype_latin1.test index d40cc8b459b..8c51bfef2d8 100644 --- a/mysql-test/t/ctype_latin1.test +++ b/mysql-test/t/ctype_latin1.test @@ -247,6 +247,22 @@ DROP TABLE t1; --echo # SELECT _latin1 0x7E, _latin1 X'7E', _latin1 B'01111110'; + +--echo # +--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant +--echo # + +SET NAMES latin1; +CREATE TABLE t1 (a TEXT CHARACTER SET latin1); +INSERT INTO t1 VALUES (0xC0); +SELECT a<>0xEE5D AS a FROM t1; +CREATE VIEW v1 AS SELECT a<>0xC0 AS a FROM t1; +SHOW CREATE VIEW v1; +SELECT * FROM v1; +DROP VIEW v1; +DROP TABLE t1; + + --echo # --echo # End of 10.0 tests --echo # diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index 7a054534c85..d7a4fd48ccd 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -827,6 +827,31 @@ SET sql_mode=DEFAULT; SET NAMES utf8; --echo # +--echo # MDEV-13972 crash in Item_func_sec_to_time::get_date +--echo # + +SELECT SEC_TO_TIME(CONVERT(900*24*60*60 USING ucs2)); + +--echo # +--echo # MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +--echo # + +set sql_mode=""; +CREATE TABLE t1 (c1 VARCHAR(32766) CHARACTER SET ucs2); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(32767) CHARACTER SET ucs2); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(32768) CHARACTER SET ucs2); +DESCRIBE t1; +DROP TABLE t1; +set sql_mode=default; + + +--echo # --echo # End of 5.5 tests --echo # diff --git a/mysql-test/t/ctype_utf32.test b/mysql-test/t/ctype_utf32.test index 343b3c3d54b..6f036898d15 100644 --- a/mysql-test/t/ctype_utf32.test +++ b/mysql-test/t/ctype_utf32.test @@ -906,6 +906,21 @@ SET sql_mode=DEFAULT; SET NAMES utf8; --echo # +--echo # MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +--echo # + +set sql_mode=''; +CREATE TABLE t1 (c1 VARCHAR(16383) CHARACTER SET utf32); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(16384) CHARACTER SET utf32); +DESCRIBE t1; +DROP TABLE t1; +set sql_mode=default; + + +--echo # --echo # End of 5.5 tests --echo # diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 5c31fbf2088..adb846a0df2 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -1723,6 +1723,24 @@ SET sql_mode=DEFAULT; DROP TABLE t1; --echo # +--echo # MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +--echo # + +SET sql_mode=''; +CREATE TABLE t1 (c1 VARCHAR(21844) CHARACTER SET utf8); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(21845) CHARACTER SET utf8); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(21846) CHARACTER SET utf8); +DESCRIBE t1; +DROP TABLE t1; +SET sql_mode=default; + +--echo # --echo # End of 5.5 tests --echo # diff --git a/mysql-test/t/delete_returning.test b/mysql-test/t/delete_returning.test index 3790d0905a5..4448a6bcccd 100644 --- a/mysql-test/t/delete_returning.test +++ b/mysql-test/t/delete_returning.test @@ -155,3 +155,18 @@ SELECT * FROM t1; DROP PROCEDURE p1; DROP TABLE t1; +--echo # +--echo # MDEV-13776: DELETE ... RETURNING with sql_mode='ONLY_FULL_GROUP_BY' +--echo # + +set @sql_mode_save= @@sql_mode; +set sql_mode='ONLY_FULL_GROUP_BY'; + +CREATE TABLE t1 (id INT); +INSERT INTO t1 VALUE(1),(2),(3); + +DELETE FROM t1 WHERE id > 2 RETURNING *; + +set sql_mode=@sql_mode_save; + +DROP TABLE t1; diff --git a/mysql-test/t/empty_string_literal.test b/mysql-test/t/empty_string_literal.test new file mode 100644 index 00000000000..71e98d872bb --- /dev/null +++ b/mysql-test/t/empty_string_literal.test @@ -0,0 +1,8 @@ +USE test; +--echo # +--echo # MDEV-14013 : sql_mode=EMPTY_STRING_IS_NULL +--echo # + +set @mode='EMPTY_STRING_IS_NULL'; + +--source include/empty_string_literal.inc diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test index 10e4a43c934..8f6062fd2c2 100644 --- a/mysql-test/t/func_in.test +++ b/mysql-test/t/func_in.test @@ -605,11 +605,20 @@ EXECUTE s; DROP TABLE t1; +--echo # --echo # End of 5.3 tests +--echo # +# +# Bug#26361149 MYSQL SERVER CRASHES AT: COL IN(IFNULL(CONST, COL), NAME_CONST('NAME', NULL)) +# +create table t1 (a int); +insert t1 values (1),(2),(3); +select * from t1 where 1 in (a, name_const('a', null)); +drop table t1; --echo # ---echo # Start of 10.0 tests +--echo # End of 5.5 tests --echo # --echo # @@ -626,7 +635,7 @@ SELECT * FROM t1 WHERE b NOT IN (NULL, '', 'A'); DROP TABLE t1; --echo # ---echo # Start of 10.1 tests +--echo # End of 10.0 tests --echo # --echo # diff --git a/mysql-test/t/func_json.test b/mysql-test/t/func_json.test index a34cede537c..47ed0c3ca75 100644 --- a/mysql-test/t/func_json.test +++ b/mysql-test/t/func_json.test @@ -56,6 +56,7 @@ select json_contains('[1, {"a":1}]', '{}'); select json_contains('[1, {"a":1}]', '{"a":1}'); select json_contains('[{"abc":"def", "def":"abc"}]', '["foo","bar"]'); select json_contains('[{"abc":"def", "def":"abc"}, "bar"]', '["bar", {}]'); +select json_contains('[{"a":"b"},{"c":"d"}]','{"c":"d"}'); select json_contains_path('{"key1":1, "key2":[2,3]}', "oNE", "$.key2[1]"); select json_contains_path('{"key1":1, "key2":[2,3]}', "oNE", "$.key2[10]"); @@ -163,6 +164,14 @@ drop table t1; select json_unquote('"abc"'); select json_unquote('abc'); +# +# MDEV-13703 Illegal mix of collations for operation 'json_object' on using JSON_UNQUOTE as an argument. +# +create table t1 (c VARCHAR(8)) DEFAULT CHARSET=latin1; +insert into t1 values ('abc'),('def'); + +select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1; +drop table t1; select json_object("a", json_object("b", "abcd")); select json_object("a", '{"b": "abcd"}'); @@ -179,6 +188,7 @@ select json_length('{}'); select json_length('[1, 2, {"a": 3}]'); select json_length('{"a": 1, "b": {"c": 30}}', '$.b'); select json_length('{"a": 1, "b": {"c": 30}}'); +select json_length('{}{'); create table json (j INT); show create table json; @@ -361,6 +371,12 @@ select json_array(5,json_query('[1,2]','$')); SELECT JSON_ARRAY('1. Ä› 2. Å¡ 3. Ä 4. Å™ 5. ž 6. ý 7. á 8. à 9. é 10. ů 11. ú') AS json_data; SELECT JSON_OBJECT("user","Jožko MrkviÄká") as json_data; +# +# MDEV-12312 JSON_CONTAINS_PATH does not detect invalid path and returns TRUE. +# + +select json_contains_path('{"foo":"bar"}', 'one', '$[]'); + --echo # --echo # Start of 10.3 tests --echo # diff --git a/mysql-test/t/func_regexp_pcre.test b/mysql-test/t/func_regexp_pcre.test index d77467b559b..21600390bb2 100644 --- a/mysql-test/t/func_regexp_pcre.test +++ b/mysql-test/t/func_regexp_pcre.test @@ -436,19 +436,19 @@ SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral, # # MDEV-13173 An RLIKE that previously worked on 10.0 now returns "Got error 'pcre_exec: recursion limit of 100 exceeded' from regexp" # -SELECT CONCAT(REPEAT('100,',133),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; +SELECT CONCAT(REPEAT('100,',60),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; --replace_regex /[0-9]+ exceeded/NUM exceeded/ SELECT CONCAT(REPEAT('100,',200),'101') RLIKE '^(([1-9][0-9]*),)*[1-9][0-9]*$'; -SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); +SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); --replace_regex /[0-9]+ exceeded/NUM exceeded/ SELECT REGEXP_INSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$'); -SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); +SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); --replace_regex /[0-9]+ exceeded/NUM exceeded/ SELECT LENGTH(REGEXP_SUBSTR(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$')); -SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',133),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); +SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',60),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); --replace_regex /[0-9]+ exceeded/NUM exceeded/ SELECT LENGTH(REGEXP_REPLACE(CONCAT(REPEAT('100,',200),'101'), '^(([1-9][0-9]*),)*[1-9][0-9]*$', '')); diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 3c154a8f67e..09c13598cfd 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -1678,9 +1678,33 @@ DROP TABLE t1; --echo # SELECT 1 MOD ADDTIME( '13:58:57', '00:00:01' ) + 2; +--echo # +--echo # MDEV-11819 NO_ZERO_IN_DATE: Incorrect generated column value +--echo # + +SET sql_mode='NO_ZERO_IN_DATE'; +CREATE TABLE t1 (a TIME(6)); +INSERT INTO t1 SELECT timediff(timestamp'2008-12-31 23:59:59.000001',timestamp'2008-12-30 01:01:01.000002'); +SELECT * FROM t1; +DROP TABLE t1; +SET sql_mode=DEFAULT; + + +--echo # +--echo # MDEV-13972 crash in Item_func_sec_to_time::get_date +--echo # + +# The below query can return warning sporadically +--disable_warnings +DO TO_DAYS(SEC_TO_TIME(TIME(CEILING(UUID())))); +--enable_warnings + +DO TO_DAYS(SEC_TO_TIME(MAKEDATE('',RAND(~(''))))); +SELECT SEC_TO_TIME(MAKEDATE(0,RAND(~0))); + --echo # ---echo # Start of 10.0 tests +--echo # End of 5.5 tests --echo # --echo # diff --git a/mysql-test/t/gis-precise.test b/mysql-test/t/gis-precise.test index 1f8259bb828..07fabae6025 100644 --- a/mysql-test/t/gis-precise.test +++ b/mysql-test/t/gis-precise.test @@ -363,5 +363,24 @@ select ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT select ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')); select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')); +# MDEV-12705 10.1.18-MariaDB-1~jessie - mysqld got signal 11. +SELECT ST_RELATE( + ST_DIFFERENCE( + GEOMETRYFROMTEXT(' + MULTILINESTRING( + ( 12841 36140, 8005 31007, 26555 31075, 52765 41191, + 28978 6548, 45720 32057, 53345 3221 ), + ( 8304 59107, 25233 31592, 40502 25303, 8205 42940 ), + ( 7829 7305, 58841 56759, 64115 8512, 37562 54145, 2210 14701 ), + ( 20379 2805, 40807 27770, 28147 14883, 26439 29383, 55663 5086 ), + ( 35944 64702, 14433 23728, 49317 26241, 790 16941 ) + ) + '), + GEOMETRYFROMTEXT('POINT(46061 13545)') + ), + GEOMETRYFROMTEXT('POINT(4599 60359)'), + 'F*FFFF**F' + ) as relate_res; + --source include/gis_debug.inc diff --git a/mysql-test/t/gis2.test b/mysql-test/t/gis2.test index b734ab19ecd..9731e2a91d0 100644 --- a/mysql-test/t/gis2.test +++ b/mysql-test/t/gis2.test @@ -15,3 +15,31 @@ SELECT id FROM t1 WHERE ST_Contains(point_data, GeomFromText('Point(38.0248492 23.8512726)')); DROP TABLE t1; +# +# MDEV-13923 Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon altering table with geometry field +# +--error ER_CANT_CREATE_GEOMETRY_OBJECT +create table t1 (p point default "qwer"); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +create table t1 (p point default 0); +--error ER_INVALID_DEFAULT +create table t1 (p point not null default st_geometryfromtext('point 0)')); +create table t1 (p point not null default st_geometryfromtext('point(0 0)')); +insert into t1 values(default); +select st_astext(p) from t1; +drop table t1; + +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))); +set timestamp=10; +--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD +insert into t1 values(default); +drop table t1; +SET timestamp=default; + +create table t1 (p point not null default if(unix_timestamp()>10,POINT(1,1),LineString(Point(0,0),Point(1,1)))); +set timestamp=10; +--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD +alter table t1 add column i int; +drop table t1; +SET timestamp=default; + diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 157b4c69508..417390dcafe 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -1861,3 +1861,29 @@ disconnect con1; --source include/wait_until_count_sessions.inc set global sql_mode=default; + +USE test; + +--echo # +--echo # End of 10.0 tests +--echo # + + +--echo # +--echo # Start of 10.1 tests +--echo # + + +--echo # +--echo # MDEV-13242 Wrong results for queries with row constructors and information_schema +--echo # + +CREATE TABLE tt1(c1 INT); +CREATE TABLE tt2(c2 INT); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt1', 'c1')); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt2', 'c2')); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name, column_name) IN (SELECT 'tt1','c1' FROM dual UNION SELECT 'tt2', 'c2' FROM dual); +SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name='tt1' AND column_name='c1') OR (table_name='tt2' AND column_name='c2'); +SELECT column_name FROM information_schema.columns WHERE (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')) ORDER BY column_name; +DROP TABLE tt1, tt2; diff --git a/mysql-test/t/mdev13607.test b/mysql-test/t/mdev13607.test new file mode 100644 index 00000000000..45fdb0a74d4 --- /dev/null +++ b/mysql-test/t/mdev13607.test @@ -0,0 +1,60 @@ +--echo # +--echo # Bug mdev-13607: overflow of current_record_count +--echo # + +--source include/have_innodb.inc + +CREATE TABLE t1 (id INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1),(2),(3),(4),(5),(6),(7),(8),(9),(10), +(11),(12),(13),(14),(15),(16),(17),(18),(19),(20), +(21),(22),(23),(24),(25),(26),(27),(28),(29),(30), +(31),(32),(33),(34),(35),(36),(37),(38),(39),(40), +(41),(42),(43),(44),(45),(46),(47),(48),(49),(50); + +CREATE TABLE t2 (id INT) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2); + +CREATE TABLE t3 (id INT) ENGINE=InnoDB; +INSERT INTO t3 VALUES (1),(2); + +ANALYZE TABLE t1, t2, t3; + +let $q= +SELECT * FROM +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_1 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_2 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_3 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_4 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_5 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_6 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_7 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_8 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_9 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_10 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_11 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_12 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_13 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_14 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_15 +INNER JOIN +(SELECT p1.* FROM t1 p1 NATURAL JOIN t2 r1 NATURAL JOIN t3 d1 NATURAL JOIN t1 p2 NATURAL JOIN t2 r2 NATURAL JOIN t3 d2 NATURAL JOIN t1 p3 NATURAL JOIN t2 r3 NATURAL JOIN t3 d3 NATURAL JOIN t1 p4 NATURAL JOIN t2 r4 NATURAL JOIN t3 d4 NATURAL JOIN t1 p5 NATURAL JOIN t2 r5 NATURAL JOIN t3 d5 NATURAL JOIN t1 p6 NATURAL JOIN t2 r6 NATURAL JOIN t3 d6 NATURAL JOIN t1 p7 NATURAL JOIN t2 r7 NATURAL JOIN t3 d7 NATURAL JOIN t1 p8 NATURAL JOIN t2 r8 NATURAL JOIN t3 d8 NATURAL JOIN t1 p9 ) gp_16 +; + +eval explain $q; + +DROP TABLE t1,t2,t3; diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 0da542e499e..1407e9fcf98 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -1038,8 +1038,10 @@ show create table t1; drop table t1; # MyISAM specific varchar tests ---error 1118 +set statement sql_mode='' for create table t1 (v varchar(65535)); +show create table t1; +drop table t1; eval set storage_engine=$default; diff --git a/mysql-test/t/partition_datatype.test b/mysql-test/t/partition_datatype.test index 4017cdada60..9ab3bd4d5fa 100644 --- a/mysql-test/t/partition_datatype.test +++ b/mysql-test/t/partition_datatype.test @@ -215,14 +215,18 @@ select * from t1 where a = 'aaaa'; select * from t1 where a like 'aaa%'; select * from t1 where a = 'bbbb'; drop table t1; +set sql_mode=''; -- error ER_PARTITION_FIELDS_TOO_LONG create table t1 (a varchar(3070)) partition by key (a); --- error ER_TOO_BIG_ROWSIZE +-- error ER_PARTITION_FIELDS_TOO_LONG +create table t1 (a varchar(65532) not null) partition by key (a); +-- error ER_BLOB_FIELD_IN_PART_FUNC_ERROR create table t1 (a varchar(65533)) partition by key (a); --- error ER_TOO_BIG_ROWSIZE +-- error ER_BLOB_FIELD_IN_PART_FUNC_ERROR create table t1 (a varchar(65534) not null) partition by key (a); --- error ER_TOO_BIG_ROWSIZE +-- error ER_BLOB_FIELD_IN_PART_FUNC_ERROR create table t1 (a varchar(65535)) partition by key (a); +set sql_mode=default; # # Bug#34358: error in key_restore for bitfields with uneven bits diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index b6d1b4862a6..b61c4cf2568 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -3728,6 +3728,135 @@ deallocate prepare stmt2; drop table t1; +--echo # +--echo # MDEV-9208: Function->Function->View = Mysqld segfault +--echo # (Server crashes in Dependency_marker::visit_field on 2nd +--echo # execution with merged subquery) +--echo # + +CREATE TABLE t1 (i1 INT); +insert into t1 values(1),(2); + +CREATE TABLE t2 (i2 INT); +insert into t2 values(1),(2); + +prepare stmt from " + select 1 from ( + select + if (i1<0, 0, 0) as f1, + (select f1) as f2 + from t1, t2 + ) sq +"; + +execute stmt; +execute stmt; + +drop table t1,t2; + +--echo # +--echo # MDEV-9619: Assertion `null_ref_table' failed in virtual +--echo # table_map Item_direct_view_ref::used_tables() const on 2nd +--echo # execution of PS +--echo # + +CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM; +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1; +INSERT INTO t1 VALUES ('a'),('b'); + +CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM; +INSERT INTO t2 VALUES ('c'),('d'); + +PREPARE stmt FROM "SELECT * FROM v1 WHERE f1 = SOME ( SELECT f2 FROM t2 )"; +EXECUTE stmt; +EXECUTE stmt; +insert into t1 values ('c'); +EXECUTE stmt; +EXECUTE stmt; + +deallocate prepare stmt; +drop view v1; +drop table t1,t2; + +CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM; +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1; +INSERT INTO t1 VALUES ('a'),('b'); + +CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM; +INSERT INTO t2 VALUES ('c'),('d'); + +PREPARE stmt FROM "SELECT * FROM v1 WHERE (f1,f1) = SOME ( SELECT f2,f2 FROM t2 )"; +EXECUTE stmt; +EXECUTE stmt; +insert into t1 values ('c'); +EXECUTE stmt; +EXECUTE stmt; + +deallocate prepare stmt; +drop view v1; +drop table t1,t2; + + + +CREATE TABLE t1 (column1 INT) ENGINE=MyISAM; +INSERT INTO t1 VALUES (3),(9); + +CREATE TABLE t2 (column2 INT) ENGINE=MyISAM; + +INSERT INTO t2 VALUES (1),(4); + +CREATE TABLE t3 (column3 INT) ENGINE=MyISAM; +INSERT INTO t3 VALUES (6),(8); + +CREATE TABLE t4 (column4 INT) ENGINE=MyISAM; +INSERT INTO t4 VALUES (2),(5); + +PREPARE stmt FROM " +SELECT ( + SELECT MAX( table1.column1 ) AS field1 + FROM t1 AS table1 + WHERE (111,table3.column3) IN ( SELECT 111,table2.column2 AS field2 FROM t2 AS table2 ) +) AS sq +FROM t3 AS table3, t4 AS table4 GROUP BY sq +"; + +EXECUTE stmt; +EXECUTE stmt; + +deallocate prepare stmt; +drop table t1,t2,t3,t4; + +create table t1 (a int, b int, c int); +create table t2 (x int, y int, z int); +create table t3 as select * from t1; +insert into t1 values (1,2,3),(4,5,6),(100,200,300),(400,500,600); +insert into t2 values (1,2,3),(7,8,9),(100,200,300),(400,500,600); +insert into t3 values (1,2,3),(11,12,13),(100,0,0),(400,500,600); + + +set @optimizer_switch_save=@@optimizer_switch; +set @join_cache_level_save=@@join_cache_level; +set optimizer_switch='materialization=off'; +set join_cache_level=0; +select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z); +prepare stmt from "select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z)"; +EXECUTE stmt; +EXECUTE stmt; + +create view v1 as select * from t1; +create view v2 as select * from t2; +create view v3 as select * from t3; +select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z); +prepare stmt from "select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z)"; +EXECUTE stmt; +EXECUTE stmt; +set optimizer_switch=@optimizer_switch_save; +set join_cache_level=@join_cache_level_save; + +deallocate prepare stmt; +drop view v1,v2,v3; +drop table t1,t2,t3; + --echo # End of 5.5 tests --echo # diff --git a/mysql-test/t/range_vs_index_merge.test b/mysql-test/t/range_vs_index_merge.test index 5d12d46c9e9..84b87579e85 100644 --- a/mysql-test/t/range_vs_index_merge.test +++ b/mysql-test/t/range_vs_index_merge.test @@ -1241,6 +1241,59 @@ WHERE ( state = 'Alabama' OR state >= 'Colorado' ) AND id != 9 DROP TABLE t1; +--echo # +--echo # mdev-11574: do not build index merge of two indexes when +--echo # one index is an infix of the other index +--echo # + +set names utf8; + +CREATE DATABASE world; + +use world; + +--source include/world_schema.inc + +--disable_query_log +--disable_result_log +--disable_warnings +--source include/world.inc +--enable_warnings +--enable_result_log +--enable_query_log + +DROP INDEX Country ON City; +CREATE INDEX CountryName ON City(Country,Name); +CREATE INDEX Name ON City(Name); + +--disable_query_log +--disable_result_log +--disable_warnings +ANALYZE TABLE City; +--enable_warnings +--enable_result_log +--enable_query_log + +let $q= +select * from City +where + Country='FIN' AND Name IN ('Lahti','Imatra') OR + Country='RUS' AND Name IN ('St Petersburg', 'Moscow') OR + Country='SWE' AND Name IN ('Stockholm', 'Uppsala') OR + Country='DEU' AND Name IN ('Berlin', 'Bonn') OR + Country='BEL' AND Name IN ('Antwerpen', 'Gent') OR + Country='PRT' AND Name IN ('Braga', 'Porto') OR + Country='FRA' AND Name IN ('Paris', 'Marcel') OR + Country='POL' AND Name IN ('Warszawa', 'Wroclaw') OR + Country='NOR' AND Name IN ('Oslo', 'Bergen') OR + Country='ITA' AND Name IN ('Napoli', 'Venezia'); + +eval $q; +eval explain $q; + + +DROP DATABASE world; + #the following command must be the last one in the file set session optimizer_switch='index_merge_sort_intersection=default'; diff --git a/mysql-test/t/read_only.test b/mysql-test/t/read_only.test index 152770c1731..a05f813346e 100644 --- a/mysql-test/t/read_only.test +++ b/mysql-test/t/read_only.test @@ -114,6 +114,11 @@ drop table t1; insert into t1 values(1); # +# MDEV-14056 DROP TEMPORARY TABLE IF EXISTS causes error 1290 with read_only option +# +drop temporary table if exists t1; + +# # Bug#11733 COMMITs should not happen if read-only is set # diff --git a/mysql-test/t/show_function_with_pad_char_to_full_length.test b/mysql-test/t/show_function_with_pad_char_to_full_length.test new file mode 100644 index 00000000000..f47f36294d4 --- /dev/null +++ b/mysql-test/t/show_function_with_pad_char_to_full_length.test @@ -0,0 +1,23 @@ +# +# Test that show function status succeeds with +# sql_mode = 'PAD_CHAR_TO_FULL_LENGTH (MDEV-13149) + +# show function status + +create function f() returns int return 1; +--replace_column 1 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 T 11 T +show function status; +set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; +--replace_column 1 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 T 11 T +show function status; +drop function f; +select @@sql_mode; + +# select ROUTINE_NAME from information_schema.ROUTINES + +create function f() returns int return 1; +select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f'; +set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; +select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f'; +drop function f; +select @@sql_mode; diff --git a/mysql-test/t/sp-anchor-row-type-cursor.test b/mysql-test/t/sp-anchor-row-type-cursor.test index fe4b55aaf1a..7089175507c 100644 --- a/mysql-test/t/sp-anchor-row-type-cursor.test +++ b/mysql-test/t/sp-anchor-row-type-cursor.test @@ -1093,3 +1093,26 @@ $$ DELIMITER ;$$ CALL p1(); DROP PROCEDURE p1; + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +BEGIN NOT ATOMIC + DECLARE c1 CURSOR FOR SELECT 10 AS a, 'bbb' AS b, TIME'10:20:30' AS c; + BEGIN + DECLARE row1 ROW TYPE OF c1; + DECLARE a_row1 TYPE OF row1; + DECLARE aa_row1 TYPE OF a_row1; + CREATE TABLE t2 AS SELECT a_row1.a AS a, a_row1.b AS b, a_row1.c AS c; + SHOW CREATE TABLE t2; + DROP TABLE t2; + CREATE TABLE t2 AS SELECT aa_row1.a AS a, aa_row1.b AS b, aa_row1.c AS c; + SHOW CREATE TABLE t2; + DROP TABLE t2; + END; +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/t/sp-anchor-row-type-table.test b/mysql-test/t/sp-anchor-row-type-table.test index 1171ae2d7b7..3f04dc68586 100644 --- a/mysql-test/t/sp-anchor-row-type-table.test +++ b/mysql-test/t/sp-anchor-row-type-table.test @@ -860,3 +860,24 @@ DROP PROCEDURE p1; DROP FUNCTION f2; DROP FUNCTION f1; DROP DATABASE db1; + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +CREATE TABLE t1 (int11 INT, text0 TEXT); +DELIMITER $$; +BEGIN NOT ATOMIC + DECLARE row1 ROW TYPE OF t1; + DECLARE a_row1 TYPE OF row1; + DECLARE aa_row1 TYPE OF a_row1; + CREATE TABLE t2 AS SELECT a_row1.int11 AS int11, a_row1.text0 AS text0; + SHOW CREATE TABLE t2; + DROP TABLE t2; + CREATE TABLE t2 AS SELECT aa_row1.int11 AS int11, aa_row1.text0 AS text0; + SHOW CREATE TABLE t2; + DROP TABLE t2; +END; +$$ +DELIMITER ;$$ +DROP TABLE t1; diff --git a/mysql-test/t/sp-anchor-type.test b/mysql-test/t/sp-anchor-type.test index f57342eb67c..7f952d626e0 100644 --- a/mysql-test/t/sp-anchor-type.test +++ b/mysql-test/t/sp-anchor-type.test @@ -675,3 +675,88 @@ DROP TABLE t1; --echo # --echo # End of MDEV-12461 TYPE OF and ROW TYPE OF anchored data types --echo # + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +--error ER_SP_UNDECLARED_VAR +BEGIN NOT ATOMIC + DECLARE a TYPE OF a; +END; +$$ +DELIMITER ;$$ + + +DELIMITER $$; +BEGIN NOT ATOMIC + DECLARE int11 INT; + DECLARE dec103 DECIMAL(10,3); + DECLARE flt0 FLOAT; + DECLARE dbl0 DOUBLE; + DECLARE enum0 ENUM('a','b'); + DECLARE bit3 BIT(3); + + DECLARE varchar10 VARCHAR(10); + DECLARE text1 TEXT; + DECLARE tinytext1 TINYTEXT; + DECLARE mediumtext1 MEDIUMTEXT; + DECLARE longtext1 LONGTEXT; + + DECLARE time3 TIME(3); + DECLARE datetime4 DATETIME(4); + DECLARE timestamp5 TIMESTAMP(5); + DECLARE date0 DATE; + + DECLARE a_int11 TYPE OF int11; + DECLARE a_dec103 TYPE OF dec103; + DECLARE a_flt0 TYPE OF flt0; + DECLARE a_dbl0 TYPE OF dbl0; + DECLARE a_bit3 TYPE OF bit3; + DECLARE a_enum0 TYPE OF enum0; + DECLARE a_varchar10 TYPE OF varchar10; + DECLARE a_text1 TYPE OF text1; + DECLARE a_tinytext1 TYPE OF tinytext1; + DECLARE a_mediumtext1 TYPE OF mediumtext1; + DECLARE a_longtext1 TYPE OF longtext1; + DECLARE a_time3 TYPE OF time3; + DECLARE a_datetime4 TYPE OF datetime4; + DECLARE a_timestamp5 TYPE OF timestamp5; + DECLARE a_date0 TYPE OF date0; + + DECLARE aa_int11 TYPE OF a_int11; + DECLARE aa_dec103 TYPE OF a_dec103; + DECLARE aa_flt0 TYPE OF a_flt0; + DECLARE aa_dbl0 TYPE OF a_dbl0; + DECLARE aa_bit3 TYPE OF a_bit3; + DECLARE aa_enum0 TYPE OF a_enum0; + DECLARE aa_varchar10 TYPE OF a_varchar10; + DECLARE aa_text1 TYPE OF a_text1; + DECLARE aa_tinytext1 TYPE OF a_tinytext1; + DECLARE aa_mediumtext1 TYPE OF a_mediumtext1; + DECLARE aa_longtext1 TYPE OF a_longtext1; + DECLARE aa_time3 TYPE OF a_time3; + DECLARE aa_datetime4 TYPE OF a_datetime4; + DECLARE aa_timestamp5 TYPE OF a_timestamp5; + DECLARE aa_date0 TYPE OF a_date0; + + CREATE TABLE t1 AS + SELECT a_int11,a_dec103,a_flt0,a_dbl0,a_bit3, + a_enum0,a_varchar10, + a_text1,a_tinytext1,a_mediumtext1,a_longtext1, + a_time3,a_datetime4,a_timestamp5,a_date0; + SHOW CREATE TABLE t1; + DROP TABLE t1; + + CREATE TABLE t1 AS + SELECT aa_int11,aa_dec103,aa_flt0,aa_dbl0,aa_bit3, + aa_enum0,aa_varchar10, + aa_text1,aa_tinytext1,aa_mediumtext1,aa_longtext1, + aa_time3,aa_datetime4,aa_timestamp5,aa_date0; + SHOW CREATE TABLE t1; + DROP TABLE t1; + +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/t/sp-row.test b/mysql-test/t/sp-row.test index e213d4dbc2d..5928c8cb76d 100644 --- a/mysql-test/t/sp-row.test +++ b/mysql-test/t/sp-row.test @@ -1484,3 +1484,23 @@ BEGIN NOT ATOMIC END; $$ DELIMITER ;$$ + + +--echo # +--echo # MDEV-14139 Anchored data types for variables +--echo # + +DELIMITER $$; +BEGIN NOT ATOMIC + DECLARE row1 ROW(int11 INT,text1 TEXT); + DECLARE a_row1 TYPE OF row1; + DECLARE aa_row1 TYPE OF a_row1; + CREATE TABLE t1 AS SELECT a_row1.int11 AS int11, a_row1.text1 AS text1; + SHOW CREATE TABLE t1; + DROP TABLE t1; + CREATE TABLE t1 AS SELECT aa_row1.int11 AS int11, aa_row1.text1 AS text1; + SHOW CREATE TABLE t1; + DROP TABLE t1; +END; +$$ +DELIMITER ;$$ diff --git a/mysql-test/t/sql_mode.test b/mysql-test/t/sql_mode.test index 97a694f585a..31e38db34e5 100644 --- a/mysql-test/t/sql_mode.test +++ b/mysql-test/t/sql_mode.test @@ -264,7 +264,7 @@ select @@sql_mode; set sql_mode=16384+(65536*4); select @@sql_mode; --error 1231 -set sql_mode=2147483648*2; # that mode does not exist +set sql_mode=2147483648*2*2; # that mode does not exist select @@sql_mode; # diff --git a/mysql-test/t/subselect_mat_cost_bugs.test b/mysql-test/t/subselect_mat_cost_bugs.test index 35f2b9588fe..67af6e3a54a 100644 --- a/mysql-test/t/subselect_mat_cost_bugs.test +++ b/mysql-test/t/subselect_mat_cost_bugs.test @@ -522,4 +522,23 @@ select * from t1 where a in (select max(a) from t1 where a < 4) or a > 5; drop table t1; +--echo # +--echo # MDEV-13135: subquery with ON expression subject to +--echo # semi-join optimizations +--echo # + +CREATE TABLE t1 (a INT); +CREATE ALGORITHM=MERGE VIEW v1 AS SELECT a AS v_a FROM t1; +INSERT INTO t1 VALUES (1),(3); + +CREATE TABLE t2 (b INT, KEY(b)); +INSERT INTO t2 VALUES (3),(4); + +SELECT * FROM t1 WHERE a NOT IN ( + SELECT b FROM t2 INNER JOIN v1 ON (b IN ( SELECT a FROM t1 )) + WHERE v_a = b +); + +DROP VIEW v1; +DROP TABLE t1,t2; diff --git a/mysql-test/t/type_float.test b/mysql-test/t/type_float.test index 4e8cee75d63..2d7c4428507 100644 --- a/mysql-test/t/type_float.test +++ b/mysql-test/t/type_float.test @@ -534,5 +534,20 @@ show create table t1; drop table if exists t1; --echo # +--echo # MDEV-11586 UNION of FLOAT type results in erroneous precision +--echo # + +CREATE TABLE t1 (f FLOAT); +INSERT INTO t1 VALUES (1.1); +SELECT f FROM t1 UNION SELECT 1; +SELECT 1 UNION SELECT f FROM t1; +SELECT f FROM t1 UNION SELECT 2147483647; +SELECT 2147483647 UNION SELECT f FROM t1; +SELECT CASE WHEN 0 THEN (SELECT f FROM t1) ELSE 2147483647 END AS c1, + CASE WHEN 1 THEN 2147483647 ELSE (SELECT f FROM t1) END AS c2; +DROP TABLE t1; + + +--echo # --echo # End of 10.2 tests --echo # diff --git a/mysql-test/t/type_varchar.test b/mysql-test/t/type_varchar.test index cc09069508f..d70cb86fa7b 100644 --- a/mysql-test/t/type_varchar.test +++ b/mysql-test/t/type_varchar.test @@ -219,7 +219,56 @@ SELECT 5 = a FROM t1; DROP TABLE t1; --echo # ---echo # Start of 10.0 tests +--echo # MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 +--echo # + +set sql_mode=''; +CREATE TABLE t1 (c1 VARBINARY(65532)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARBINARY(65533)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARBINARY(65534)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARBINARY(65535)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARBINARY(65536)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(65532)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(65533)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(65534)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(65535)); +DESCRIBE t1; +DROP TABLE t1; + +CREATE TABLE t1 (c1 VARCHAR(65536)); +DESCRIBE t1; +DROP TABLE t1; +set sql_mode=default; + +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE t1 (c1 VARCHAR(65536)); + +--echo # +--echo # End of 5.5 tests --echo # --echo # diff --git a/mysql-test/t/xml.test b/mysql-test/t/xml.test index 417c206f6dc..76625bd4e92 100644 --- a/mysql-test/t/xml.test +++ b/mysql-test/t/xml.test @@ -674,9 +674,7 @@ SELECT ExtractValue('<a><b>xxx</c></a>','/a/b'); --echo # Bug#58175 xml functions read initialized bytes when conversions happen --echo # SET NAMES latin1; ---enable_prepare_warnings SELECT UPDATEXML(CONVERT('' USING swe7), TRUNCATE('',1), 0); ---disable_prepare_warnings --echo # --echo # Bug#12375190: UPDATEXML CRASHES ON SIMPLE INPUTS diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 7c484619434..215afda36ee 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -1737,3 +1737,34 @@ ... } +# +# OpenSSL 1.0.1k problems +# + +{ + OPENSSL 1.0.1k crypto leak + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + fun:CRYPTO_malloc + fun:ENGINE_ADD +} +{ + OPENSSL 1.0.1k crypto leak + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + fun:CRYPTO_malloc + fun:ENGINE_new +} + +{ + OPENSSL 1.0.1k crypto leak2 + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + fun:CRYPTO_malloc + fun:sk_new + obj:/lib64/libcrypto.so* + fun:ENGINE_ADD +} diff --git a/mysys/my_new.cc b/mysys/my_new.cc index 4266452da43..a401ccff135 100644 --- a/mysys/my_new.cc +++ b/mysys/my_new.cc @@ -47,6 +47,11 @@ void* operator new[](std::size_t sz, const std::nothrow_t&) throw() return (void *) my_malloc (sz ? sz : 1, MYF(0)); } +void operator delete (void *ptr, std::size_t) +{ + my_free(ptr); +} + void operator delete (void *ptr) { my_free(ptr); @@ -57,6 +62,11 @@ void operator delete[] (void *ptr) throw () my_free(ptr); } +void operator delete[] (void *ptr, std::size_t) throw () +{ + my_free(ptr); +} + void operator delete(void* ptr, const std::nothrow_t&) throw() { my_free(ptr); diff --git a/pcre/CMakeLists.txt b/pcre/CMakeLists.txt index 8aaa9b57361..80e402e5713 100644 --- a/pcre/CMakeLists.txt +++ b/pcre/CMakeLists.txt @@ -128,9 +128,9 @@ SET(PCREGREP_BUFSIZE "20480" CACHE STRING SET(PCRE_NEWLINE "LF" CACHE STRING "What to recognize as a newline (one of CR, LF, CRLF, ANY, ANYCRLF).") -# MARIADB: Changed the default from OFF to ON as pcre_test.bat on Windows -# MARIADB: fails complaining about too small stack size on Windows. -SET(PCRE_NO_RECURSE ON CACHE BOOL +# Windows has much smaller stack (pcre recursion limit of 112, vs +# 250-500 on Linuxes) +SET(PCRE_NO_RECURSE "${WIN32}" CACHE BOOL "If ON, then don't use stack recursion when matching. See NO_RECURSE in config.h.in for details.") SET(PCRE_POSIX_MALLOC_THRESHOLD "10" CACHE STRING diff --git a/pcre/pcre_exec.c b/pcre/pcre_exec.c index 70ac2fea381..fa84d924a4c 100644 --- a/pcre/pcre_exec.c +++ b/pcre/pcre_exec.c @@ -509,6 +509,12 @@ Returns: MATCH_MATCH if matched ) these values are >= 0 (e.g. stopped by repeated call or recursion limit) */ +#ifdef __GNUC__ +static int +match(REGISTER PCRE_PUCHAR eptr, REGISTER const pcre_uchar *ecode, + PCRE_PUCHAR mstart, int offset_top, match_data *md, eptrblock *eptrb, + unsigned int rdepth) __attribute__((noinline,noclone)); +#endif static int match(REGISTER PCRE_PUCHAR eptr, REGISTER const pcre_uchar *ecode, PCRE_PUCHAR mstart, int offset_top, match_data *md, eptrblock *eptrb, diff --git a/plugin/aws_key_management/CMakeLists.txt b/plugin/aws_key_management/CMakeLists.txt index 913bd8b16ed..aa93fc3aa03 100644 --- a/plugin/aws_key_management/CMakeLists.txt +++ b/plugin/aws_key_management/CMakeLists.txt @@ -117,7 +117,7 @@ ELSE() IF(CMAKE_VERSION LESS "3.0") SET(GIT_TAG "1.0.8") ELSE() - SET(GIT_TAG "1.1.27") + SET(GIT_TAG "1.2.11") ENDIF() SET(AWS_SDK_PATCH_COMMAND ) diff --git a/plugin/handler_socket/CMakeLists.txt b/plugin/handler_socket/CMakeLists.txt index a10743210e9..bd656ebc5b7 100644 --- a/plugin/handler_socket/CMakeLists.txt +++ b/plugin/handler_socket/CMakeLists.txt @@ -8,6 +8,12 @@ ENDIF() #Remove -fno-implicit-templates from compiler flags(handlersocket would not work with it) STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag(" -Wdeprecated-declarations" HAVE_CXX_WDEPRECATED_DECLARATIONS) +IF (HAVE_CXX_WDEPRECATED_DECLARATIONS) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") +ENDIF() + INCLUDE_DIRECTORIES(libhsclient) # Handlersocket client library. We do not distribute it, diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 6ee016a3ca9..fc133f53b37 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -185,6 +185,11 @@ ELSE() SET(localstatedir ${MYSQL_DATADIR}) ENDIF() +SET(resolveip_locations "$basedir/${INSTALL_BINDIR} $basedir/bin") +SET(mysqld_locations "$basedir/${INSTALL_SBINDIR} $basedir/libexec $basedir/sbin $basedir/bin") +SET(errmsg_locations "$basedir/${INSTALL_MYSQLSHAREDIR}/english $basedir/share/english $basedir/share/mysql/english") +SET(pkgdata_locations "$basedir/${INSTALL_MYSQLSHAREDIR} $basedir/share $basedir/share/mysql") + IF(UNIX) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.sh ${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db ESCAPE_QUOTES @ONLY) diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh index 52f6d563fe5..cc6db192de2 100644 --- a/scripts/mysql_config.sh +++ b/scripts/mysql_config.sh @@ -114,6 +114,17 @@ if [ "$basedir" != "/usr" ]; then fi cflags="$include @CFLAGS_FOR_CLIENTS@" +mariadb_config="$basedir/bin/mariadb_config" +if test -x "$basedir/bin/mariadb_config"; then + cflags=`"$mariadb_config" --cflags` + include=`"$mariadb_config" --include` + libs=`"$mariadb_config" --libs` + plugindir=`"$mariadb_config" --plugindir` + socket=`"$mariadb_config" --socket` + port=`"$mariadb_config" --port` + version=`"$mariadb_config" --version` +fi + usage () { cat <<EOF Usage: $0 [OPTIONS] diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index f8f4859e627..07565f7046d 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -188,7 +188,7 @@ SET @skip_auth_anonymous=1;" ;; # Try to find a specific file within --basedir which can either be a binary # release or installed source directory and return the path. -find_in_basedir() +find_in_dirs() { case "$1" in --dir) @@ -200,13 +200,13 @@ find_in_basedir() for dir in "$@" do - if test -f "$basedir/$dir/$file" + if test -f "$dir/$file" then if test -n "$return_dir" then - echo "$basedir/$dir" + echo "$dir" else - echo "$basedir/$dir/$file" + echo "$dir/$file" fi break fi @@ -270,7 +270,7 @@ then print_defaults="$builddir/extra/my_print_defaults" elif test -n "$basedir" then - print_defaults=`find_in_basedir my_print_defaults bin extra` + print_defaults=`find_in_dirs my_print_defaults $basedir/bin $basedir/extra` if test -z "$print_defaults" then cannot_find_file my_print_defaults $basedir/bin $basedir/extra @@ -296,44 +296,46 @@ if test -n "$srcdir" then basedir="$builddir" bindir="$basedir/client" - extra_bindir="$basedir/extra" + resolveip="$basedir/extra/resolveip" mysqld="$basedir/sql/mysqld" langdir="$basedir/sql/share/english" srcpkgdatadir="$srcdir/scripts" buildpkgdatadir="$builddir/scripts" - scriptdir="$srcdir/scripts" elif test -n "$basedir" then - bindir="$basedir/bin" - extra_bindir="$bindir" - mysqld=`find_in_basedir mysqld libexec sbin bin` + bindir="$basedir/bin" # only used in the help text + resolveip=`find_in_dirs resolveip @resolveip_locations@` + if test -z "$resolveip" + then + cannot_find_file resolveip @resolveip_locations@ + exit 1 + fi + mysqld=`find_in_dirs mysqld @mysqld_locations@` if test -z "$mysqld" then - cannot_find_file mysqld $basedir/libexec $basedir/sbin $basedir/bin + cannot_find_file mysqld @mysqld_locations@ exit 1 fi - langdir=`find_in_basedir --dir errmsg.sys share/english share/mysql/english` + langdir=`find_in_dirs --dir errmsg.sys @errmsg_locations@` if test -z "$langdir" then - cannot_find_file errmsg.sys $basedir/share/english $basedir/share/mysql/english + cannot_find_file errmsg.sys @errmsg_locations@ exit 1 fi - srcpkgdatadir=`find_in_basedir --dir fill_help_tables.sql share share/mysql` + srcpkgdatadir=`find_in_dirs --dir fill_help_tables.sql @pkgdata_locations@` buildpkgdatadir=$srcpkgdatadir if test -z "$srcpkgdatadir" then - cannot_find_file fill_help_tables.sql $basedir/share $basedir/share/mysql + cannot_find_file fill_help_tables.sql @pkgdata_locations@ exit 1 fi - scriptdir="$basedir/scripts" else basedir="@prefix@" bindir="@bindir@" - extra_bindir="$bindir" + resolveip="$bindir/resolveip" mysqld="@libexecdir@/mysqld" srcpkgdatadir="@pkgdatadir@" buildpkgdatadir="@pkgdatadir@" - scriptdir="@scriptdir@" fi # Set up paths to SQL scripts required for bootstrap @@ -377,14 +379,14 @@ hostname=`@HOSTNAME@` # Check if hostname is valid if test "$cross_bootstrap" -eq 0 -a "$in_rpm" -eq 0 -a "$force" -eq 0 then - resolved=`"$extra_bindir/resolveip" $hostname 2>&1` + resolved=`"$resolveip" $hostname 2>&1` if test $? -ne 0 then - resolved=`"$extra_bindir/resolveip" localhost 2>&1` + resolved=`"$resolveip" localhost 2>&1` if test $? -ne 0 then echo "Neither host '$hostname' nor 'localhost' could be looked up with" - echo "'$extra_bindir/resolveip'" + echo "'$resolveip'" echo "Please configure the 'hostname' command to return a correct" echo "hostname." echo "If you want to solve this at a later stage, restart this script" @@ -392,7 +394,7 @@ then link_to_help exit 1 fi - echo "WARNING: The host '$hostname' could not be looked up with resolveip." + echo "WARNING: The host '$hostname' could not be looked up with $resolveip." echo "This probably means that your libc libraries are not 100 % compatible" echo "with this binary MariaDB version. The MariaDB daemon, mysqld, should work" echo "normally with the exception that host name resolving will not work." @@ -480,7 +482,7 @@ else echo "The problem could be conflicting information in an external" echo "my.cnf files. You can ignore these by doing:" echo - echo " shell> $scriptdir/scripts/mysql_install_db --defaults-file=~/.my.cnf" + echo " shell> $0 --defaults-file=~/.my.cnf" echo echo "You can also try to start the mysqld daemon with:" echo diff --git a/scripts/mysql_system_tables.sql b/scripts/mysql_system_tables.sql index 60c1ac97955..3b0255abdae 100644 --- a/scripts/mysql_system_tables.sql +++ b/scripts/mysql_system_tables.sql @@ -80,7 +80,7 @@ CREATE TABLE IF NOT EXISTS time_zone_transition_type ( Time_zone_id int unsign CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Leap seconds information for time zones'; -CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob NOT NULL, body longblob NOT NULL, definer char(141) collate utf8_bin DEFAULT '' NOT NULL, created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures'; +CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob NOT NULL, body longblob NOT NULL, definer char(141) collate utf8_bin DEFAULT '' NOT NULL, created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH', 'EMPTY_STRING_IS_NULL') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures'; CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(80) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(141) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges'; @@ -101,7 +101,7 @@ PREPARE stmt FROM @str; EXECUTE stmt; DROP PREPARE stmt; -CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events'; +CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events'; SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats ( database_name VARCHAR(64) NOT NULL, diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index 2a826bb2df0..10e2dcf21fb 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -448,7 +448,8 @@ ALTER TABLE proc MODIFY name char(64) DEFAULT '' NOT NULL, 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', - 'PAD_CHAR_TO_FULL_LENGTH' + 'PAD_CHAR_TO_FULL_LENGTH', + 'EMPTY_STRING_IS_NULL' ) DEFAULT '' NOT NULL, DEFAULT CHARACTER SET utf8; @@ -572,7 +573,8 @@ ALTER TABLE event MODIFY sql_mode 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', - 'PAD_CHAR_TO_FULL_LENGTH' + 'PAD_CHAR_TO_FULL_LENGTH', + 'EMPTY_STRING_IS_NULL' ) DEFAULT '' NOT NULL AFTER on_completion; ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default ''; diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh index 0333a2db882..9b09935abbf 100755 --- a/scripts/wsrep_sst_common.sh +++ b/scripts/wsrep_sst_common.sh @@ -45,7 +45,7 @@ case "$1" in # "traditional" notation readonly WSREP_SST_OPT_HOST=${WSREP_SST_OPT_ADDR%%[:/]*} fi - readonly WSREP_SST_OPT_PORT=$(echo $WSREP_SST_OPT_ADDR | \ + readonly WSREP_SST_OPT_ADDR_PORT=$(echo $WSREP_SST_OPT_ADDR | \ cut -d ']' -f 2 | cut -s -d ':' -f 2 | cut -d '/' -f 1) readonly WSREP_SST_OPT_PATH=${WSREP_SST_OPT_ADDR#*/} shift @@ -124,6 +124,17 @@ readonly WSREP_SST_OPT_BYPASS readonly WSREP_SST_OPT_BINLOG readonly WSREP_SST_OPT_CONF_SUFFIX +if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then + if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then + if [ "$WSREP_SST_OPT_PORT" != "$WSREP_SST_OPT_ADDR_PORT" ]; then + wsrep_log_error "port in --port=$WSREP_SST_OPT_PORT differs from port in --address=$WSREP_SST_OPT_ADDR" + exit 2 + fi + else + readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT" + fi +fi + # try to use my_print_defaults, mysql and mysqldump that come with the sources # (for MTR suite) SCRIPTS_DIR="$(cd $(dirname "$0"); pwd -P)" diff --git a/scripts/wsrep_sst_mysqldump.sh b/scripts/wsrep_sst_mysqldump.sh index f7f911ec1e8..8cfdd4e6553 100644 --- a/scripts/wsrep_sst_mysqldump.sh +++ b/scripts/wsrep_sst_mysqldump.sh @@ -117,7 +117,7 @@ GTID_BINLOG_STATE=$(echo "SHOW GLOBAL VARIABLES LIKE 'gtid_binlog_state'" |\ $MYSQL_CLIENT $AUTH -S$WSREP_SST_OPT_SOCKET --disable-reconnect --connect_timeout=10 |\ tail -1 | awk -F ' ' '{ print $2 }') -MYSQL="$MYSQL_CLIENT --defaults-extra-file=$WSREP_SST_OPT_CONF "\ +MYSQL="$MYSQL_CLIENT $WSREP_SST_OPT_CONF "\ "$AUTH -h${WSREP_SST_OPT_HOST_UNESCAPED:-$WSREP_SST_OPT_HOST} "\ "-P$WSREP_SST_OPT_PORT --disable-reconnect --connect_timeout=10" diff --git a/scripts/wsrep_sst_xtrabackup-v2.sh b/scripts/wsrep_sst_xtrabackup-v2.sh index a413bd81b42..40e686d4d6b 100644 --- a/scripts/wsrep_sst_xtrabackup-v2.sh +++ b/scripts/wsrep_sst_xtrabackup-v2.sh @@ -37,7 +37,6 @@ REMOTEIP="" REMOTEHOST="" tca="" tcert="" -tpem="" tkey="" sockopt="" progress="" @@ -358,8 +357,7 @@ get_transfer() if [[ "$WSREP_SST_OPT_ROLE" == "joiner" ]];then wsrep_log_info "Decrypting with CERT: $tcert, KEY: $tkey" tcmd="socat -u openssl-listen:${TSST_PORT},reuseaddr,cert=${tcert},key=${tkey},verify=0${joiner_extra}${sockopt} stdio" - tcmd="socat -u openssl-listen:${TSST_PORT},reuseaddr,cert=${tpem},key=${tkey},verify=0${sockopt} stdio" - else + else wsrep_log_info "Encrypting with CERT: $tcert, KEY: $tkey" tcmd="socat -u stdio openssl-connect:${REMOTEIP}:${TSST_PORT},cert=${tcert},key=${tkey},verify=0${sockopt}" fi diff --git a/sql-common/client.c b/sql-common/client.c index a19d9fca8d1..d2dc79672db 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -1150,7 +1150,7 @@ void mysql_read_default_options(struct st_mysql_options *options, break; case OPT_pipe: options->protocol = MYSQL_PROTOCOL_PIPE; - break; + break; case OPT_connect_timeout: case OPT_timeout: if (opt_arg) diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 69d17725bea..c85192ee258 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -431,7 +431,7 @@ Event_job_data::load_from_row(THD *thd, TABLE *table) definer_host.str= strmake_root(&mem_root, ptr + 1, len); definer_host.length= len; - sql_mode= (ulong) table->field[ET_FIELD_SQL_MODE]->val_int(); + sql_mode= (sql_mode_t) table->field[ET_FIELD_SQL_MODE]->val_int(); DBUG_RETURN(FALSE); } @@ -637,7 +637,7 @@ Event_timed::load_from_row(THD *thd, TABLE *table) else comment.length= 0; - sql_mode= (ulong) table->field[ET_FIELD_SQL_MODE]->val_int(); + sql_mode= (sql_mode_t) table->field[ET_FIELD_SQL_MODE]->val_int(); DBUG_RETURN(FALSE); } @@ -1478,19 +1478,33 @@ end: bool save_tx_read_only= thd->tx_read_only; thd->tx_read_only= false; - if (WSREP(thd)) - { + /* + This code is processing event execution and does not have client + connection. Here, event execution will now execute a prepared + DROP EVENT statement, but thd->lex->sql_command is set to + SQLCOM_CREATE_PROCEDURE + DROP EVENT will be logged in binlog, and we have to + replicate it to make all nodes have consistent event definitions + Wsrep DDL replication is triggered inside Events::drop_event(), + and here we need to prepare the THD so that DDL replication is + possible, essentially it requires setting sql_command to + SQLCOMM_DROP_EVENT, we will switch sql_command for the duration + of DDL replication only. + */ + const enum_sql_command sql_command_save= thd->lex->sql_command; + const bool sql_command_set= WSREP(thd); + + if (sql_command_set) thd->lex->sql_command = SQLCOM_DROP_EVENT; - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); - } ret= Events::drop_event(thd, &dbname, &name, FALSE); - WSREP_TO_ISOLATION_END; + if (sql_command_set) + { + WSREP_TO_ISOLATION_END; + thd->lex->sql_command = sql_command_save; + } -#ifdef WITH_WSREP - error: -#endif thd->tx_read_only= save_tx_read_only; thd->security_ctx->master_access= saved_master_access; } diff --git a/sql/events.cc b/sql/events.cc index 069fa97aa36..3ad546217a7 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -189,8 +189,8 @@ common_1_lev_code: expr= tmp_expr - (tmp_expr/60)*60; /* the code after the switch will finish */ - } break; + } case INTERVAL_HOUR_SECOND: { ulonglong tmp_expr= expr; @@ -206,8 +206,8 @@ common_1_lev_code: expr= tmp_expr - (tmp_expr/60)*60; /* the code after the switch will finish */ - } break; + } case INTERVAL_DAY_SECOND: { ulonglong tmp_expr= expr; @@ -229,8 +229,8 @@ common_1_lev_code: expr= tmp_expr - (tmp_expr/60)*60; /* the code after the switch will finish */ - } break; + } case INTERVAL_DAY_MICROSECOND: case INTERVAL_HOUR_MICROSECOND: case INTERVAL_MINUTE_MICROSECOND: @@ -244,7 +244,8 @@ common_1_lev_code: break; case INTERVAL_WEEK: expr/= 7; - /* fall through */ + close_quote= FALSE; + break; default: close_quote= FALSE; break; @@ -335,6 +336,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data) if (check_access(thd, EVENT_ACL, parse_data->dbname.str, NULL, NULL, 0, 0)) DBUG_RETURN(TRUE); + 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)) @@ -417,6 +419,10 @@ Events::create_event(THD *thd, Event_parse_data *parse_data) thd->restore_stmt_binlog_format(save_binlog_format); DBUG_RETURN(ret); +#ifdef WITH_WSREP + error: + DBUG_RETURN(TRUE); +#endif /* WITH_WSREP */ } @@ -457,6 +463,9 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, if (check_access(thd, EVENT_ACL, parse_data->dbname.str, NULL, NULL, 0, 0)) DBUG_RETURN(TRUE); + + 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)) DBUG_RETURN(TRUE); @@ -541,6 +550,10 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, thd->restore_stmt_binlog_format(save_binlog_format); DBUG_RETURN(ret); +#ifdef WITH_WSREP +error: + DBUG_RETURN(TRUE); +#endif /* WITH_WSREP */ } @@ -582,6 +595,8 @@ Events::drop_event(THD *thd, const LEX_CSTRING *dbname, if (check_access(thd, EVENT_ACL, dbname->str, NULL, NULL, 0, 0)) DBUG_RETURN(TRUE); + WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL) + /* Turn off row binlogging of this statement and use statement-based so that all supporting tables are updated for DROP EVENT command. @@ -603,6 +618,10 @@ Events::drop_event(THD *thd, const LEX_CSTRING *dbname, thd->restore_stmt_binlog_format(save_binlog_format); DBUG_RETURN(ret); +#ifdef WITH_WSREP +error: + DBUG_RETURN(TRUE); +#endif } diff --git a/sql/field.cc b/sql/field.cc index e10c82347d5..51562dd4198 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1,6 +1,6 @@ /* - Copyright (c) 2000, 2013, Oracle and/or its affiliates. - Copyright (c) 2008, 2013, Monty Program Ab. + Copyright (c) 2000, 2017, Oracle and/or its affiliates. + Copyright (c) 2008, 2017, 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 @@ -240,7 +240,7 @@ static enum_field_types field_types_merge_rules [FIELDTYPE_NUM][FIELDTYPE_NUM]= //MYSQL_TYPE_NULL MYSQL_TYPE_TIMESTAMP MYSQL_TYPE_FLOAT, MYSQL_TYPE_VARCHAR, //MYSQL_TYPE_LONGLONG MYSQL_TYPE_INT24 - MYSQL_TYPE_FLOAT, MYSQL_TYPE_FLOAT, + MYSQL_TYPE_DOUBLE, MYSQL_TYPE_FLOAT, //MYSQL_TYPE_DATE MYSQL_TYPE_TIME MYSQL_TYPE_VARCHAR, MYSQL_TYPE_VARCHAR, //MYSQL_TYPE_DATETIME MYSQL_TYPE_YEAR @@ -2240,15 +2240,15 @@ Field *Field::clone(MEM_ROOT *root, my_ptrdiff_t diff) return tmp; } -void Field::set_default() +int Field::set_default() { if (default_value) { Query_arena backup_arena; table->in_use->set_n_backup_active_arena(table->expr_arena, &backup_arena); - (void) default_value->expr->save_in_field(this, 0); + int rc= default_value->expr->save_in_field(this, 0); table->in_use->restore_active_arena(table->expr_arena, &backup_arena); - return; + return rc; } /* Copy constant value stored in s->default_values */ my_ptrdiff_t l_offset= (my_ptrdiff_t) (table->s->default_values - @@ -2257,6 +2257,7 @@ void Field::set_default() if (maybe_null_in_table()) *null_ptr= ((*null_ptr & (uchar) ~null_bit) | (null_ptr[l_offset] & null_bit)); + return 0; } @@ -2271,6 +2272,16 @@ void Field_null::sql_type(String &res) const /**************************************************************************** + Field_row, e.g. for ROW-type SP variables +****************************************************************************/ + +Field_row::~Field_row() +{ + delete m_table; +} + + +/**************************************************************************** Functions for the Field_decimal class This is an number stored as a pre-space (or pre-zero) string ****************************************************************************/ @@ -9005,13 +9016,13 @@ String *Field_set::val_str(String *val_buffer, ulonglong tmp=(ulonglong) Field_enum::val_int(); uint bitnr=0; + /* + Some callers expect *val_buffer to contain the result, + so we assign to it, rather than doing 'return &empty_set_string. + */ + *val_buffer= empty_set_string; if (tmp == 0) { - /* - Some callers expect *val_buffer to contain the result, - so we assign to it, rather than doing 'return &empty_set_string. - */ - *val_buffer= empty_set_string; return val_buffer; } @@ -9764,7 +9775,7 @@ Field_bit::unpack(uchar *to, const uchar *from, const uchar *from_end, } -void Field_bit::set_default() +int Field_bit::set_default() { if (bit_len > 0) { @@ -9772,7 +9783,7 @@ void Field_bit::set_default() uchar bits= get_rec_bits(bit_ptr + col_offset, bit_ofs, bit_len); set_rec_bits(bits, bit_ptr, bit_ofs, bit_len); } - Field::set_default(); + return Field::set_default(); } /* @@ -10301,6 +10312,21 @@ Field *make_field(TABLE_SHARE *share, uchar *UNINIT_VAR(bit_ptr); uchar UNINIT_VAR(bit_offset); + DBUG_PRINT("debug", ("field_type: %s, field_length: %u, interval: %p, pack_flag: %s%s%s%s%s", + handler->name().ptr(), field_length, interval, + FLAGSTR(pack_flag, FIELDFLAG_BINARY), + FLAGSTR(pack_flag, FIELDFLAG_INTERVAL), + FLAGSTR(pack_flag, FIELDFLAG_NUMBER), + FLAGSTR(pack_flag, FIELDFLAG_PACK), + FLAGSTR(pack_flag, FIELDFLAG_BLOB))); + + if (handler == &type_handler_row) + { + DBUG_ASSERT(field_length == 0); + DBUG_ASSERT(f_maybe_null(pack_flag)); + return new (mem_root) Field_row(ptr, field_name); + } + if (handler->real_field_type() == MYSQL_TYPE_BIT && !f_bit_as_char(pack_flag)) { bit_ptr= null_pos; @@ -10322,13 +10348,6 @@ Field *make_field(TABLE_SHARE *share, null_bit= ((uchar) 1) << null_bit; } - DBUG_PRINT("debug", ("field_type: %s, field_length: %u, interval: %p, pack_flag: %s%s%s%s%s", - handler->name().ptr(), field_length, interval, - FLAGSTR(pack_flag, FIELDFLAG_BINARY), - FLAGSTR(pack_flag, FIELDFLAG_INTERVAL), - FLAGSTR(pack_flag, FIELDFLAG_NUMBER), - FLAGSTR(pack_flag, FIELDFLAG_PACK), - FLAGSTR(pack_flag, FIELDFLAG_BLOB))); if (f_is_alpha(pack_flag)) { diff --git a/sql/field.h b/sql/field.h index bf115b38816..eb6510bc9a4 100644 --- a/sql/field.h +++ b/sql/field.h @@ -45,6 +45,7 @@ class Column_statistics_collected; class Item_func; class Item_bool_func; class Item_equal; +class Virtual_tmp_table; enum enum_check_fields { @@ -973,7 +974,7 @@ public: my_ptrdiff_t l_offset= (my_ptrdiff_t) (record - table->record[0]); return ptr + l_offset; } - virtual void set_default(); + virtual int set_default(); bool has_update_default_function() const { @@ -1527,6 +1528,11 @@ public: virtual Compression_method *compression_method() const { return 0; } + virtual Virtual_tmp_table **virtual_tmp_table_addr() + { + return NULL; + } + friend int cre_myisam(char * name, register TABLE *form, uint options, ulonglong auto_increment_value); friend class Copy_field; @@ -3902,7 +3908,7 @@ public: virtual uchar *pack(uchar *to, const uchar *from, uint max_length); virtual const uchar *unpack(uchar *to, const uchar *from, const uchar *from_end, uint param_data); - virtual void set_default(); + virtual int set_default(); Field *new_key_field(MEM_ROOT *root, TABLE *new_table, uchar *new_ptr, uint32 length, @@ -3954,6 +3960,19 @@ public: }; +class Field_row: public Field_null +{ + class Virtual_tmp_table *m_table; +public: + Field_row(uchar *ptr_arg, const LEX_CSTRING *field_name_arg) + :Field_null(ptr_arg, 0, Field::NONE, field_name_arg, &my_charset_bin), + m_table(NULL) + {} + ~Field_row(); + Virtual_tmp_table **virtual_tmp_table_addr() { return &m_table; } +}; + + extern const LEX_CSTRING null_clex_str; Field *make_field(TABLE_SHARE *share, MEM_ROOT *mem_root, @@ -4205,6 +4224,23 @@ public: || unireg_check == Field::TIMESTAMP_DNUN_FIELD; } + void set_type(const Column_definition &other) + { + set_handler(other.type_handler()); + length= other.length; + char_length= other.char_length; + decimals= other.decimals; + flags= other.flags; + pack_length= other.pack_length; + key_length= other.key_length; + unireg_check= other.unireg_check; + interval= other.interval; + charset= other.charset; + srid= other.srid; + geom_type= other.geom_type; + pack_flag= other.pack_flag; + } + // Replace the entire value by another definition void set_column_definition(const Column_definition *def) { @@ -4276,12 +4312,14 @@ class Spvar_definition: public Column_definition class Qualified_column_ident *m_column_type_ref; // for %TYPE class 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 public: Spvar_definition() :m_column_type_ref(NULL), m_table_rowtype_ref(NULL), m_cursor_rowtype_ref(false), + m_cursor_rowtype_offset(0), m_row_field_definitions(NULL) { } Spvar_definition(THD *thd, Field *field) @@ -4289,13 +4327,12 @@ public: m_column_type_ref(NULL), m_table_rowtype_ref(NULL), m_cursor_rowtype_ref(false), + m_cursor_rowtype_offset(0), m_row_field_definitions(NULL) { } const Type_handler *type_handler() const { - return is_row() || is_table_rowtype_ref() || is_cursor_rowtype_ref() ? - &type_handler_row : - Type_handler_hybrid_field_type::type_handler(); + return Type_handler_hybrid_field_type::type_handler(); } bool is_column_type_ref() const { return m_column_type_ref != 0; } bool is_table_rowtype_ref() const { return m_table_rowtype_ref != 0; } @@ -4315,11 +4352,20 @@ public: } void set_table_rowtype_ref(class Table_ident *ref) { + DBUG_ASSERT(ref); + set_handler(&type_handler_row); m_table_rowtype_ref= ref; } - void set_cursor_rowtype_ref(bool ref) + + uint cursor_rowtype_offset() const + { + return m_cursor_rowtype_offset; + } + void set_cursor_rowtype_ref(uint offset) { - m_cursor_rowtype_ref= ref; + set_handler(&type_handler_row); + m_cursor_rowtype_ref= true; + m_cursor_rowtype_offset= offset; } /* @@ -4347,6 +4393,8 @@ public: } void set_row_field_definitions(Row_definition_list *list) { + DBUG_ASSERT(list); + set_handler(&type_handler_row); m_row_field_definitions= list; } diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index effabc3a3c0..67132e5ee4f 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1,6 +1,6 @@ /* - Copyright (c) 2005, 2013, Oracle and/or its affiliates. - Copyright (c) 2009, 2013, Monty Program Ab & SkySQL Ab + Copyright (c) 2005, 2017, Oracle and/or its affiliates. + Copyright (c) 2009, 2017, 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 @@ -1931,7 +1931,7 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info, cleanup_new_partition(part_count); DBUG_RETURN(error); } - + DBUG_PRINT("info", ("Add partition %s", part_name_buff)); if ((error= prepare_new_partition(table, create_info, new_file_array[i], diff --git a/sql/ha_sequence.cc b/sql/ha_sequence.cc index e5db6781464..93f6f32d473 100644 --- a/sql/ha_sequence.cc +++ b/sql/ha_sequence.cc @@ -112,6 +112,12 @@ int ha_sequence::open(const char *name, int mode, uint flags) } else table->m_needs_reopen= true; + + /* + The following is needed to fix comparison of rows in + ha_update_first_row() for InnoDB + */ + memcpy(table->record[1], table->s->default_values, table->s->reclength); } DBUG_RETURN(error); } diff --git a/sql/handler.cc b/sql/handler.cc index 7609ed047a0..ca4f8634091 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -405,7 +405,7 @@ static int ha_finish_errors(void) } static volatile int32 need_full_discover_for_existence= 0; -static volatile int32 engines_with_discover_table_names= 0; +static volatile int32 engines_with_discover_file_names= 0; static volatile int32 engines_with_discover= 0; static int full_discover_for_existence(handlerton *, const char *, const char *) @@ -430,8 +430,8 @@ static void update_discovery_counters(handlerton *hton, int val) if (hton->discover_table_existence == full_discover_for_existence) my_atomic_add32(&need_full_discover_for_existence, val); - if (hton->discover_table_names) - my_atomic_add32(&engines_with_discover_table_names, val); + if (hton->discover_table_names && hton->tablefile_extensions[0]) + my_atomic_add32(&engines_with_discover_file_names, val); if (hton->discover_table) my_atomic_add32(&engines_with_discover, val); @@ -5229,6 +5229,7 @@ void Discovered_table_list::remove_duplicates() { LEX_CSTRING **src= tables->front(); LEX_CSTRING **dst= src; + sort(); while (++dst <= tables->back()) { LEX_CSTRING *s= *src, *d= *dst; @@ -5296,10 +5297,12 @@ int ha_discover_table_names(THD *thd, LEX_CSTRING *db, MY_DIR *dirp, int error; DBUG_ENTER("ha_discover_table_names"); - if (engines_with_discover_table_names == 0 && !reusable) + if (engines_with_discover_file_names == 0 && !reusable) { - error= ext_table_discovery_simple(dirp, result); - result->sort(); + st_discover_names_args args= {db, NULL, result, 0}; + error= ext_table_discovery_simple(dirp, result) || + plugin_foreach(thd, discover_names, + MYSQL_STORAGE_ENGINE_PLUGIN, &args); } else { @@ -5312,8 +5315,6 @@ int ha_discover_table_names(THD *thd, LEX_CSTRING *db, MY_DIR *dirp, error= extension_based_table_discovery(dirp, reg_ext, result) || plugin_foreach(thd, discover_names, MYSQL_STORAGE_ENGINE_PLUGIN, &args); - result->sort(); - if (args.possible_duplicates > 0) result->remove_duplicates(); } @@ -6078,7 +6079,7 @@ int handler::update_first_row(uchar *new_data) /* We have to do the memcmp as otherwise we may get error 169 from InnoDB */ - if (memcmp(table->record[0], table->record[1], table->s->reclength)) + if (memcmp(new_data, table->record[1], table->s->reclength)) error= update_row(table->record[1], new_data); } end_error= ha_rnd_end(); diff --git a/sql/item.cc b/sql/item.cc index ad17cd5811c..024fbd87d79 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -109,6 +109,19 @@ void Item::push_note_converted_to_positive_complement(THD *thd) } +longlong Item::val_datetime_packed_result() +{ + MYSQL_TIME ltime, tmp; + if (get_date_result(<ime, TIME_FUZZY_DATES | TIME_INVALID_DATES)) + return 0; + if (ltime.time_type != MYSQL_TIMESTAMP_TIME) + return pack_time(<ime); + if ((null_value= time_to_datetime_with_warn(current_thd, <ime, &tmp, 0))) + return 0; + return pack_time(&tmp); +} + + /** Get date/time/datetime. Optionally extend TIME result to DATETIME. @@ -1752,17 +1765,15 @@ void Item_sp_variable::make_field(THD *thd, Send_field *field) Item_splocal::Item_splocal(THD *thd, const LEX_CSTRING *sp_var_name, uint sp_var_idx, - enum_field_types sp_var_type, + const Type_handler *handler, uint pos_in_q, uint len_in_q): Item_sp_variable(thd, sp_var_name), Rewritable_query_parameter(pos_in_q, len_in_q), + Type_handler_hybrid_field_type(handler), m_var_idx(sp_var_idx) { maybe_null= TRUE; - - sp_var_type= real_type_to_type(sp_var_type); - m_type= sp_map_item_type(sp_var_type); - set_handler_by_field_type(sp_var_type); + m_type= sp_map_item_type(handler); } @@ -1777,7 +1788,7 @@ bool Item_splocal::fix_fields(THD *thd, Item **ref) Item * Item_splocal::this_item() { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); DBUG_ASSERT(fixed); return m_thd->spcont->get_item(m_var_idx); } @@ -1785,7 +1796,7 @@ Item_splocal::this_item() const Item * Item_splocal::this_item() const { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); DBUG_ASSERT(fixed); return m_thd->spcont->get_item(m_var_idx); } @@ -1794,7 +1805,7 @@ Item_splocal::this_item() const Item ** Item_splocal::this_item_addr(THD *thd, Item **) { - DBUG_ASSERT(m_sp == thd->spcont->sp); + DBUG_ASSERT(m_sp == thd->spcont->m_sp); DBUG_ASSERT(fixed); return thd->spcont->get_item_addr(m_var_idx); } @@ -1901,7 +1912,7 @@ bool Item_splocal_row_field::fix_fields(THD *thd, Item **ref) Item * Item_splocal_row_field::this_item() { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); DBUG_ASSERT(fixed); return m_thd->spcont->get_item(m_var_idx)->element_index(m_field_idx); } @@ -1910,7 +1921,7 @@ Item_splocal_row_field::this_item() const Item * Item_splocal_row_field::this_item() const { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); DBUG_ASSERT(fixed); return m_thd->spcont->get_item(m_var_idx)->element_index(m_field_idx); } @@ -1919,7 +1930,7 @@ Item_splocal_row_field::this_item() const Item ** Item_splocal_row_field::this_item_addr(THD *thd, Item **) { - DBUG_ASSERT(m_sp == thd->spcont->sp); + DBUG_ASSERT(m_sp == thd->spcont->m_sp); DBUG_ASSERT(fixed); return thd->spcont->get_item(m_var_idx)->addr(m_field_idx); } @@ -2007,7 +2018,7 @@ bool Item_case_expr::fix_fields(THD *thd, Item **ref) Item * Item_case_expr::this_item() { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); return m_thd->spcont->get_case_expr(m_case_expr_id); } @@ -2017,7 +2028,7 @@ Item_case_expr::this_item() const Item * Item_case_expr::this_item() const { - DBUG_ASSERT(m_sp == m_thd->spcont->sp); + DBUG_ASSERT(m_sp == m_thd->spcont->m_sp); return m_thd->spcont->get_case_expr(m_case_expr_id); } @@ -2026,7 +2037,7 @@ Item_case_expr::this_item() const Item ** Item_case_expr::this_item_addr(THD *thd, Item **) { - DBUG_ASSERT(m_sp == thd->spcont->sp); + DBUG_ASSERT(m_sp == thd->spcont->m_sp); return thd->spcont->get_case_expr_addr(m_case_expr_id); } @@ -2595,6 +2606,9 @@ bool Type_std_attributes::agg_item_set_converter(const DTCollation &coll, Item **args, uint nargs, uint flags, int item_sep) { + THD *thd= current_thd; + if (thd->lex->is_ps_or_view_context_analysis()) + return false; Item **arg, *safe_args[2]= {NULL, NULL}; /* @@ -2610,7 +2624,6 @@ bool Type_std_attributes::agg_item_set_converter(const DTCollation &coll, safe_args[1]= args[item_sep]; } - THD *thd= current_thd; bool res= FALSE; uint i; @@ -7070,6 +7083,7 @@ bool Item::cache_const_expr_analyzer(uchar **arg) */ if (const_item() && !(basic_const_item() || item->basic_const_item() || + item->type() == Item::NULL_ITEM || /* Item_name_const hack */ item->type() == Item::FIELD_ITEM || item->type() == SUBSELECT_ITEM || item->type() == CACHE_ITEM || @@ -7445,7 +7459,11 @@ public: // Find which select the field is in. This is achieved by walking up // the select tree and looking for the table of interest. st_select_lex *sel; - for (sel= current_select; sel; sel= sel->outer_select()) + for (sel= current_select; + sel ; + sel= (sel->context.outer_context ? + sel->context.outer_context->select_lex: + NULL)) { List_iterator<TABLE_LIST> li(sel->leaf_tables); TABLE_LIST *tbl; @@ -8619,7 +8637,6 @@ bool Item_direct_view_ref::send(Protocol *protocol, st_value *buffer) bool Item_direct_view_ref::fix_fields(THD *thd, Item **reference) { - DBUG_ASSERT(1); /* view fild reference must be defined */ DBUG_ASSERT(*ref); /* (*ref)->check_cols() will be made in Item_direct_ref::fix_fields */ @@ -9677,14 +9694,19 @@ bool Item_cache_temporal::cache_value() { if (!example) return false; + value_cached= true; + value= example->val_datetime_packed_result(); + null_value= example->null_value; + return true; +} + +bool Item_cache_time::cache_value() +{ + if (!example) + return false; value_cached= true; - - MYSQL_TIME ltime; - if (example->get_date_result(<ime, 0)) - value=0; - else - value= pack_time(<ime); + value= example->val_time_packed_result(); null_value= example->null_value; return true; } @@ -9735,8 +9757,8 @@ void Item_cache_temporal::store_packed(longlong val_arg, Item *example_arg) Item *Item_cache_temporal::clone_item(THD *thd) { - Item_cache_temporal *item= new (thd->mem_root) - Item_cache_temporal(thd, Item_cache_temporal::type_handler()); + Item_cache *tmp= type_handler()->Item_get_cache(thd, this); + Item_cache_temporal *item= static_cast<Item_cache_temporal*>(tmp); item->store_packed(value, example); return item; } @@ -10184,7 +10206,7 @@ void Item_direct_view_ref::update_used_tables() table_map Item_direct_view_ref::used_tables() const { - DBUG_ASSERT(null_ref_table); + DBUG_ASSERT(fixed); if (get_depended_from()) return OUTER_REF_TABLE_BIT; diff --git a/sql/item.h b/sql/item.h index 0e7db0d6575..1f743913d78 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1,8 +1,8 @@ #ifndef SQL_ITEM_INCLUDED #define SQL_ITEM_INCLUDED -/* Copyright (c) 2000, 2015, Oracle and/or its affiliates. - Copyright (c) 2009, 2017, MariaDB Corporation. +/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. + Copyright (c) 2009, 2017, 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 @@ -1397,6 +1397,14 @@ public: ulonglong fuzzydate= TIME_FUZZY_DATES | TIME_INVALID_DATES | TIME_TIME_ONLY; return get_date(<ime, fuzzydate) ? 0 : pack_time(<ime); } + longlong val_datetime_packed_result(); + longlong val_time_packed_result() + { + MYSQL_TIME ltime; + ulonglong fuzzydate= TIME_FUZZY_DATES | TIME_INVALID_DATES | TIME_TIME_ONLY; + return get_date_result(<ime, fuzzydate) ? 0 : pack_time(<ime); + } + // Get a temporal value in packed DATE/DATETIME or TIME format longlong val_temporal_packed(enum_field_types f_type) { @@ -2093,17 +2101,6 @@ public: }; -class Item_spvar_args: public Item_args -{ - Virtual_tmp_table *m_table; -public: - Item_spvar_args():Item_args(), m_table(NULL) { } - ~Item_spvar_args(); - bool row_create_items(THD *thd, List<Spvar_definition> *list); - Field *get_row_field(uint i) const; -}; - - /* Class to be used to enumerate all field references in an item tree. This includes references to outside but not fields of the tables within a @@ -2271,7 +2268,7 @@ public: Routine to which this Item_splocal belongs. Used for checking if correct runtime context is used for variable handling. */ - sp_head *m_sp; + const sp_head *m_sp; #endif public: @@ -2337,7 +2334,7 @@ protected: bool append_value_for_log(THD *thd, String *str); public: Item_splocal(THD *thd, const LEX_CSTRING *sp_var_name, uint sp_var_idx, - enum_field_types sp_var_type, + const Type_handler *handler, uint pos_in_q= 0, uint len_in_q= 0); bool fix_fields(THD *, Item **); @@ -2390,20 +2387,6 @@ public: }; -class Item_splocal_row: public Item_splocal -{ -public: - Item_splocal_row(THD *thd, const LEX_CSTRING *sp_var_name, - uint sp_var_idx, uint pos_in_q, uint len_in_q) - :Item_splocal(thd, sp_var_name, sp_var_idx, MYSQL_TYPE_NULL, - pos_in_q, len_in_q) - { - set_handler(&type_handler_row); - } - enum Type type() const { return ROW_ITEM; } -}; - - /** An Item_splocal variant whose data type becomes known only at sp_rcontext creation time, e.g. "DECLARE var1 t1.col1%TYPE". @@ -2415,7 +2398,7 @@ public: const LEX_CSTRING *sp_var_name, uint sp_var_idx, uint pos_in_q, uint len_in_q) - :Item_splocal(thd, sp_var_name, sp_var_idx, MYSQL_TYPE_NULL, + :Item_splocal(thd, sp_var_name, sp_var_idx, &type_handler_null, pos_in_q, len_in_q) { } }; @@ -2437,9 +2420,9 @@ public: const LEX_CSTRING *sp_var_name, const LEX_CSTRING *sp_field_name, uint sp_var_idx, uint sp_field_idx, - enum_field_types sp_var_type, + const Type_handler *handler, uint pos_in_q= 0, uint len_in_q= 0) - :Item_splocal(thd, sp_var_name, sp_var_idx, sp_var_type, + :Item_splocal(thd, sp_var_name, sp_var_idx, handler, pos_in_q, len_in_q), m_field_name(*sp_field_name), m_field_idx(sp_field_idx) @@ -2461,11 +2444,11 @@ public: const LEX_CSTRING *sp_var_name, const LEX_CSTRING *sp_field_name, uint sp_var_idx, - enum_field_types sp_var_type, + const Type_handler *handler, uint pos_in_q= 0, uint len_in_q= 0) :Item_splocal_row_field(thd, sp_var_name, sp_field_name, sp_var_idx, 0 /* field index will be set later */, - sp_var_type, pos_in_q, len_in_q) + handler, pos_in_q, len_in_q) { } bool fix_fields(THD *thd, Item **it); void print(String *str, enum_query_type query_type); @@ -2930,14 +2913,13 @@ public: Item_field for the ROW data type */ class Item_field_row: public Item_field, - public Item_spvar_args + public Item_args { public: Item_field_row(THD *thd, Field *field) :Item_field(thd, field), - Item_spvar_args() + Item_args() { } - Item *get_copy(THD *thd, MEM_ROOT *mem_root) { return get_item_copy<Item_field_row>(thd, mem_root, this); } @@ -2955,6 +2937,8 @@ public: } return false; } + bool row_create_items(THD *thd, List<Spvar_definition> *list); + Field *get_row_field(uint i) const; }; @@ -4680,6 +4664,8 @@ public: bool fix_fields(THD *thd, Item **it); void cleanup(); + Item *get_orig_item() const { return orig_item; } + /* Methods of getting value which should be cached in the cache */ void save_val(Field *to); double val_real(); @@ -5782,8 +5768,9 @@ public: class Item_cache_temporal: public Item_cache_int { -public: +protected: Item_cache_temporal(THD *thd, const Type_handler *handler); +public: String* val_str(String *str); my_decimal *val_decimal(my_decimal *); longlong val_int(); @@ -5801,8 +5788,37 @@ public: */ Item *clone_item(THD *thd); Item *convert_to_basic_const_item(THD *thd); +}; + + +class Item_cache_time: public Item_cache_temporal +{ +public: + Item_cache_time(THD *thd) + :Item_cache_temporal(thd, &type_handler_time2) { } + bool cache_value(); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_cache_time>(thd, mem_root, this); } +}; + + +class Item_cache_datetime: public Item_cache_temporal +{ +public: + Item_cache_datetime(THD *thd) + :Item_cache_temporal(thd, &type_handler_datetime2) { } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_cache_datetime>(thd, mem_root, this); } +}; + + +class Item_cache_date: public Item_cache_temporal +{ +public: + Item_cache_date(THD *thd) + :Item_cache_temporal(thd, &type_handler_newdate) { } Item *get_copy(THD *thd, MEM_ROOT *mem_root) - { return get_item_copy<Item_cache_temporal>(thd, mem_root, this); } + { return get_item_copy<Item_cache_date>(thd, mem_root, this); } }; diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 0d57066c2d2..f35017629aa 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -569,18 +569,24 @@ bool Arg_comparator::set_cmp_func_string() bool Arg_comparator::set_cmp_func_time() { + THD *thd= current_thd; m_compare_collation= &my_charset_numeric; func= is_owner_equal_func() ? &Arg_comparator::compare_e_time : &Arg_comparator::compare_time; + a= cache_converted_constant(thd, a, &a_cache, compare_type_handler()); + b= cache_converted_constant(thd, b, &b_cache, compare_type_handler()); return false; } bool Arg_comparator::set_cmp_func_datetime() { + THD *thd= current_thd; m_compare_collation= &my_charset_numeric; func= is_owner_equal_func() ? &Arg_comparator::compare_e_datetime : &Arg_comparator::compare_datetime; + a= cache_converted_constant(thd, a, &a_cache, compare_type_handler()); + b= cache_converted_constant(thd, b, &b_cache, compare_type_handler()); return false; } @@ -683,17 +689,12 @@ Item** Arg_comparator::cache_converted_constant(THD *thd_arg, Item **value, const Type_handler *handler) { /* - get_datetime_value creates Item_cache internally when comparing - values for the first row. - Arg_comparator::cache_converted_constant() is never called for TIME_RESULT. - */ - DBUG_ASSERT(handler->cmp_type() != TIME_RESULT); - /* Don't need cache if doing context analysis only. */ if (!thd_arg->lex->is_ps_or_view_context_analysis() && (*value)->const_item() && - handler->cmp_type() != (*value)->cmp_type()) + handler->type_handler_for_comparison() != + (*value)->type_handler_for_comparison()) { Item_cache *cache= handler->Item_get_cache(thd_arg, *value); cache->setup(thd_arg, *value); @@ -750,7 +751,8 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, if (!thd) thd= current_thd; const Type_handler *h= Type_handler::get_handler_by_field_type(f_type); - Item_cache_temporal *cache= new (thd->mem_root) Item_cache_temporal(thd, h); + Item_cache *tmp_cache= h->Item_get_cache(thd, item); + Item_cache_temporal *cache= static_cast<Item_cache_temporal*>(tmp_cache); cache->store_packed(value, item); *cache_arg= cache; *item_arg= cache_arg; @@ -759,63 +761,57 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, } -/* - Compare items values as dates. - - SYNOPSIS - Arg_comparator::compare_datetime() - - DESCRIPTION - Compare items values as DATE/DATETIME for both EQUAL_FUNC and from other - comparison functions. The correct DATETIME values are obtained - with help of the get_datetime_value() function. - - RETURN - -1 a < b or at least one item is null - 0 a == b - 1 a > b -*/ - -int Arg_comparator::compare_temporal(enum_field_types type) +int Arg_comparator::compare_time() { - bool a_is_null, b_is_null; - longlong a_value, b_value; - + longlong val1= (*a)->val_time_packed(); + if (!(*a)->null_value) + { + longlong val2= (*b)->val_time_packed(); + if (!(*b)->null_value) + return compare_not_null_values(val1, val2); + } if (set_null) - owner->null_value= 1; + owner->null_value= true; + return -1; +} - /* Get DATE/DATETIME/TIME value of the 'a' item. */ - a_value= get_datetime_value(0, &a, &a_cache, type, &a_is_null); - if (a_is_null) - return -1; - /* Get DATE/DATETIME/TIME value of the 'b' item. */ - b_value= get_datetime_value(0, &b, &b_cache, type, &b_is_null); - if (b_is_null) - return -1; +int Arg_comparator::compare_e_time() +{ + longlong val1= (*a)->val_time_packed(); + longlong val2= (*b)->val_time_packed(); + if ((*a)->null_value || (*b)->null_value) + return MY_TEST((*a)->null_value && (*b)->null_value); + return MY_TEST(val1 == val2); +} - /* Here we have two not-NULL values. */ - if (set_null) - owner->null_value= 0; - /* Compare values. */ - return a_value < b_value ? -1 : a_value > b_value ? 1 : 0; -} -int Arg_comparator::compare_e_temporal(enum_field_types type) +int Arg_comparator::compare_datetime() { - bool a_is_null, b_is_null; - longlong a_value, b_value; + longlong val1= (*a)->val_datetime_packed(); + if (!(*a)->null_value) + { + longlong val2= (*b)->val_datetime_packed(); + if (!(*b)->null_value) + return compare_not_null_values(val1, val2); + } + if (set_null) + owner->null_value= true; + return -1; +} - /* Get DATE/DATETIME/TIME value of the 'a' item. */ - a_value= get_datetime_value(0, &a, &a_cache, type, &a_is_null); - /* Get DATE/DATETIME/TIME value of the 'b' item. */ - b_value= get_datetime_value(0, &b, &b_cache, type, &b_is_null); - return a_is_null || b_is_null ? a_is_null == b_is_null - : a_value == b_value; +int Arg_comparator::compare_e_datetime() +{ + longlong val1= (*a)->val_datetime_packed(); + longlong val2= (*b)->val_datetime_packed(); + if ((*a)->null_value || (*b)->null_value) + return MY_TEST((*a)->null_value && (*b)->null_value); + return MY_TEST(val1 == val2); } + int Arg_comparator::compare_string() { String *res1,*res2; @@ -962,13 +958,7 @@ int Arg_comparator::compare_int_signed() { longlong val2= (*b)->val_int(); if (!(*b)->null_value) - { - if (set_null) - owner->null_value= 0; - if (val1 < val2) return -1; - if (val1 == val2) return 0; - return 1; - } + return compare_not_null_values(val1, val2); } if (set_null) owner->null_value= 1; @@ -2112,38 +2102,40 @@ bool Item_func_between::fix_length_and_dec_numeric(THD *thd) } -longlong Item_func_between::val_int_cmp_temporal() +bool Item_func_between::fix_length_and_dec_temporal(THD *thd) { - THD *thd= current_thd; - longlong value, a, b; - Item *cache, **ptr; - bool value_is_null, a_is_null, b_is_null; + if (!thd->lex->is_ps_or_view_context_analysis()) + { + for (uint i= 0; i < 3; i ++) + { + if (args[i]->const_item() && + args[i]->type_handler_for_comparison() != m_comparator.type_handler()) + { + Item_cache *cache= m_comparator.type_handler()->Item_get_cache(thd, args[i]); + if (!cache || cache->setup(thd, args[i])) + return true; + thd->change_item_tree(&args[i], cache); + } + } + } + return false; +} - ptr= &args[0]; - enum_field_types f_type= m_comparator.type_handler()->field_type(); - value= get_datetime_value(thd, &ptr, &cache, f_type, &value_is_null); - if (ptr != &args[0]) - thd->change_item_tree(&args[0], *ptr); - if ((null_value= value_is_null)) +longlong Item_func_between::val_int_cmp_temporal() +{ + enum_field_types f_type= m_comparator.type_handler()->field_type(); + longlong value= args[0]->val_temporal_packed(f_type), a, b; + if ((null_value= args[0]->null_value)) return 0; - - ptr= &args[1]; - a= get_datetime_value(thd, &ptr, &cache, f_type, &a_is_null); - if (ptr != &args[1]) - thd->change_item_tree(&args[1], *ptr); - - ptr= &args[2]; - b= get_datetime_value(thd, &ptr, &cache, f_type, &b_is_null); - if (ptr != &args[2]) - thd->change_item_tree(&args[2], *ptr); - - if (!a_is_null && !b_is_null) + a= args[1]->val_temporal_packed(f_type); + b= args[2]->val_temporal_packed(f_type); + if (!args[1]->null_value && !args[2]->null_value) return (longlong) ((value >= a && value <= b) != negated); - if (a_is_null && b_is_null) + if (args[1]->null_value && args[2]->null_value) null_value= true; - else if (a_is_null) - null_value= value <= b; // not null if false range. + else if (args[1]->null_value) + null_value= value <= b; // not null if false range. else null_value= value >= a; return (longlong) (!null_value && negated); diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index f0862608463..62066ef61e5 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -60,9 +60,14 @@ class Arg_comparator: public Sql_alloc int set_cmp_func(Item_func_or_sum *owner_arg, Item **a1, Item **a2); - int compare_temporal(enum_field_types type); - int compare_e_temporal(enum_field_types type); - + int compare_not_null_values(longlong val1, longlong val2) + { + if (set_null) + owner->null_value= false; + if (val1 < val2) return -1; + if (val1 == val2) return 0; + return 1; + } public: /* Allow owner function to use string buffers. */ String value1, value2; @@ -112,10 +117,10 @@ public: int compare_e_row(); // compare args[0] & args[1] int compare_real_fixed(); int compare_e_real_fixed(); - int compare_datetime() { return compare_temporal(MYSQL_TYPE_DATETIME); } - int compare_e_datetime() { return compare_e_temporal(MYSQL_TYPE_DATETIME); } - int compare_time() { return compare_temporal(MYSQL_TYPE_TIME); } - int compare_e_time() { return compare_e_temporal(MYSQL_TYPE_TIME); } + int compare_datetime(); + int compare_e_datetime(); + int compare_time(); + int compare_e_time(); int compare_json_str_basic(Item *j, Item *s); int compare_json_str(); int compare_str_json(); @@ -899,6 +904,7 @@ public: { return agg_arg_charsets_for_comparison(cmp_collation, args, 3); } + bool fix_length_and_dec_temporal(THD *); bool fix_length_and_dec_numeric(THD *); virtual void print(String *str, enum_query_type query_type); bool eval_not_null_tables(void *opt_arg); diff --git a/sql/item_create.cc b/sql/item_create.cc index 6edeade0244..5d6d9742c7a 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -2876,6 +2876,20 @@ protected: }; +class Create_func_substr_oracle : public Create_native_func +{ +public: + virtual Item *create_native(THD *thd, LEX_CSTRING *name, + List<Item> *item_list); + + static Create_func_substr_oracle s_singleton; + +protected: + Create_func_substr_oracle() {} + virtual ~Create_func_substr_oracle() {} +}; + + class Create_func_subtime : public Create_func_arg2 { public: @@ -6466,6 +6480,40 @@ Create_func_substr_index::create_3_arg(THD *thd, Item *arg1, Item *arg2, Item *a } +Create_func_substr_oracle Create_func_substr_oracle::s_singleton; + +Item* +Create_func_substr_oracle::create_native(THD *thd, LEX_CSTRING *name, + List<Item> *item_list) +{ + Item *func= NULL; + int arg_count= item_list ? item_list->elements : 0; + + switch (arg_count) { + case 2: + { + Item *param_1= item_list->pop(); + Item *param_2= item_list->pop(); + func= new (thd->mem_root) Item_func_substr_oracle(thd, param_1, param_2); + break; + } + case 3: + { + Item *param_1= item_list->pop(); + Item *param_2= item_list->pop(); + Item *param_3= item_list->pop(); + func= new (thd->mem_root) Item_func_substr_oracle(thd, param_1, param_2, param_3); + break; + } + default: + my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name->str); + break; + } + + return func; +} + + Create_func_subtime Create_func_subtime::s_singleton; Item* @@ -7119,6 +7167,8 @@ static Native_func_registry func_array[] = { { C_STRING_WITH_LEN("ST_WITHIN") }, GEOM_BUILDER(Create_func_within)}, { { C_STRING_WITH_LEN("ST_X") }, GEOM_BUILDER(Create_func_x)}, { { C_STRING_WITH_LEN("ST_Y") }, GEOM_BUILDER(Create_func_y)}, + { { C_STRING_WITH_LEN("SUBSTR_ORACLE") }, + BUILDER(Create_func_substr_oracle)}, { { C_STRING_WITH_LEN("SUBSTRING_INDEX") }, BUILDER(Create_func_substr_index)}, { { C_STRING_WITH_LEN("SUBTIME") }, BUILDER(Create_func_subtime)}, { { C_STRING_WITH_LEN("TAN") }, BUILDER(Create_func_tan)}, diff --git a/sql/item_geofunc.cc b/sql/item_geofunc.cc index 3047595b58c..fe089e6283d 100644 --- a/sql/item_geofunc.cc +++ b/sql/item_geofunc.cc @@ -66,9 +66,9 @@ String *Item_func_geometry_from_text::val_str(String *str) srid= (uint32)args[1]->val_int(); str->set_charset(&my_charset_bin); + str->length(0); if (str->reserve(SRID_SIZE, 512)) return 0; - str->length(0); str->q_append(srid); if ((null_value= !Geometry::create_from_wkt(&buffer, &trs, str, 0))) return 0; @@ -1323,6 +1323,8 @@ static int setup_relate_func(Geometry *g1, Geometry *g2, } else func->repeat_expression(shape_a); + if (func->reserve_op_buffer(1)) + return 1; func->add_operation(op_matrix(nc%3), 1); if (do_store_shapes) { @@ -1493,11 +1495,13 @@ longlong Item_func_spatial_precise_rel::val_int() Gcalc_function::op_intersection, 2); func.add_operation(Gcalc_function::op_internals, 1); shape_a= func.get_next_expression_pos(); - if ((null_value= g1.store_shapes(&trn))) + if ((null_value= g1.store_shapes(&trn)) || + func.reserve_op_buffer(1)) break; func.add_operation(Gcalc_function::op_internals, 1); shape_b= func.get_next_expression_pos(); - if ((null_value= g2.store_shapes(&trn))) + if ((null_value= g2.store_shapes(&trn)) || + func.reserve_op_buffer(1)) break; func.add_operation(Gcalc_function::v_find_t | Gcalc_function::op_intersection, 2); @@ -1732,6 +1736,8 @@ int Item_func_buffer::Transporter::single_point(double x, double y) { if (buffer_op == Gcalc_function::op_difference) { + if (m_fn->reserve_op_buffer(1)) + return 1; m_fn->add_operation(Gcalc_function::op_false, 0); return 0; } diff --git a/sql/item_jsonfunc.cc b/sql/item_jsonfunc.cc index f804f83f122..7edafa3dc33 100644 --- a/sql/item_jsonfunc.cc +++ b/sql/item_jsonfunc.cc @@ -581,7 +581,8 @@ String *Item_func_json_quote::val_str(String *str) void Item_func_json_unquote::fix_length_and_dec() { - collation.set(&my_charset_utf8_general_ci); + collation.set(&my_charset_utf8_general_ci, + DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII); max_length= args[0]->max_length; maybe_null= 1; } @@ -1011,6 +1012,8 @@ static int check_contains(json_engine_t *js, json_engine_t *value) case JSON_VALUE_ARRAY: if (value->value_type != JSON_VALUE_ARRAY) { + loc_js= *value; + set_js= FALSE; while (json_scan_next(js) == 0 && js->state != JST_ARRAY_END) { int c_level, v_scalar; @@ -1021,6 +1024,11 @@ static int check_contains(json_engine_t *js, json_engine_t *value) if (!(v_scalar= json_value_scalar(js))) c_level= json_get_level(js); + if (set_js) + *value= loc_js; + else + set_js= TRUE; + if (check_contains(js, value)) { if (json_skip_level(js)) @@ -1452,7 +1460,8 @@ void Item_func_json_array::fix_length_and_dec() if (arg_count == 0) { - collation.set(&my_charset_utf8_general_ci); + collation.set(&my_charset_utf8_general_ci, + DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII); tmp_val.set_charset(&my_charset_utf8_general_ci); max_length= 2; return; @@ -2126,6 +2135,7 @@ longlong Item_func_json_length::val_int() json_engine_t je; uint length= 0; uint array_counters[JSON_DEPTH_LIMIT]; + int err; if ((null_value= args[0]->null_value)) return 0; @@ -2167,7 +2177,7 @@ longlong Item_func_json_length::val_int() if (json_value_scalar(&je)) return 1; - while (json_scan_next(&je) == 0 && + while (!(err= json_scan_next(&je)) && je.state != JST_OBJ_END && je.state != JST_ARRAY_END) { switch (je.state) @@ -2186,6 +2196,12 @@ longlong Item_func_json_length::val_int() }; } + if (!err) + { + /* Parse to the end of the JSON just to check it's valid. */ + while (json_scan_next(&je) == 0) {} + } + if (!je.s.error) return length; diff --git a/sql/item_row.cc b/sql/item_row.cc index 8b7cc814694..3b8bd8d3e59 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -24,7 +24,6 @@ #include "sql_class.h" // THD, set_var.h: THD #include "set_var.h" - void Item_row::illegal_method_call(const char *method) { DBUG_ENTER("Item_row::illegal_method_call"); diff --git a/sql/item_row.h b/sql/item_row.h index 9c92e19caab..83e9743fede 100644 --- a/sql/item_row.h +++ b/sql/item_row.h @@ -47,13 +47,10 @@ public: Item_row(THD *thd, List<Item> &list): Item(thd), Item_args(thd, list), not_null_tables_cache(0), with_null(0) { } - Item_row(THD *thd, Item_row *item): - Item(thd), - Item_args(item), - Used_tables_and_const_cache(item), - not_null_tables_cache(0), - with_null(0) - {} + Item_row(THD *thd, Item_row *row): + Item(thd), Item_args(thd, static_cast<Item_args*>(row)), Used_tables_and_const_cache(), + not_null_tables_cache(0), with_null(0) + { } enum Type type() const { return ROW_ITEM; }; const Type_handler *type_handler() const { return &type_handler_row; } diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index d9b375e7be1..90bfb11e822 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1777,7 +1777,7 @@ String *Item_func_substr::val_str(String *str) DBUG_ASSERT(fixed == 1); String *res = args[0]->val_str(str); /* must be longlong to avoid truncation */ - longlong start= args[1]->val_int(); + longlong start= get_position(); /* Assumes that the maximum length of a String is < INT_MAX32. */ /* Limit so that code sees out-of-bound value properly. */ longlong length= arg_count == 3 ? args[2]->val_int() : INT_MAX32; @@ -1827,7 +1827,7 @@ void Item_func_substr::fix_length_and_dec() DBUG_ASSERT(collation.collation != NULL); if (args[1]->const_item()) { - int32 start= (int32) args[1]->val_int(); + int32 start= (int32) get_position(); if (args[1]->null_value) max_length= 0; else if (start < 0) diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 1c35588f884..c322136bef2 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -505,9 +505,12 @@ public: class Item_func_substr :public Item_str_func { String tmp_value; +protected: + virtual longlong get_position() { return args[1]->val_int(); } public: Item_func_substr(THD *thd, Item *a, Item *b): Item_str_func(thd, a, b) {} - Item_func_substr(THD *thd, Item *a, Item *b, Item *c): Item_str_func(thd, a, b, c) {} + Item_func_substr(THD *thd, Item *a, Item *b, Item *c): + Item_str_func(thd, a, b, c) {} String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "substr"; } @@ -515,6 +518,20 @@ public: { return get_item_copy<Item_func_substr>(thd, mem_root, this); } }; +class Item_func_substr_oracle :public Item_func_substr +{ +protected: + longlong get_position() + { longlong pos= args[1]->val_int(); return pos == 0 ? 1 : pos; } +public: + Item_func_substr_oracle(THD *thd, Item *a, Item *b): + Item_func_substr(thd, a, b) {} + Item_func_substr_oracle(THD *thd, Item *a, Item *b, Item *c): + Item_func_substr(thd, a, b, c) {} + const char *func_name() const { return "substr_oracle"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_substr_oracle>(thd, mem_root, this); } +}; class Item_func_substr_index :public Item_str_func { diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 84e1aae1ad5..1f2949903b4 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1433,6 +1433,10 @@ Item_in_subselect::Item_in_subselect(THD *thd, Item * left_exp, DBUG_ENTER("Item_in_subselect::Item_in_subselect"); DBUG_PRINT("info", ("in_strategy: %u", (uint)in_strategy)); left_expr_orig= left_expr= left_exp; + /* prepare to possible disassembling the item in convert_subq_to_sj() */ + if (left_exp->type() == Item::ROW_ITEM) + left_expr_orig= new (thd->mem_root) + Item_row(thd, static_cast<Item_row*>(left_exp)); func= &eq_creator; init(select_lex, new (thd->mem_root) select_exists_subselect(thd, this)); max_columns= UINT_MAX; @@ -1456,6 +1460,10 @@ Item_allany_subselect::Item_allany_subselect(THD *thd, Item * left_exp, { DBUG_ENTER("Item_allany_subselect::Item_allany_subselect"); left_expr_orig= left_expr= left_exp; + /* prepare to possible disassembling the item in convert_subq_to_sj() */ + if (left_exp->type() == Item::ROW_ITEM) + left_expr_orig= new (thd->mem_root) + 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)); max_columns= 1; diff --git a/sql/item_sum.cc b/sql/item_sum.cc index d6e42efd11c..b047dc4ea4d 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -3593,7 +3593,7 @@ bool Item_func_group_concat::setup(THD *thd) syntax of this function). If there is no ORDER BY clause, we don't create this tree. */ - init_tree(tree, (uint) MY_MIN(thd->variables.max_heap_table_size, + init_tree(tree, (size_t)MY_MIN(thd->variables.max_heap_table_size, thd->variables.sortbuff_size/16), 0, tree_key_length, group_concat_key_cmp_with_order, NULL, (void*) this, diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index d00120018b8..3a7684fe7b4 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1825,9 +1825,18 @@ overflow: ltime->hour= TIME_MAX_HOUR+1; check_time_range(ltime, decimals, &unused); - make_truncated_value_warning(current_thd, Sql_condition::WARN_LEVEL_WARN, - err->ptr(), err->length(), - MYSQL_TIMESTAMP_TIME, NullS); + if (!err) + { + ErrConvInteger err2(sec, unsigned_flag); + make_truncated_value_warning(current_thd, Sql_condition::WARN_LEVEL_WARN, + &err2, MYSQL_TIMESTAMP_TIME, NullS); + } + else + { + ErrConvString err2(err); + make_truncated_value_warning(current_thd, Sql_condition::WARN_LEVEL_WARN, + &err2, MYSQL_TIMESTAMP_TIME, NullS); + } return 0; } diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 94794c6789d..9c102e8a666 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -574,8 +574,6 @@ public: bool get_date(MYSQL_TIME *res, ulonglong fuzzy_date) { DBUG_ASSERT(0); return 1; } my_decimal *val_decimal(my_decimal *decimal_value) { return val_decimal_from_date(decimal_value); } - int save_in_field(Field *field, bool no_conversions) - { return save_date_in_field(field, no_conversions); } }; diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index ba24ebe76c5..ee307ba2194 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -176,7 +176,7 @@ public: { nodebeg= (MY_XML_NODE*) pxml->ptr(); nodeend= (MY_XML_NODE*) (pxml->ptr() + pxml->length()); - numnodes= nodeend - nodebeg; + numnodes= (uint)(nodeend - nodebeg); } void prepare(String *nodeset) { @@ -615,7 +615,7 @@ public: if ((node->parent == flt->num) && (node->type == MY_XML_NODE_TEXT)) { - fake->set_value(node->beg, node->end - node->beg, + fake->set_value(node->beg, (uint)(node->end - node->beg), collation.collation); if (args[1]->val_int()) return 1; @@ -817,7 +817,7 @@ String *Item_nodeset_func_predicate::val_nodeset(String *str) Item_func *comp_func= (Item_func*)args[1]; uint pos= 0, size; prepare(str); - size= fltend - fltbeg; + size= (uint)(fltend - fltbeg); for (MY_XPATH_FLT *flt= fltbeg; flt < fltend; flt++) { nodeset_func->context_cache.length(0); @@ -836,7 +836,7 @@ String *Item_nodeset_func_elementbyindex::val_nodeset(String *nodeset) Item_nodeset_func *nodeset_func= (Item_nodeset_func*) args[0]; prepare(nodeset); MY_XPATH_FLT *flt; - uint pos, size= fltend - fltbeg; + uint pos, size= (uint)(fltend - fltbeg); for (pos= 0, flt= fltbeg; flt < fltend; flt++) { nodeset_func->context_cache.length(0); @@ -995,7 +995,7 @@ static Item *create_comparator(MY_XPATH *xpath, else if (a->type() == Item::XPATH_NODESET && b->type() == Item::XPATH_NODESET) { - uint len= xpath->query.end - context->beg; + uint len= (uint)(xpath->query.end - context->beg); set_if_smaller(len, 32); my_printf_error(ER_UNKNOWN_ERROR, "XPATH error: " @@ -1399,7 +1399,7 @@ MY_XPATH_FUNC * my_xpath_function(const char *beg, const char *end) { MY_XPATH_FUNC *k, *function_names; - uint length= end-beg; + uint length= (uint)(end-beg); switch (length) { case 1: return 0; @@ -1961,7 +1961,7 @@ static int my_xpath_parse_PrimaryExpr_literal(MY_XPATH *xpath) return 0; xpath->item= new (xpath->thd->mem_root) Item_string(xpath->thd, xpath->prevtok.beg + 1, - xpath->prevtok.end - xpath->prevtok.beg - 2, + (uint)(xpath->prevtok.end - xpath->prevtok.beg - 2), xpath->cs); return 1; } @@ -2499,13 +2499,13 @@ static int my_xpath_parse_Number(MY_XPATH *xpath) if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_DOT)) { xpath->item= new (thd->mem_root) Item_int(thd, xpath->prevtok.beg, - xpath->prevtok.end - xpath->prevtok.beg); + (uint)(xpath->prevtok.end - xpath->prevtok.beg)); return 1; } my_xpath_parse_term(xpath, MY_XPATH_LEX_DIGITS); xpath->item= new (thd->mem_root) Item_float(thd, beg, - xpath->prevtok.end - beg); + (uint)(xpath->prevtok.end - beg)); return 1; } @@ -2621,7 +2621,7 @@ my_xpath_parse_VariableReference(MY_XPATH *xpath) (spv= spc->find_variable(&name, false))) { Item_splocal *splocal= new (thd->mem_root) - Item_splocal(thd, &name, spv->offset, spv->sql_type(), 0); + Item_splocal(thd, &name, spv->offset, spv->type_handler(), 0); #ifdef DBUG_ASSERT_EXISTS if (splocal) splocal->m_sp= lex->sphead; @@ -2632,7 +2632,7 @@ my_xpath_parse_VariableReference(MY_XPATH *xpath) { xpath->item= NULL; DBUG_ASSERT(xpath->query.end > dollar_pos); - uint len= xpath->query.end - dollar_pos; + uint len= (uint)(xpath->query.end - dollar_pos); set_if_smaller(len, 32); my_printf_error(ER_UNKNOWN_ERROR, "Unknown XPATH variable at: '%.*s'", MYF(0), len, dollar_pos); @@ -2660,7 +2660,7 @@ my_xpath_parse_NodeTest_QName(MY_XPATH *xpath) if (!my_xpath_parse_QName(xpath)) return 0; DBUG_ASSERT(xpath->context); - uint len= xpath->prevtok.end - xpath->prevtok.beg; + uint len= (uint)(xpath->prevtok.end - xpath->prevtok.beg); xpath->context= nametestfunc(xpath, xpath->axis, xpath->context, xpath->prevtok.beg, len); return 1; @@ -2759,7 +2759,7 @@ bool Item_xml_str_func::fix_fields(THD *thd, Item **ref) if (!rc) { - uint clen= xpath.query.end - xpath.lasttok.beg; + uint clen= (uint)(xpath.query.end - xpath.lasttok.beg); set_if_smaller(clen, 32); my_printf_error(ER_UNKNOWN_ERROR, "XPATH syntax error: '%.*s'", MYF(0), clen, xpath.lasttok.beg); diff --git a/sql/log.cc b/sql/log.cc index 450f677d363..008cc0b59aa 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3044,7 +3044,7 @@ bool MYSQL_QUERY_LOG::write(THD *thd, time_t current_time, if (thd->spcont) if (my_b_printf(&log_file, "# Stored_routine: %s\n", - ErrConvDQName(thd->spcont->sp).ptr()) == (uint) -1) + ErrConvDQName(thd->spcont->m_sp).ptr()) == (uint) -1) tmp_errno= errno; if ((thd->variables.log_slow_verbosity & LOG_SLOW_VERBOSITY_QUERY_PLAN) && diff --git a/sql/log_event.cc b/sql/log_event.cc index 841478b511b..f1ceaec6456 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1131,7 +1131,7 @@ int append_query_string(CHARSET_INFO *csinfo, String *to, *ptr++= '\''; } - to->length(orig_len + ptr - beg); + to->length((uint32)(orig_len + ptr - beg)); return 0; } #endif @@ -8681,21 +8681,6 @@ User_var_log_event(const char* buf, uint event_len, we keep the flags set to UNDEF_F. */ size_t bytes_read= ((val + val_len) - buf_start); -#ifdef DBUG_ASSERT_EXISTS - bool old_pre_checksum_fd= description_event->is_version_before_checksum( - &description_event->server_version_split); -#endif - DBUG_ASSERT((bytes_read == data_written - - (old_pre_checksum_fd || - (description_event->checksum_alg == - BINLOG_CHECKSUM_ALG_OFF)) ? - 0 : BINLOG_CHECKSUM_LEN) - || - (bytes_read == data_written -1 - - (old_pre_checksum_fd || - (description_event->checksum_alg == - BINLOG_CHECKSUM_ALG_OFF)) ? - 0 : BINLOG_CHECKSUM_LEN)); if ((data_written - bytes_read) > 0) { flags= (uint) *(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE + @@ -10041,7 +10026,7 @@ Execute_load_query_log_event::do_apply_event(rpl_group_info *rgi) p= strmake(p, STRING_WITH_LEN(" INTO ")); p= strmake(p, query+fn_pos_end, q_len-fn_pos_end); - error= Query_log_event::do_apply_event(rgi, buf, p-buf); + error= Query_log_event::do_apply_event(rgi, buf, (uint32)(p-buf)); /* Forging file name for deletion in same buffer */ *fname_end= 0; @@ -10493,7 +10478,7 @@ int Rows_log_event::do_add_row_data(uchar *row_data, size_t length) if (static_cast<size_t>(m_rows_end - m_rows_cur) <= length) { size_t const block_size= 1024; - ulong cur_size= m_rows_cur - m_rows_buf; + size_t cur_size= m_rows_cur - m_rows_buf; DBUG_EXECUTE_IF("simulate_too_big_row_case1", cur_size= UINT_MAX32 - (block_size * 10); length= UINT_MAX32 - (block_size * 10);); @@ -10506,21 +10491,21 @@ int Rows_log_event::do_add_row_data(uchar *row_data, size_t length) DBUG_EXECUTE_IF("simulate_too_big_row_case4", cur_size= UINT_MAX32 - (block_size * 10); length= (block_size * 10) - block_size + 1;); - ulong remaining_space= UINT_MAX32 - cur_size; + size_t remaining_space= UINT_MAX32 - cur_size; /* Check that the new data fits within remaining space and we can add block_size without wrapping. */ - if (length > remaining_space || + if (cur_size > UINT_MAX32 || length > remaining_space || ((length + block_size) > remaining_space)) { sql_print_error("The row data is greater than 4GB, which is too big to " "write to the binary log."); DBUG_RETURN(ER_BINLOG_ROW_LOGGING_FAILED); } - ulong const new_alloc= + size_t const new_alloc= block_size * ((cur_size + length + block_size - 1) / block_size); - uchar* const new_buf= (uchar*)my_realloc((uchar*)m_rows_buf, (uint) new_alloc, + uchar* const new_buf= (uchar*)my_realloc((uchar*)m_rows_buf, new_alloc, MYF(MY_ALLOW_ZERO_PTR|MY_WME)); if (unlikely(!new_buf)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -11253,11 +11238,11 @@ bool Rows_log_event::write_compressed() uchar *m_rows_cur_tmp = m_rows_cur; bool ret = true; uint32 comlen, alloc_size; - comlen= alloc_size= binlog_get_compress_len(m_rows_cur_tmp - m_rows_buf_tmp); + comlen= alloc_size= binlog_get_compress_len((uint32)(m_rows_cur_tmp - m_rows_buf_tmp)); m_rows_buf = (uchar *)my_safe_alloca(alloc_size); if(m_rows_buf && !binlog_buf_compress((const char *)m_rows_buf_tmp, (char *)m_rows_buf, - m_rows_cur_tmp - m_rows_buf_tmp, &comlen)) + (uint32)(m_rows_cur_tmp - m_rows_buf_tmp), &comlen)) { m_rows_cur= comlen + m_rows_buf; ret= Log_event::write(); @@ -12493,7 +12478,7 @@ Rows_log_event::write_row(rpl_group_info *rgi, the size of the first row and use that value to initialize storage engine for bulk insertion */ DBUG_ASSERT(!(m_curr_row > m_curr_row_end)); - ulong estimated_rows= 0; + ha_rows estimated_rows= 0; if (m_curr_row < m_curr_row_end) estimated_rows= (m_rows_end - m_curr_row) / (m_curr_row_end - m_curr_row); else if (m_curr_row == m_curr_row_end) @@ -12712,7 +12697,7 @@ int Rows_log_event::update_sequence() longlong round= table->field[ROUND_FIELD_NO]->val_int(); dbug_tmp_restore_column_map(table->read_set, old_map); - return table->s->sequence->set_value(table, nextval, round, 0); + return table->s->sequence->set_value(table, nextval, round, 0) > 0; } /* @@ -12731,6 +12716,7 @@ Write_rows_log_event::do_exec_row(rpl_group_info *rgi) DBUG_ASSERT(m_table != NULL); const char *tmp= thd->get_proc_info(); const char *message= "Write_rows_log_event::write_row()"; + int error; #ifdef WSREP_PROC_INFO my_snprintf(thd->wsrep_info, sizeof(thd->wsrep_info) - 1, @@ -12740,7 +12726,7 @@ Write_rows_log_event::do_exec_row(rpl_group_info *rgi) #endif /* WSREP_PROC_INFO */ thd_proc_info(thd, message); - int error= write_row(rgi, slave_exec_mode == SLAVE_EXEC_MODE_IDEMPOTENT); + error= write_row(rgi, slave_exec_mode == SLAVE_EXEC_MODE_IDEMPOTENT); thd_proc_info(thd, tmp); if (error && !thd->is_error()) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 4fcdc37c912..ad27c58f67f 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -8867,8 +8867,8 @@ static int mysql_init_variables(void) /* Set directory paths */ mysql_real_data_home_len= - strmake_buf(mysql_real_data_home, - get_relative_path(MYSQL_DATADIR)) - mysql_real_data_home; + (uint)(strmake_buf(mysql_real_data_home, + get_relative_path(MYSQL_DATADIR)) - mysql_real_data_home); /* Replication parameters */ master_info_file= (char*) "master.info", relay_log_info_file= (char*) "relay-log.info"; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 404c5a1f6d3..3180c509737 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -499,9 +499,9 @@ int SEL_IMERGE::or_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree) if (trees_next == trees_end) { const int realloc_ratio= 2; /* Double size for next round */ - uint old_elements= (trees_end - trees); - uint old_size= sizeof(SEL_TREE**) * old_elements; - uint new_size= old_size * realloc_ratio; + size_t old_elements= (trees_end - trees); + size_t old_size= sizeof(SEL_TREE**) * old_elements; + size_t new_size= old_size * realloc_ratio; SEL_TREE **new_trees; if (!(new_trees= (SEL_TREE**)alloc_root(param->mem_root, new_size))) return -1; @@ -846,10 +846,10 @@ SEL_TREE::SEL_TREE(SEL_TREE *arg, bool without_merges, SEL_IMERGE::SEL_IMERGE(SEL_IMERGE *arg, uint cnt, RANGE_OPT_PARAM *param) : Sql_alloc() { - uint elements= (arg->trees_end - arg->trees); + size_t elements= (arg->trees_end - arg->trees); if (elements > PREALLOCED_TREES) { - uint size= elements * sizeof (SEL_TREE **); + size_t size= elements * sizeof (SEL_TREE **); if (!(trees= (SEL_TREE **)alloc_root(param->mem_root, size))) goto mem_err; } @@ -951,7 +951,7 @@ int imerge_list_or_list(RANGE_OPT_PARAM *param, uint rc; bool is_last_check_pass= FALSE; SEL_IMERGE *imerge= im1->head(); - uint elems= imerge->trees_next-imerge->trees; + uint elems= (uint)(imerge->trees_next-imerge->trees); MEM_ROOT *mem_root= current_thd->mem_root; im1->empty(); @@ -1051,7 +1051,7 @@ int imerge_list_or_tree(RANGE_OPT_PARAM *param, SEL_TREE *or_tree= new (mem_root) SEL_TREE (tree, FALSE, param); if (or_tree) { - uint elems= imerge->trees_next-imerge->trees; + uint elems= (uint)(imerge->trees_next-imerge->trees); rc= imerge->or_sel_tree_with_checks(param, elems, or_tree, TRUE, &is_last_check_pass); if (!is_last_check_pass) @@ -2897,7 +2897,7 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond) uint keynr; uint max_quick_key_parts= 0; MY_BITMAP *used_fields= &table->cond_set; - double table_records= table->stat_records(); + double table_records= (double)table->stat_records(); DBUG_ENTER("calculate_cond_selectivity_for_table"); table->cond_selectivity= 1.0; @@ -3994,8 +3994,8 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree) store_length_array, range_par->min_key, range_par->max_key, - tmp_min_key - range_par->min_key, - tmp_max_key - range_par->max_key, + (uint)(tmp_min_key - range_par->min_key), + (uint)(tmp_max_key - range_par->max_key), flag, &ppar->part_iter); if (!res) @@ -4643,6 +4643,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge, double roru_index_costs; ha_rows roru_total_records; double roru_intersect_part= 1.0; + size_t n_child_scans; DBUG_ENTER("get_best_disjunct_quick"); DBUG_PRINT("info", ("Full table scan cost: %g", read_time)); @@ -4659,7 +4660,7 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge, } } - uint n_child_scans= imerge->trees_next - imerge->trees; + n_child_scans= imerge->trees_next - imerge->trees; if (!n_child_scans) DBUG_RETURN(NULL); @@ -4877,8 +4878,8 @@ skip_to_ror_scan: (TIME_FOR_COMPARE_ROWID * M_LN2) + get_sweep_read_cost(param, roru_total_records); - DBUG_PRINT("info", ("ROR-union: cost %g, %d members", roru_total_cost, - n_child_scans)); + DBUG_PRINT("info", ("ROR-union: cost %g, %zu members", + roru_total_cost, n_child_scans)); TRP_ROR_UNION* roru; if (roru_total_cost < read_time) { @@ -5203,7 +5204,7 @@ bool prepare_search_best_index_intersect(PARAM *param, INDEX_SCAN_INFO **scan_ptr; INDEX_SCAN_INFO *cpk_scan= NULL; TABLE *table= param->table; - uint n_index_scans= tree->index_scans_end - tree->index_scans; + uint n_index_scans= (uint)(tree->index_scans_end - tree->index_scans); if (!n_index_scans) return 1; @@ -5846,7 +5847,7 @@ TRP_INDEX_INTERSECT *get_best_index_intersect(PARAM *param, SEL_TREE *tree, } } - count= tree->index_scans_end - tree->index_scans; + count= (uint)(tree->index_scans_end - tree->index_scans); for (i= 0; i < count; i++) { index_scan= tree->index_scans[i]; @@ -6506,7 +6507,7 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree, intersect_scans_best);); *are_all_covering= intersect->is_covering; - uint best_num= intersect_scans_best - intersect_scans; + uint best_num= (uint)(intersect_scans_best - intersect_scans); ror_intersect_cpy(intersect, intersect_best); /* @@ -6688,7 +6689,7 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param, TRP_ROR_INTERSECT *trp; if (!(trp= new (param->mem_root) TRP_ROR_INTERSECT)) DBUG_RETURN(trp); - uint best_num= (ror_scan_mark - tree->ror_scans); + uint best_num= (uint)(ror_scan_mark - tree->ror_scans); if (!(trp->first_scan= (ROR_SCAN_INFO**)alloc_root(param->mem_root, sizeof(ROR_SCAN_INFO*)* best_num))) @@ -8557,6 +8558,34 @@ bool sel_trees_can_be_ored(RANGE_OPT_PARAM* param, } /* + Check whether the key parts inf_init..inf_end-1 of one index can compose + an infix for the key parts key_init..key_end-1 of another index +*/ + +static +bool is_key_infix(KEY_PART *key_init, KEY_PART *key_end, + KEY_PART *inf_init, KEY_PART *inf_end) +{ + KEY_PART *key_part, *inf_part; + for (key_part= key_init; key_part < key_end; key_part++) + { + if (key_part->field->eq(inf_init->field)) + break; + } + if (key_part == key_end) + return false; + for (key_part++, inf_part= inf_init + 1; + key_part < key_end && inf_part < inf_end; + key_part++, inf_part++) + { + if (!key_part->field->eq(inf_part->field)) + return false; + } + return inf_part == inf_end; +} + + +/* Check whether range parts of two trees must be ored for some indexes SYNOPSIS @@ -8612,14 +8641,9 @@ bool sel_trees_must_be_ored(RANGE_OPT_PARAM* param, KEY_PART *key2_init= param->key[idx2]+tree2->keys[idx2]->part; KEY_PART *key2_end= param->key[idx2]+tree2->keys[idx2]->max_part_no; - KEY_PART *part1, *part2; - for (part1= key1_init, part2= key2_init; - part1 < key1_end && part2 < key2_end; - part1++, part2++) - { - if (!part1->field->eq(part2->field)) - DBUG_RETURN(FALSE); - } + if (!is_key_infix(key1_init, key1_end, key2_init, key2_end) && + !is_key_infix(key2_init, key2_end, key1_init, key1_end)) + DBUG_RETURN(FALSE); } } @@ -11476,7 +11500,7 @@ int QUICK_RANGE_SELECT::get_next_prefix(uint prefix_length, DBUG_RETURN(0); } - uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer); + uint count= ranges.elements - (uint)(cur_range - (QUICK_RANGE**) ranges.buffer); if (count == 0) { /* Ranges have already been used up before. None is left for read. */ @@ -11521,7 +11545,7 @@ int QUICK_RANGE_SELECT_GEOM::get_next() DBUG_RETURN(result); } - uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer); + uint count= ranges.elements - (uint)(cur_range - (QUICK_RANGE**) ranges.buffer); if (count == 0) { /* Ranges have already been used up before. None is left for read. */ @@ -11975,7 +11999,7 @@ void QUICK_SELECT_I::add_key_and_length(String *key_names, bool *first) { char buf[64]; - uint length; + size_t length; KEY *key_info= head->key_info + index; if (*first) @@ -12529,7 +12553,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree, double read_time) { cur_group_prefix_len+= cur_part->store_length; ++cur_group_key_parts; - max_key_part= cur_part - cur_index_info->key_part + 1; + max_key_part= (uint)(cur_part - cur_index_info->key_part) + 1; used_key_parts_map.set_bit(max_key_part); } else @@ -13252,7 +13276,7 @@ get_field_keypart(KEY *index, Field *field) part < end; part++) { if (field->eq(part->field)) - return part - index->key_part + 1; + return (uint)(part - index->key_part + 1); } return 0; } diff --git a/sql/opt_range_mrr.cc b/sql/opt_range_mrr.cc index b3350191d13..ace6208fd77 100644 --- a/sql/opt_range_mrr.cc +++ b/sql/opt_range_mrr.cc @@ -199,9 +199,9 @@ walk_right_n_up: { { RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i]; - uint min_key_length= cur->min_key - seq->param->min_key; - uint max_key_length= cur->max_key - seq->param->max_key; - uint len= cur->min_key - cur[-1].min_key; + size_t min_key_length= cur->min_key - seq->param->min_key; + size_t max_key_length= cur->max_key - seq->param->max_key; + size_t len= cur->min_key - cur[-1].min_key; if (!(min_key_length == max_key_length && !memcmp(cur[-1].min_key, cur[-1].max_key, len) && !key_tree->min_flag && !key_tree->max_flag)) @@ -238,7 +238,7 @@ walk_up_n_right: /* Ok got a tuple */ RANGE_SEQ_ENTRY *cur= &seq->stack[seq->i]; - uint min_key_length= cur->min_key - seq->param->min_key; + uint min_key_length= (uint)(cur->min_key - seq->param->min_key); range->ptr= (char*)(intptr)(key_tree->part); if (cur->min_key_flag & GEOM_FLAG) @@ -256,13 +256,13 @@ walk_up_n_right: range->range_flag= cur->min_key_flag | cur->max_key_flag; range->start_key.key= seq->param->min_key; - range->start_key.length= cur->min_key - seq->param->min_key; + range->start_key.length= (uint)(cur->min_key - seq->param->min_key); range->start_key.keypart_map= make_prev_keypart_map(cur->min_key_parts); range->start_key.flag= (cur->min_key_flag & NEAR_MIN ? HA_READ_AFTER_KEY : HA_READ_KEY_EXACT); range->end_key.key= seq->param->max_key; - range->end_key.length= cur->max_key - seq->param->max_key; + range->end_key.length= (uint)(cur->max_key - seq->param->max_key); range->end_key.flag= (cur->max_key_flag & NEAR_MAX ? HA_READ_BEFORE_KEY : HA_READ_AFTER_KEY); range->end_key.keypart_map= make_prev_keypart_map(cur->max_key_parts); diff --git a/sql/opt_subselect.cc b/sql/opt_subselect.cc index 5335001683c..6dc5e08152c 100644 --- a/sql/opt_subselect.cc +++ b/sql/opt_subselect.cc @@ -1589,6 +1589,7 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred) sj-nest. */ st_select_lex *subq_lex= subq_pred->unit->first_select(); + DBUG_ASSERT(subq_lex->next_select() == NULL); nested_join->join_list.empty(); List_iterator_fast<TABLE_LIST> li(subq_lex->top_join_list); TABLE_LIST *tl; @@ -1692,7 +1693,8 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred) if (subq_pred->left_expr->cols() == 1) { - nested_join->sj_outer_expr_list.push_back(subq_pred->left_expr, + /* add left = select_list_element */ + nested_join->sj_outer_expr_list.push_back(&subq_pred->left_expr, thd->mem_root); /* Create Item_func_eq. Note that @@ -1706,26 +1708,62 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred) Item_func_eq *item_eq= new (thd->mem_root) Item_func_eq(thd, subq_pred->left_expr_orig, subq_lex->ref_pointer_array[0]); + if (!item_eq) + DBUG_RETURN(TRUE); if (subq_pred->left_expr_orig != subq_pred->left_expr) thd->change_item_tree(item_eq->arguments(), subq_pred->left_expr); item_eq->in_equality_no= 0; sj_nest->sj_on_expr= and_items(thd, sj_nest->sj_on_expr, item_eq); } - else + else if (subq_pred->left_expr->type() == Item::ROW_ITEM) { + /* + disassemple left expression and add + left1 = select_list_element1 and left2 = select_list_element2 ... + */ for (uint i= 0; i < subq_pred->left_expr->cols(); i++) { - nested_join->sj_outer_expr_list.push_back(subq_pred->left_expr-> - element_index(i), + nested_join->sj_outer_expr_list.push_back(subq_pred->left_expr->addr(i), thd->mem_root); - Item_func_eq *item_eq= + Item_func_eq *item_eq= new (thd->mem_root) - Item_func_eq(thd, subq_pred->left_expr->element_index(i), + Item_func_eq(thd, subq_pred->left_expr_orig->element_index(i), subq_lex->ref_pointer_array[i]); + if (!item_eq) + DBUG_RETURN(TRUE); + DBUG_ASSERT(subq_pred->left_expr->element_index(i)->fixed); + if (subq_pred->left_expr_orig->element_index(i) != + subq_pred->left_expr->element_index(i)) + thd->change_item_tree(item_eq->arguments(), + subq_pred->left_expr->element_index(i)); item_eq->in_equality_no= i; sj_nest->sj_on_expr= and_items(thd, sj_nest->sj_on_expr, item_eq); } } + else + { + /* + add row operation + left = (select_list_element1, select_list_element2, ...) + */ + Item_row *row= new (thd->mem_root) Item_row(thd, subq_lex->pre_fix); + /* fix fields on subquery was call so they should be the same */ + DBUG_ASSERT(subq_pred->left_expr->cols() == row->cols()); + if (!row) + DBUG_RETURN(TRUE); + nested_join->sj_outer_expr_list.push_back(&subq_pred->left_expr); + Item_func_eq *item_eq= + new (thd->mem_root) Item_func_eq(thd, subq_pred->left_expr_orig, row); + if (!item_eq) + DBUG_RETURN(TRUE); + for (uint i= 0; i < row->cols(); i++) + { + if (row->element_index(i) != subq_lex->ref_pointer_array[i]) + thd->change_item_tree(row->addr(i), subq_lex->ref_pointer_array[i]); + } + item_eq->in_equality_no= 0; + sj_nest->sj_on_expr= and_items(thd, sj_nest->sj_on_expr, item_eq); + } /* Fix the created equality and AND @@ -3274,8 +3312,8 @@ void restore_prev_sj_state(const table_map remaining_tables, ulonglong get_bound_sj_equalities(TABLE_LIST *sj_nest, table_map remaining_tables) { - List_iterator<Item> li(sj_nest->nested_join->sj_outer_expr_list); - Item *item; + List_iterator<Item_ptr> li(sj_nest->nested_join->sj_outer_expr_list); + Item **item; uint i= 0; ulonglong res= 0; while ((item= li++)) @@ -3286,7 +3324,7 @@ ulonglong get_bound_sj_equalities(TABLE_LIST *sj_nest, class and see if there is an element that is bound? (this is an optional feature) */ - if (!(item->used_tables() & remaining_tables)) + if (!(item[0]->used_tables() & remaining_tables)) { res |= 1ULL << i; } diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 6cdf0e0f26a..72b28473e15 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -768,12 +768,12 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, key_part_map org_key_part_used= *key_part_used; if (eq_type || between || max_fl == less_fl) { - uint length= (key_ptr-ref->key_buff)+part->store_length; + uint length= (uint)(key_ptr-ref->key_buff)+part->store_length; if (ref->key_length < length) { /* Ultimately ref->key_length will contain the length of the search key */ ref->key_length= length; - ref->key_parts= (part - keyinfo->key_part) + 1; + ref->key_parts= (uint)(part - keyinfo->key_part) + 1; } if (!*prefix_len && part+1 == field_part) *prefix_len= length; diff --git a/sql/opt_table_elimination.cc b/sql/opt_table_elimination.cc index 1d6fb4dabfe..390afc575ca 100644 --- a/sql/opt_table_elimination.cc +++ b/sql/opt_table_elimination.cc @@ -849,7 +849,7 @@ bool check_func_dependency(JOIN *join, */ uint and_level=0; build_eq_mods_for_cond(join->thd, &dac, &last_eq_mod, &and_level, cond); - if (!(dac.n_equality_mods= last_eq_mod - dac.equality_mods)) + if (!(dac.n_equality_mods= (uint)(last_eq_mod - dac.equality_mods))) return FALSE; /* No useful conditions */ List<Dep_module> bound_modules; @@ -1062,7 +1062,7 @@ bool Dep_analysis_context::setup_equality_modules_deps(List<Dep_module> eq_mod < equality_mods + n_equality_mods; eq_mod++) { - deps_recorder.expr_offset= eq_mod - equality_mods; + deps_recorder.expr_offset= (uint)(eq_mod - equality_mods); deps_recorder.visited_other_tables= FALSE; eq_mod->unbound_args= 0; @@ -1080,7 +1080,7 @@ bool Dep_analysis_context::setup_equality_modules_deps(List<Dep_module> Dep_value_field* field_val; while ((field_val= it++)) { - uint offs= field_val->bitmap_offset + eq_mod - equality_mods; + uint offs= (uint)(field_val->bitmap_offset + eq_mod - equality_mods); bitmap_set_bit(&expr_deps, offs); } } @@ -1159,7 +1159,7 @@ void build_eq_mods_for_cond(THD *thd, Dep_analysis_context *ctx, if (cond->type() == Item_func::COND_ITEM) { List_iterator_fast<Item> li(*((Item_cond*) cond)->argument_list()); - uint orig_offset= *eq_mod - ctx->equality_mods; + size_t orig_offset= *eq_mod - ctx->equality_mods; /* AND/OR */ if (((Item_cond*) cond)->functype() == Item_func::COND_AND_FUNC) diff --git a/sql/parse_file.cc b/sql/parse_file.cc index ebb08a23009..aedb7a4f0af 100644 --- a/sql/parse_file.cc +++ b/sql/parse_file.cc @@ -255,7 +255,7 @@ sql_create_definition_file(const LEX_CSTRING *dir, File handler; IO_CACHE file; char path[FN_REFLEN+1]; // +1 to put temporary file name for sure - int path_end; + size_t path_end; File_option *param; DBUG_ENTER("sql_create_definition_file"); DBUG_PRINT("enter", ("Dir: %s, file: %s, base %p", diff --git a/sql/partition_info.cc b/sql/partition_info.cc index a52c7873817..6fdbdfce893 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -1674,7 +1674,7 @@ void partition_info::print_no_partition_found(TABLE *table_arg, myf errflag) bool partition_info::set_part_expr(THD *thd, char *start_token, Item *item_ptr, char *end_token, bool is_subpart) { - uint expr_len= end_token - start_token; + size_t expr_len= end_token - start_token; char *func_string= (char*) thd->memdup(start_token, expr_len); if (!func_string) @@ -2347,7 +2347,7 @@ bool partition_info::fix_column_value_functions(THD *thd, { uchar *val_ptr; uint len= field->pack_length(); - ulonglong save_sql_mode; + sql_mode_t save_sql_mode; bool save_got_warning; if (!(column_item= get_column_item(column_item, diff --git a/sql/rpl_record.cc b/sql/rpl_record.cc index 9ff5004414c..6da3f15cfb9 100644 --- a/sql/rpl_record.cc +++ b/sql/rpl_record.cc @@ -80,7 +80,7 @@ pack_row(TABLE *table, MY_BITMAP const* cols, unsigned int null_mask= 1U; for ( ; (field= *p_field) ; p_field++) { - if (bitmap_is_set(cols, p_field - table->field)) + if (bitmap_is_set(cols, (uint)(p_field - table->field))) { my_ptrdiff_t offset; if (field->is_null(rec_offset)) @@ -262,7 +262,7 @@ unpack_row(rpl_group_info *rgi, No need to bother about columns that does not exist: they have gotten default values when being emptied above. */ - if (bitmap_is_set(cols, field_ptr - begin_ptr)) + if (bitmap_is_set(cols, (uint)(field_ptr - begin_ptr))) { if ((null_mask & 0xFF) == 0) { @@ -434,7 +434,7 @@ unpack_row(rpl_group_info *rgi, if (master_reclength) { if (*field_ptr) - *master_reclength = (*field_ptr)->ptr - table->record[0]; + *master_reclength = (ulong)((*field_ptr)->ptr - table->record[0]); else *master_reclength = table->s->reclength; } diff --git a/sql/rpl_record_old.cc b/sql/rpl_record_old.cc index 4180557f018..523049cf959 100644 --- a/sql/rpl_record_old.cc +++ b/sql/rpl_record_old.cc @@ -134,7 +134,7 @@ unpack_row_old(rpl_group_info *rgi, { Field *const f= *field_ptr; - if (bitmap_is_set(cols, field_ptr - begin_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); @@ -149,14 +149,14 @@ unpack_row_old(rpl_group_info *rgi, } } else - bitmap_clear_bit(rw_set, field_ptr - begin_ptr); + bitmap_clear_bit(rw_set, (uint)(field_ptr - begin_ptr)); } *row_end = ptr; if (master_reclength) { if (*field_ptr) - *master_reclength = (*field_ptr)->ptr - table->record[0]; + *master_reclength = (ulong)((*field_ptr)->ptr - table->record[0]); else *master_reclength = table->s->reclength; } diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 0204121c553..e414a674af6 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -7675,8 +7675,11 @@ ER_SLAVE_SAME_ID ER_FLASHBACK_NOT_SUPPORTED eng "Flashback does not support %s %s" -# MARIAROCKS-TODO: Should we add RocksDB error messages here or use some other -# solution? + + +# +# MyRocks error messages +# ER_KEYS_OUT_OF_ORDER eng "Keys are out order during bulk load" @@ -7710,39 +7713,40 @@ ER_UNSUPPORTED_COLLATION ER_METADATA_INCONSISTENCY 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." -ER_KEY_CREATE_DURING_ALTER - eng "MyRocks failed creating new key definitions during alter." - -ER_SK_POPULATE_DURING_ALTER - eng "MyRocks failed populating secondary key during alter." - ER_CF_DIFFERENT 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." +ER_RDB_TTL_DURATION_FORMAT + eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer." + ER_RDB_STATUS_GENERAL - eng "Status error %d received from RocksDB: %s" + eng "Status error %d received from RocksDB: %s" ER_RDB_STATUS_MSG - eng "%s, Status error %d received from RocksDB: %s" - -ER_NET_OK_PACKET_TOO_LARGE - eng "OK packet too large" + eng "%s, Status error %d received from RocksDB: %s" ER_RDB_TTL_UNSUPPORTED - eng "TTL support is currently disabled when table has secondary indexes or hidden PK." + eng "TTL support is currently disabled when table has a hidden PK." ER_RDB_TTL_COL_FORMAT 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." -ER_RDB_TTL_DURATION_FORMAT - eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer." - ER_PER_INDEX_CF_DEPRECATED eng "The per-index column family option has been deprecated" +ER_KEY_CREATE_DURING_ALTER + eng "MyRocks failed creating new key definitions during alter." + +ER_SK_POPULATE_DURING_ALTER + eng "MyRocks failed populating secondary key during alter." + +# MyRocks messages end ER_SUM_FUNC_WITH_WINDOW_FUNC_AS_ARG eng "Window functions can not be used as arguments to group functions." +ER_NET_OK_PACKET_TOO_LARGE + eng "OK packet too large" + ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION eng "Illegal parameter data types %s and %s for operation '%s'" ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION diff --git a/sql/slave.cc b/sql/slave.cc index 46932e36e95..94e35bec4f8 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -3433,7 +3433,6 @@ static int init_slave_thread(THD* thd, Master_info *mi, thd->connection_name= mi->connection_name; thd->variables.sql_log_slow= !MY_TEST(thd->variables.log_slow_disabled_statements & LOG_SLOW_DISABLE_SLAVE); set_slave_thread_options(thd); - thd->client_capabilities = CLIENT_LOCAL_FILES; if (thd_type == SLAVE_THD_SQL) THD_STAGE_INFO(thd, stage_waiting_for_the_next_event_in_relay_log); diff --git a/sql/sp.cc b/sql/sp.cc index e2884f49d99..e02283d1f17 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -173,7 +173,8 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] = "'ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES'," "'STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES'," "'ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER'," - "'HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')") }, + "'HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH'," + "'EMPTY_STRING_IS_NULL')") }, { NULL, 0 } }, { @@ -688,7 +689,7 @@ Sp_handler::db_find_routine(THD *thd, // Get additional information modified= table->field[MYSQL_PROC_FIELD_MODIFIED]->val_int(); created= table->field[MYSQL_PROC_FIELD_CREATED]->val_int(); - sql_mode= (ulong) table->field[MYSQL_PROC_FIELD_SQL_MODE]->val_int(); + sql_mode= (sql_mode_t) table->field[MYSQL_PROC_FIELD_SQL_MODE]->val_int(); creation_ctx= Stored_routine_creation_ctx::load_from_db(thd, name, table); diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 0bc269c414c..df9471880d9 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -70,8 +70,12 @@ static void reset_start_time_for_sp(THD *thd) Item::Type -sp_map_item_type(enum enum_field_types type) +sp_map_item_type(const Type_handler *handler) { + if (handler == &type_handler_row) + return Item::ROW_ITEM; + enum_field_types type= real_type_to_type(handler->real_field_type()); + switch (type) { case MYSQL_TYPE_BIT: case MYSQL_TYPE_TINY: @@ -994,7 +998,7 @@ sp_head::execute(THD *thd, bool merge_da_on_success) sp_rcontext *ctx= thd->spcont; bool err_status= FALSE; uint ip= 0; - ulonglong save_sql_mode; + sql_mode_t save_sql_mode; bool save_abort_on_warning; Query_arena *old_arena; /* per-instruction arena */ @@ -1444,7 +1448,7 @@ sp_rcontext *sp_head::rcontext_create(THD *thd, Field *ret_value, bool switch_security_ctx) { if (!(m_flags & HAS_COLUMN_TYPE_REFS)) - return sp_rcontext::create(thd, m_pcont, ret_value, *defs); + return sp_rcontext::create(thd, this, m_pcont, ret_value, *defs); sp_rcontext *res= NULL; #ifndef NO_EMBEDDED_ACCESS_CHECKS Security_context *save_security_ctx; @@ -1453,7 +1457,7 @@ sp_rcontext *sp_head::rcontext_create(THD *thd, Field *ret_value, return NULL; #endif if (!defs->resolve_type_refs(thd)) - res= sp_rcontext::create(thd, m_pcont, ret_value, *defs); + res= sp_rcontext::create(thd, this, m_pcont, ret_value, *defs); #ifndef NO_EMBEDDED_ACCESS_CHECKS if (switch_security_ctx) m_security_ctx.restore_security_context(thd, save_security_ctx); @@ -1590,9 +1594,6 @@ sp_head::execute_trigger(THD *thd, goto err_with_cleanup; } - /* Needed by slow log */ - nctx->sp= this; - thd->spcont= nctx; err_status= execute(thd, FALSE); @@ -1713,9 +1714,6 @@ sp_head::execute_function(THD *thd, Item **argp, uint argcount, */ thd->restore_active_arena(&call_arena, &backup_arena); - /* Needed by slow log */ - nctx->sp= this; - /* Pass arguments. */ for (arg_no= 0; arg_no < argcount; arg_no++) { @@ -1918,7 +1916,6 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) DBUG_RETURN(TRUE); } - octx->sp= 0; thd->spcont= octx; /* set callers_arena to thd, for upper-level function to work */ @@ -1931,7 +1928,6 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) thd->spcont= save_spcont; DBUG_RETURN(TRUE); } - nctx->sp= this; if (params > 0) { @@ -2566,10 +2562,18 @@ bool check_show_routine_access(THD *thd, sp_head *sp, bool *full_access) *full_access= ((!check_table_access(thd, SELECT_ACL, &tables, FALSE, 1, TRUE) && (tables.grant.privilege & SELECT_ACL) != 0) || + /* Check if user owns the routine. */ (!strcmp(sp->m_definer.user.str, thd->security_ctx->priv_user) && !strcmp(sp->m_definer.host.str, - thd->security_ctx->priv_host))); + thd->security_ctx->priv_host)) || + /* Check if current role or any of the sub-granted roles + own the routine. */ + (sp->m_definer.host.length == 0 && + (!strcmp(sp->m_definer.user.str, + thd->security_ctx->priv_role) || + check_role_is_granted(thd->security_ctx->priv_role, NULL, + sp->m_definer.user.str)))); if (!*full_access) return check_some_routine_access(thd, sp->m_db.str, sp->m_name.str, sp->m_handler); @@ -4812,11 +4816,11 @@ bool sp_head::spvar_fill_row(THD *thd, sp_variable *spvar, Row_definition_list *defs) { + spvar->field_def.set_row_field_definitions(defs); spvar->field_def.field_name= spvar->name; if (fill_spvar_definition(thd, &spvar->field_def)) return true; row_fill_field_definitions(thd, defs); - spvar->field_def.set_row_field_definitions(defs); return false; } diff --git a/sql/sp_head.h b/sql/sp_head.h index c3ace46a789..734c0dea3e3 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -40,7 +40,7 @@ */ Item::Type -sp_map_item_type(enum enum_field_types type); +sp_map_item_type(const Type_handler *handler); uint sp_get_flags_for_command(LEX *lex); diff --git a/sql/sp_pcontext.h b/sql/sp_pcontext.h index 9c879099410..990ad35cb57 100644 --- a/sql/sp_pcontext.h +++ b/sql/sp_pcontext.h @@ -60,8 +60,6 @@ public: Spvar_definition field_def; /// Field-type of the SP-variable. - enum_field_types sql_type() const { return field_def.real_field_type(); } - const Type_handler *type_handler() const { return field_def.type_handler(); } public: diff --git a/sql/sp_rcontext.cc b/sql/sp_rcontext.cc index 70ab5a576b3..6716aa54170 100644 --- a/sql/sp_rcontext.cc +++ b/sql/sp_rcontext.cc @@ -35,10 +35,12 @@ /////////////////////////////////////////////////////////////////////////// -sp_rcontext::sp_rcontext(const sp_pcontext *root_parsing_ctx, +sp_rcontext::sp_rcontext(const sp_head *owner, + const sp_pcontext *root_parsing_ctx, Field *return_value_fld, bool in_sub_stmt) :end_partial_result_set(false), + m_sp(owner), m_root_parsing_ctx(root_parsing_ctx), m_var_table(NULL), m_return_value_fld(return_value_fld), @@ -59,11 +61,13 @@ sp_rcontext::~sp_rcontext() sp_rcontext *sp_rcontext::create(THD *thd, + const sp_head *owner, const sp_pcontext *root_parsing_ctx, Field *return_value_fld, Row_definition_list &field_def_lst) { - sp_rcontext *ctx= new (thd->mem_root) sp_rcontext(root_parsing_ctx, + sp_rcontext *ctx= new (thd->mem_root) sp_rcontext(owner, + root_parsing_ctx, return_value_fld, thd->in_sub_stmt); if (!ctx) @@ -352,10 +356,13 @@ bool sp_rcontext::init_var_items(THD *thd, } -bool Item_spvar_args::row_create_items(THD *thd, List<Spvar_definition> *list) +bool Item_field_row::row_create_items(THD *thd, List<Spvar_definition> *list) { DBUG_ASSERT(list); - if (!(m_table= create_virtual_tmp_table(thd, *list))) + DBUG_ASSERT(field); + Virtual_tmp_table **ptable= field->virtual_tmp_table_addr(); + DBUG_ASSERT(ptable); + if (!(ptable[0]= create_virtual_tmp_table(thd, *list))) return true; if (alloc_arguments(thd, list->elements)) @@ -366,23 +373,19 @@ bool Item_spvar_args::row_create_items(THD *thd, List<Spvar_definition> *list) for (arg_count= 0; (def= it++); arg_count++) { if (!(args[arg_count]= new (thd->mem_root) - Item_field(thd, m_table->field[arg_count]))) + Item_field(thd, ptable[0]->field[arg_count]))) return true; } return false; } -Field *Item_spvar_args::get_row_field(uint i) const +Field *Item_field_row::get_row_field(uint i) const { - DBUG_ASSERT(m_table); - return m_table->field[i]; -} - - -Item_spvar_args::~Item_spvar_args() -{ - delete m_table; + DBUG_ASSERT(field); + Virtual_tmp_table **ptable= field->virtual_tmp_table_addr(); + DBUG_ASSERT(ptable); + return ptable[0]->field[i]; } @@ -685,13 +688,13 @@ int sp_rcontext::set_variable_row_field(THD *thd, uint var_idx, uint field_idx, int sp_rcontext::set_variable_row(THD *thd, uint var_idx, List<Item> &items) { DBUG_ENTER("sp_rcontext::set_variable_row"); - DBUG_ASSERT(thd->spcont->get_item(var_idx)->cols() == items.elements); + DBUG_ASSERT(get_item(var_idx)->cols() == items.elements); List_iterator<Item> it(items); Item *item; for (uint i= 0 ; (item= it++) ; i++) { int rc; - if ((rc= thd->spcont->set_variable_row_field(thd, var_idx, i, &item))) + if ((rc= set_variable_row_field(thd, var_idx, i, &item))) DBUG_RETURN(rc); } DBUG_RETURN(0); diff --git a/sql/sp_rcontext.h b/sql/sp_rcontext.h index 66df0359d28..658972ece40 100644 --- a/sql/sp_rcontext.h +++ b/sql/sp_rcontext.h @@ -70,6 +70,7 @@ public: /// /// @return valid sp_rcontext object or NULL in case of OOM-error. static sp_rcontext *create(THD *thd, + const sp_head *owner, const sp_pcontext *root_parsing_ctx, Field *return_value_fld, Row_definition_list &defs); @@ -77,7 +78,8 @@ public: ~sp_rcontext(); private: - sp_rcontext(const sp_pcontext *root_parsing_ctx, + sp_rcontext(const sp_head *owner, + const sp_pcontext *root_parsing_ctx, Field *return_value_fld, bool in_sub_stmt); @@ -179,7 +181,8 @@ public: /// The stored program for which this runtime context is created. Used for /// checking if correct runtime context is used for variable handling. - sp_head *sp; + /// Also used by slow log. + const sp_head *m_sp; ///////////////////////////////////////////////////////////////////////// // SP-variables. diff --git a/sql/spatial.cc b/sql/spatial.cc index 8d595541eef..19035a4e882 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -2565,7 +2565,7 @@ uint Gis_multi_polygon::init_from_opresult(String *bin, n_poly++; } bin->write_at_position(np_pos, n_poly); - return opres - opres_orig; + return (uint)(opres - opres_orig); } diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index ae7dc336720..7e31d448bdf 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -9238,6 +9238,16 @@ void get_mqh(const char *user, const char *host, USER_CONN *uc) mysql_mutex_unlock(&acl_cache->lock); } +static int check_role_is_granted_callback(ACL_USER_BASE *grantee, void *data) +{ + LEX_CSTRING *rolename= static_cast<LEX_CSTRING *>(data); + if (rolename->length == grantee->user.length && + !strcmp(rolename->str, grantee->user.str)) + return -1; // End search, we've found our role. + + /* Keep looking, we haven't found our role yet. */ + return 0; +} /* Modify a privilege table. @@ -11258,7 +11268,6 @@ bool check_grant(THD *, ulong, TABLE_LIST *, bool, uint, bool) } #endif /*NO_EMBEDDED_ACCESS_CHECKS */ - SHOW_VAR acl_statistics[] = { #ifndef NO_EMBEDDED_ACCESS_CHECKS {"column_grants", (char*)show_column_grants, SHOW_SIMPLE_FUNC}, @@ -11274,6 +11283,43 @@ SHOW_VAR acl_statistics[] = { {NullS, NullS, SHOW_LONG}, }; +/* Check if a role is granted to a user/role. We traverse the role graph + and return true if we find a match. + + hostname == NULL means we are looking for a role as a starting point, + otherwise a user. +*/ +bool check_role_is_granted(const char *username, + const char *hostname, + const char *rolename) +{ + DBUG_ENTER("check_role_is_granted"); + bool result= false; +#ifndef NO_EMBEDDED_ACCESS_CHECKS + ACL_USER_BASE *root; + mysql_mutex_lock(&acl_cache->lock); + if (hostname) + root= find_user_exact(username, hostname); + else + root= find_acl_role(username); + + LEX_CSTRING role_lex; + role_lex.str= rolename; + role_lex.length= strlen(rolename); + + if (root && /* No grantee, nothing to search. */ + traverse_role_graph_down(root, &role_lex, check_role_is_granted_callback, + NULL) == -1) + { + /* We have found the role during our search. */ + result= true; + } + + /* We haven't found the role or we had no initial grantee to start from. */ + mysql_mutex_unlock(&acl_cache->lock); +#endif + DBUG_RETURN(result); +} int fill_schema_enabled_roles(THD *thd, TABLE_LIST *tables, COND *cond) { @@ -12402,7 +12448,7 @@ static bool parse_com_change_user_packet(MPVIO_EXT *mpvio, uint packet_length) char *end= user + packet_length; /* Safe because there is always a trailing \0 at the end of the packet */ char *passwd= strend(user) + 1; - uint user_len= passwd - user - 1; + uint user_len= (uint)(passwd - user - 1); char *db= passwd; char db_buff[SAFE_NAME_LEN + 1]; // buffer to store db in utf8 char user_buff[USERNAME_LENGTH + 1]; // buffer to store user in utf8 @@ -13662,4 +13708,3 @@ maria_declare_plugin(mysql_password) MariaDB_PLUGIN_MATURITY_STABLE /* Maturity */ } maria_declare_plugin_end; - diff --git a/sql/sql_acl.h b/sql/sql_acl.h index dacddd603dd..e3dba20422d 100644 --- a/sql/sql_acl.h +++ b/sql/sql_acl.h @@ -408,6 +408,14 @@ int acl_set_default_role(THD *thd, const char *host, const char *user, extern SHOW_VAR acl_statistics[]; +/* Check if a role is granted to a user/role. + + If hostname == NULL, search for a role as the starting grantee. +*/ +bool check_role_is_granted(const char *username, + const char *hostname, + const char *rolename); + #ifndef DBUG_OFF extern ulong role_global_merges, role_db_merges, role_table_merges, role_column_merges, role_routine_merges; diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc index c81ca438bcc..4ed8234aa64 100644 --- a/sql/sql_admin.cc +++ b/sql/sql_admin.cc @@ -67,7 +67,6 @@ static bool admin_recreate_table(THD *thd, TABLE_LIST *table_list) if (thd->get_stmt_da()->is_ok()) thd->get_stmt_da()->reset_diagnostics_area(); table_list->table= NULL; - result_code= result_code ? HA_ADMIN_FAILED : HA_ADMIN_OK; DBUG_RETURN(result_code); } diff --git a/sql/sql_base.cc b/sql/sql_base.cc index e59007d3e5a..7fd6599df51 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3046,6 +3046,46 @@ thr_lock_type read_lock_type_for_table(THD *thd, /* + Extend the prelocking set with tables and routines used by a routine. + + @param[in] thd Thread context. + @param[in] rt Element of prelocking set to be processed. + @param[in] ot_ctx Context of open_table used to recover from + locking failures. + @retval false Success. + @retval true Failure (Conflicting metadata lock, OOM, other errors). +*/ +static bool +sp_acquire_mdl(THD *thd, Sroutine_hash_entry *rt, Open_table_context *ot_ctx) +{ + DBUG_ENTER("sp_acquire_mdl"); + /* + Since we acquire only shared lock on routines we don't + need to care about global intention exclusive locks. + */ + DBUG_ASSERT(rt->mdl_request.type == MDL_SHARED); + + /* + Waiting for a conflicting metadata lock to go away may + lead to a deadlock, detected by MDL subsystem. + If possible, we try to resolve such deadlocks by releasing all + metadata locks and restarting the pre-locking process. + To prevent the error from polluting the diagnostics area + in case of successful resolution, install a special error + handler for ER_LOCK_DEADLOCK error. + */ + MDL_deadlock_handler mdl_deadlock_handler(ot_ctx); + + thd->push_internal_handler(&mdl_deadlock_handler); + bool result= thd->mdl_context.acquire_lock(&rt->mdl_request, + ot_ctx->get_timeout()); + thd->pop_internal_handler(); + + DBUG_RETURN(result); +} + + +/* Handle element of prelocking set other than table. E.g. cache routine and, if prelocking strategy prescribes so, extend the prelocking set with tables and routines used by it. @@ -3099,29 +3139,7 @@ open_and_process_routine(THD *thd, Query_tables_list *prelocking_ctx, if (rt != (Sroutine_hash_entry*)prelocking_ctx->sroutines_list.first || mdl_type != MDL_key::PROCEDURE) { - /* - Since we acquire only shared lock on routines we don't - need to care about global intention exclusive locks. - */ - DBUG_ASSERT(rt->mdl_request.type == MDL_SHARED); - - /* - Waiting for a conflicting metadata lock to go away may - lead to a deadlock, detected by MDL subsystem. - If possible, we try to resolve such deadlocks by releasing all - metadata locks and restarting the pre-locking process. - To prevent the error from polluting the diagnostics area - in case of successful resolution, install a special error - handler for ER_LOCK_DEADLOCK error. - */ - MDL_deadlock_handler mdl_deadlock_handler(ot_ctx); - - thd->push_internal_handler(&mdl_deadlock_handler); - bool result= thd->mdl_context.acquire_lock(&rt->mdl_request, - ot_ctx->get_timeout()); - thd->pop_internal_handler(); - - if (result) + if (sp_acquire_mdl(thd, rt, ot_ctx)) DBUG_RETURN(TRUE); DEBUG_SYNC(thd, "after_shared_lock_pname"); @@ -3320,9 +3338,14 @@ open_and_process_table(THD *thd, LEX *lex, TABLE_LIST *tables, /* If this TABLE_LIST object has an associated open TABLE object (TABLE_LIST::table is not NULL), that TABLE object must be a pre-opened - temporary table. + temporary table or SEQUENCE (see sequence_insert()). */ - DBUG_ASSERT(is_temporary_table(tables)); + DBUG_ASSERT(is_temporary_table(tables) || tables->table->s->sequence); + if (tables->sequence && tables->table->s->table_type != TABLE_TYPE_SEQUENCE) + { + my_error(ER_NOT_SEQUENCE, MYF(0), tables->db, tables->alias); + DBUG_RETURN(true); + } } else if (tables->open_type == OT_TEMPORARY_ONLY) { @@ -5479,7 +5502,7 @@ find_field_in_table(THD *thd, TABLE *table, const char *name, uint length, if (field_ptr && *field_ptr) { - *cached_field_index_ptr= field_ptr - table->field; + *cached_field_index_ptr= (uint)(field_ptr - table->field); field= *field_ptr; } else @@ -7038,13 +7061,15 @@ int setup_wild(THD *thd, TABLE_LIST *tables, List<Item> &fields, bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array, List<Item> &fields, enum_mark_columns mark_used_columns, - List<Item> *sum_func_list, bool allow_sum_func) + List<Item> *sum_func_list, List<Item> *pre_fix, + bool allow_sum_func) { reg2 Item *item; enum_mark_columns save_mark_used_columns= thd->mark_used_columns; nesting_map save_allow_sum_func= thd->lex->allow_sum_func; List_iterator<Item> it(fields); bool save_is_item_list_lookup; + bool make_pre_fix= (pre_fix && (pre_fix->elements == 0)); DBUG_ENTER("setup_fields"); DBUG_PRINT("enter", ("ref_pointer_array: %p", ref_pointer_array.array())); @@ -7094,6 +7119,9 @@ bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array, thd->lex->current_select->cur_pos_in_select_list= 0; while ((item= it++)) { + if (make_pre_fix) + pre_fix->push_back(item, thd->stmt_arena->mem_root); + if ((!item->fixed && item->fix_fields(thd, it.ref())) || (item= *(it.ref()))->check_cols(1)) { diff --git a/sql/sql_base.h b/sql/sql_base.h index 7a8d27c9147..bb33af66590 100644 --- a/sql/sql_base.h +++ b/sql/sql_base.h @@ -159,7 +159,8 @@ int setup_wild(THD *thd, TABLE_LIST *tables, List<Item> &fields, List<Item> *sum_func_list, uint wild_num); bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array, List<Item> &item, enum_mark_columns mark_used_columns, - List<Item> *sum_func_list, bool allow_sum_func); + List<Item> *sum_func_list, List<Item> *pre_fix, + bool allow_sum_func); void unfix_fields(List<Item> &items); bool fill_record(THD * thd, TABLE *table_arg, List<Item> &fields, List<Item> &values, bool ignore_errors, bool update); @@ -366,7 +367,7 @@ inline bool setup_fields_with_no_wrap(THD *thd, Ref_ptr_array ref_pointer_array, bool res; thd->lex->select_lex.no_wrap_view_item= TRUE; res= setup_fields(thd, ref_pointer_array, item, mark_used_columns, - sum_func_list, allow_sum_func); + sum_func_list, NULL, allow_sum_func); thd->lex->select_lex.no_wrap_view_item= FALSE; return res; } diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index e09b1788441..2dc977c9b5d 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -4280,7 +4280,7 @@ my_bool Query_cache::move_by_type(uchar **border, *pprev = block->pprev, *pnext = block->pnext, *new_block =(Query_cache_block *) *border; - uint tablename_offset = block->table()->table() - block->table()->db(); + size_t tablename_offset = block->table()->table() - block->table()->db(); char *data = (char*) block->data(); uchar *key; size_t key_length; @@ -4589,7 +4589,7 @@ uint Query_cache::filename_2_table_key (char *key, const char *path, filename= tablename + dirname_length(tablename + 2) + 2; /* Find start of databasename */ for (dbname= filename - 2 ; dbname[-1] != FN_LIBCHAR ; dbname--) ; - *db_length= (filename - dbname) - 1; + *db_length= (uint32)(filename - dbname) - 1; DBUG_PRINT("qcache", ("table '%-.*s.%s'", *db_length, dbname, filename)); DBUG_RETURN((uint) (strmake(strmake(key, dbname, diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 5c8a378eacd..889acc57b76 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2406,9 +2406,11 @@ bool THD::convert_string(String *s, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs) } -Item_string *THD::make_string_literal(const char *str, size_t length, - uint repertoire) +Item *THD::make_string_literal(const char *str, size_t length, + uint repertoire) { + if (!length && (variables.sql_mode & MODE_EMPTY_STRING_IS_NULL)) + return new (mem_root) Item_null(this, 0, variables.collation_connection); if (!charset_is_collation_connection && (repertoire != MY_REPERTOIRE_ASCII || !my_charset_is_ascii_based(variables.collation_connection))) @@ -2426,6 +2428,57 @@ Item_string *THD::make_string_literal(const char *str, size_t length, } +Item *THD::make_string_literal_nchar(const Lex_string_with_metadata_st &str) +{ + DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); + if (!str.length && (variables.sql_mode & MODE_EMPTY_STRING_IS_NULL)) + return new (mem_root) Item_null(this, 0, national_charset_info); + + return new (mem_root) Item_string(this, str.str, str.length, + national_charset_info, + DERIVATION_COERCIBLE, + str.repertoire()); +} + + +Item *THD::make_string_literal_charset(const Lex_string_with_metadata_st &str, + CHARSET_INFO *cs) +{ + if (!str.length && (variables.sql_mode & MODE_EMPTY_STRING_IS_NULL)) + return new (mem_root) Item_null(this, 0, cs); + return new (mem_root) Item_string_with_introducer(this, + str.str, str.length, cs); +} + + +Item *THD::make_string_literal_concat(Item *item, const LEX_CSTRING &str) +{ + if (item->type() == Item::NULL_ITEM) + { + DBUG_ASSERT(variables.sql_mode & MODE_EMPTY_STRING_IS_NULL); + if (str.length) + { + CHARSET_INFO *cs= variables.collation_connection; + uint repertoire= my_string_repertoire(cs, str.str, str.length); + return new (mem_root) Item_string(this, str.str, str.length, cs, + DERIVATION_COERCIBLE, repertoire); + } + return item; + } + + DBUG_ASSERT(item->type() == Item::STRING_ITEM); + DBUG_ASSERT(item->basic_const_item()); + static_cast<Item_string*>(item)->append(str.str, str.length); + if (!(item->collation.repertoire & MY_REPERTOIRE_EXTENDED)) + { + // If the string has been pure ASCII so far, check the new part. + CHARSET_INFO *cs= variables.collation_connection; + item->collation.repertoire|= my_string_repertoire(cs, str.str, str.length); + } + return item; +} + + /* Update some cache variables when character set changes */ diff --git a/sql/sql_class.h b/sql/sql_class.h index bc72fc25a18..fda56c8cc3a 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -139,6 +139,7 @@ enum enum_binlog_row_image { #define MODE_HIGH_NOT_PRECEDENCE (1ULL << 29) #define MODE_NO_ENGINE_SUBSTITUTION (1ULL << 30) #define MODE_PAD_CHAR_TO_FULL_LENGTH (1ULL << 31) +#define MODE_EMPTY_STRING_IS_NULL (1ULL << 32) /* Bits for different old style modes */ #define OLD_MODE_NO_DUP_KEY_WARNINGS_WITH_IGNORE (1 << 0) @@ -3548,14 +3549,17 @@ public: @param length - length of the string @param repertoire - the repertoire of the string */ - Item_string *make_string_literal(const char *str, size_t length, - uint repertoire); - Item_string *make_string_literal(const Lex_string_with_metadata_st &str) + Item *make_string_literal(const char *str, size_t length, + uint repertoire); + Item *make_string_literal(const Lex_string_with_metadata_st &str) { uint repertoire= str.repertoire(variables.character_set_client); return make_string_literal(str.str, str.length, repertoire); } - + Item *make_string_literal_nchar(const Lex_string_with_metadata_st &str); + Item *make_string_literal_charset(const Lex_string_with_metadata_st &str, + CHARSET_INFO *cs); + Item *make_string_literal_concat(Item *item1, const LEX_CSTRING &str); void add_changed_table(TABLE *table); void add_changed_table(const char *key, long key_length); CHANGED_TABLE_LIST * changed_table_dup(const char *key, long key_length); diff --git a/sql/sql_const.h b/sql/sql_const.h index 8d5f56de6b0..a5756aa1f39 100644 --- a/sql/sql_const.h +++ b/sql/sql_const.h @@ -45,7 +45,18 @@ #define MAX_MBWIDTH 3 /* Max multibyte sequence */ #define MAX_FILENAME_MBWIDTH 5 #define MAX_FIELD_CHARLENGTH 255 -#define MAX_FIELD_VARCHARLENGTH 65535 +/* + In MAX_FIELD_VARCHARLENGTH we reserve extra bytes for the overhead: + - 2 bytes for the length + - 1 byte for NULL bits + to avoid the "Row size too large" error for these three corner definitions: + CREATE TABLE t1 (c VARBINARY(65533)); + CREATE TABLE t1 (c VARBINARY(65534)); + CREATE TABLE t1 (c VARBINARY(65535)); + Like VARCHAR(65536), they will be converted to BLOB automatically + in non-sctict mode. +*/ +#define MAX_FIELD_VARCHARLENGTH (65535-2-1) #define MAX_FIELD_BLOBLENGTH UINT_MAX32 /* cf field_blob::get_length() */ #define CONVERT_IF_BIGGER_TO_BLOB 512 /* Threshold *in characters* */ diff --git a/sql/sql_cte.cc b/sql/sql_cte.cc index 2047c7c8762..ad37ef36e2c 100644 --- a/sql/sql_cte.cc +++ b/sql/sql_cte.cc @@ -1007,7 +1007,7 @@ With_element *st_select_lex::find_table_def_in_with_clauses(TABLE_LIST *table) been done yet. */ if (with_elem && sl->master_unit() == with_elem->spec) - break; + break; With_clause *with_clause=sl->get_with_clause(); if (with_clause) { @@ -1055,13 +1055,21 @@ bool TABLE_LIST::set_as_with_table(THD *thd, With_element *with_elem) } with= with_elem; if (!with_elem->is_referenced() || with_elem->is_recursive) + { derived= with_elem->spec; + if (derived->get_master() != select_lex && + !is_with_table_recursive_reference()) + { + derived->move_as_slave(select_lex); + } + } else { if(!(derived= with_elem->clone_parsed_spec(thd, this))) return true; derived->with_element= with_elem; } + derived->first_select()->linkage= DERIVED_TABLE_TYPE; with_elem->inc_references(); return false; } diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 4db216a3a41..d41e9acfdc8 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -1006,7 +1006,7 @@ update_binlog: These DDL methods and logging are protected with the exclusive metadata lock on the schema. */ - if (write_to_binlog(thd, query, query_pos -1 - query, db, db_len)) + if (write_to_binlog(thd, query, (uint)(query_pos -1 - query), db, db_len)) { error= true; goto exit; @@ -1024,7 +1024,7 @@ update_binlog: These DDL methods and logging are protected with the exclusive metadata lock on the schema. */ - if (write_to_binlog(thd, query, query_pos -1 - query, db, db_len)) + if (write_to_binlog(thd, query, (uint)(query_pos -1 - query), db, db_len)) { error= true; goto exit; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 32ff44d9343..c880374f9ab 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -821,7 +821,7 @@ l DBUG_RETURN(TRUE); if ((wild_num && setup_wild(thd, table_list, field_list, NULL, wild_num)) || setup_fields(thd, Ref_ptr_array(), - field_list, MARK_COLUMNS_READ, NULL, 0) || + field_list, MARK_COLUMNS_READ, NULL, NULL, 0) || setup_conds(thd, table_list, select_lex->leaf_tables, conds) || setup_ftfuncs(select_lex)) DBUG_RETURN(TRUE); diff --git a/sql/sql_do.cc b/sql/sql_do.cc index a25bdef3d9d..f556dc282ed 100644 --- a/sql/sql_do.cc +++ b/sql/sql_do.cc @@ -29,7 +29,7 @@ bool mysql_do(THD *thd, List<Item> &values) List_iterator<Item> li(values); Item *value; DBUG_ENTER("mysql_do"); - if (setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_NONE, 0, 0)) + if (setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_NONE, 0, NULL, 0)) DBUG_RETURN(TRUE); while ((value = li++)) (void) value->is_null(); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index e592a873ef0..b12b470209c 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -268,7 +268,8 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list, if (table_list->is_view()) unfix_fields(fields); - res= setup_fields(thd, Ref_ptr_array(), fields, MARK_COLUMNS_WRITE, 0, 0); + res= setup_fields(thd, Ref_ptr_array(), + fields, MARK_COLUMNS_WRITE, 0, NULL, 0); /* Restore the current context. */ ctx_state.restore_state(context, table_list); @@ -380,7 +381,7 @@ static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list, /* Check the fields we are going to modify */ if (setup_fields(thd, Ref_ptr_array(), - update_fields, MARK_COLUMNS_WRITE, 0, 0)) + update_fields, MARK_COLUMNS_WRITE, 0, NULL, 0)) return -1; if (insert_table_list->is_view() && @@ -806,7 +807,8 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), counter); goto abort; } - if (setup_fields(thd, Ref_ptr_array(), *values, MARK_COLUMNS_READ, 0, 0)) + if (setup_fields(thd, Ref_ptr_array(), + *values, MARK_COLUMNS_READ, 0, NULL, 0)) goto abort; switch_to_nullable_trigger_fields(*values, table); } @@ -1531,13 +1533,13 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, context->resolve_in_table_list_only(table_list); res= (setup_fields(thd, Ref_ptr_array(), - *values, MARK_COLUMNS_READ, 0, 0) || + *values, MARK_COLUMNS_READ, 0, NULL, 0) || check_insert_fields(thd, context->table_list, fields, *values, !insert_into_view, 0, &map)); if (!res) res= setup_fields(thd, Ref_ptr_array(), - update_values, MARK_COLUMNS_READ, 0, 0); + update_values, MARK_COLUMNS_READ, 0, NULL, 0); if (!res && duplic == DUP_UPDATE) { @@ -3527,7 +3529,8 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) */ lex->current_select= &lex->select_lex; - res= (setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_READ, 0, 0) || + res= (setup_fields(thd, Ref_ptr_array(), + values, MARK_COLUMNS_READ, 0, NULL, 0) || check_insert_fields(thd, table_list, *fields, values, !insert_into_view, 1, &map)); @@ -3580,7 +3583,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) ctx_state.get_first_name_resolution_table(); res= res || setup_fields(thd, Ref_ptr_array(), *info.update_values, - MARK_COLUMNS_READ, 0, 0); + MARK_COLUMNS_READ, 0, NULL, 0); if (!res) { /* diff --git a/sql/sql_join_cache.cc b/sql/sql_join_cache.cc index 9a7b8f2af21..2f1a81cc2ec 100644 --- a/sql/sql_join_cache.cc +++ b/sql/sql_join_cache.cc @@ -407,7 +407,7 @@ void JOIN_CACHE::create_flag_fields() } /* Theoretically the new value of flag_fields can be less than the old one */ - flag_fields= copy-field_descr; + flag_fields= (uint)(copy-field_descr); } @@ -1375,7 +1375,7 @@ uint JOIN_CACHE::write_record_data(uchar * link, bool *is_full) } /* Save the offset of the field to put it later at the end of the record */ if (copy->referenced_field_no) - copy->offset= cp-curr_rec_pos; + copy->offset= (uint)(cp-curr_rec_pos); switch (copy->type) { case CACHE_BLOB: @@ -1779,7 +1779,7 @@ uint JOIN_CACHE::read_flag_fields() memcpy(copy->str, pos, copy->length); pos+= copy->length; } - return (pos-init_pos); + return (uint)(pos-init_pos); } diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index b8d51a5783f..ce43a45b872 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -2386,6 +2386,30 @@ st_select_lex_node *st_select_lex_node:: insert_chain_before( return this; } + +/* + Detach the node from its master and attach it to a new master +*/ + +void st_select_lex_node::move_as_slave(st_select_lex_node *new_master) +{ + exclude_from_tree(); + if (new_master->slave) + { + st_select_lex_node *curr= new_master->slave; + for ( ; curr->next ; curr= curr->next) ; + prev= &curr->next; + } + else + { + prev= &new_master->slave; + new_master->slave= this; + } + next= 0; + master= new_master; +} + + /* Exclude a node from the tree lex structure, but leave it in the global list of nodes. @@ -4495,7 +4519,8 @@ 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 && - tab->table->pos_in_table_list->with) + tab->table->pos_in_table_list->with && + tab->table->pos_in_table_list->with->is_recursive) { uses_cte= true; break; @@ -5208,15 +5233,73 @@ void LEX::sp_variable_declarations_init(THD *thd, int nvars) thd->variables.collation_database); } + +bool LEX::sp_variable_declarations_set_default(THD *thd, int nvars, + Item *dflt_value_item) +{ + if (!dflt_value_item && + !(dflt_value_item= new (thd->mem_root) Item_null(thd))) + return true; + + for (uint i= 0 ; i < (uint) nvars ; i++) + { + sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); + bool last= i + 1 == (uint) nvars; + spvar->default_value= dflt_value_item; + /* The last instruction is responsible for freeing LEX. */ + sp_instr_set *is= new (this->thd->mem_root) + sp_instr_set(sphead->instructions(), + spcont, spvar->offset, dflt_value_item, + this, last); + if (is == NULL || sphead->add_instr(is)) + return true; + } + return false; +} + + +bool +LEX::sp_variable_declarations_copy_type_finalize(THD *thd, int nvars, + const Column_definition &ref, + Row_definition_list *fields, + Item *default_value) +{ + for (uint i= 0 ; i < (uint) nvars; i++) + { + sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); + spvar->field_def.set_type(ref); + if (fields) + { + DBUG_ASSERT(ref.type_handler() == &type_handler_row); + spvar->field_def.set_row_field_definitions(fields); + } + spvar->field_def.field_name= spvar->name; + } + if (sp_variable_declarations_set_default(thd, nvars, default_value)) + return true; + spcont->declare_var_boundary(0); + return sphead->restore_lex(thd); +} + + bool LEX::sp_variable_declarations_finalize(THD *thd, int nvars, const Column_definition *cdef, - Row_definition_list *row, Item *dflt_value_item) { - if (!dflt_value_item && - !(dflt_value_item= new (thd->mem_root) Item_null(thd))) + 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); +} + +bool LEX::sp_variable_declarations_row_finalize(THD *thd, int nvars, + Row_definition_list *row, + Item *dflt_value_item) +{ + DBUG_ASSERT(row); /* Prepare all row fields. Note, we do it only one time outside of the below loop. @@ -5229,37 +5312,19 @@ bool LEX::sp_variable_declarations_finalize(THD *thd, int nvars, ... END; */ - if (row && sphead->row_fill_field_definitions(thd, row)) + if (sphead->row_fill_field_definitions(thd, row)) return true; for (uint i= 0 ; i < (uint) nvars ; i++) { sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); - bool last= i + 1 == (uint) nvars; - - if (!spvar) - return true; - - spvar->default_value= dflt_value_item; - - if (cdef) - { - if (!last) - spvar->field_def.set_column_definition(cdef); - } - if (sphead->fill_spvar_definition(thd, &spvar->field_def, &spvar->name)) - return true; spvar->field_def.set_row_field_definitions(row); - - /* The last instruction is responsible for freeing LEX. */ - sp_instr_set *is= new (this->thd->mem_root) - sp_instr_set(sphead->instructions(), - spcont, spvar->offset, dflt_value_item, - this, last); - if (is == NULL || sphead->add_instr(is)) + if (sphead->fill_spvar_definition(thd, &spvar->field_def, &spvar->name)) return true; } + if (sp_variable_declarations_set_default(thd, nvars, dflt_value_item)) + return true; spcont->declare_var_boundary(0); return sphead->restore_lex(thd); } @@ -5283,57 +5348,76 @@ LEX::sp_variable_declarations_rowtype_finalize(THD *thd, int nvars, const sp_pcursor *pcursor= ref->table.str && ref->db.str ? NULL : spcont->find_cursor(&ref->m_column, &coffp, false); + if (pcursor) + return sp_variable_declarations_cursor_rowtype_finalize(thd, nvars, + coffp, def); + /* + When parsing a qualified identifier chain, the parser does not know yet + if it's going to be a qualified column name (for %TYPE), + or a qualified table name (for %ROWTYPE). So it collects the chain + into Qualified_column_ident. + Now we know that it was actually a qualified table name (%ROWTYPE). + Create a new Table_ident from Qualified_column_ident, + shifting fields as follows: + - ref->m_column becomes table_ref->table + - ref->table becomes table_ref->db + */ + return sp_variable_declarations_table_rowtype_finalize(thd, nvars, + ref->table, + ref->m_column, + def); +} + - if (!def && !(def= new (thd->mem_root) Item_null(thd))) +bool +LEX::sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars, + const LEX_CSTRING &db, + const LEX_CSTRING &table, + Item *def) +{ + Table_ident *table_ref; + if (!(table_ref= new (thd->mem_root) Table_ident(thd, &db, &table, false))) + return true; + // Loop through all variables in the same declaration + for (uint i= 0 ; i < (uint) nvars; i++) + { + sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); + 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)) return true; + // Make sure sp_rcontext is created using the invoker security context: + sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS; + spcont->declare_var_boundary(0); + return sphead->restore_lex(thd); +} + + +bool +LEX::sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars, + uint offset, + Item *def) +{ + const sp_pcursor *pcursor= spcont->find_cursor(offset); // Loop through all variables in the same declaration for (uint i= 0 ; i < (uint) nvars; i++) { - bool last= i + 1 == (uint) nvars; sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); - if (pcursor) - { - spvar->field_def.set_cursor_rowtype_ref(true); - sp_instr_cursor_copy_struct *instr= - new (thd->mem_root) sp_instr_cursor_copy_struct(sphead->instructions(), - spcont, pcursor->lex(), - spvar->offset); - if (instr == NULL || sphead->add_instr(instr)) - return true; - } - else - { - /* - When parsing a qualified identifier chain, the parser does not know yet - if it's going to be a qualified column name (for %TYPE), - or a qualified table name (for %ROWTYPE). So it collects the chain - into Qualified_column_ident. - Now we know that it was actually a qualified table name (%ROWTYPE). - Create a new Table_ident from Qualified_column_ident, - shifting fields as follows: - - ref->m_column becomes table_ref->table - - ref->table becomes table_ref->db - */ - Table_ident *table_ref; - if (!(table_ref= new (thd->mem_root) Table_ident(thd, - &ref->table, - &ref->m_column, - false))) - return true; - spvar->field_def.set_table_rowtype_ref(table_ref); - } + spvar->field_def.set_cursor_rowtype_ref(offset); + sp_instr_cursor_copy_struct *instr= + new (thd->mem_root) sp_instr_cursor_copy_struct(sphead->instructions(), + spcont, pcursor->lex(), + spvar->offset); + if (instr == NULL || sphead->add_instr(instr)) + return true; + sphead->fill_spvar_definition(thd, &spvar->field_def, &spvar->name); - spvar->default_value= def; - /* The last instruction is responsible for freeing LEX. */ - sp_instr_set *is= new (this->thd->mem_root) - sp_instr_set(sphead->instructions(), - spcont, spvar->offset, def, - this, last); - if (is == NULL || sphead->add_instr(is)) - return true; } + if (sp_variable_declarations_set_default(thd, nvars, def)) + return true; // Make sure sp_rcontext is created using the invoker security context: sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS; spcont->declare_var_boundary(0); @@ -5341,11 +5425,28 @@ LEX::sp_variable_declarations_rowtype_finalize(THD *thd, int nvars, } +/* + Add declarations for table column and SP variable anchor types: + - DECLARE spvar1 TYPE OF db1.table1.column1; + - DECLARE spvar1 TYPE OF table1.column1; + - DECLARE spvar1 TYPE OF spvar0; +*/ bool LEX::sp_variable_declarations_with_ref_finalize(THD *thd, int nvars, Qualified_column_ident *ref, Item *def) { + 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); +} + + +bool +LEX::sp_variable_declarations_column_type_finalize(THD *thd, int nvars, + Qualified_column_ident *ref, + Item *def) +{ for (uint i= 0 ; i < (uint) nvars; i++) { sp_variable *spvar= spcont->get_last_context_variable((uint) nvars - 1 - i); @@ -5353,7 +5454,55 @@ LEX::sp_variable_declarations_with_ref_finalize(THD *thd, int nvars, spvar->field_def.field_name= spvar->name; } sphead->m_flags|= sp_head::HAS_COLUMN_TYPE_REFS; - return sp_variable_declarations_finalize(thd, nvars, NULL, NULL, def); + if (sp_variable_declarations_set_default(thd, nvars, def)) + return true; + spcont->declare_var_boundary(0); + return sphead->restore_lex(thd); +} + + +bool +LEX::sp_variable_declarations_vartype_finalize(THD *thd, int nvars, + const LEX_CSTRING &ref, + Item *default_value) +{ + sp_variable *t; + if (!spcont || !(t= spcont->find_variable(&ref, false))) + { + my_error(ER_SP_UNDECLARED_VAR, MYF(0), ref.str); + return true; + } + + if (t->field_def.is_cursor_rowtype_ref()) + { + uint offset= t->field_def.cursor_rowtype_offset(); + return sp_variable_declarations_cursor_rowtype_finalize(thd, nvars, + offset, + default_value); + } + + if (t->field_def.is_column_type_ref()) + { + Qualified_column_ident *tmp= t->field_def.column_type_ref(); + return sp_variable_declarations_column_type_finalize(thd, nvars, tmp, + default_value); + } + + if (t->field_def.is_table_rowtype_ref()) + { + const Table_ident *tmp= t->field_def.table_rowtype_ref(); + return sp_variable_declarations_table_rowtype_finalize(thd, nvars, + tmp->db, + tmp->table, + default_value); + } + + // A reference to a scalar or a row variable with an explicit data type + return sp_variable_declarations_copy_type_finalize(thd, nvars, + t->field_def, + t->field_def. + row_field_definitions(), + default_value); } @@ -5421,7 +5570,7 @@ LEX::sp_add_for_loop_cursor_variable(THD *thd, if (!(spvar->default_value= new (thd->mem_root) Item_null(thd))) return NULL; - spvar->field_def.set_cursor_rowtype_ref(true); + spvar->field_def.set_cursor_rowtype_ref(coffset); if (sphead->add_for_loop_open_cursor(thd, spcont, spvar, pcursor, coffset, param_lex, parameters)) @@ -5445,7 +5594,7 @@ bool LEX::sp_for_loop_condition(THD *thd, const Lex_for_loop_st &loop) { sp_variable *src= i == 0 ? loop.m_index : loop.m_upper_bound; args[i]= new (thd->mem_root) - Item_splocal(thd, &src->name, src->offset, src->sql_type()); + Item_splocal(thd, &src->name, src->offset, src->type_handler()); if (args[i] == NULL) return true; #ifdef DBUG_ASSERT_EXISTS @@ -5579,7 +5728,7 @@ bool LEX::sp_for_loop_increment(THD *thd, const Lex_for_loop_st &loop) { Item_splocal *splocal= new (thd->mem_root) Item_splocal(thd, &loop.m_index->name, loop.m_index->offset, - loop.m_index->sql_type()); + loop.m_index->type_handler()); if (splocal == NULL) return true; #ifdef DBUG_ASSERT_EXISTS @@ -6350,7 +6499,7 @@ Item_splocal *LEX::create_item_spvar_row_field(THD *thd, { if (!(item= new (thd->mem_root) Item_splocal_row_field_by_name(thd, a, b, spv->offset, - MYSQL_TYPE_NULL, + &type_handler_null, pos.pos(), pos.length()))) return NULL; } @@ -6364,7 +6513,7 @@ Item_splocal *LEX::create_item_spvar_row_field(THD *thd, if (!(item= new (thd->mem_root) Item_splocal_row_field(thd, a, b, spv->offset, row_field_offset, - def->real_field_type(), + def->type_handler(), pos.pos(), pos.length()))) return NULL; } @@ -6533,7 +6682,7 @@ Item *LEX::create_item_limit(THD *thd, Query_fragment pos(thd, sphead, start, end); Item_splocal *item; if (!(item= new (thd->mem_root) Item_splocal(thd, a, - spv->offset, spv->sql_type(), + spv->offset, spv->type_handler(), pos.pos(), pos.length()))) return NULL; #ifdef DBUG_ASSERT_EXISTS @@ -6652,11 +6801,8 @@ Item *LEX::create_item_ident_sp(THD *thd, LEX_CSTRING *name, spv->offset, pos.pos(), pos.length()) : - spv->field_def.is_row() || spv->field_def.is_table_rowtype_ref() ? - new (thd->mem_root) Item_splocal_row(thd, name, spv->offset, - pos.pos(), pos.length()) : new (thd->mem_root) Item_splocal(thd, name, - spv->offset, spv->sql_type(), + spv->offset, spv->type_handler(), pos.pos(), pos.length()); if (splocal == NULL) return NULL; @@ -7186,6 +7332,22 @@ bool LEX::add_grant_command(THD *thd, enum_sql_command sql_command_arg, } +Item *LEX::make_item_func_substr(THD *thd, Item *a, Item *b, Item *c) +{ + return (thd->variables.sql_mode & MODE_ORACLE) ? + new (thd->mem_root) Item_func_substr_oracle(thd, a, b, c) : + new (thd->mem_root) Item_func_substr(thd, a, b, c); +} + + +Item *LEX::make_item_func_substr(THD *thd, Item *a, Item *b) +{ + return (thd->variables.sql_mode & MODE_ORACLE) ? + new (thd->mem_root) Item_func_substr_oracle(thd, a, b) : + new (thd->mem_root) Item_func_substr(thd, a, b); +} + + Item *LEX::make_item_func_replace(THD *thd, Item *org, Item *find, diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 5f1f4a397d4..7619353d922 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -612,6 +612,7 @@ public: } st_select_lex_node *insert_chain_before(st_select_lex_node **ptr_pos_to_insert, st_select_lex_node *end_chain_node); + void move_as_slave(st_select_lex_node *new_master); friend class st_select_lex_unit; friend bool mysql_new_select(LEX *lex, bool move_down, SELECT_LEX *sel); friend bool mysql_make_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *table, @@ -848,6 +849,7 @@ public: Group_list_ptrs *group_list_ptrs; List<Item> item_list; /* list of fields & expressions */ + List<Item> pre_fix; /* above list before fix_fields */ bool is_item_list_lookup; /* Usualy it is pointer to ftfunc_list_alloc, but in union used to create fake @@ -3175,26 +3177,34 @@ public: void sp_variable_declarations_init(THD *thd, int nvars); bool sp_variable_declarations_finalize(THD *thd, int nvars, const Column_definition *cdef, - Row_definition_list *row, Item *def); - bool sp_variable_declarations_finalize(THD *thd, int nvars, - const Column_definition *cdef, - Item *def) - { - return sp_variable_declarations_finalize(thd, nvars, cdef, NULL, def); - } + bool sp_variable_declarations_set_default(THD *thd, int nvars, Item *def); bool sp_variable_declarations_row_finalize(THD *thd, int nvars, Row_definition_list *row, - Item *def) - { - return sp_variable_declarations_finalize(thd, nvars, NULL, row, def); - } + Item *def); bool sp_variable_declarations_with_ref_finalize(THD *thd, int nvars, Qualified_column_ident *col, Item *def); bool sp_variable_declarations_rowtype_finalize(THD *thd, int nvars, Qualified_column_ident *, Item *def); + bool sp_variable_declarations_cursor_rowtype_finalize(THD *thd, int nvars, + uint offset, + Item *def); + bool sp_variable_declarations_table_rowtype_finalize(THD *thd, int nvars, + const LEX_CSTRING &db, + const LEX_CSTRING &table, + Item *def); + bool sp_variable_declarations_column_type_finalize(THD *thd, int nvars, + Qualified_column_ident *ref, + Item *def); + bool sp_variable_declarations_vartype_finalize(THD *thd, int nvars, + const LEX_CSTRING &name, + Item *def); + bool sp_variable_declarations_copy_type_finalize(THD *thd, int nvars, + const Column_definition &ref, + Row_definition_list *fields, + Item *def); bool sp_handler_declaration_init(THD *thd, int type); bool sp_handler_declaration_finalize(THD *thd, int type); @@ -3336,7 +3346,8 @@ public: const char *end); Item *make_item_func_replace(THD *thd, Item *org, Item *find, Item *replace); - + Item *make_item_func_substr(THD *thd, Item *a, Item *b, Item *c); + Item *make_item_func_substr(THD *thd, Item *a, Item *b); /* Create a my_var instance for a ROW field variable that was used as an OUT SP parameter: CALL p1(var.field); diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 6cd0b76c66d..cf676d5f706 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -387,21 +387,23 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, in this case. */ if (setup_fields(thd, Ref_ptr_array(), - set_fields, MARK_COLUMNS_WRITE, 0, 0) || - setup_fields(thd, Ref_ptr_array(), set_values, MARK_COLUMNS_READ, 0, 0)) + set_fields, MARK_COLUMNS_WRITE, 0, NULL, 0) || + setup_fields(thd, Ref_ptr_array(), + set_values, MARK_COLUMNS_READ, 0, NULL, 0)) DBUG_RETURN(TRUE); } else { // Part field list /* TODO: use this conds for 'WITH CHECK OPTIONS' */ if (setup_fields(thd, Ref_ptr_array(), - fields_vars, MARK_COLUMNS_WRITE, 0, 0) || + fields_vars, MARK_COLUMNS_WRITE, 0, NULL, 0) || setup_fields(thd, Ref_ptr_array(), - set_fields, MARK_COLUMNS_WRITE, 0, 0) || + set_fields, MARK_COLUMNS_WRITE, 0, NULL, 0) || check_that_all_fields_are_given_values(thd, table, table_list)) DBUG_RETURN(TRUE); /* Fix the expressions in SET clause */ - if (setup_fields(thd, Ref_ptr_array(), set_values, MARK_COLUMNS_READ, 0, 0)) + if (setup_fields(thd, Ref_ptr_array(), + set_values, MARK_COLUMNS_READ, 0, NULL, 0)) DBUG_RETURN(TRUE); } switch_to_nullable_trigger_fields(fields_vars, table); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 0c68615f911..2f886d91780 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1424,8 +1424,7 @@ out: @retval FALSE The statement isn't updating any relevant tables. */ -static my_bool deny_updates_if_read_only_option(THD *thd, - TABLE_LIST *all_tables) +static bool deny_updates_if_read_only_option(THD *thd, TABLE_LIST *all_tables) { DBUG_ENTER("deny_updates_if_read_only_option"); @@ -1447,10 +1446,20 @@ static my_bool deny_updates_if_read_only_option(THD *thd, if (lex->sql_command == SQLCOM_UPDATE_MULTI) DBUG_RETURN(FALSE); - /* a table-to-create is not in the temp table list, needs a special check */ + /* + a table-to-be-created is not in the temp table list yet, + so CREATE TABLE needs a special treatment + */ if (lex->sql_command == SQLCOM_CREATE_TABLE) DBUG_RETURN(!lex->tmp_table()); + /* + a table-to-be-dropped might not exist (DROP TEMPORARY TABLE IF EXISTS), + cannot use the temp table list either. + */ + if (lex->sql_command == SQLCOM_DROP_TABLE && lex->tmp_table()) + DBUG_RETURN(FALSE); + /* Check if we created or dropped databases */ if ((sql_command_flags[lex->sql_command] & CF_DB_CHANGE)) DBUG_RETURN(TRUE); @@ -4065,7 +4074,7 @@ mysql_execute_command(THD *thd) #ifdef WITH_PARTITION_STORAGE_ENGINE { partition_info *part_info= thd->lex->part_info; - if (part_info && !(part_info= thd->lex->part_info->get_clone(thd))) + if (part_info && !(part_info= part_info->get_clone(thd))) { res= -1; goto end_with_restore_list; @@ -4541,7 +4550,7 @@ end_with_restore_list: if (up_result != 2) break; } - /* Fall through */ + /* fall through */ case SQLCOM_UPDATE_MULTI: { DBUG_ASSERT(first_table == all_tables && first_table != 0); @@ -4653,7 +4662,7 @@ end_with_restore_list: DBUG_PRINT("debug", ("Just after generate_incident()")); } #endif - /* fall through */ + /* fall through */ case SQLCOM_INSERT: { WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_INSERT_REPLACE); @@ -5275,7 +5284,6 @@ end_with_restore_list: if (res) break; - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); switch (lex->sql_command) { case SQLCOM_CREATE_EVENT: { @@ -5309,7 +5317,6 @@ end_with_restore_list: &lex->spname->m_name); break; case SQLCOM_DROP_EVENT: - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); if (!(res= Events::drop_event(thd, &lex->spname->m_db, &lex->spname->m_name, lex->if_exists()))) @@ -5437,11 +5444,10 @@ end_with_restore_list: } if (first_table) { - if (lex->type == TYPE_ENUM_PROCEDURE || - lex->type == TYPE_ENUM_FUNCTION) + const Sp_handler *sph= Sp_handler::handler((stored_procedure_type) + lex->type); + if (sph) { - const Sp_handler *sph= Sp_handler::handler((stored_procedure_type) - lex->type); uint grants= lex->all_privileges ? (PROC_ACLS & ~GRANT_ACL) | (lex->grant & GRANT_ACL) : lex->grant; @@ -6049,7 +6055,6 @@ end_with_restore_list: Note: SQLCOM_CREATE_VIEW also handles 'ALTER VIEW' commands as specified through the thd->lex->create_view->mode flag. */ - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); res= mysql_create_view(thd, first_table, thd->lex->create_view->mode); break; } @@ -6065,7 +6070,6 @@ end_with_restore_list: case SQLCOM_CREATE_TRIGGER: { /* Conditionally writes to binlog. */ - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); res= mysql_create_or_drop_trigger(thd, all_tables, 1); break; @@ -6073,7 +6077,6 @@ end_with_restore_list: case SQLCOM_DROP_TRIGGER: { /* Conditionally writes to binlog. */ - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); res= mysql_create_or_drop_trigger(thd, all_tables, 0); break; } @@ -6138,13 +6141,11 @@ end_with_restore_list: my_ok(thd); break; case SQLCOM_INSTALL_PLUGIN: - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); if (! (res= mysql_install_plugin(thd, &thd->lex->comment, &thd->lex->ident))) my_ok(thd); break; case SQLCOM_UNINSTALL_PLUGIN: - WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL); if (! (res= mysql_uninstall_plugin(thd, &thd->lex->comment, &thd->lex->ident))) my_ok(thd); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 3fc49dc42ca..fadd7009822 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1,5 +1,5 @@ -/* Copyright (c) 2005, 2014, Oracle and/or its affiliates. - Copyright (c) 2009, 2014, SkySQL Ab. +/* Copyright (c) 2005, 2017, Oracle and/or its affiliates. + Copyright (c) 2009, 2017, SkySQL 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 @@ -6561,7 +6561,8 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, lpt->alter_info= alter_info; lpt->create_info= create_info; lpt->db_options= create_info->table_options; - if (create_info->row_type == ROW_TYPE_DYNAMIC) + if (create_info->row_type != ROW_TYPE_FIXED && + create_info->row_type != ROW_TYPE_DEFAULT) lpt->db_options|= HA_OPTION_PACK_RECORD; lpt->table= table; lpt->key_info_buffer= 0; @@ -8073,6 +8074,7 @@ int create_partition_name(char *out, size_t outlen, const char *in1, } else transl_part= in2; + if (name_variant == NORMAL_PART_NAME) end= strxnmov(out, outlen-1, in1, "#P#", transl_part, NullS); else if (name_variant == TEMP_PART_NAME) @@ -8087,25 +8089,19 @@ int create_partition_name(char *out, size_t outlen, const char *in1, return 0; } - -/* - Create subpartition name - - SYNOPSIS - create_subpartition_name() - out:out The buffer for the created partition name string - must be *at least* of FN_REFLEN+1 bytes - in1 First part - in2 Second part - in3 Third part - name_variant Normal, temporary or renamed partition name - - RETURN VALUE - 0 if ok, error if name too long - - DESCRIPTION - This method is used to calculate the subpartition name, service routine to - the del_ren_cre_table method. +/** + Create subpartition name. This method is used to calculate the + subpartition name, service routine to the del_ren_cre_table method. + The output buffer size should be FN_REFLEN + 1(terminating '\0'). + + @param [out] out Created partition name string + @param in1 First part + @param in2 Second part + @param in3 Third part + @param name_variant Normal, temporary or renamed partition name + + @retval true Error. + @retval false Success. */ int create_subpartition_name(char *out, size_t outlen, @@ -8117,6 +8113,7 @@ int create_subpartition_name(char *out, size_t outlen, tablename_to_filename(in2, transl_part_name, FN_REFLEN); tablename_to_filename(in3, transl_subpart_name, FN_REFLEN); + if (name_variant == NORMAL_PART_NAME) end= strxnmov(out, outlen-1, in1, "#P#", transl_part_name, "#SP#", transl_subpart_name, NullS); diff --git a/sql/sql_partition.h b/sql/sql_partition.h index b0dede7487e..992229afb05 100644 --- a/sql/sql_partition.h +++ b/sql/sql_partition.h @@ -1,7 +1,8 @@ #ifndef SQL_PARTITION_INCLUDED #define SQL_PARTITION_INCLUDED -/* Copyright (c) 2006, 2013, Oracle and/or its affiliates. +/* Copyright (c) 2006, 2017, Oracle and/or its affiliates. + Copyright (c) 2011, 2017, 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 diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index a4e6546e38a..9478db8e6d5 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -228,7 +228,6 @@ static DYNAMIC_ARRAY plugin_array; static HASH plugin_hash[MYSQL_MAX_PLUGIN_TYPE_NUM]; static MEM_ROOT plugin_mem_root; static bool reap_needed= false; -static int plugin_array_version=0; static bool initialized= 0; ulong dlopen_count; @@ -323,7 +322,6 @@ static void unlock_variables(THD *thd, struct system_variables *vars); static void cleanup_variables(struct system_variables *vars); static void plugin_vars_free_values(sys_var *vars); static void restore_ptr_backup(uint n, st_ptr_backup *backup); -static plugin_ref intern_plugin_lock(LEX *lex, plugin_ref plugin); static void intern_plugin_unlock(LEX *lex, plugin_ref plugin); static void reap_plugins(void); @@ -951,15 +949,17 @@ SHOW_COMP_OPTION plugin_status(const char *name, size_t len, int type) If LEX is passed non-NULL, an automatic unlock of the plugin will happen in the LEX destructor. */ -static plugin_ref intern_plugin_lock(LEX *lex, plugin_ref rc) +static plugin_ref intern_plugin_lock(LEX *lex, plugin_ref rc, + uint state_mask= PLUGIN_IS_READY | + PLUGIN_IS_UNINITIALIZED | + PLUGIN_IS_DELETED) { st_plugin_int *pi= plugin_ref_to_int(rc); DBUG_ENTER("intern_plugin_lock"); mysql_mutex_assert_owner(&LOCK_plugin); - if (pi->state & (PLUGIN_IS_READY | PLUGIN_IS_UNINITIALIZED | - PLUGIN_IS_DELETED)) + if (pi->state & state_mask) { plugin_ref plugin; #ifdef DBUG_OFF @@ -1174,7 +1174,6 @@ static bool plugin_add(MEM_ROOT *tmp_root, if (!(tmp_plugin_ptr= plugin_insert_or_reuse(&tmp))) goto err; - plugin_array_version++; if (my_hash_insert(&plugin_hash[plugin->type], (uchar*)tmp_plugin_ptr)) tmp_plugin_ptr->state= PLUGIN_IS_FREED; init_alloc_root(&tmp_plugin_ptr->mem_root, 4096, 4096, MYF(0)); @@ -1274,7 +1273,6 @@ static void plugin_del(struct st_plugin_int *plugin) my_hash_delete(&plugin_hash[plugin->plugin->type], (uchar*)plugin); plugin_dl_del(plugin->plugin_dl); plugin->state= PLUGIN_IS_FREED; - plugin_array_version++; free_root(&plugin->mem_root, MYF(0)); } else @@ -1893,11 +1891,11 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list) switch ((*(p++)= *(list++))) { case '\0': list= NULL; /* terminate the loop */ -#ifndef __WIN__ /* fall through */ + case ';': +#ifndef __WIN__ case ':': /* can't use this as delimiter as it may be drive letter */ #endif - case ';': str->str[str->length]= '\0'; if (str == &name) // load all plugins in named module { @@ -2158,12 +2156,16 @@ bool mysql_install_plugin(THD *thd, const LEX_CSTRING *name, bool error; int argc=orig_argc; char **argv=orig_argv; + unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE] = + { MYSQL_AUDIT_GENERAL_CLASSMASK }; DBUG_ENTER("mysql_install_plugin"); tables.init_one_table("mysql", 5, "plugin", 6, "plugin", TL_WRITE); if (!opt_noacl && check_table_access(thd, INSERT_ACL, &tables, FALSE, 1, FALSE)) DBUG_RETURN(TRUE); + WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL) + /* need to open before acquiring LOCK_plugin or it will deadlock */ if (! (table = open_ltable(thd, &tables, TL_WRITE, MYSQL_LOCK_IGNORE_TIMEOUT))) @@ -2196,8 +2198,6 @@ bool mysql_install_plugin(THD *thd, const LEX_CSTRING *name, See also mysql_uninstall_plugin() and initialize_audit_plugin() */ - unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE] = - { MYSQL_AUDIT_GENERAL_CLASSMASK }; if (mysql_audit_general_enabled()) mysql_audit_acquire_plugins(thd, event_class_mask); @@ -2229,6 +2229,10 @@ err: if (argv) free_defaults(argv); DBUG_RETURN(error); +#ifdef WITH_WSREP +error: + DBUG_RETURN(TRUE); +#endif /* WITH_WSREP */ } @@ -2295,6 +2299,8 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name, TABLE_LIST tables; LEX_CSTRING dl= *dl_arg; bool error= false; + unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE] = + { MYSQL_AUDIT_GENERAL_CLASSMASK }; DBUG_ENTER("mysql_uninstall_plugin"); tables.init_one_table("mysql", 5, "plugin", 6, "plugin", TL_WRITE); @@ -2302,6 +2308,8 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name, if (!opt_noacl && check_table_access(thd, DELETE_ACL, &tables, FALSE, 1, FALSE)) DBUG_RETURN(TRUE); + WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL) + /* need to open before acquiring LOCK_plugin or it will deadlock */ if (! (table= open_ltable(thd, &tables, TL_WRITE, MYSQL_LOCK_IGNORE_TIMEOUT))) DBUG_RETURN(TRUE); @@ -2327,8 +2335,6 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name, See also mysql_install_plugin() and initialize_audit_plugin() */ - unsigned long event_class_mask[MYSQL_AUDIT_CLASS_MASK_SIZE] = - { MYSQL_AUDIT_GENERAL_CLASSMASK }; if (mysql_audit_general_enabled()) mysql_audit_acquire_plugins(thd, event_class_mask); @@ -2359,70 +2365,65 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name, mysql_mutex_unlock(&LOCK_plugin); DBUG_RETURN(error); +#ifdef WITH_WSREP +error: + DBUG_RETURN(TRUE); +#endif /* WITH_WSREP */ } bool plugin_foreach_with_mask(THD *thd, plugin_foreach_func *func, int type, uint state_mask, void *arg) { - uint idx, total; - struct st_plugin_int *plugin, **plugins; - int version=plugin_array_version; + uint idx, total= 0; + struct st_plugin_int *plugin; + plugin_ref *plugins; + my_bool res= FALSE; DBUG_ENTER("plugin_foreach_with_mask"); if (!initialized) DBUG_RETURN(FALSE); - state_mask= ~state_mask; // do it only once - mysql_mutex_lock(&LOCK_plugin); - total= type == MYSQL_ANY_PLUGIN ? plugin_array.elements - : plugin_hash[type].records; /* Do the alloca out here in case we do have a working alloca: - leaving the nested stack frame invalidates alloca allocation. + leaving the nested stack frame invalidates alloca allocation. */ - plugins=(struct st_plugin_int **)my_alloca(total*sizeof(plugin)); if (type == MYSQL_ANY_PLUGIN) { - for (idx= 0; idx < total; idx++) + plugins= (plugin_ref*) my_alloca(plugin_array.elements * sizeof(plugin_ref)); + for (idx= 0; idx < plugin_array.elements; idx++) { plugin= *dynamic_element(&plugin_array, idx, struct st_plugin_int **); - plugins[idx]= !(plugin->state & state_mask) ? plugin : NULL; + if ((plugins[total]= intern_plugin_lock(0, plugin_int_to_ref(plugin), + state_mask))) + total++; } } else { HASH *hash= plugin_hash + type; - for (idx= 0; idx < total; idx++) + plugins= (plugin_ref*) my_alloca(hash->records * sizeof(plugin_ref)); + for (idx= 0; idx < hash->records; idx++) { plugin= (struct st_plugin_int *) my_hash_element(hash, idx); - plugins[idx]= !(plugin->state & state_mask) ? plugin : NULL; + if ((plugins[total]= intern_plugin_lock(0, plugin_int_to_ref(plugin), + state_mask))) + total++; } } mysql_mutex_unlock(&LOCK_plugin); for (idx= 0; idx < total; idx++) { - if (unlikely(version != plugin_array_version)) - { - mysql_mutex_lock(&LOCK_plugin); - for (uint i=idx; i < total; i++) - if (plugins[i] && plugins[i]->state & state_mask) - plugins[i]=0; - mysql_mutex_unlock(&LOCK_plugin); - } - plugin= plugins[idx]; /* It will stop iterating on first engine error when "func" returns TRUE */ - if (plugin && func(thd, plugin_int_to_ref(plugin), arg)) - goto err; + if ((res= func(thd, plugins[idx], arg))) + break; } + plugin_unlock_list(0, plugins, total); my_afree(plugins); - DBUG_RETURN(FALSE); -err: - my_afree(plugins); - DBUG_RETURN(TRUE); + DBUG_RETURN(res); } @@ -3550,7 +3551,6 @@ bool sys_var_pluginvar::global_update(THD *thd, set_var *var) options->max_value= getopt_double2ulonglong((opt)->max_val); \ options->block_size= (long) (opt)->blk_sz; - void plugin_opt_set_limits(struct my_option *options, const struct st_mysql_sys_var *opt) { diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 7fc6141bcea..775717fe62b 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -725,13 +725,36 @@ void set_param_date(Item_param *param, uchar **pos, ulong len) #endif /*!EMBEDDED_LIBRARY*/ -static void set_param_str(Item_param *param, uchar **pos, ulong len) +static void set_param_str_or_null(Item_param *param, uchar **pos, ulong len, + bool empty_string_is_null) { ulong length= get_param_length(pos, len); - if (length > len) - length= len; - param->set_str((const char *)*pos, length); - *pos+= length; + if (length == 0 && empty_string_is_null) + param->set_null(); + else + { + if (length > len) + length= len; + param->set_str((const char *) *pos, length); + *pos+= length; + } +} + + +static void set_param_str(Item_param *param, uchar **pos, ulong len) +{ + set_param_str_or_null(param, pos, len, false); +} + + +/* + set_param_str_empty_is_null : bind empty string as null value + when sql_mode=MODE_EMPTY_STRING_IS_NULL +*/ +static void set_param_str_empty_is_null(Item_param *param, uchar **pos, + ulong len) +{ + set_param_str_or_null(param, pos, len, true); } @@ -806,7 +829,10 @@ static void setup_one_conversion_function(THD *thd, Item_param *param, param->value.cs_info.final_character_set_of_str_value= String::needs_conversion(0, fromcs, tocs, &dummy_offset) ? tocs : fromcs; - param->set_param_func= set_param_str; + + param->set_param_func= + (thd->variables.sql_mode & MODE_EMPTY_STRING_IS_NULL) ? + set_param_str_empty_is_null : set_param_str; /* Exact value of max_length is not known unless data is converted to charset of connection, so we have to set it later. @@ -1365,7 +1391,8 @@ static bool mysql_test_insert(Prepared_statement *stmt, my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), counter); goto error; } - if (setup_fields(thd, Ref_ptr_array(), *values, MARK_COLUMNS_NONE, 0, 0)) + if (setup_fields(thd, Ref_ptr_array(), + *values, MARK_COLUMNS_NONE, 0, NULL, 0)) goto error; } } @@ -1459,7 +1486,7 @@ static int mysql_test_update(Prepared_statement *stmt, #endif thd->lex->select_lex.no_wrap_view_item= TRUE; res= setup_fields(thd, Ref_ptr_array(), - select->item_list, MARK_COLUMNS_READ, 0, 0); + select->item_list, MARK_COLUMNS_READ, 0, NULL, 0); thd->lex->select_lex.no_wrap_view_item= FALSE; if (res) goto error; @@ -1471,7 +1498,7 @@ static int mysql_test_update(Prepared_statement *stmt, table_list->register_want_access(SELECT_ACL); #endif if (setup_fields(thd, Ref_ptr_array(), - stmt->lex->value_list, MARK_COLUMNS_NONE, 0, 0) || + stmt->lex->value_list, MARK_COLUMNS_NONE, 0, NULL, 0) || check_unique_table(thd, table_list)) goto error; /* TODO: here we should send types of placeholders to the client. */ @@ -1646,7 +1673,7 @@ static bool mysql_test_do_fields(Prepared_statement *stmt, DT_PREPARE | DT_CREATE)) DBUG_RETURN(TRUE); DBUG_RETURN(setup_fields(thd, Ref_ptr_array(), - *values, MARK_COLUMNS_NONE, 0, 0)); + *values, MARK_COLUMNS_NONE, 0, NULL, 0)); } diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 49e3d60795d..839b98dc785 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -2680,7 +2680,7 @@ static int send_events(binlog_send_info *info, IO_CACHE* log, LOG_INFO* linfo, Gtid_list_log_event glev(&info->until_binlog_state, 0); if (reset_transmit_packet(info, info->flags, &ev_offset, &info->errmsg) || - fake_gtid_list_event(info, &glev, &info->errmsg, my_b_tell(log))) + fake_gtid_list_event(info, &glev, &info->errmsg, (uint32)my_b_tell(log))) { info->error= ER_UNKNOWN_ERROR; return 1; @@ -2690,7 +2690,7 @@ static int send_events(binlog_send_info *info, IO_CACHE* log, LOG_INFO* linfo, if (info->until_gtid_state && is_until_reached(info, &ev_offset, event_type, &info->errmsg, - my_b_tell(log))) + (uint32)my_b_tell(log))) { if (info->errmsg) { @@ -2745,7 +2745,7 @@ static int send_one_binlog_file(binlog_send_info *info, if (end_pos <= 1) { /** end of file or error */ - return end_pos; + return (int)end_pos; } /** diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 394492f6a1d..53d445177f7 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -809,7 +809,7 @@ JOIN::prepare(TABLE_LIST *tables_init, thd->lex->current_select->context_analysis_place; thd->lex->current_select->context_analysis_place= SELECT_LIST; if (setup_fields(thd, ref_ptrs, fields_list, MARK_COLUMNS_READ, - &all_fields, 1)) + &all_fields, &select_lex->pre_fix, 1)) DBUG_RETURN(-1); thd->lex->current_select->context_analysis_place= save_place; @@ -6144,7 +6144,7 @@ double matching_candidates_in_table(JOIN_TAB *s, bool with_found_constraint, { TABLE *table= s->table; double sel= table->cond_selectivity; - double table_records= table->stat_records(); + double table_records= (double)table->stat_records(); dbl_records= table_records * sel; return dbl_records; } @@ -6170,7 +6170,7 @@ double matching_candidates_in_table(JOIN_TAB *s, bool with_found_constraint, if (s->table->quick_condition_rows != s->found_records) records= s->table->quick_condition_rows; - dbl_records= records; + dbl_records= (double)records; return dbl_records; } @@ -6861,7 +6861,7 @@ static void choose_initial_table_order(JOIN *join) if ((emb_subq= get_emb_subq(*tab))) break; } - uint n_subquery_tabs= tabs_end - tab; + uint n_subquery_tabs= (uint)(tabs_end - tab); if (!n_subquery_tabs) DBUG_VOID_RETURN; @@ -6889,7 +6889,7 @@ static void choose_initial_table_order(JOIN *join) last_tab_for_subq < subq_tabs_end && get_emb_subq(*last_tab_for_subq) == cur_subq_nest; last_tab_for_subq++) {} - uint n_subquery_tables= last_tab_for_subq - subq_tab; + uint n_subquery_tables= (uint)(last_tab_for_subq - subq_tab); /* Walk the original array and find where this subquery would have been @@ -6907,7 +6907,7 @@ static void choose_initial_table_order(JOIN *join) if (!need_tables) { /* Move away the top-level tables that are after top_level_tab */ - uint top_tail_len= last_top_level_tab - top_level_tab - 1; + size_t top_tail_len= last_top_level_tab - top_level_tab - 1; memmove(top_level_tab + 1 + n_subquery_tables, top_level_tab + 1, sizeof(JOIN_TAB*)*top_tail_len); last_top_level_tab += n_subquery_tables; @@ -7653,7 +7653,7 @@ double JOIN::get_examined_rows() JOIN_TAB *tab= first_breadth_first_tab(); JOIN_TAB *prev_tab= tab; - examined_rows= tab->get_examined_rows(); + examined_rows= (double)tab->get_examined_rows(); while ((tab= next_breadth_first_tab(first_breadth_first_tab(), top_join_tab_count, tab))) @@ -7951,7 +7951,7 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s, } if (keyparts > 1) { - ref_keyuse_steps[keyparts-2]= keyuse - prev_ref_keyuse; + ref_keyuse_steps[keyparts-2]= (uint16)(keyuse - prev_ref_keyuse); prev_ref_keyuse= keyuse; } } @@ -8192,9 +8192,11 @@ best_extension_by_limited_search(JOIN *join, best_access_path(join, s, remaining_tables, idx, disable_jbuf, record_count, join->positions + idx, &loose_scan_pos); - /* Compute the cost of extending the plan with 's' */ - - current_record_count= record_count * position->records_read; + /* Compute the cost of extending the plan with 's', avoid overflow */ + if (position->records_read < DBL_MAX / record_count) + current_record_count= record_count * position->records_read; + else + current_record_count= DBL_MAX; current_read_time=read_time + position->read_time + current_record_count / (double) TIME_FOR_COMPARE; @@ -9313,8 +9315,8 @@ bool JOIN::get_best_combination() j= j->bush_root_tab; } - top_join_tab_count= join_tab_ranges.head()->end - - join_tab_ranges.head()->start; + top_join_tab_count= (uint)(join_tab_ranges.head()->end - + join_tab_ranges.head()->start); update_depend_map(this); DBUG_RETURN(0); @@ -10891,7 +10893,7 @@ static uint make_join_orderinfo(JOIN *join) if (join->need_tmp) return join->table_count; tab= join->get_sort_by_join_tab(); - return tab ? tab-join->join_tab : join->table_count; + return tab ? (uint)(tab-join->join_tab) : join->table_count; } /* @@ -11908,8 +11910,8 @@ make_join_readinfo(JOIN *join, ulonglong options, uint no_jbuf_after) str.append(" final_pushdown_cond"); print_where(tab->select_cond, str.c_ptr_safe(), QT_ORDINARY);); } - uint n_top_tables= join->join_tab_ranges.head()->end - - join->join_tab_ranges.head()->start; + uint n_top_tables= (uint)(join->join_tab_ranges.head()->end - + join->join_tab_ranges.head()->start); join->join_tab[n_top_tables - 1].next_select=0; /* Set by do_select */ @@ -12133,7 +12135,7 @@ ha_rows JOIN_TAB::get_examined_rows() SQL_SELECT *sel= filesort? filesort->select : this->select; if (sel && sel->quick && use_quick != 2) - examined_rows= sel->quick->records; + examined_rows= (double)sel->quick->records; else if (type == JT_NEXT || type == JT_ALL || type == JT_HASH || type ==JT_HASH_NEXT) { @@ -12143,19 +12145,19 @@ ha_rows JOIN_TAB::get_examined_rows() @todo This estimate is wrong, a LIMIT query may examine much more rows than the LIMIT itself. */ - examined_rows= limit; + examined_rows= (double)limit; } else { if (table->is_filled_at_execution()) - examined_rows= records; + examined_rows= (double)records; else { /* handler->info(HA_STATUS_VARIABLE) has been called in make_join_statistics() */ - examined_rows= table->stat_records(); + examined_rows= (double)table->stat_records(); } } } @@ -13984,7 +13986,7 @@ static int compare_fields_by_table_order(Item *field1, tab2= tab2->bush_root_tab; } - cmp= tab1 - tab2; + cmp= (int)(tab1 - tab2); if (!cmp) { @@ -15008,10 +15010,23 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top, nested_join= table->nested_join; if (table->sj_on_expr && !in_sj) { - /* - If this is a semi-join that is not contained within another semi-join, - leave it intact (otherwise it is flattened) - */ + /* + If this is a semi-join that is not contained within another semi-join + leave it intact (otherwise it is flattened) + */ + /* + Make sure that any semi-join appear in + the join->select_lex->sj_nests list only once + */ + List_iterator_fast<TABLE_LIST> sj_it(join->select_lex->sj_nests); + TABLE_LIST *sj_nest; + while ((sj_nest= sj_it++)) + { + if (table == sj_nest) + break; + } + if (sj_nest) + continue; join->select_lex->sj_nests.push_back(table, join->thd->mem_root); /* @@ -17146,7 +17161,7 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields, share->default_values= table->record[1]+alloc_length; } copy_func[0]=0; // End marker - param->func_count= copy_func - param->items_to_copy; + param->func_count= (uint)(copy_func - param->items_to_copy); setup_tmp_table_column_bitmaps(table, bitmaps); @@ -17830,7 +17845,7 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo, Emulate behaviour by making column not-nullable when creating the table. */ - uint cols= (*recinfo-start_recinfo); + uint cols= (uint)(*recinfo-start_recinfo); start_recinfo[cols-1].null_bit= 0; } } @@ -21055,7 +21070,7 @@ static int test_if_order_by_key(JOIN *join, (1) this is an extended key (2) we've reached its end */ - key_parts= (key_part - table->key_info[idx].key_part); + key_parts= (uint)(key_part - table->key_info[idx].key_part); if (have_pk_suffix && reverse == 0 && // all were =const so far key_parts == table->key_info[idx].ext_key_parts && @@ -24696,7 +24711,7 @@ void JOIN_TAB::save_explain_data(Explain_table_access *eta, } else { - double examined_rows= get_examined_rows(); + double examined_rows= (double)get_examined_rows(); eta->rows_set= true; eta->rows= (ha_rows) examined_rows; @@ -26081,8 +26096,8 @@ static bool get_range_limit_read_cost(const JOIN_TAB *tab, Start from quick select's rows and cost. These are always cheaper than full index scan/cost. */ - double best_rows= table->quick_rows[keynr]; - double best_cost= table->quick_costs[keynr]; + double best_rows= (double)table->quick_rows[keynr]; + double best_cost= (double)table->quick_costs[keynr]; /* Check if ref(const) access was possible on this index. @@ -26116,7 +26131,7 @@ static bool get_range_limit_read_cost(const JOIN_TAB *tab, if (ref_rows > 0) { - double tmp= ref_rows; + double tmp= (double)ref_rows; /* Reuse the cost formula from best_access_path: */ set_if_smaller(tmp, (double) tab->join->thd->variables.max_seeks_for_key); if (table->covering_keys.is_set(keynr)) @@ -26127,7 +26142,7 @@ static bool get_range_limit_read_cost(const JOIN_TAB *tab, if (tmp < best_cost) { best_cost= tmp; - best_rows= ref_rows; + best_rows= (double)ref_rows; } } } @@ -26240,7 +26255,7 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table, if (join) { - uint tablenr= tab - join->join_tab; + uint tablenr= (uint)(tab - join->join_tab); read_time= join->best_positions[tablenr].read_time; for (uint i= tablenr+1; i < join->table_count; i++) fanout*= join->best_positions[i].records_read; // fanout is always >= 1 diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc index 53c9c160593..1af37fe1fad 100644 --- a/sql/sql_sequence.cc +++ b/sql/sql_sequence.cc @@ -335,7 +335,6 @@ bool sequence_insert(THD *thd, LEX *lex, TABLE_LIST *table_list) trans_commit_implicit(thd); if (!temporary_table) close_thread_tables(thd); - thd->mdl_context.release_transactional_locks(); DBUG_RETURN(error); } @@ -596,12 +595,6 @@ int sequence_definition::write(TABLE *table, bool all_fields) else table->rpl_write_set= &table->s->all_set; - /* - The following is needed to fix comparison of rows in - ha_update_first_row() for InnoDB - */ - memcpy(table->record[1],table->s->default_values, table->s->reclength); - /* Update table */ save_write_set= table->write_set; save_read_set= table->read_set; @@ -759,12 +752,12 @@ void SEQUENCE_LAST_VALUE::set_version(TABLE *table) @param in table Sequence table @param in next_val Next free value - @param in next_round Round for 'next_value' (in cace of cycles) + @param in next_round Round for 'next_value' (in case of cycles) @param in is_used 1 if next_val is already used @retval 0 ok, value adjusted - 1 value was less than current value or - error when storing value + -1 value was less than current value + 1 error when storing value @comment A new value is set only if "nextval,next_round" is less than @@ -774,10 +767,10 @@ void SEQUENCE_LAST_VALUE::set_version(TABLE *table) contain the highest used value when the slave is promoted to a master. */ -bool SEQUENCE::set_value(TABLE *table, longlong next_val, ulonglong next_round, +int SEQUENCE::set_value(TABLE *table, longlong next_val, ulonglong next_round, bool is_used) { - bool error= 1; + int error= -1; bool needs_to_be_stored= 0; longlong org_reserved_until= reserved_until; longlong org_next_free_value= next_free_value; @@ -789,13 +782,13 @@ bool SEQUENCE::set_value(TABLE *table, longlong next_val, ulonglong next_round, next_val= increment_value(next_val); if (round > next_round) - goto end; + goto end; // error = -1 if (round == next_round) { if (real_increment > 0 ? next_val < next_free_value : next_val > next_free_value) - goto end; + goto end; // error = -1 if (next_val == next_free_value) { error= 0; @@ -803,7 +796,13 @@ bool SEQUENCE::set_value(TABLE *table, longlong next_val, ulonglong next_round, } } else if (cycle == 0) - goto end; // round < next_round && no cycles + { + // round < next_round && no cycles, which is impossible + my_error(ER_SEQUENCE_RUN_OUT, MYF(0), table->s->db.str, + table->s->table_name.str); + error= 1; + goto end; + } else needs_to_be_stored= 1; @@ -820,6 +819,7 @@ bool SEQUENCE::set_value(TABLE *table, longlong next_val, ulonglong next_round, reserved_until= org_reserved_until; next_free_value= org_next_free_value; round= org_round; + error= 1; goto end; } } diff --git a/sql/sql_sequence.h b/sql/sql_sequence.h index b61e4ffe40d..2d609d8591b 100644 --- a/sql/sql_sequence.h +++ b/sql/sql_sequence.h @@ -105,8 +105,8 @@ public: all_values_used= 0; } longlong next_value(TABLE *table, bool second_round, int *error); - bool set_value(TABLE *table, longlong next_value, ulonglong round_arg, - bool is_used); + int set_value(TABLE *table, longlong next_value, ulonglong round_arg, + bool is_used); longlong increment_value(longlong value) { if (real_increment > 0) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index de928fe9e85..cd08959cc26 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -142,6 +142,12 @@ bool get_lookup_field_values(THD *, COND *, TABLE_LIST *, LOOKUP_FIELD_VALUES *) ** List all table types supported ***************************************************************************/ + +static bool is_show_command(THD *thd) +{ + return sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND; +} + static int make_version_string(char *buf, int buf_length, uint version) { return my_snprintf(buf, buf_length, "%d.%d", version>>8,version&0xff); @@ -281,7 +287,7 @@ int fill_plugins(THD *thd, TABLE_LIST *tables, COND *cond) TABLE *table= tables->table; if (plugin_foreach_with_mask(thd, show_plugins, MYSQL_ANY_PLUGIN, - ~PLUGIN_IS_FREED, table)) + ~(PLUGIN_IS_FREED | PLUGIN_IS_DYING), table)) DBUG_RETURN(1); DBUG_RETURN(0); @@ -989,13 +995,20 @@ find_files(THD *thd, Dynamic_array<LEX_CSTRING*> *files, LEX_CSTRING *db, if (tl.add_file(file->name)) goto err; } - tl.sort(); } else { if (ha_discover_table_names(thd, db, dirp, &tl, false)) goto err; } +#if 1 // TODO: MDEV-13049: #if MYSQL_VERSION_ID < 100300 + /* incomplete optimization, but a less drastic change in GA version */ + if (!thd->lex->select_lex.order_list.elements && + !thd->lex->select_lex.group_list.elements) +#else + if (is_show_command(thd)) +#endif + tl.sort(); DBUG_PRINT("info",("found: %zu files", files->elements())); my_dirend(dirp); @@ -3460,7 +3473,7 @@ static bool show_status_array(THD *thd, const char *wild, prefix_end=strnmov(name_buffer, prefix, sizeof(name_buffer)-1); if (*prefix) *prefix_end++= '_'; - len=name_buffer + sizeof(name_buffer) - prefix_end; + len=(int)(name_buffer + sizeof(name_buffer) - prefix_end); #ifdef WITH_WSREP bool is_wsrep_var= FALSE; @@ -3803,6 +3816,15 @@ bool uses_only_table_name_fields(Item *item, TABLE_LIST *table) return 0; } } + else if (item->type() == Item::ROW_ITEM) + { + Item_row *item_row= static_cast<Item_row*>(item); + for (uint i= 0; i < item_row->cols(); i++) + { + if (!uses_only_table_name_fields(item_row->element_index(i), table)) + return 0; + } + } else if (item->type() == Item::FIELD_ITEM) { Item_field *item_field= (Item_field*)item; @@ -3822,6 +3844,11 @@ bool uses_only_table_name_fields(Item *item, TABLE_LIST *table) item_field->field_name.length))) return 0; } + else if (item->type() == Item::EXPR_CACHE_ITEM) + { + Item_cache_wrapper *tmp= static_cast<Item_cache_wrapper*>(item); + return uses_only_table_name_fields(tmp->get_orig_item(), table); + } else if (item->type() == Item::REF_ITEM) return uses_only_table_name_fields(item->real_item(), table); @@ -4216,7 +4243,7 @@ make_table_name_list(THD *thd, Dynamic_array<LEX_CSTRING*> *table_names, */ if (res == FIND_FILES_DIR) { - if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) + if (is_show_command(thd)) return 1; thd->clear_error(); return 2; @@ -5435,7 +5462,7 @@ static void store_column_type(TABLE *table, Field *field, CHARSET_INFO *cs, */ tmp_buff= strchr(column_type.c_ptr_safe(), ' '); table->field[offset]->store(column_type.ptr(), - (tmp_buff ? tmp_buff - column_type.ptr() : + (tmp_buff ? (uint)(tmp_buff - column_type.ptr()) : column_type.length()), cs); is_blob= (field->type() == MYSQL_TYPE_BLOB); @@ -5757,7 +5784,8 @@ int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond) DBUG_ENTER("fill_schema_engines"); if (plugin_foreach_with_mask(thd, iter_schema_engines, MYSQL_STORAGE_ENGINE_PLUGIN, - ~PLUGIN_IS_FREED, tables->table)) + ~(PLUGIN_IS_FREED | PLUGIN_IS_DYING), + tables->table)) DBUG_RETURN(1); DBUG_RETURN(0); } @@ -6017,11 +6045,8 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, check_some_routine_access(thd, db.str, name.str, sph)) return 0; - if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC && - sph->type() == TYPE_ENUM_PROCEDURE) || - (lex->sql_command == SQLCOM_SHOW_STATUS_FUNC && - sph->type() == TYPE_ENUM_FUNCTION) || - (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) + if (!is_show_command(thd) || + sph == Sp_handler::handler(lex->sql_command)) { restore_record(table, s->default_values); if (!wild || !wild[0] || !wild_case_compare(system_charset_info, @@ -6147,6 +6172,10 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond) DBUG_RETURN(1); } + /* Disable padding temporarily so it doesn't break the query */ + ulonglong sql_mode_was = thd->variables.sql_mode; + thd->variables.sql_mode &= ~MODE_PAD_CHAR_TO_FULL_LENGTH; + if (proc_table->file->ha_index_init(0, 1)) { res= 1; @@ -6182,6 +6211,7 @@ err: (void) proc_table->file->ha_index_end(); close_system_tables(thd, &open_tables_state_backup); + thd->variables.sql_mode = sql_mode_was; DBUG_RETURN(res); } @@ -6405,7 +6435,7 @@ static int get_schema_views_record(THD *thd, TABLE_LIST *tables, table->field[5]->store(STRING_WITH_LEN("NO"), cs); } - definer_len= (strxmov(definer, tables->definer.user.str, "@", + definer_len= (uint)(strxmov(definer, tables->definer.user.str, "@", tables->definer.host.str, NullS) - definer); table->field[6]->store(definer, definer_len, cs); if (tables->view_suid) @@ -7769,7 +7799,7 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list) tmp_table_param->field_count= field_count; tmp_table_param->schema_table= 1; SELECT_LEX *select_lex= thd->lex->current_select; - bool keep_row_order= sql_command_flags[thd->lex->sql_command] & CF_STATUS_COMMAND; + bool keep_row_order= is_show_command(thd); if (!(table= create_tmp_table(thd, tmp_table_param, field_list, (ORDER*) 0, 0, 0, (select_lex->options | thd->variables.option_bits | diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index 0048e525cad..2cb47634fe4 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -849,7 +849,7 @@ public: else { stat_field->set_notnull(); - stat_field->store(table->collected_stats->cardinality); + stat_field->store(table->collected_stats->cardinality,true); } } @@ -1060,7 +1060,7 @@ public: switch (i) { case COLUMN_STAT_MIN_VALUE: if (table_field->type() == MYSQL_TYPE_BIT) - stat_field->store(table_field->collected_stats->min_value->val_int()); + stat_field->store(table_field->collected_stats->min_value->val_int(),true); else { table_field->collected_stats->min_value->val_str(&val); @@ -1069,7 +1069,7 @@ public: break; case COLUMN_STAT_MAX_VALUE: if (table_field->type() == MYSQL_TYPE_BIT) - stat_field->store(table_field->collected_stats->max_value->val_int()); + stat_field->store(table_field->collected_stats->max_value->val_int(),true); else { table_field->collected_stats->max_value->val_str(&val); @@ -1636,7 +1636,7 @@ public: of the parameters to be passed to the constructor of the Unique object. */ - Count_distinct_field(Field *field, uint max_heap_table_size) + Count_distinct_field(Field *field, size_t max_heap_table_size) { table_field= field; tree_key_length= field->pack_length(); @@ -1734,7 +1734,7 @@ class Count_distinct_field_bit: public Count_distinct_field { public: - Count_distinct_field_bit(Field *field, uint max_heap_table_size) + Count_distinct_field_bit(Field *field, size_t max_heap_table_size) { table_field= field; tree_key_length= sizeof(ulonglong); @@ -1830,7 +1830,7 @@ public: if ((calc_state= (Prefix_calc_state *) thd->alloc(sizeof(Prefix_calc_state)*key_parts))) { - uint keyno= key_info-table->key_info; + uint keyno= (uint)(key_info-table->key_info); for (i= 0, state= calc_state; i < key_parts; i++, state++) { /* @@ -2444,7 +2444,7 @@ int alloc_histograms_for_table_share(THD* thd, TABLE_SHARE *table_share, inline void Column_statistics_collected::init(THD *thd, Field *table_field) { - uint max_heap_table_size= thd->variables.max_heap_table_size; + size_t max_heap_table_size= (size_t)thd->variables.max_heap_table_size; TABLE *table= table_field->table; uint pk= table->s->primary_key; @@ -3725,14 +3725,14 @@ double get_column_avg_frequency(Field * field) */ if (!table->s->field) { - res= table->stat_records(); + res= (double)table->stat_records(); return res; } Column_statistics *col_stats= field->read_stats; if (!col_stats) - res= table->stat_records(); + res= (double)table->stat_records(); else res= col_stats->get_avg_frequency(); return res; @@ -3771,7 +3771,7 @@ double get_column_range_cardinality(Field *field, double res; TABLE *table= field->table; Column_statistics *col_stats= field->read_stats; - double tab_records= table->stat_records(); + double tab_records= (double)table->stat_records(); if (!col_stats) return tab_records; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 724389592e3..7371889cc7f 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -230,7 +230,7 @@ uint explain_filename(THD* thd, { db_name= table_name; /* calculate the length */ - db_name_len= tmp_p - db_name; + db_name_len= (int)(tmp_p - db_name); tmp_p++; table_name= tmp_p; } @@ -252,7 +252,7 @@ uint explain_filename(THD* thd, case 's': if ((tmp_p[1] == 'P' || tmp_p[1] == 'p') && tmp_p[2] == '#') { - part_name_len= tmp_p - part_name - 1; + part_name_len= (int)(tmp_p - part_name - 1); subpart_name= tmp_p + 3; tmp_p+= 3; } @@ -284,7 +284,7 @@ uint explain_filename(THD* thd, } if (part_name) { - table_name_len= part_name - table_name - 3; + table_name_len= (int)(part_name - table_name - 3); if (subpart_name) subpart_name_len= strlen(subpart_name); else @@ -357,7 +357,7 @@ uint explain_filename(THD* thd, to_p= strnmov(to_p, " */", end_p - to_p); } DBUG_PRINT("exit", ("to '%s'", to)); - DBUG_RETURN(to_p - to); + DBUG_RETURN((uint)(to_p - to)); } @@ -553,7 +553,7 @@ uint build_table_filename(char *buff, size_t bufflen, const char *db, pos= strxnmov(pos, end - pos, tbbuff, ext, NullS); DBUG_PRINT("exit", ("buff: '%s'", buff)); - DBUG_RETURN(pos - buff); + DBUG_RETURN((uint)(pos - buff)); } @@ -1990,7 +1990,7 @@ int write_bin_log(THD *thd, bool clear_error, tables List of tables to delete if_exists If 1, don't give error if one table doesn't exists drop_temporary 1 if DROP TEMPORARY - drop_seqeunce 1 if DROP SEQUENCE + drop_sequence 1 if DROP SEQUENCE NOTES Will delete all tables that can be deleted and give a compact error @@ -2038,6 +2038,25 @@ bool mysql_rm_table(THD *thd,TABLE_LIST *tables, bool if_exists, if (!thd->locked_tables_mode) { + if (drop_sequence) + { + /* We are trying to drop a sequence. + Change all temporary tables that are not sequences to + normal tables so that we can try to drop them instead. + If we don't do this, we will get an error 'not a sequence' + when trying to drop a sequence that is hidden by a temporary + table. + */ + for (table= tables; table; table= table->next_global) + { + if (table->open_type == OT_TEMPORARY_OR_BASE && + is_temporary_table(table) && !table->table->s->sequence) + { + thd->mark_tmp_table_as_free_for_reuse(table->table); + table->table= NULL; + } + } + } if (lock_table_names(thd, tables, NULL, thd->variables.lock_wait_timeout, 0)) DBUG_RETURN(true); @@ -2134,7 +2153,7 @@ static uint32 comment_length(THD *thd, uint32 comment_pos, for (query+= 3; query < query_end; query++) { if (query[-1] == '*' && query[0] == '/') - return (char*) query - *comment_start + 1; + return (uint32)((char*) query - *comment_start + 1); } return 0; } @@ -2724,7 +2743,7 @@ bool quick_rm_table(THD *thd, handlerton *base, const char *db, bool error= 0; DBUG_ENTER("quick_rm_table"); - uint path_length= table_path ? + size_t path_length= table_path ? (strxnmov(path, sizeof(path) - 1, table_path, reg_ext, NullS) - path) : build_table_filename(path, sizeof(path)-1, db, table_name, reg_ext, flags); if (mysql_file_delete(key_file_frm, path, MYF(0))) @@ -3306,7 +3325,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, { if (!(file->ha_table_flags() & HA_CAN_TABLES_WITHOUT_ROLLBACK)) { - my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0), file->engine_name()->str, + my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0), file->table_type(), "SEQUENCE"); DBUG_RETURN(TRUE); } @@ -4022,7 +4041,8 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, if (!sql_field->default_value && !sql_field->has_default_function() && (sql_field->flags & NOT_NULL_FLAG) && - !sql_field->is_timestamp_type()) + (!sql_field->is_timestamp_type() || + opt_explicit_defaults_for_timestamp)) { sql_field->flags|= NO_DEFAULT_VALUE_FLAG; sql_field->pack_flag|= FIELDFLAG_NO_DEFAULT; @@ -4031,6 +4051,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, if (thd->variables.sql_mode & MODE_NO_ZERO_DATE && !sql_field->default_value && !sql_field->vcol_info && sql_field->is_timestamp_type() && + !opt_explicit_defaults_for_timestamp && (sql_field->flags & NOT_NULL_FLAG) && (type == Field::NONE || type == Field::TIMESTAMP_UN_FIELD)) { @@ -6558,7 +6579,7 @@ static bool fill_alter_inplace_info(THD *thd, table_key; ha_alter_info->index_add_buffer [ha_alter_info->index_add_count++]= - new_key - ha_alter_info->key_info_buffer; + (uint)(new_key - ha_alter_info->key_info_buffer); /* Mark all old fields which are used in newly created index. */ DBUG_PRINT("info", ("index changed: '%s'", table_key->name.str)); } @@ -6583,7 +6604,7 @@ static bool fill_alter_inplace_info(THD *thd, /* Key not found. Add the offset of the key to the add buffer. */ ha_alter_info->index_add_buffer [ha_alter_info->index_add_count++]= - new_key - ha_alter_info->key_info_buffer; + (uint)(new_key - ha_alter_info->key_info_buffer); DBUG_PRINT("info", ("index added: '%s'", new_key->name.str)); } else @@ -6923,7 +6944,6 @@ bool alter_table_manage_keys(TABLE *table, int indexes_were_disabled, case Alter_info::LEAVE_AS_IS: if (!indexes_were_disabled) break; - /* disabled indexes */ /* fall through */ case Alter_info::DISABLE: error= table->file->ha_disable_indexes(HA_KEY_SWITCH_NONUNIQ_SAVE); diff --git a/sql/sql_test.cc b/sql/sql_test.cc index ab12278ef8c..3d43c35177d 100644 --- a/sql/sql_test.cc +++ b/sql/sql_test.cc @@ -85,8 +85,9 @@ static my_bool print_cached_tables_callback(TDC_element *element, while ((entry= it++)) { THD *in_use= entry->in_use; - printf("%-14.14s %-32s%6ld%8ld%6d %s\n", - entry->s->db.str, entry->s->table_name.str, element->version, + printf("%-14.14s %-32s%6lu%8ld%6d %s\n", + entry->s->db.str, entry->s->table_name.str, + (ulong) element->version, in_use ? (long) in_use->thread_id : (long) 0, entry->db_stat ? 1 : 0, in_use ? lock_descriptions[(int)entry->reginfo.lock_type] : @@ -106,7 +107,8 @@ static void print_cached_tables(void) tdc_iterate(0, (my_hash_walk_action) print_cached_tables_callback, NULL, true); - printf("\nCurrent refresh version: %ld\n", tdc_refresh_version()); + printf("\nCurrent refresh version: %ld\n", + (long) tdc_refresh_version()); fflush(stdout); /* purecov: end */ return; @@ -172,7 +174,7 @@ TEST_join(JOIN *join) in order not to garble the tabular output below. */ String ref_key_parts[MAX_TABLES]; - int tables_in_range= jt_range->end - jt_range->start; + int tables_in_range= (int)(jt_range->end - jt_range->start); for (i= 0; i < tables_in_range; i++) { JOIN_TAB *tab= jt_range->start + i; diff --git a/sql/sql_time.cc b/sql/sql_time.cc index a8a0ffa3cf2..309ede45ecc 100644 --- a/sql/sql_time.cc +++ b/sql/sql_time.cc @@ -274,7 +274,7 @@ to_ascii(CHARSET_INFO *cs, *dst++= static_cast<char>(wc); } *dst= '\0'; - return dst - dst0; + return (uint)(dst - dst0); } diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index dcce8ae3724..d6c722246e7 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -453,6 +453,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) my_error(ER_BINLOG_CREATE_ROUTINE_NEED_SUPER, MYF(0)); DBUG_RETURN(TRUE); } + WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL) if (!create) { @@ -616,6 +617,10 @@ end: my_ok(thd); DBUG_RETURN(result); +#ifdef WITH_WSREP + error: + DBUG_RETURN(true); +#endif /* WITH_WSREP */ } /** diff --git a/sql/sql_type.cc b/sql/sql_type.cc index 3ea364f2fba..62dcff33f1d 100644 --- a/sql/sql_type.cc +++ b/sql/sql_type.cc @@ -1625,6 +1625,17 @@ bool Type_handler_null:: return false; } +bool Type_handler_row:: + Column_definition_prepare_stage1(THD *thd, + MEM_ROOT *mem_root, + Column_definition *def, + handler *file, + ulonglong table_flags) const +{ + def->create_length_to_internal_length_null(); + return false; +} + bool Type_handler_newdecimal:: Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, @@ -2687,9 +2698,27 @@ Type_handler_string_result::Item_get_cache(THD *thd, const Item *item) const } Item_cache * -Type_handler_temporal_result::Item_get_cache(THD *thd, const Item *item) const +Type_handler_timestamp_common::Item_get_cache(THD *thd, const Item *item) const +{ + return new (thd->mem_root) Item_cache_datetime(thd); +} + +Item_cache * +Type_handler_datetime_common::Item_get_cache(THD *thd, const Item *item) const +{ + return new (thd->mem_root) Item_cache_datetime(thd); +} + +Item_cache * +Type_handler_time_common::Item_get_cache(THD *thd, const Item *item) const +{ + return new (thd->mem_root) Item_cache_time(thd); +} + +Item_cache * +Type_handler_date_common::Item_get_cache(THD *thd, const Item *item) const { - return new (thd->mem_root) Item_cache_temporal(thd, item->type_handler()); + return new (thd->mem_root) Item_cache_date(thd); } /*************************************************************************/ @@ -3531,7 +3560,7 @@ bool Type_handler_numeric:: bool Type_handler_temporal_result:: Item_func_between_fix_length_and_dec(Item_func_between *func) const { - return func->fix_length_and_dec_numeric(current_thd); + return func->fix_length_and_dec_temporal(current_thd); } bool Type_handler_string_result:: @@ -5259,7 +5288,7 @@ Item *Type_handler_time_common:: longlong value= item->val_time_packed(); if (item->null_value) return new (thd->mem_root) Item_null(thd, item->name.str); - cache= new (thd->mem_root) Item_cache_temporal(thd, this); + cache= new (thd->mem_root) Item_cache_time(thd); if (cache) cache->store_packed(value, item); return cache; @@ -5273,7 +5302,7 @@ Item *Type_handler_temporal_with_date:: longlong value= item->val_datetime_packed(); if (item->null_value) return new (thd->mem_root) Item_null(thd, item->name.str); - cache= new (thd->mem_root) Item_cache_temporal(thd, this); + cache= new (thd->mem_root) Item_cache_datetime(thd); if (cache) cache->store_packed(value, item); return cache; diff --git a/sql/sql_type.h b/sql/sql_type.h index 0354adfde1e..d94c5a87811 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -1046,18 +1046,13 @@ public: } bool Column_definition_fix_attributes(Column_definition *c) const { - DBUG_ASSERT(0); - return true; + return false; } bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, - ulonglong table_flags) const - { - DBUG_ASSERT(0); - return true; - } + ulonglong table_flags) const; bool Column_definition_redefine_stage1(Column_definition *def, const Column_definition *dup, const handler *file, @@ -1071,8 +1066,7 @@ public: handler *file, ulonglong table_flags) const { - DBUG_ASSERT(0); - return true; + return false; } Field *make_table_field(const LEX_CSTRING *name, const Record_addr &addr, @@ -1584,7 +1578,6 @@ public: Item *source_expr, Item *source_const) const; bool subquery_type_allows_materialization(const Item *inner, const Item *outer) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *func) const; bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const; bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const; @@ -2066,6 +2059,7 @@ public: } int Item_save_in_field(Item *item, Field *field, bool no_conversions) const; String *print_item_value(THD *thd, Item *item, String *str) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, @@ -2152,6 +2146,7 @@ public: bool Column_definition_fix_attributes(Column_definition *c) const; uint Item_decimal_precision(const Item *item) const; String *print_item_value(THD *thd, Item *item, String *str) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, @@ -2225,6 +2220,7 @@ public: return Item_send_datetime(item, protocol, buf); } String *print_item_value(THD *thd, Item *item, String *str) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, @@ -2304,6 +2300,7 @@ public: return Item_send_datetime(item, protocol, buf); } String *print_item_value(THD *thd, Item *item, String *str) const; + Item_cache *Item_get_cache(THD *thd, const Item *item) const; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, diff --git a/sql/sql_update.cc b/sql/sql_update.cc index d188be8bc97..96f48be5ff2 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -80,7 +80,7 @@ bool compare_record(const TABLE *table) { if (field->real_maybe_null()) { - uchar null_byte_index= field->null_ptr - table->record[0]; + uchar null_byte_index= (uchar)(field->null_ptr - table->record[0]); if (((table->record[0][null_byte_index]) & field->null_bit) != ((table->record[1][null_byte_index]) & field->null_bit)) @@ -362,7 +362,7 @@ int mysql_update(THD *thd, 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, 0)) + 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 */ @@ -1683,7 +1683,7 @@ int multi_update::prepare(List<Item> ¬_used_values, */ int error= setup_fields(thd, Ref_ptr_array(), - *values, MARK_COLUMNS_READ, 0, 0); + *values, MARK_COLUMNS_READ, 0, NULL, 0); ti.rewind(); while ((table_ref= ti++)) diff --git a/sql/sql_view.cc b/sql/sql_view.cc index fd6ecbbdec9..2d8129fd223 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -430,6 +430,8 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views, lex->link_first_table_back(view, link_to_local); view->open_type= OT_BASE_ONLY; + WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, NULL, NULL) + if (check_dependencies_in_with_clauses(lex->with_clauses_list)) { res= TRUE; @@ -707,6 +709,10 @@ err: lex->link_first_table_back(view, link_to_local); unit->cleanup(); DBUG_RETURN(res || thd->is_error()); +#ifdef WITH_WSREP + error: + DBUG_RETURN(true); +#endif /* WITH_WSREP */ } diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 277d67ca014..67b73dea506 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -392,11 +392,11 @@ LEX::create_item_for_sp_var(LEX_CSTRING *name, sp_variable *spvar, DBUG_ASSERT(spcont && spvar); /* Position and length of the SP variable name in the query. */ - pos_in_q= start_in_q - sphead->m_tmp_query; - len_in_q= end_in_q - start_in_q; + pos_in_q= (uint)(start_in_q - sphead->m_tmp_query); + len_in_q= (uint)(end_in_q - start_in_q); item= new (thd->mem_root) - Item_splocal(thd, name, spvar->offset, spvar->sql_type(), + Item_splocal(thd, name, spvar->offset, spvar->type_handler(), pos_in_q, len_in_q); #ifdef DBUG_ASSERT_EXISTS @@ -4762,17 +4762,11 @@ size_number: switch (end_ptr[0]) { case 'g': - case 'G': - text_shift_number+=10; - /* fall through */ + case 'G': text_shift_number+=30; break; case 'm': - case 'M': - text_shift_number+=10; - /* fall through */ + case 'M': text_shift_number+=20; break; case 'k': - case 'K': - text_shift_number+=10; - break; + case 'K': text_shift_number+=10; break; default: my_yyabort_error((ER_WRONG_SIZE_NUMBER, MYF(0))); } @@ -5906,7 +5900,7 @@ create_table_option: | SEQUENCE_SYM opt_equal choice { Lex->create_info.used_fields|= HA_CREATE_USED_SEQUENCE; - Lex->create_info.sequence= $3; + Lex->create_info.sequence= ($3 == HA_CHOICE_YES); } ; @@ -9877,26 +9871,22 @@ function_call_nonkeyword: } | SUBSTRING '(' expr ',' expr ',' expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5, $7); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5, $7))) MYSQL_YYABORT; } | SUBSTRING '(' expr ',' expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5))) MYSQL_YYABORT; } | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5, $7); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5, $7))) MYSQL_YYABORT; } | SUBSTRING '(' expr FROM expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5))) MYSQL_YYABORT; } | SYSDATE opt_time_precision @@ -13872,36 +13862,18 @@ text_literal: } | NCHAR_STRING { - DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); - $$= new (thd->mem_root) Item_string(thd, $1.str, $1.length, - national_charset_info, - DERIVATION_COERCIBLE, - $1.repertoire()); - if ($$ == NULL) + if (!($$= thd->make_string_literal_nchar($1))) MYSQL_YYABORT; } | UNDERSCORE_CHARSET TEXT_STRING { - $$= new (thd->mem_root) Item_string_with_introducer(thd, $2.str, - $2.length, $1); - if ($$ == NULL) + if (!($$= thd->make_string_literal_charset($2, $1))) MYSQL_YYABORT; } | text_literal TEXT_STRING_literal { - Item_string* item= (Item_string*) $1; - item->append($2.str, $2.length); - if (!(item->collation.repertoire & MY_REPERTOIRE_EXTENDED)) - { - /* - If the string has been pure ASCII so far, - check the new part. - */ - CHARSET_INFO *cs= thd->variables.collation_connection; - item->collation.repertoire|= my_string_repertoire(cs, - $2.str, - $2.length); - } + if (!($$= thd->make_string_literal_concat($1, $2))) + MYSQL_YYABORT; } ; diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index ad8b6697ce7..db45414fd28 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -5777,7 +5777,7 @@ create_table_option: | SEQUENCE_SYM opt_equal choice { Lex->create_info.used_fields|= HA_CREATE_USED_SEQUENCE; - Lex->create_info.sequence= $3; + Lex->create_info.sequence= ($3 == HA_CHOICE_YES); } ; @@ -9896,26 +9896,22 @@ function_call_nonkeyword: } | SUBSTRING '(' expr ',' expr ',' expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5, $7); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5, $7))) MYSQL_YYABORT; } | SUBSTRING '(' expr ',' expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5))) MYSQL_YYABORT; } | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5, $7); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5, $7))) MYSQL_YYABORT; } | SUBSTRING '(' expr FROM expr ')' { - $$= new (thd->mem_root) Item_func_substr(thd, $3, $5); - if ($$ == NULL) + if (!($$= Lex->make_item_func_substr(thd, $3, $5))) MYSQL_YYABORT; } | SYSDATE opt_time_precision @@ -13924,36 +13920,18 @@ text_literal: } | NCHAR_STRING { - DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); - $$= new (thd->mem_root) Item_string(thd, $1.str, $1.length, - national_charset_info, - DERIVATION_COERCIBLE, - $1.repertoire()); - if ($$ == NULL) + if (!($$= thd->make_string_literal_nchar($1))) MYSQL_YYABORT; } | UNDERSCORE_CHARSET TEXT_STRING { - $$= new (thd->mem_root) Item_string_with_introducer(thd, $2.str, - $2.length, $1); - if ($$ == NULL) + if (!($$= thd->make_string_literal_charset($2, $1))) MYSQL_YYABORT; } | text_literal TEXT_STRING_literal { - Item_string* item= (Item_string*) $1; - item->append($2.str, $2.length); - if (!(item->collation.repertoire & MY_REPERTOIRE_EXTENDED)) - { - /* - If the string has been pure ASCII so far, - check the new part. - */ - CHARSET_INFO *cs= thd->variables.collation_connection; - item->collation.repertoire|= my_string_repertoire(cs, - $2.str, - $2.length); - } + if (!($$= thd->make_string_literal_concat($1, $2))) + MYSQL_YYABORT; } ; diff --git a/sql/strfunc.cc b/sql/strfunc.cc index f4c8fcd517f..45a0f8f6558 100644 --- a/sql/strfunc.cc +++ b/sql/strfunc.cc @@ -339,7 +339,7 @@ int find_string_in_array(LEX_CSTRING * const haystack, LEX_CSTRING * const needl if (!cs->coll->strnncollsp(cs, (uchar *) pos->str, pos->length, (uchar *) needle->str, needle->length)) { - return (pos - haystack); + return (int)(pos - haystack); } return -1; } diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index fd704ca6dae..e5f9be5c769 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -1523,7 +1523,7 @@ static Sys_var_ulonglong Sys_max_heap_table_size( "max_heap_table_size", "Don't allow creation of heap tables bigger than this", SESSION_VAR(max_heap_table_size), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(16384, (ulonglong)~(intptr)0), DEFAULT(16*1024*1024), + VALID_RANGE(16384, SIZE_T_MAX), DEFAULT(16*1024*1024), BLOCK_SIZE(1024)); static ulong mdl_locks_cache_size; @@ -3138,7 +3138,7 @@ static const char *sql_mode_names[]= "STRICT_ALL_TABLES", "NO_ZERO_IN_DATE", "NO_ZERO_DATE", "ALLOW_INVALID_DATES", "ERROR_FOR_DIVISION_BY_ZERO", "TRADITIONAL", "NO_AUTO_CREATE_USER", "HIGH_NOT_PRECEDENCE", "NO_ENGINE_SUBSTITUTION", - "PAD_CHAR_TO_FULL_LENGTH", + "PAD_CHAR_TO_FULL_LENGTH", "EMPTY_STRING_IS_NULL", 0 }; diff --git a/sql/table.cc b/sql/table.cc index 70adb869e0a..6d32440bb11 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2516,7 +2516,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write, the correct null_bytes can now be set, since bitfields have been taken into account */ - share->null_bytes= (null_pos - (uchar*) null_flags + + share->null_bytes= (uint)(null_pos - (uchar*) null_flags + (null_bit_pos + 7) / 8); share->last_null_bit_pos= null_bit_pos; share->null_bytes_for_compare= null_bits_are_used ? share->null_bytes : 0; @@ -5721,7 +5721,8 @@ Item *Field_iterator_table::create_item(THD *thd) Item_field *item= new (thd->mem_root) Item_field(thd, &select->context, *ptr); DBUG_ASSERT(strlen(item->name.str) == item->name.length); if (item && thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY && - !thd->lex->in_sum_func && select->cur_pos_in_select_list != UNDEF_POS) + !thd->lex->in_sum_func && select->cur_pos_in_select_list != UNDEF_POS && + select->join) { select->join->non_agg_fields.push_back(item); item->marker= select->cur_pos_in_select_list; @@ -6002,8 +6003,8 @@ Field_iterator_table_ref::get_or_create_column_ref(THD *thd, TABLE_LIST *parent_ /* The field belongs to a merge view or information schema table. */ Field_translator *translated_field= view_field_it.field_translator(); nj_col= new Natural_join_column(translated_field, table_ref); - field_count= table_ref->field_translation_end - - table_ref->field_translation; + field_count= (uint)(table_ref->field_translation_end - + table_ref->field_translation); } else { diff --git a/sql/table.h b/sql/table.h index 5a9f3c18ab9..94a161eefba 100644 --- a/sql/table.h +++ b/sql/table.h @@ -35,6 +35,7 @@ /* Structs that defines the TABLE */ class Item; /* Needed by ORDER */ +typedef Item (*Item_ptr); class Item_subselect; class Item_field; class GRANT_TABLE; @@ -2556,7 +2557,7 @@ typedef struct st_nested_join table_map sj_depends_on; /* Outer non-trivially correlated tables */ table_map sj_corr_tables; - List<Item> sj_outer_expr_list; + List<Item_ptr> sj_outer_expr_list; /** True if this join nest node is completely covered by the query execution plan. This means two things. diff --git a/sql/unireg.cc b/sql/unireg.cc index 49724a3f47e..1ca0233552e 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -981,13 +981,18 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options, null_count+= field->length & 7; if (field->default_value && !field->default_value->flags && - !(field->flags & BLOB_FLAG)) + (!(field->flags & BLOB_FLAG) || + field->real_field_type() == MYSQL_TYPE_GEOMETRY)) { Item *expr= field->default_value->expr; + int res= !expr->fixed && // may be already fixed if ALTER TABLE expr->fix_fields(thd, &expr); if (!res) res= expr->save_in_field(regfield, 1); + if (!res && (field->flags & BLOB_FLAG)) + regfield->reset(); + /* If not ok or warning of level 'note' */ if (res != 0 && res != 3) { @@ -996,6 +1001,7 @@ static bool make_empty_rec(THD *thd, uchar *buff, uint table_options, delete regfield; //To avoid memory leak goto err; } + delete regfield; //To avoid memory leak } else if (regfield->real_type() == MYSQL_TYPE_ENUM && (field->flags & NOT_NULL_FLAG)) diff --git a/storage/connect/CMakeLists.txt b/storage/connect/CMakeLists.txt index dc1f61d0d26..2cf6c0528c0 100644 --- a/storage/connect/CMakeLists.txt +++ b/storage/connect/CMakeLists.txt @@ -38,41 +38,24 @@ user_connect.h valblk.h value.h xindex.h xobject.h xtable.h) # Definitions that are shared for all OSes # add_definitions( -DMARIADB -DFORCE_INIT_OF_VARS -Dconnect_EXPORTS) -add_definitions( -DNEW_MAR -DHUGE_SUPPORT -DGZ_SUPPORT -DPIVOT_SUPPORT ) +add_definitions( -DHUGE_SUPPORT -DGZ_SUPPORT ) # # OS specific C flags, definitions and source files. # IF(UNIX) - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") - # Bar: -Wfatal-errors removed (does not present in gcc on solaris10) - if(WITH_WARNINGS) - add_definitions(-Wall -Wextra -Wmissing-declarations) - #message(STATUS "CONNECT: GCC: All warnings enabled") - else() - add_definitions(-Wall -Wmissing-declarations) - add_definitions(-Wno-write-strings) - add_definitions(-Wno-unused-variable) - # Bar: -Wno-unused-but-set-variables commented (does not present on sol10) - # add_definitions(-Wno-unused-but-set-variable) - add_definitions(-Wno-unused-value) - add_definitions(-Wno-unused-function) - add_definitions(-Wno-parentheses) - #add_definitions(-Wno-missing-declarations) - # Bar: -Wno-int-to-pointer-cast commended (does not present in gcc on sol10) - # add_definitions(-Wno-int-to-pointer-cast) - # Bar: -Wno-narrowing commented (does not present in gcc on solaris10) - # add_definitions(-Wno-narrowing) - -# This switch is for pure C only: -# add_definitions(-Wno-implicit-function-declaration) -# These switches are for C++ only -# add_definitions(-Wno-reorder) - - #message(STATUS "CONNECT: GCC: Some warnings disabled") - endif(WITH_WARNINGS) - endif() + MY_CHECK_AND_SET_COMPILER_FLAG("-Wall -Wmissing-declarations") + if(NOT WITH_WARNINGS) + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-unused-function") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-unused-variable") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-unused-value") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-parentheses") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-strict-aliasing") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-misleading-indentation") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-format-truncation") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") + endif(NOT WITH_WARNINGS) add_definitions( -DUNIX -DLINUX -DUBUNTU ) @@ -245,7 +228,7 @@ int main() { ENDIF(CONNECT_WITH_ODBC) # -# JDBC with MongoDB Java Driver included but disabled +# JDBC with MongoDB Java Driver included but disabled if without MONGO # OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON) OPTION(CONNECT_WITH_JDBC "Compile CONNECT storage engine with JDBC support" ON) @@ -260,17 +243,16 @@ IF(CONNECT_WITH_JDBC) # SET(JDBC_LIBRARY ${JAVA_JVM_LIBRARY}) will be dynamically linked SET(CONNECT_SOURCES ${CONNECT_SOURCES} javaconn.cpp jdbconn.cpp tabjdbc.cpp + jmgfam.cpp jmgoconn.cpp mongo.cpp tabjmg.cpp jdbccat.h javaconn.h jdbconn.h tabjdbc.h + jmgfam.h jmgoconn.h mongo.h tabjmg.h JdbcInterface.java ApacheInterface.java MariadbInterface.java MysqlInterface.java OracleInterface.java PostgresqlInterface.java + Mongo2Interface.java Mongo3Interface.java JavaWrappers.jar) - add_definitions(-DJDBC_SUPPORT) + add_definitions(-DJAVA_SUPPORT) IF(CONNECT_WITH_MONGO) - SET(CONNECT_SOURCES ${CONNECT_SOURCES} - jmgfam.cpp jmgoconn.cpp mongo.cpp tabjmg.cpp - jmgfam.h jmgoconn.h mongo.h tabjmg.h - Mongo2Interface.java Mongo3Interface.java) - add_definitions(-DMONGO_SUPPORT -DMONGO_ENABLED=0) + add_definitions(-DMONGO_SUPPORT) ENDIF() ELSE() SET(JDBC_LIBRARY "") @@ -313,10 +295,7 @@ IF(CONNECT_WITH_MONGO) add_definitions(-DCMGO_SUPPORT) IF (NOT JAVA_FOUND AND JNI_FOUND) SET(CONNECT_SOURCES ${CONNECT_SOURCES} mongo.cpp mongo.h) - add_definitions(-DMONGO_SUPPORT -DMONGO_ENABLED=1) - ELSE () - remove_definitions(-DMONGO_ENABLED=0) - add_definitions(-DMONGO_ENABLED=1) + add_definitions(-DMONGO_SUPPORT) ENDIF (NOT JAVA_FOUND AND JNI_FOUND) ENDIF(libmongoc-1.0_FOUND) ENDIF(CONNECT_WITH_MONGO) diff --git a/storage/connect/cmgoconn.cpp b/storage/connect/cmgoconn.cpp index fdd59040257..44fac56137f 100644 --- a/storage/connect/cmgoconn.cpp +++ b/storage/connect/cmgoconn.cpp @@ -22,17 +22,10 @@ #include "filter.h" #include "cmgoconn.h" -bool IsNum(PSZ s); - -// Required to initialize libmongoc's internals -void mongo_init(bool init) -{ - if (init) - mongoc_init(); - else - mongoc_cleanup(); +bool CMgoConn::IsInit = false; -} // end of mongo_init +bool IsNum(PSZ s); +bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s); /* --------------------------- Class INCOL --------------------------- */ @@ -140,10 +133,35 @@ CMgoConn::CMgoConn(PGLOBAL g, PCPARM pcg) } // end of CMgoConn standard constructor /***********************************************************************/ +/* Required to initialize libmongoc's internals. */ +/***********************************************************************/ +void CMgoConn::mongo_init(bool init) +{ + if (init) + mongoc_init(); + else if (IsInit) + mongoc_cleanup(); + + IsInit = init; +} // end of mongo_init + +/***********************************************************************/ /* Connect to the MongoDB server and get the collection. */ /***********************************************************************/ bool CMgoConn::Connect(PGLOBAL g) { + if (!IsInit) +#if defined(__WIN__) + __try { + mongo_init(true); + } __except (EXCEPTION_EXECUTE_HANDLER) { + strcpy(g->Message, "Cannot load MongoDB C driver"); + return true; + } // end try/except +#else // !__WIN__ + mongo_init(true); +#endif // !__WIN__ + Uri = mongoc_uri_new(Pcg->Uristr); if (!Uri) { @@ -240,12 +258,13 @@ int CMgoConn::CollSize(PGLOBAL g) /***********************************************************************/ bool CMgoConn::MakeCursor(PGLOBAL g) { - const char *p; - bool id, b = false, all = false; - PCSZ options = Pcg->Options; - PTDB tp = Pcg->Tdbp; - PCOL cp; - PSTRG s = NULL; + const char *p; + bool id, b = false, all = false; + PCSZ options = Pcg->Options; + PTDB tp = Pcg->Tdbp; + PCOL cp; + PSTRG s = NULL; + PFIL filp = tp->GetFilter(); id = (tp->GetMode() != MODE_READ); @@ -274,10 +293,10 @@ bool CMgoConn::MakeCursor(PGLOBAL g) s = new(g) STRING(g, 1023, (PSZ)options); - if (tp->GetFilter()) { + if (filp) { s->Append(",{\"$match\":"); - if (tp->GetFilter()->MakeSelector(g, s)) { + if (MakeSelector(g, filp, s)) { strcpy(g->Message, "Failed making selector"); return true; } else @@ -330,15 +349,15 @@ bool CMgoConn::MakeCursor(PGLOBAL g) } // endif error } else { - if (Pcg->Filter || tp->GetFilter()) { + if (Pcg->Filter || filp) { if (trace) { if (Pcg->Filter) htrc("Filter: %s\n", Pcg->Filter); - if (tp->GetFilter()) { + if (filp) { char buf[512]; - tp->GetFilter()->Prints(g, buf, 511); + filp->Prints(g, buf, 511); htrc("To_Filter: %s\n", buf); } // endif To_Filter @@ -346,11 +365,11 @@ bool CMgoConn::MakeCursor(PGLOBAL g) s = new(g) STRING(g, 1023, (PSZ)Pcg->Filter); - if (tp->GetFilter()) { + if (filp) { if (Pcg->Filter) s->Append(','); - if (tp->GetFilter()->MakeSelector(g, s)) { + if (MakeSelector(g, filp, s)) { strcpy(g->Message, "Failed making selector"); return NULL; } // endif Selector diff --git a/storage/connect/cmgoconn.h b/storage/connect/cmgoconn.h index f5cefea3442..b1216ac576c 100644 --- a/storage/connect/cmgoconn.h +++ b/storage/connect/cmgoconn.h @@ -93,6 +93,7 @@ public: PSZ Mini(PGLOBAL g, PCOL colp, const bson_t *bson, bool b); void GetColumnValue(PGLOBAL g, PCOL colp); bool AddValue(PGLOBAL g, PCOL colp, bson_t *doc, char *key, bool upd); + static void mongo_init(bool init); protected: // Members @@ -112,4 +113,5 @@ protected: PINCOL Fpc; // To insert INCOL classes PFBLOCK fp; bool m_Connected; + static bool IsInit; }; // end of class CMgoConn diff --git a/storage/connect/csort.cpp b/storage/connect/csort.cpp index 13f325d8f3f..670131b8fd2 100644 --- a/storage/connect/csort.cpp +++ b/storage/connect/csort.cpp @@ -351,7 +351,7 @@ void CSORT::Qstx(int *base, int *max) zlo = zhi = cnm = 0; // Avoid warning message - lo = max - base; // Number of elements as longs + lo = (int)(max - base); // Number of elements as longs if (Dup) cnm = Cmpnum(lo); @@ -472,7 +472,7 @@ void CSORT::Qstx(int *base, int *max) i = him + 1; if (Pof) - Pof[him - Pex] = Pof[mid - Pex] = i - j; + Pof[him - Pex] = Pof[mid - Pex] = (int)(i - j); /*******************************************************************/ /* Look at sizes of the two partitions, do the smaller one first */ @@ -481,8 +481,8 @@ void CSORT::Qstx(int *base, int *max) /* But only repeat (recursively or by branching) if the partition */ /* is of at least size THRESH. */ /*******************************************************************/ - lo = j - base; - hi = max - i; + lo = (int)(j - base); + hi = (int)(max - i); if (Dup) { // Update progress information zlo = Cmpnum(lo); @@ -726,7 +726,7 @@ void CSORT::Qstc(int *base, int *max) zlo = zhi = cnm = 0; // Avoid warning message - lo = max - base; // Number of elements as longs + lo = (int)(max - base); // Number of elements as longs if (Dup) cnm = Cmpnum(lo); @@ -853,7 +853,7 @@ void CSORT::Qstc(int *base, int *max) /* the offset array values indicating break point and block size. */ /*******************************************************************/ if (Pof) - Pof[lt - Pex] = Pof[(jj - 1) - Pex] = jj - lt; + Pof[lt - Pex] = Pof[(jj - 1) - Pex] = (int)(jj - lt); /*******************************************************************/ /* Look at sizes of the two partitions, do the smaller one first */ @@ -862,8 +862,8 @@ void CSORT::Qstc(int *base, int *max) /* But only repeat (recursively or by branching) if the partition */ /* is of at least size THRESH. */ /*******************************************************************/ - lo = lt - base; - hi = gt - Swix; + lo = (int)(lt - base); + hi = (int)(gt - Swix); if (Dup) { // Update progress information zlo = Cmpnum(lo); diff --git a/storage/connect/domdoc.cpp b/storage/connect/domdoc.cpp index e24e10835c1..ba8eb829abd 100644 --- a/storage/connect/domdoc.cpp +++ b/storage/connect/domdoc.cpp @@ -13,6 +13,7 @@ #elif defined(MSX4) #import "msxml4.dll" //Causes error C2872: DOMNodeType: ambiguous symbol ?? #elif defined(MSX6) +#pragma warning(suppress : 4192) #import "msxml6.dll" //Causes error C2872: DOMNodeType: ambiguous symbol ?? #else // MSX4 #error MSX? is not defined @@ -540,7 +541,7 @@ PXNODE DOMNODE::AddChildNode(PGLOBAL g, PCSZ name, PXNODE np) // If name has the format m[n] only m is taken as node name if ((p = strchr(name, '['))) - pn = BufAlloc(g, name, p - name); + pn = BufAlloc(g, name, (int)(p - name)); else pn = name; diff --git a/storage/connect/filamap.cpp b/storage/connect/filamap.cpp index 84dff422db7..67481136d81 100644 --- a/storage/connect/filamap.cpp +++ b/storage/connect/filamap.cpp @@ -247,7 +247,7 @@ int MAPFAM::GetRowID(void) /***********************************************************************/ int MAPFAM::GetPos(void) { - return Fpos - Memory; + return (int)(Fpos - Memory); } // end of GetPos /***********************************************************************/ @@ -255,7 +255,7 @@ int MAPFAM::GetPos(void) /***********************************************************************/ int MAPFAM::GetNextPos(void) { - return Mempos - Memory; + return (int)(Mempos - Memory); } // end of GetNextPos /***********************************************************************/ @@ -368,7 +368,7 @@ int MAPFAM::ReadBuffer(PGLOBAL g) } // endif Mempos // Set caller line buffer - len = (Mempos - Fpos) - n; + len = (int)(Mempos - Fpos) - n; // Don't rely on ENDING setting if (len > 0 && *(Mempos - 2) == '\r') @@ -428,7 +428,7 @@ int MAPFAM::DeleteRecords(PGLOBAL g, int irc) /* not required here, just setting of future Spos and Tpos. */ /*******************************************************************/ Tpos = Spos = Fpos; - } else if ((n = Fpos - Spos) > 0) { + } else if ((n = (int)(Fpos - Spos)) > 0) { /*******************************************************************/ /* Non consecutive line to delete. Move intermediate lines. */ /*******************************************************************/ @@ -461,7 +461,7 @@ int MAPFAM::DeleteRecords(PGLOBAL g, int irc) /*****************************************************************/ /* Remove extra records. */ /*****************************************************************/ - n = Tpos - Memory; + n = (int)(Tpos - Memory); #if defined(__WIN__) DWORD drc = SetFilePointer(fp->Handle, n, NULL, FILE_BEGIN); @@ -627,7 +627,7 @@ int MBKFAM::ReadBuffer(PGLOBAL g) break; // Set caller line buffer - len = (Mempos - Fpos) - Ending; + len = (int)(Mempos - Fpos) - Ending; memcpy(Tdbp->GetLine(), Fpos, len); Tdbp->GetLine()[len] = '\0'; return RC_OK; diff --git a/storage/connect/filamgz.cpp b/storage/connect/filamgz.cpp index df366ef15f9..3078935e8a4 100644 --- a/storage/connect/filamgz.cpp +++ b/storage/connect/filamgz.cpp @@ -537,7 +537,7 @@ int ZBKFAM::ReadBuffer(PGLOBAL g) while (*NxtLine++ != '\n') ; // Set caller line buffer - n = NxtLine - CurLine - Ending; + n = (int)(NxtLine - CurLine - Ending); memcpy(Tdbp->GetLine(), CurLine, n); Tdbp->GetLine()[n] = '\0'; return RC_OK; @@ -588,7 +588,7 @@ int ZBKFAM::ReadBuffer(PGLOBAL g) for (NxtLine = CurLine; *NxtLine++ != '\n';) ; // Set caller line buffer - n = NxtLine - CurLine - Ending; + n = (int)(NxtLine - CurLine - Ending); memcpy(Tdbp->GetLine(), CurLine, n); Tdbp->GetLine()[n] = '\0'; Rbuf = (CurBlk == Block - 1) ? Last : Nrec; @@ -1087,7 +1087,7 @@ bool ZLBFAM::SetPos(PGLOBAL g, int pos __attribute__((unused))) /***********************************************************************/ int ZLBFAM::ReadBuffer(PGLOBAL g) { - int n; + size_t n; void *rdbuf; /*********************************************************************/ @@ -1299,7 +1299,7 @@ int ZLBFAM::WriteBuffer(PGLOBAL g) else NxtLine = CurLine + Lrecl; - BlkLen = NxtLine - To_Buf; + BlkLen = (int)(NxtLine - To_Buf); if (WriteCompressedBuffer(g)) { Closing = TRUE; // To tell CloseDB about a Write error diff --git a/storage/connect/filamtxt.cpp b/storage/connect/filamtxt.cpp index c456ee9e9b7..0f5069bae33 100644 --- a/storage/connect/filamtxt.cpp +++ b/storage/connect/filamtxt.cpp @@ -1351,7 +1351,7 @@ int BLKFAM::GetPos(void) /***********************************************************************/ int BLKFAM::GetNextPos(void) { - return Fpos + NxtLine - CurLine; + return (int)(Fpos + NxtLine - CurLine); } // end of GetNextPos /***********************************************************************/ @@ -1396,7 +1396,8 @@ int BLKFAM::SkipRecord(PGLOBAL, bool header) /***********************************************************************/ int BLKFAM::ReadBuffer(PGLOBAL g) { - int i, n, rc = RC_OK; + int i, rc = RC_OK; + size_t n; /*********************************************************************/ /* Sequential reading when Placed is not true. */ @@ -1458,7 +1459,7 @@ int BLKFAM::ReadBuffer(PGLOBAL g) // Read the entire next block n = fread(To_Buf, 1, (size_t)BlkLen, Stream); - if (n == BlkLen) { + if ((size_t) n == (size_t) BlkLen) { // ReadBlks++; num_read++; Rbuf = (CurBlk == Block - 1) ? Last : Nrec; @@ -1497,7 +1498,7 @@ int BLKFAM::ReadBuffer(PGLOBAL g) fin: // Store the current record file position for Delete and Update - Fpos = BlkPos[CurBlk] + CurLine - To_Buf; + Fpos = (int)(BlkPos[CurBlk] + CurLine - To_Buf); return rc; } // end of ReadBuffer @@ -1524,7 +1525,7 @@ int BLKFAM::WriteBuffer(PGLOBAL g) // Now start the writing process. NxtLine = CurLine + strlen(CurLine); - BlkLen = NxtLine - To_Buf; + BlkLen = (int)(NxtLine - To_Buf); if (fwrite(To_Buf, 1, BlkLen, Stream) != (size_t)BlkLen) { sprintf(g->Message, MSG(FWRITE_ERROR), strerror(errno)); diff --git a/storage/connect/filamzip.cpp b/storage/connect/filamzip.cpp index dfd9343af76..f94362a3d87 100644 --- a/storage/connect/filamzip.cpp +++ b/storage/connect/filamzip.cpp @@ -748,7 +748,7 @@ UNZFAM::UNZFAM(PUNZFAM txfp) : MAPFAM(txfp) /***********************************************************************/ int UNZFAM::GetFileLength(PGLOBAL g) { - int len = (zutp && zutp->entryopen) ? Top - Memory + int len = (zutp && zutp->entryopen) ? (int)(Top - Memory) : TXTFAM::GetFileLength(g) * 3; if (trace) @@ -1088,7 +1088,7 @@ int ZIPFAM::WriteBuffer(PGLOBAL g) // Prepare to write the new line strcat(strcpy(To_Buf, Tdbp->GetLine()), (Bin) ? CrLf : "\n"); - len = strchr(To_Buf, '\n') - To_Buf + 1; + len = (int)(strchr(To_Buf, '\n') - To_Buf + 1); return zutp->writeEntry(g, To_Buf, len); } // end of WriteBuffer diff --git a/storage/connect/filter.cpp b/storage/connect/filter.cpp index bb3be629ea4..76380f12ad6 100644 --- a/storage/connect/filter.cpp +++ b/storage/connect/filter.cpp @@ -10,7 +10,7 @@ /* Include relevant MariaDB header file. */ /***********************************************************************/ #include "my_global.h" -#include "sql_class.h" +//#include "sql_class.h" //#include "sql_time.h" #if defined(__WIN__) @@ -35,9 +35,6 @@ #include "array.h" #include "filter.h" #include "xindex.h" -#if defined(MONGO_SUPPORT) || defined(JDBC_SUPPORT) -#include "tabext.h" -#endif // MONGO_SUPPORT || JDBC_SUPPORT /***********************************************************************/ /* Utility routines. */ @@ -1406,86 +1403,6 @@ PFIL FILTER::Copy(PTABS t) } // end of Copy #endif // 0 -#if defined(MONGO_SUPPORT) -/***********************************************************************/ -/* Make selector json representation for Mongo tables. */ -/***********************************************************************/ -bool FILTER::MakeSelector(PGLOBAL g, PSTRG s) -{ - s->Append('{'); - - if (Opc == OP_AND || Opc == OP_OR) { - if (GetArgType(0) != TYPE_FILTER || GetArgType(1) != TYPE_FILTER) - return true; - - s->Append("\"$"); - s->Append(Opc == OP_AND ? "and" : "or"); - s->Append("\":["); - - if (((PFIL)Arg(0))->MakeSelector(g, s)) - return true; - - s->Append(','); - - if (((PFIL)Arg(1))->MakeSelector(g, s)) - return true; - - s->Append(']'); - } else { - if (GetArgType(0) != TYPE_COLBLK) - return true; - - s->Append('"'); - s->Append(((PCOL)Arg(0))->GetJpath(g, false)); - s->Append("\":{\"$"); - - switch (Opc) { - case OP_EQ: - s->Append("eq"); - break; - case OP_NE: - s->Append("ne"); - break; - case OP_GT: - s->Append("gt"); - break; - case OP_GE: - s->Append("gte"); - break; - case OP_LT: - s->Append("lt"); - break; - case OP_LE: - s->Append("lte"); - break; - case OP_NULL: - case OP_LIKE: - case OP_EXIST: - default: - return true; - } // endswitch Opc - - s->Append("\":"); - - if (GetArgType(1) == TYPE_COLBLK) { - s->Append("\"$"); - s->Append(((PEXTCOL)Arg(1))->GetJpath(g, false)); - s->Append('"'); - } else { - char buf[501]; - - Arg(1)->Prints(g, buf, 500); - s->Append(buf); - } // endif Type - - s->Append('}'); - } // endif Opc - - s->Append('}'); - return false; -} // end of MakeSelector -#endif // MONGO_SUPPORT - /*********************************************************************/ /* Make file output of FILTER contents. */ /*********************************************************************/ diff --git a/storage/connect/filter.h b/storage/connect/filter.h index 11b77aec132..c6ab8fddd35 100644 --- a/storage/connect/filter.h +++ b/storage/connect/filter.h @@ -61,9 +61,6 @@ class DllExport FILTER : public XOBJECT { /* Filter description block */ //virtual PXOB CheckSubQuery(PGLOBAL, PSQL); //virtual bool CheckLocal(PTDB); //virtual int CheckSpcCol(PTDB tdbp, int n); -#if defined(MONGO_SUPPORT) - bool MakeSelector(PGLOBAL g, PSTRG s); -#endif // MONGO_SUPPORT virtual void Printf(PGLOBAL g, FILE *f, uint n); virtual void Prints(PGLOBAL g, char *ps, uint z); // PFIL Linearize(bool nosep); diff --git a/storage/connect/fmdlex.c b/storage/connect/fmdlex.c index ef4f7bfc65a..729b1b883c1 100644 --- a/storage/connect/fmdlex.c +++ b/storage/connect/fmdlex.c @@ -283,7 +283,7 @@ static void yy_fatal_error YY_PROTO(( const char msg[] )); */ #define YY_DO_BEFORE_ACTION \ yytext_ptr = yy_bp; \ - yyleng = yy_cp - yy_bp; \ + yyleng = (int)(yy_cp - yy_bp); \ yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; @@ -417,10 +417,10 @@ static PDTP pp; static void MakeParm(int n); static void MakeMMDD(int n); static void MakeAMPM(int n); -static void MakeIn(char *); -static void MakeOut(char *); -static void Quotin(char *); -static void Quotout(char *); +static void MakeIn(const char *); +static void MakeOut(const char *); +static void Quotin(const char *); +static void Quotout(const char *); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -695,7 +695,7 @@ case YY_STATE_EOF(dqt): case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1; + int yy_amount_of_matched_text = (int)(yy_cp - yytext_ptr - 1); /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yy_hold_char; @@ -862,7 +862,7 @@ static int yy_get_next_buffer() /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = yy_c_buf_p - yytext_ptr; + number_to_move = (int)(yy_c_buf_p - yytext_ptr); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -888,7 +888,7 @@ static int yy_get_next_buffer() /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = yy_current_buffer; - int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf; + int yy_c_buf_p_offset = (int)(yy_c_buf_p - b->yy_ch_buf); b->yy_buf_size *= 2; b->yy_ch_buf = (char *) @@ -1492,7 +1492,7 @@ void MakeAMPM(int n) } /* end of MakeAMPM */ -void MakeIn(char *text) +void MakeIn(const char *text) { if (!pp->InFmt) return; @@ -1500,14 +1500,14 @@ void MakeIn(char *text) strncat(pp->InFmt, text, (pp->Outsize - 1) - strlen(pp->InFmt)); } /* end of MakeIn */ -void MakeOut(char *text) +void MakeOut(const char *text) { if (!pp->OutFmt) return; strncat(pp->OutFmt, text, (pp->Outsize - 1) - strlen(pp->OutFmt)); } /* end of MakeOut */ -void Quotin(char *text) +void Quotin(const char *text) { if (!pp->InFmt) return; @@ -1516,7 +1516,7 @@ void Quotin(char *text) pp->InFmt[strlen(pp->InFmt)-1] = '\0'; } /* end of Quotin */ -void Quotout(char *text) +void Quotout(const char *text) { if (!pp->OutFmt) return; diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index 39506eae533..51fcf87470c 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -130,10 +130,13 @@ #if defined(ODBC_SUPPORT) #include "odbccat.h" #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) #include "tabjdbc.h" #include "jdbconn.h" -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT +#if defined(CMGO_SUPPORT) +#include "cmgoconn.h" +#endif // CMGO_SUPPORT #include "tabmysql.h" #include "filamdbf.h" #include "tabxcl.h" @@ -172,18 +175,18 @@ #define JSONMAX 10 // JSON Default max grp size extern "C" { - char version[]= "Version 1.06.0004 September 03, 2017"; + char version[]= "Version 1.06.0005 October 14, 2017"; #if defined(__WIN__) - char compver[]= "Version 1.06.0004 " __DATE__ " " __TIME__; + char compver[]= "Version 1.06.0005 " __DATE__ " " __TIME__; char slash= '\\'; #else // !__WIN__ char slash= '/'; #endif // !__WIN__ } // extern "C" -#if defined(NEW_MAR) +#if MYSQL_VERSION_ID > 100200 #define stored_in_db stored_in_db() -#endif // NEW_MAR) +#endif // MYSQL_VERSION_ID #if defined(XMAP) my_bool xmap= false; @@ -197,10 +200,10 @@ extern "C" { } // extern "C" #endif // XMSG -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) char *JvmPath; char *ClassPath; -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT pthread_mutex_t parmut; pthread_mutex_t usrmut; @@ -213,9 +216,9 @@ PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info); PQRYRES VirColumns(PGLOBAL g, bool info); PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info); PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info); -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ url, PTOS topt, bool info); -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v); void PushWarning(PGLOBAL g, THD *thd, int level); bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db, @@ -223,7 +226,7 @@ bool CheckSelf(PGLOBAL g, TABLE_SHARE *s, PCSZ host, PCSZ db, bool ZipLoadFile(PGLOBAL, PCSZ, PCSZ, PCSZ, bool, bool); bool ExactInfo(void); #if defined(CMGO_SUPPORT) -void mongo_init(bool); +//void mongo_init(bool); #endif // CMGO_SUPPORT USETEMP UseTemp(void); int GetConvSize(void); @@ -235,6 +238,8 @@ uint GetWorkSize(void); void SetWorkSize(uint); extern "C" const char *msglang(void); +static char *strz(PGLOBAL g, LEX_STRING &ls); + static void PopUser(PCONNECT xp); static PCONNECT GetUser(THD *thd, PCONNECT xp); static PGLOBAL GetPlug(THD *thd, PCONNECT& lxp); @@ -351,21 +356,21 @@ static MYSQL_THDVAR_UINT(json_grp_size, "max number of rows for JSON aggregate functions.", NULL, NULL, JSONMAX, 1, INT_MAX, 1); -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) // Default java wrapper to use with JDBC tables static MYSQL_THDVAR_STR(java_wrapper, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, "Java wrapper class name", // check_java_wrapper, update_java_wrapper, NULL, NULL, "wrappers/JdbcInterface"); -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT -#if defined(MONGO_SUPPORT) +#if 0 // This is apparently not acceptable for a plugin // Enabling MONGO table type static MYSQL_THDVAR_BOOL(enable_mongo, PLUGIN_VAR_RQCMDARG, "Enabling the MongoDB access", NULL, NULL, MONGO_ENABLED); -#endif // MONGO_SUPPORT +#endif // 0 #if defined(XMSG) || defined(NEWMSG) const char *language_names[]= @@ -422,14 +427,14 @@ extern "C" const char *msglang(void) } // end of msglang #else // !XMSG && !NEWMSG -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) char *GetJavaWrapper(void) {return connect_hton ? THDVAR(current_thd, java_wrapper) : (char*)"wrappers/JdbcInterface";} -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT -#if defined(MONGO_SUPPORT) -bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); } -#endif // MONGO_SUPPORT +#if defined(JAVA_SUPPORT) +//bool MongoEnabled(void) { return THDVAR(current_thd, enable_mongo); } +#endif // JAVA_SUPPORT extern "C" const char *msglang(void) { @@ -706,7 +711,7 @@ static int connect_init_func(void *p) XmlInitParserLib(); #endif // LIBXML2_SUPPORT -#if defined(CMGO_SUPPORT) +#if 0 //defined(CMGO_SUPPORT) mongo_init(true); #endif // CMGO_SUPPORT @@ -727,9 +732,9 @@ static int connect_init_func(void *p) DTVAL::SetTimeShift(); // Initialize time zone shift once for all BINCOL::SetEndian(); // Initialize host endian setting -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) JAVAConn::SetJVM(); -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT DBUG_RETURN(0); } // end of connect_init_func @@ -749,12 +754,12 @@ static int connect_done_func(void *) #endif // LIBXML2_SUPPORT #if defined(CMGO_SUPPORT) - mongo_init(false); + CMgoConn::mongo_init(false); #endif // CMGO_SUPPORT -#ifdef JDBC_SUPPORT +#ifdef JAVA_SUPPORT JAVAConn::ResetJVM(); -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #if !defined(__WIN__) PROFILE_End(); @@ -1759,7 +1764,7 @@ bool ha_connect::IsPartitioned(void) } // end of IsPartitioned -const char *ha_connect::GetDBName(const char* name) +PCSZ ha_connect::GetDBName(PCSZ name) { return (name) ? name : table->s->db.str; } // end of GetDBName @@ -1822,7 +1827,7 @@ void ha_connect::AddColName(char *cp, Field *fp) /***********************************************************************/ /* This function sets the current database path. */ /***********************************************************************/ -bool ha_connect::SetDataPath(PGLOBAL g, const char *path) +bool ha_connect::SetDataPath(PGLOBAL g, PCSZ path) { return (!(datapath= SetPath(g, path))); } // end of SetDataPath @@ -2518,7 +2523,7 @@ const char *ha_connect::GetValStr(OPVAL vop, bool neg) val= (neg) ? " IS NOT NULL" : " IS NULL"; break; case OP_LIKE: - val= " LIKE "; + val= (neg) ? " NOT LIKE " : " LIKE "; break; case OP_XX: val= (neg) ? " NOT BETWEEN " : " BETWEEN "; @@ -2887,7 +2892,10 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond) case Item_func::LE_FUNC: vop= OP_LE; break; case Item_func::GE_FUNC: vop= OP_GE; break; case Item_func::GT_FUNC: vop= OP_GT; break; - case Item_func::LIKE_FUNC: vop= OP_LIKE; break; + case Item_func::LIKE_FUNC: + vop= OP_LIKE; + neg = ((Item_func_opt_neg *)condf)->negated; + break; case Item_func::ISNOTNULL_FUNC: neg = true; // fall through @@ -4418,8 +4426,8 @@ bool ha_connect::IsSameIndex(PIXDEF xp1, PIXDEF xp2) return b; } // end of IsSameIndex -MODE ha_connect::CheckMode(PGLOBAL g, THD *thd, - MODE newmode, bool *chk, bool *cras) +MODE ha_connect::CheckMode(PGLOBAL g, THD *thd, + MODE newmode, bool *chk, bool *cras) { #if defined(DEVELOPMENT) if (true) { @@ -5387,13 +5395,11 @@ static int connect_assisted_discovery(handlerton *, THD* thd, bool cnc= false; int cto= -1, qto= -1; #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) || defined(MONGO_SUPPORT) -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) PJPARM sjp= NULL; -#endif // JDBC_SUPPORT PCSZ driver= NULL; char *url= NULL; -#endif // JDBC_SUPPORT || MONGO_SUPPORT +#endif // JAVA_SUPPORT uint tm, fnc= FNC_NO, supfnc= (FNC_NO | FNC_COL); bool bif, ok= false, dbf= false; TABTYPE ttp= TAB_UNDEF; @@ -5454,9 +5460,9 @@ static int connect_assisted_discovery(handlerton *, THD* thd, if ((ucnc= GetListOption(g, "UseDSN", topt->oplist))) cnc= (!*ucnc || *ucnc == 'y' || *ucnc == 'Y' || atoi(ucnc) != 0); #endif -#if defined(JDBC_SUPPORT) || defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) driver= GetListOption(g, "Driver", topt->oplist, NULL); -#endif // JDBC_SUPPORT || MONGO_SUPPORT +#endif // JAVA_SUPPORT #if defined(PROMPT_OK) cop= atoi(GetListOption(g, "checkdsn", topt->oplist, "0")); #endif // PROMPT_OK @@ -5543,7 +5549,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, supfnc |= (FNC_TABLE | FNC_DSN | FNC_DRIVER); break; #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) case TAB_JDBC: if (fnc & FNC_DRIVER) { ok = true; @@ -5577,7 +5583,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, supfnc |= (FNC_DRIVER | FNC_TABLE); break; -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT case TAB_DBF: dbf = true; // fall through @@ -5634,10 +5640,8 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ok = true; break; #endif // __WIN__ -#if defined(PIVOT_SUPPORT) case TAB_PIVOT: supfnc = FNC_NO; -#endif // PIVOT_SUPPORT case TAB_PRX: case TAB_TBL: case TAB_XCL: @@ -5668,14 +5672,14 @@ static int connect_assisted_discovery(handlerton *, THD* thd, ok = true; break; -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) case TAB_MONGO: if (!topt->tabname) topt->tabname = tab; ok = true; break; -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT case TAB_VIR: ok = true; break; @@ -5748,7 +5752,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, break; #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) case TAB_JDBC: switch (fnc) { case FNC_NO: @@ -5777,7 +5781,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, } // endswitch info break; -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT case TAB_MYSQL: qrp = MyColumns(g, thd, host, db, user, pwd, tab, NULL, port, fnc == FNC_COL); @@ -5807,25 +5811,21 @@ static int connect_assisted_discovery(handlerton *, THD* thd, } // endif OcrColumns break; -#if defined(PIVOT_SUPPORT) case TAB_PIVOT: qrp = PivotColumns(g, tab, src, pic, fcl, skc, host, db, user, pwd, port); break; -#endif // PIVOT_SUPPORT case TAB_VIR: qrp = VirColumns(g, fnc == FNC_COL); break; case TAB_JSON: qrp = JSONColumns(g, db, dsn, topt, fnc == FNC_COL); break; -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) case TAB_MONGO: - if (!(url = strz(g, create_info->connect_string)) || !*url) - url = "mongodb://localhost:27017"; - + url = strz(g, create_info->connect_string); qrp = MGOColumns(g, db, url, topt, fnc == FNC_COL); break; -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT #if defined(LIBXML2_SUPPORT) || defined(DOMDOC_SUPPORT) case TAB_XML: qrp = XMLColumns(g, (char*)db, tab, topt, fnc == FNC_COL); @@ -5950,7 +5950,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, break; case FLD_SCHEM: -#if defined(ODBC_SUPPORT) || defined(JDBC_SUPPORT) +#if defined(ODBC_SUPPORT) || defined(JAVA_SUPPORT) if ((ttp == TAB_ODBC || ttp == TAB_JDBC) && crp->Kdata) { if (schem && stricmp(schem, crp->Kdata->GetCharValue(i))) { sprintf(g->Message, @@ -5961,7 +5961,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, schem = crp->Kdata->GetCharValue(i); } // endif ttp -#endif // ODBC_SUPPORT || JDBC_SUPPORT +#endif // ODBC_SUPPORT || JAVA_SUPPORT default: break; // Ignore } // endswitch Fld @@ -6009,7 +6009,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd, } else #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) if (ttp == TAB_JDBC) { int plgtyp; @@ -7152,7 +7152,7 @@ static MYSQL_SYSVAR_STR(errmsg_dir_path, msg_path, "../../../../storage/connect/"); // for testing #endif // XMSG -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) static MYSQL_SYSVAR_STR(jvm_path, JvmPath, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, "Path to the directory where is the JVM lib", @@ -7164,7 +7164,7 @@ static MYSQL_SYSVAR_STR(class_path, ClassPath, "Java class path", // check_class_path, update_class_path, NULL, NULL, NULL); -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT static struct st_mysql_sys_var* connect_system_variables[]= { @@ -7185,14 +7185,14 @@ static struct st_mysql_sys_var* connect_system_variables[]= { #endif // XMSG MYSQL_SYSVAR(json_null), MYSQL_SYSVAR(json_grp_size), -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) MYSQL_SYSVAR(jvm_path), MYSQL_SYSVAR(class_path), MYSQL_SYSVAR(java_wrapper), -#endif // JDBC_SUPPORT -#if defined(MONGO_SUPPORT) - MYSQL_SYSVAR(enable_mongo), -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT +#if defined(JAVA_SUPPORT) +//MYSQL_SYSVAR(enable_mongo), +#endif // JAVA_SUPPORT NULL }; @@ -7209,7 +7209,7 @@ maria_declare_plugin(connect) 0x0106, /* version number (1.05) */ NULL, /* status variables */ connect_system_variables, /* system variables */ - "1.06.0004", /* string version */ + "1.06.0005", /* string version */ MariaDB_PLUGIN_MATURITY_STABLE /* maturity */ } maria_declare_plugin_end; diff --git a/storage/connect/ha_connect.h b/storage/connect/ha_connect.h index c3d458094a2..f0fa9b70513 100644 --- a/storage/connect/ha_connect.h +++ b/storage/connect/ha_connect.h @@ -32,8 +32,6 @@ /****************************************************************************/ #include "mycat.h" -static char *strz(PGLOBAL g, LEX_STRING &ls); - /****************************************************************************/ /* Structures used to pass info between CONNECT and ha_connect. */ /****************************************************************************/ @@ -213,7 +211,7 @@ public: bool IsIndexed(Field *fp); bool MakeKeyWhere(PGLOBAL g, PSTRG qry, OPVAL op, char q, const key_range *kr); - inline char *Strz(LEX_STRING &ls); +//inline char *Strz(LEX_STRING &ls); key_range start_key; @@ -231,7 +229,7 @@ public: /** @brief The file extensions. */ - const char **bas_ext() const; +//const char **bas_ext() const; /** Check if a storage engine supports a particular alter table in-place diff --git a/storage/connect/javaconn.cpp b/storage/connect/javaconn.cpp index 3ba99ed89f8..90f834ef9a7 100644 --- a/storage/connect/javaconn.cpp +++ b/storage/connect/javaconn.cpp @@ -17,7 +17,7 @@ /* Include relevant MariaDB header file. */ /***********************************************************************/ #include <my_global.h> -#include <m_string.h> +//#include <m_string.h> #if defined(__WIN__) #include <direct.h> // for getcwd #if defined(__BORLANDC__) @@ -57,6 +57,7 @@ extern "C" HINSTANCE s_hModule; // Saved module handle extern char *JvmPath; // The connect_jvm_path global variable value extern char *ClassPath; // The connect_class_path global variable value +char *GetPluginDir(void); char *GetJavaWrapper(void); // The connect_java_wrapper variable value /***********************************************************************/ @@ -453,7 +454,7 @@ bool JAVAConn::Open(PGLOBAL g) vm_args.options = options; vm_args.ignoreUnrecognized = false; // invalid options make the JVM init fail - //=============== load and initialize Java VM and JNI interface ============= + //=============== load and initialize Java VM and JNI interface ============= rc = CreateJavaVM(&jvm, (void**)&env, &vm_args); // YES !! delete options; // we then no longer need the initialisation options. diff --git a/storage/connect/javaconn.h b/storage/connect/javaconn.h index 5d82570365b..54b7c4e92b7 100644 --- a/storage/connect/javaconn.h +++ b/storage/connect/javaconn.h @@ -54,12 +54,12 @@ typedef jint(JNICALL *GETJVM) (JavaVM **, jsize, jsize *); typedef jint(JNICALL *GETDEF) (void *); #endif // _DEBUG -class JAVAConn; +//class JAVAConn; /***********************************************************************/ /* JAVAConn class. */ /***********************************************************************/ -class JAVAConn : public BLOCK { +class DllExport JAVAConn : public BLOCK { friend class TDBJMG; friend class JMGDISC; private: diff --git a/storage/connect/jdbccat.h b/storage/connect/jdbccat.h index 1210aff77d8..d137164b53a 100644 --- a/storage/connect/jdbccat.h +++ b/storage/connect/jdbccat.h @@ -6,7 +6,7 @@ #define DEFAULT_QUERY_TIMEOUT -1 // means do not set typedef struct jdbc_parms { - int CheckSize(int rows); + int CheckSize(int rows); PCSZ Driver; // JDBC driver PCSZ Url; // Driver URL PCSZ User; // User connect info diff --git a/storage/connect/jdbconn.cpp b/storage/connect/jdbconn.cpp index 9746a66e6c8..01c19f5b19f 100644 --- a/storage/connect/jdbconn.cpp +++ b/storage/connect/jdbconn.cpp @@ -654,7 +654,7 @@ bool JDBConn::Connect(PJPARM sop) if (gmID(g, typid, "ColumnType", "(ILjava/lang/String;)I")) return true; else - m_Opened = true; + m_Connected = true; return false; } // end of Connect diff --git a/storage/connect/jmgoconn.cpp b/storage/connect/jmgoconn.cpp index 97e09b55669..6b70696be74 100644 --- a/storage/connect/jmgoconn.cpp +++ b/storage/connect/jmgoconn.cpp @@ -25,6 +25,7 @@ #define nullptr 0 bool IsNum(PSZ s); +bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s); /* --------------------------- Class JNCOL --------------------------- */ @@ -123,12 +124,13 @@ void JMgoConn::AddJars(PSTRG jpop, char sep) #if defined(DEVELOPMENT) if (m_Version == 2) { jpop->Append(sep); - jpop->Append("C:/Eclipse/workspace/MongoWrap2/bin"); +// jpop->Append("C:/Eclipse/workspace/MongoWrap2/bin"); jpop->Append(sep); jpop->Append("C:/mongo-java-driver/mongo-java-driver-2.13.3.jar"); } else { jpop->Append(sep); - jpop->Append("C:/Eclipse/workspace/MongoWrap3/bin"); +// jpop->Append("C:/Eclipse/workspace/MongoWrap3/bin"); +// jpop->Append("C:/Program Files/MariaDB 10.1/lib/plugin/JavaWrappers.jar"); jpop->Append(sep); jpop->Append("C:/mongo-java-driver/mongo-java-driver-3.4.2.jar"); } // endif m_Version @@ -238,6 +240,7 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, PSZ jp; PCSZ op = NULL, sf = NULL, Options = options; PSTRG s = NULL; + PFIL filp = tdbp->GetFilter(); if (Options && !stricmp(Options, "all")) { Options = NULL; @@ -264,10 +267,10 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, s = new(g) STRING(g, 1023, (PSZ)Options); - if (tdbp->GetFilter()) { + if (filp) { s->Append(",{\"$match\":"); - if (tdbp->GetFilter()->MakeSelector(g, s)) { + if (MakeSelector(g, filp, s)) { strcpy(g->Message, "Failed making selector"); return NULL; } else @@ -314,15 +317,15 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, return AggregateCollection(p); } else { - if (filter || tdbp->GetFilter()) { + if (filter || filp) { if (trace) { if (filter) htrc("Filter: %s\n", filter); - if (tdbp->GetFilter()) { + if (filp) { char buf[512]; - tdbp->GetFilter()->Prints(g, buf, 511); + filp->Prints(g, buf, 511); htrc("To_Filter: %s\n", buf); } // endif To_Filter @@ -331,11 +334,11 @@ bool JMgoConn::MakeCursor(PGLOBAL g, PTDB tdbp, PCSZ options, s = new(g) STRING(g, 1023, (PSZ)filter); len = s->GetLength(); - if (tdbp->GetFilter()) { + if (filp) { if (filter) s->Append(','); - if (tdbp->GetFilter()->MakeSelector(g, s)) { + if (MakeSelector(g, filp, s)) { strcpy(g->Message, "Failed making selector"); return NULL; } // endif Selector diff --git a/storage/connect/json.h b/storage/connect/json.h index fd6c029df99..addbd13676f 100644 --- a/storage/connect/json.h +++ b/storage/connect/json.h @@ -43,7 +43,6 @@ typedef struct { int len; } STRG, *PSG; -bool IsNum(PSZ s); char *NextChr(PSZ s, char sep); char *GetJsonNull(void); @@ -57,8 +56,8 @@ PSZ Serialize(PGLOBAL g, PJSON jsp, char *fn, int pretty); bool SerializeArray(JOUT *js, PJAR jarp, bool b); bool SerializeObject(JOUT *js, PJOB jobp); bool SerializeValue(JOUT *js, PJVAL jvp); -bool IsNum(PSZ s); char *NextChr(PSZ s, char sep); +DllExport bool IsNum(PSZ s); /***********************************************************************/ /* Class JOUT. Used by Serialize. */ diff --git a/storage/connect/jsonudf.cpp b/storage/connect/jsonudf.cpp index 2733479a4e6..a79fd0a7124 100644 --- a/storage/connect/jsonudf.cpp +++ b/storage/connect/jsonudf.cpp @@ -499,28 +499,23 @@ PVAL JSNX::ExpandArray(PGLOBAL g, PJAR arp, int n) /*********************************************************************************/ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) { -//int i, ars, nv = 0, nextsame = Tjp->NextSame; - int i, nv = 0, nextsame = 0; - my_bool err; + int i, ars = arp->size(), nv = 0; + bool err; OPVAL op = Nodes[n].Op; PVAL val[2], vp = Nodes[n].Valp; PJVAL jvrp, jvp; JVALUE jval; vp->Reset(); -//ars = arp->size(); if (trace) - htrc("CalculateArray size=%d\n", arp->size()); -// htrc("CalculateArray size=%d\n", ars); + htrc("CalculateArray size=%d op=%d\n", ars, op); - for (i = 0; i < arp->size(); i++) { -//for (i = 0; i < ars; i++) { because compiler bug + for (i = 0; i < ars; i++) { jvrp = arp->GetValue(i); if (trace) - htrc("Value %s null=%d nv=%d\n", - jvrp->GetString(g), jvrp->IsNull() ? 1 : 0, nv); + htrc("i=%d nv=%d\n", i, nv); if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) { if (jvrp->IsNull()) { @@ -532,6 +527,10 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) } else jvp = jvrp; + if (trace) + htrc("jvp=%s null=%d\n", + jvp->GetString(g), jvp->IsNull() ? 1 : 0); + if (!nv++) { SetJsonValue(g, vp, jvp, n); continue; @@ -564,6 +563,13 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) if (err) vp->Reset(); + if (trace) { + char buf(32); + + htrc("vp='%s' err=%d\n", + vp->GetCharString(&buf), err ? 1 : 0); + } // endif trace + } // endif Zero } // endif jvrp @@ -581,7 +587,6 @@ PVAL JSNX::CalculateArray(PGLOBAL g, PJAR arp, int n) } // endif Op -//Tjp->NextSame = nextsame; return vp; } // end of CalculateArray @@ -1512,7 +1517,7 @@ static my_bool CheckMemory(PGLOBAL g, UDF_INIT *initid, UDF_ARGS *args, uint n, if (!(g->Sarea = PlugAllocMem(g, ml))) { char errmsg[MAX_STR]; - sprintf(errmsg, MSG(WORK_AREA), g->Message); + snprintf(errmsg, sizeof(errmsg)-1, MSG(WORK_AREA), g->Message); strcpy(g->Message, errmsg); g->Sarea_Size = 0; return true; diff --git a/storage/connect/macutil.cpp b/storage/connect/macutil.cpp index b9600bdac2e..f95f3adcc6e 100644 --- a/storage/connect/macutil.cpp +++ b/storage/connect/macutil.cpp @@ -230,13 +230,13 @@ bool MACINFO::GetOneInfo(PGLOBAL g, int flag, void *v, int lv) case 11: // Description if ((p = strstr(Curp->Description, " - Packet Scheduler Miniport"))) { strncpy(buf, Curp->Description, p - Curp->Description); - i = p - Curp->Description; + i = (int)(p - Curp->Description); strncpy(buf, Curp->Description, i); buf[i] = 0; p = buf; } else if ((p = strstr(Curp->Description, " - Miniport d'ordonnancement de paquets"))) { - i = p - Curp->Description; + i = (int)(p - Curp->Description); strncpy(buf, Curp->Description, i); buf[i] = 0; p = buf; diff --git a/storage/connect/mongo.cpp b/storage/connect/mongo.cpp index 12f2f428112..088dc2d29d1 100644 --- a/storage/connect/mongo.cpp +++ b/storage/connect/mongo.cpp @@ -18,12 +18,13 @@ #include "plgdbsem.h" #include "xtable.h" #include "tabext.h" +#include "filter.h" #if defined(CMGO_SUPPORT) #include "tabcmg.h" -#endif // MONGO_SUPPORT -#if defined(JDBC_SUPPORT) +#endif // CMGO_SUPPORT +#if defined(JAVA_SUPPORT) #include "tabjmg.h" -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #include "resource.h" /***********************************************************************/ @@ -32,9 +33,90 @@ #define MAXCOL 200 /* Default max column nb in result */ #define TYPE_UNKNOWN 12 /* Must be greater than other types */ +bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s); bool IsNum(PSZ s); /***********************************************************************/ +/* Make selector json representation for Mongo tables. */ +/***********************************************************************/ +bool MakeSelector(PGLOBAL g, PFIL fp, PSTRG s) +{ + OPVAL opc = fp->GetOpc(); + + s->Append('{'); + + if (opc == OP_AND || opc == OP_OR) { + if (fp->GetArgType(0) != TYPE_FILTER || fp->GetArgType(1) != TYPE_FILTER) + return true; + + s->Append("\"$"); + s->Append(opc == OP_AND ? "and" : "or"); + s->Append("\":["); + + if (MakeSelector(g, (PFIL)fp->Arg(0), s)) + return true; + + s->Append(','); + + if (MakeSelector(g, (PFIL)fp->Arg(1), s)) + return true; + + s->Append(']'); + } else { + if (fp->GetArgType(0) != TYPE_COLBLK) + return true; + + s->Append('"'); + s->Append(((PCOL)fp->Arg(0))->GetJpath(g, false)); + s->Append("\":{\"$"); + + switch (opc) { + case OP_EQ: + s->Append("eq"); + break; + case OP_NE: + s->Append("ne"); + break; + case OP_GT: + s->Append("gt"); + break; + case OP_GE: + s->Append("gte"); + break; + case OP_LT: + s->Append("lt"); + break; + case OP_LE: + s->Append("lte"); + break; + case OP_NULL: + case OP_LIKE: + case OP_EXIST: + default: + return true; + } // endswitch Opc + + s->Append("\":"); + + if (fp->GetArgType(1) == TYPE_COLBLK) { + s->Append("\"$"); + s->Append(((PEXTCOL)fp->Arg(1))->GetJpath(g, false)); + s->Append('"'); + } else { + char buf[501]; + + fp->Arg(1)->Prints(g, buf, 500); + s->Append(buf); + } // endif Type + + s->Append('}'); + } // endif opc + + s->Append('}'); + return false; +} // end of MakeSelector + +/***********************************************************************/ /* MGOColumns: construct the result blocks containing the description */ /* of all the columns of a document contained inside MongoDB. */ /***********************************************************************/ @@ -49,7 +131,7 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info) int i, n = 0; PCSZ drv; PBCOL bcp; - MGODISC *cmgd; + MGODISC *cmgd = NULL; PQRYRES qrp; PCOLRES crp; @@ -72,7 +154,7 @@ PQRYRES MGOColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt, bool info) goto err; #endif } else if (drv && toupper(*drv) == 'J') { -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) cmgd = new(g) JMGDISC(g, (int*)length); #else sprintf(g->Message, "Mongo %s Driver not available", "Java"); @@ -142,7 +224,7 @@ skipit: return qrp; err: - if (cmgd->tmgp) + if (cmgd && cmgd->tmgp) cmgd->tmgp->CloseDB(g); return NULL; @@ -181,7 +263,7 @@ int MGODISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt) /* Open the MongoDB collection. */ /*********************************************************************/ tdp = new(g) MGODEF; - tdp->Uri = uri; + tdp->Uri = (uri && *uri) ? uri : "mongodb://localhost:27017"; tdp->Driver = drv; tdp->Tabname = GetStringTableOption(g, topt, "Name", NULL); tdp->Tabname = GetStringTableOption(g, topt, "Tabname", tdp->Tabname); @@ -346,7 +428,7 @@ PTDB MGODEF::GetTable(PGLOBAL g, MODE m) return NULL; #endif } else if (Driver && toupper(*Driver) == 'J') { -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) if (Catfunc == FNC_COL) return new(g) TDBJGL(this); else diff --git a/storage/connect/mongo.h b/storage/connect/mongo.h index af69226ea8b..97c391a217f 100644 --- a/storage/connect/mongo.h +++ b/storage/connect/mongo.h @@ -63,7 +63,7 @@ class DllExport MGODEF : public EXTDEF { /* Table description */ friend class TDBJGL; friend class CMGFAM; friend class MGODISC; - friend PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); + friend DllExport PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); public: // Constructor MGODEF(void); diff --git a/storage/connect/mycat.cc b/storage/connect/mycat.cc index 20082dcc43e..95af2eeee92 100644 --- a/storage/connect/mycat.cc +++ b/storage/connect/mycat.cc @@ -79,22 +79,20 @@ #define NODBC #include "tabodbc.h" #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) #define NJDBC #include "tabjdbc.h" -#endif // JDBC_SUPPORT -#if defined(PIVOT_SUPPORT) +#endif // JAVA_SUPPORT #include "tabpivot.h" -#endif // PIVOT_SUPPORT #include "tabvir.h" #include "tabjson.h" #include "ha_connect.h" #if defined(XML_SUPPORT) #include "tabxml.h" #endif // XML_SUPPORT -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) #include "mongo.h" -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT #if defined(ZIP_SUPPORT) #include "tabzip.h" #endif // ZIP_SUPPORT @@ -107,9 +105,9 @@ extern "C" HINSTANCE s_hModule; // Saved module handle #endif // !__WIN__ -#if defined(MONGO_SUPPORT) -bool MongoEnabled(void); -#endif // MONGO_SUPPORT +#if defined(JAVA_SUPPORT) +//bool MongoEnabled(void); +#endif // JAVA_SUPPORT PQRYRES OEMColumns(PGLOBAL g, PTOS topt, char *tab, char *db, bool info); /***********************************************************************/ @@ -140,8 +138,9 @@ TABTYPE GetTypeID(const char *type) #if defined(ODBC_SUPPORT) : (!stricmp(type, "ODBC")) ? TAB_ODBC #endif -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) : (!stricmp(type, "JDBC")) ? TAB_JDBC + : (!stricmp(type, "MONGO")) ? TAB_MONGO #endif : (!stricmp(type, "MYSQL")) ? TAB_MYSQL : (!stricmp(type, "MYPRX")) ? TAB_MYSQL @@ -155,17 +154,12 @@ TABTYPE GetTypeID(const char *type) : (!stricmp(type, "OCCUR")) ? TAB_OCCUR : (!stricmp(type, "CATLG")) ? TAB_PRX // Legacy : (!stricmp(type, "PROXY")) ? TAB_PRX -#if defined(PIVOT_SUPPORT) : (!stricmp(type, "PIVOT")) ? TAB_PIVOT -#endif : (!stricmp(type, "VIR")) ? TAB_VIR : (!stricmp(type, "JSON")) ? TAB_JSON #if defined(ZIP_SUPPORT) : (!stricmp(type, "ZIP")) ? TAB_ZIP #endif -#if defined(MONGO_SUPPORT) - : (!stricmp(type, "MONGO")) ? TAB_MONGO -#endif : (!stricmp(type, "OEM")) ? TAB_OEM : TAB_NIY; } // end of GetTypeID @@ -538,9 +532,9 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am) #if defined(ODBC_SUPPORT) case TAB_ODBC: tdp= new(g) ODBCDEF; break; #endif // ODBC_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) case TAB_JDBC: tdp= new(g) JDBCDEF; break; -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #if defined(__WIN__) case TAB_MAC: tdp= new(g) MACDEF; break; case TAB_WMI: tdp= new(g) WMIDEF; break; @@ -551,17 +545,15 @@ PRELDEF MYCAT::MakeTableDesc(PGLOBAL g, PTABLE tablep, LPCSTR am) case TAB_PRX: tdp= new(g) PRXDEF; break; case TAB_OCCUR: tdp= new(g) OCCURDEF; break; case TAB_MYSQL: tdp= new(g) MYSQLDEF; break; -#if defined(PIVOT_SUPPORT) case TAB_PIVOT: tdp= new(g) PIVOTDEF; break; -#endif // PIVOT_SUPPORT case TAB_VIR: tdp= new(g) VIRDEF; break; case TAB_JSON: tdp= new(g) JSONDEF; break; #if defined(MONGO_SUPPORT) case TAB_MONGO: - if (MongoEnabled()) +// if (MongoEnabled()) tdp = new(g) MGODEF; - else - strcpy(g->Message, "MONGO type not enabled"); +// else +// strcpy(g->Message, "MONGO type not enabled"); break; #endif // MONGO_SUPPORT diff --git a/storage/connect/myconn.cpp b/storage/connect/myconn.cpp index 08bb24e14df..28e6f076e77 100644 --- a/storage/connect/myconn.cpp +++ b/storage/connect/myconn.cpp @@ -248,7 +248,7 @@ PQRYRES MyColumns(PGLOBAL g, THD *thd, const char *host, const char *db, while (true) { p2 = strchr(p1, '\''); - len = MY_MAX(len, p2 - p1); + len = MY_MAX(len, (int)(p2 - p1)); if (*++p2 != ',') break; p1 = p2 + 2; } // endwhile diff --git a/storage/connect/mysql-test/connect/r/json_java_2.result b/storage/connect/mysql-test/connect/r/json_java_2.result index 96c58221b24..966330248e5 100644 --- a/storage/connect/mysql-test/connect/r/json_java_2.result +++ b/storage/connect/mysql-test/connect/r/json_java_2.result @@ -1,5 +1,4 @@ SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar'; -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities' OPTION_LIST='Driver=Java,Version=2' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -382,4 +381,3 @@ planner 167 41.75 postcard 23 5.75 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/json_java_3.result b/storage/connect/mysql-test/connect/r/json_java_3.result index 09901452975..f8e9e161475 100644 --- a/storage/connect/mysql-test/connect/r/json_java_3.result +++ b/storage/connect/mysql-test/connect/r/json_java_3.result @@ -1,5 +1,4 @@ SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar'; -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -310,7 +309,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities' OPTION_LIST='Driver=Java,Version=3' CONNECTION='mongodb://localhost:27017' LRECL=4096 DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -382,4 +381,3 @@ planner 167 41.75 postcard 23 5.75 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/json_mongo_c.result b/storage/connect/mysql-test/connect/r/json_mongo_c.result index afcad8d2ea2..8adc006a51b 100644 --- a/storage/connect/mysql-test/connect/r/json_mongo_c.result +++ b/storage/connect/mysql-test/connect/r/json_mongo_c.result @@ -1,4 +1,3 @@ -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -309,7 +308,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=JSON TABNAME='cities' OPTION_LIST='Driver=C,Version=0' CONNECTION='mongodb://localhost:27017' LRECL=1024 DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -381,4 +380,3 @@ planner 167 41.75 postcard 23 5.75 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/mongo_c.result b/storage/connect/mysql-test/connect/r/mongo_c.result index f90f3a94b44..c7aadcf1165 100644 --- a/storage/connect/mysql-test/connect/r/mongo_c.result +++ b/storage/connect/mysql-test/connect/r/mongo_c.result @@ -1,4 +1,3 @@ -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -305,7 +304,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities' OPTION_LIST='Driver=C,Version=0' DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -377,4 +376,3 @@ planner 167 41.750000 postcard 23 5.750000 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/mongo_java_2.result b/storage/connect/mysql-test/connect/r/mongo_java_2.result index 02b8ae09d34..8c58a9eceea 100644 --- a/storage/connect/mysql-test/connect/r/mongo_java_2.result +++ b/storage/connect/mysql-test/connect/r/mongo_java_2.result @@ -1,5 +1,4 @@ SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo2.jar'; -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities' OPTION_LIST='Driver=Java,Version=2' DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -378,4 +377,3 @@ planner 167 41.75 postcard 23 5.75 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/mongo_java_3.result b/storage/connect/mysql-test/connect/r/mongo_java_3.result index c4387bfa5b1..1dd3048b49b 100644 --- a/storage/connect/mysql-test/connect/r/mongo_java_3.result +++ b/storage/connect/mysql-test/connect/r/mongo_java_3.result @@ -1,5 +1,4 @@ SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/Mongo3.jar'; -set connect_enable_mongo=1; # # Test the MONGO table type # @@ -306,7 +305,7 @@ loc_0 double(12,6) NOT NULL `FIELD_FORMAT`='loc.0', loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=MONGO TABNAME='cities' OPTION_LIST='Driver=Java,Version=3' DATA_CHARSET='utf8'; # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -378,4 +377,3 @@ planner 167 41.75 postcard 23 5.75 DROP TABLE t1; true -set connect_enable_mongo=0; diff --git a/storage/connect/mysql-test/connect/r/odbc_firebird.result b/storage/connect/mysql-test/connect/r/odbc_firebird.result index b0c2582abeb..3c4cd84fffc 100644 --- a/storage/connect/mysql-test/connect/r/odbc_firebird.result +++ b/storage/connect/mysql-test/connect/r/odbc_firebird.result @@ -9,29 +9,13 @@ t1 CREATE TABLE `t1` ( ) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Sources' SELECT * FROM t1; Name Description -dBASE Files Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) -PLUGDB_DEBUG PLUGODBC_Driver -PLUGDB_ODBC PLUGODBC_Driver -SafeDB_ODBC SDB_ODBC_Driver -Firebird Firebird/InterBase(r) driver -ConnectEngineXLS Microsoft Excel Driver (*.xls) Excel Files Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) -MariaODBC MySQL ODBC 5.2a Driver -MariaODBCbeta MariaDB ODBC 1.0 Driver -MyODBC MySQL ODBC 5.2a Driver MS Access Database Microsoft Access Driver (*.mdb, *.accdb) -MS Access Db1 Microsoft Access Driver (*.mdb) -MySQL-ANSI MySQL ODBC 5.3 ANSI Driver -MySQL-Unicode MySQL ODBC 5.3 Unicode Driver -Xtreme Sample Database 2008 Microsoft Access Driver (*.mdb) -PlugDB test PLUGODBC_Driver -SQLite3 Datasource SQLite3 ODBC Driver -SQLite Datasource SQLite ODBC Driver -SQLite UTF-8 Datasource SQLite ODBC (UTF-8) Driver ORACLE_TEST Oracle in XE -ConnectEnginePostgresql PostgreSQL ODBC Driver(ANSI) +SQLServer_Test SQL Server Native Client 11.0 +Firebird Firebird/InterBase(r) driver ConnectEngineOracle Oracle in XE -ConnectEngineSQLServer SQL Server +ConnectEngineSQLServer SQL Server Native Client 11.0 DROP TABLE t1; CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Drivers; SHOW CREATE TABLE t1; @@ -42,51 +26,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=CONNECT DEFAULT CHARSET=latin1 `TABLE_TYPE`='ODBC' `CATFUNC`='Drivers' SELECT * FROM t1; Description Attributes -SQL Server UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=03.50;ConnectFunctions=YYY;APILevel=2;CPTimeout=60; -Microsoft ODBC for Oracle UsageCount=1;SQLLevel=1;FileUsage=0;DriverODBCVer=02.50;ConnectFunctions=YYY;APILevel=1;CPTimeout=120; -Microsoft Access Driver (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; -Microsoft Access-Treiber (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; -Driver do Microsoft Access (*.mdb) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=2;FileExtns=*.mdb;SQLLevel=0; -Microsoft dBase Driver (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; -Microsoft dBase-Treiber (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; -Driver do Microsoft dBase (*.dbf) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.ndx,*.mdx;SQLLevel=0; -Microsoft Excel Driver (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; -Microsoft Excel-Treiber (*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; -Driver do Microsoft Excel(*.xls) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.xls;SQLLevel=0; -Microsoft Paradox Driver (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; -Microsoft Paradox-Treiber (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; -Driver do Microsoft Paradox (*.db ) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.db;SQLLevel=0; -Microsoft Text Driver (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; -Microsoft Text-Treiber (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; -Driver da Microsoft para arquivos texto (*.txt; *.csv) UsageCount=1;APILevel=1;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.,*.asc,*.csv,*.tab,*.txt,*.csv;SQLLevel=0; -Microsoft Visual FoxPro Driver UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; -Microsoft FoxPro VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; -Microsoft dBase VFP Driver (*.dbf) UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; -Microsoft Visual FoxPro-Treiber UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; -Driver para o Microsoft Visual FoxPro UsageCount=1;APILevel=0;ConnectFunctions=YYN;DriverODBCVer=02.50;FileUsage=1;FileExtns=*.dbf,*.cdx,*.idx,*.fpt;SQLLevel=0; -SQL Native Client UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=09.00;FileUsage=0;SQLLevel=1; -CR Sybase Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; -CR SQL Server Native Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; -CR SQL Server Classic Wire Protocol ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=0;SQLLevel=1;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; -CR TextFile ODBC Driver 6.0 UsageCount=1;APILevel=1;ConnectFunctions=YYY;DriverODBCVer=3.52;FileUsage=1;FileExtns=*.*;SQLLevel=0;CPTimeout=60;HelpRootDirectory=C:\Program Files\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\odbc\help; -PLUGODBC_Driver UsageCount=1; -SDB_ODBC_Driver UsageCount=2; -Microsoft Access Text Driver (*.txt, *.csv) SQLLevel=0;FileExtns=*.txt, *.csv;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; -Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) SQLLevel=0;FileExtns=*.dbf, *.ndx, *.mdx;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; -Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) SQLLevel=0;FileExtns=*.xls,*.xlsx, *.xlsb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; -Microsoft Access Driver (*.mdb, *.accdb) SQLLevel=0;FileExtns=*.mdb,*.accdb;FileUsage=2;DriverODBCVer=02.50;ConnectFunctions=YYN;APILevel=1;UsageCount=3; -SQLite3 ODBC Driver UsageCount=1; -SQLite ODBC Driver UsageCount=1; -SQLite ODBC (UTF-8) Driver UsageCount=1; +SQL Server APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.50;FileUsage=0;SQLLevel=1;UsageCount=1; Oracle in XE ConnectionFunctions=YYY;DriverODBCVer=03.51;CPTimeout=60;FileUsage=0;APILevel=1;SQLLevel=1; -Oracle in instantclient_12_1 APILevel=1;ConnectionFunctions=YYY;CPTimeout=60;DriverODBCVer=03.51;FileUsage=0;SQLLevel=1; -PostgreSQL ODBC Driver(ANSI) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1; -PostgreSQL ODBC Driver(UNICODE) APILevel=1;ConnectFunctions=YYN;DriverODBCVer=09.02.0100;FileUsage=0;SQLLevel=1; SQL Server Native Client 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1; -MariaDB ODBC 1.0 Driver UsageCount=1; +ODBC Driver 13 for SQL Server UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1; +SQL Server Native Client RDA 11.0 UsageCount=1;APILevel=2;ConnectFunctions=YYY;CPTimeout=60;DriverODBCVer=03.80;FileUsage=0;SQLLevel=1; Firebird/InterBase(r) driver UsageCount=1;FileExtns=*.fdb,*.gdb;APILevel=1;ConnectFunctions=YYY;FileUsage=0;DriverODBCVer=03.51;SQLLevel=1; -MySQL ODBC 5.3 ANSI Driver UsageCount=1; -MySQL ODBC 5.3 Unicode Driver UsageCount=1; DROP TABLE t1; CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=ODBC CATFUNC=Tables CONNECTION='Not important'; SHOW CREATE TABLE t1; @@ -154,9 +99,9 @@ EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_C 113 Mary Page 845 1993-04-12 00:00:00 671 Eng 4 USA 48000.00 Page, Mary 114 Bill Parker 247 1993-06-01 00:00:00 623 Eng 5 USA 35000.00 Parker, Bill 118 Takashi Yamamoto 23 1993-07-01 00:00:00 115 SRep 4 Japan 7480000.00 Yamamoto, Takashi -121 Roberto Ferrari 1 1993-07-12 00:00:00 125 SRep 4 Italy 99000000.00 Ferrari, Roberto +121 Roberto Ferrari 1 1993-07-12 00:00:00 125 SRep 4 Italy 33000.00 Ferrari, Roberto 127 Michael Yanowski 492 1993-08-09 00:00:00 100 SRep 4 USA 44000.00 Yanowski, Michael -134 Jacques Glon NULL 1993-08-23 00:00:00 123 SRep 4 France 390500.00 Glon, Jacques +134 Jacques Glon NULL 1993-08-23 00:00:00 123 SRep 4 France 38500.00 Glon, Jacques 136 Scott Johnson 265 1993-09-13 00:00:00 623 Doc 3 USA 60000.00 Johnson, Scott 138 T.J. Green 218 1993-11-01 00:00:00 621 Eng 4 USA 36000.00 Green, T.J. 141 Pierre Osborne NULL 1994-01-03 00:00:00 121 SRep 4 Switzerland 110000.00 Osborne, Pierre diff --git a/storage/connect/mysql-test/connect/t/mongo_test.inc b/storage/connect/mysql-test/connect/t/mongo_test.inc index c728b85fd2f..dfc223e9074 100644 --- a/storage/connect/mysql-test/connect/t/mongo_test.inc +++ b/storage/connect/mysql-test/connect/t/mongo_test.inc @@ -1,4 +1,4 @@ -set connect_enable_mongo=1; +#set connect_enable_mongo=1; --echo # --echo # Test the MONGO table type @@ -156,7 +156,7 @@ eval CREATE TABLE t1 ( loc_1 char(12) NOT NULL `FIELD_FORMAT`='loc.1', pop int(11) NOT NULL, state char(2) NOT NULL) -ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE='MONGO' TABNAME='cities' +ENGINE=CONNECT CONNECTION='mongodb://localhost:27017' TABLE_TYPE=$TYPE TABNAME='cities' OPTION_LIST='Driver=$DRV,Version=$VERS' $CONN DATA_CHARSET='utf8'; --echo # Using SQL for grouping SELECT state, sum(pop) AS totalPop FROM t1 GROUP BY state HAVING totalPop >= 10000000 ORDER BY totalPop DESC; @@ -204,4 +204,4 @@ SELECT * FROM t1; DROP TABLE t1; --exec $MONGO --eval "db.testcoll.drop()" --quiet -set connect_enable_mongo=0; +#set connect_enable_mongo=0; diff --git a/storage/connect/odbconn.cpp b/storage/connect/odbconn.cpp index 70a0a6a1450..3b0cb562672 100644 --- a/storage/connect/odbconn.cpp +++ b/storage/connect/odbconn.cpp @@ -2427,7 +2427,7 @@ int ODBConn::GetCatInfo(CATPARM *cap) else if (vlen[n] == SQL_NULL_DATA) pval[n]->SetNull(true); else if (crp->Type == TYPE_STRING/* && vlen[n] != SQL_NULL_DATA*/) - pval[n]->SetValue_char(pbuf[n], vlen[n]); + pval[n]->SetValue_char(pbuf[n], (int)vlen[n]); else pval[n]->SetNull(false); diff --git a/storage/connect/plgdbutl.cpp b/storage/connect/plgdbutl.cpp index 25da3162516..5602861df59 100644 --- a/storage/connect/plgdbutl.cpp +++ b/storage/connect/plgdbutl.cpp @@ -38,6 +38,7 @@ /* Include relevant MariaDB header file. */ /***********************************************************************/ #include "my_global.h" +#include "my_pthread.h" #if defined(__WIN__) #include <io.h> #include <fcntl.h> @@ -71,12 +72,12 @@ #ifdef ZIP_SUPPORT #include "filamzip.h" #endif // ZIP_SUPPORT -#ifdef JDBC_SUPPORT +#ifdef JAVA_SUPPORT #include "javaconn.h" -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #ifdef CMGO_SUPPORT #include "cmgoconn.h" -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT /***********************************************************************/ /* DB static variables. */ @@ -540,7 +541,7 @@ bool EvalLikePattern(LPCSTR sp, LPCSTR tp) { LPSTR p; char c; - int n; + ssize_t n; bool b, t = false; if (trace) @@ -952,20 +953,20 @@ int PlugCloseFile(PGLOBAL g, PFBLOCK fp, bool all) fp->File = NULL; break; #endif // ZIP_SUPPORT -#ifdef JDBC_SUPPORT +#ifdef JAVA_SUPPORT case TYPE_FB_JAVA: ((JAVAConn*)fp->File)->Close(); fp->Count = 0; fp->File = NULL; break; -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #ifdef CMGO_SUPPORT case TYPE_FB_MONGO: ((CMgoConn*)fp->File)->Close(); fp->Count = 0; fp->File = NULL; break; -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT default: rc = RC_FX; } // endswitch Type diff --git a/storage/connect/plugutil.cpp b/storage/connect/plugutil.cpp index dbf90fb5599..0367aacd050 100644 --- a/storage/connect/plugutil.cpp +++ b/storage/connect/plugutil.cpp @@ -162,7 +162,7 @@ PGLOBAL PlugInit(LPCSTR Language, uint worksize) /*******************************************************************/ if (worksize && !(g->Sarea = PlugAllocMem(g, worksize))) { char errmsg[MAX_STR]; - sprintf(errmsg, MSG(WORK_AREA), g->Message); + snprintf(errmsg, sizeof(errmsg) - 1, MSG(WORK_AREA), g->Message); strcpy(g->Message, errmsg); g->Sarea_Size = 0; } else diff --git a/storage/connect/rcmsg.c b/storage/connect/rcmsg.c index 75759e03314..895f8f5862b 100644 --- a/storage/connect/rcmsg.c +++ b/storage/connect/rcmsg.c @@ -27,9 +27,9 @@ char *msglang(void); -char *GetMsgid(int id) +const char *GetMsgid(int id) { - char *p = NULL; + const char *p = NULL; // This conditional until a real fix is found for MDEV-7304 #if defined(FRENCH) @@ -55,7 +55,8 @@ char *GetMsgid(int id) int GetRcString(int id, char *buf, int bufsize) { - char *p = NULL, msg[32]; + const char *p = NULL; + char msg[32]; if (!(p = GetMsgid(id))) { sprintf(msg, "ID=%d unknown", id); diff --git a/storage/connect/rcmsg.h b/storage/connect/rcmsg.h index b22e77f5175..499ca3b2dd4 100644 --- a/storage/connect/rcmsg.h +++ b/storage/connect/rcmsg.h @@ -5,7 +5,7 @@ extern "C" { #endif -char *GetMsgid(int id); +const char *GetMsgid(int id); int GetRcString(int id, char *buf, int bufsize); #ifdef __cplusplus diff --git a/storage/connect/reldef.h b/storage/connect/reldef.h index 84ae2a491f0..f8256a59b3d 100644 --- a/storage/connect/reldef.h +++ b/storage/connect/reldef.h @@ -11,7 +11,7 @@ #include "block.h" #include "catalog.h" -#include "my_sys.h" +//#include "my_sys.h" #include "mycat.h" typedef class INDEXDEF *PIXDEF; @@ -114,7 +114,7 @@ public: int Sort; /* Table already sorted ??? */ int Multiple; /* 0: No 1: DIR 2: Section 3: filelist */ int Degree; /* Number of columns in the table */ - int Pseudo; /* Bit: 1 ROWID }Ok, 2 FILEID Ok */ + int Pseudo; /* Bit: 1 ROWID }Ok, 2 FILEID Ok */ bool Read_Only; /* true for read only tables */ const CHARSET_INFO *m_data_charset; const char *csname; /* Table charset name */ diff --git a/storage/connect/tabfmt.cpp b/storage/connect/tabfmt.cpp index 516601a5eb4..f616f24d16b 100644 --- a/storage/connect/tabfmt.cpp +++ b/storage/connect/tabfmt.cpp @@ -934,7 +934,7 @@ int TDBCSV::ReadBuffer(PGLOBAL g) if (p) { //len = p++ - p2; - len = p - p2 - 1;; + len = (int)(p - p2 - 1); // if (Sep != ' ') // for (; *p == ' '; p++) ; // Skip blanks @@ -978,7 +978,7 @@ int TDBCSV::ReadBuffer(PGLOBAL g) return RC_NF; } else if ((p = strchr(p2, Sep))) - len = p - p2; + len = (int)(p - p2); else if (i == Fields - 1) len = strlen(p2); else if (Accept && Maxerr == 0) { @@ -996,7 +996,7 @@ int TDBCSV::ReadBuffer(PGLOBAL g) } else len = 0; - Offset[i] = p2 - To_Line; + Offset[i] = (int)(p2 - To_Line); if (Mode != MODE_UPDATE) Fldlen[i] = len; diff --git a/storage/connect/tabjmg.cpp b/storage/connect/tabjmg.cpp index 50efd727604..ba3e1c3e7c0 100644 --- a/storage/connect/tabjmg.cpp +++ b/storage/connect/tabjmg.cpp @@ -73,9 +73,10 @@ bool JMGDISC::ColDesc(PGLOBAL g, jobject obj, char *pcn, char *pfmt, int ncol, int k) { const char *key; - char colname[65]; - char fmt[129]; - bool rc = true; + char colname[65]; + char fmt[129]; + bool rc = true; + size_t z; jint *n = nullptr; jstring jkey; jobject jres; @@ -105,14 +106,16 @@ bool JMGDISC::ColDesc(PGLOBAL g, jobject obj, char *pcn, char *pfmt, if (pcn) { strncpy(colname, pcn, 64); colname[64] = 0; - strncat(strncat(colname, "_", 65), key, 65); + z = 65 - strlen(colname); + strncat(strncat(colname, "_", z), key, z - 1); } else strcpy(colname, key); if (pfmt) { strncpy(fmt, pfmt, 128); fmt[128] = 0; - strncat(strncat(fmt, ".", 129), key, 129); + z = 129 - strlen(fmt); + strncat(strncat(fmt, ".", z), key, z - 1); } else strcpy(fmt, key); @@ -178,7 +181,7 @@ TDBJMG::TDBJMG(PMGODEF tdp) : TDBEXT(tdp) Ops.User = NULL; Ops.Pwd = NULL; Ops.Scrollable = false; - Ops.Fsize = Ops.CheckSize(Rows); + Ops.Fsize = 0; Fpos = -1; N = 0; Done = false; diff --git a/storage/connect/tabjson.cpp b/storage/connect/tabjson.cpp index 401441520da..8778b7d4b47 100644 --- a/storage/connect/tabjson.cpp +++ b/storage/connect/tabjson.cpp @@ -31,14 +31,12 @@ #if defined(ZIP_SUPPORT) #include "filamzip.h" #endif // ZIP_SUPPORT -#if defined(MONGO_SUPPORT) -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) #include "jmgfam.h" -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #if defined(CMGO_SUPPORT) #include "cmgfam.h" #endif // CMGO_SUPPORT -#endif // MONGO_SUPPORT #include "tabmul.h" #include "checklvl.h" #include "resource.h" @@ -149,7 +147,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) tdp->Fn, tdp->Objname, tdp->Pretty, lvl); if (tdp->Uri) { -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT) tdp->Collname = GetStringTableOption(g, topt, "Name", NULL); tdp->Collname = GetStringTableOption(g, topt, "Tabname", tdp->Collname); tdp->Schema = GetStringTableOption(g, topt, "Dbname", "test"); @@ -157,10 +155,8 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) tdp->Pipe = GetBooleanTableOption(g, topt, "Pipeline", false); tdp->Driver = (PSZ)GetStringTableOption(g, topt, "Driver", NULL); tdp->Version = GetIntegerTableOption(g, topt, "Version", 3); -#if defined(JDBC_SUPPORT) tdp->Wrapname = (PSZ)GetStringTableOption(g, topt, "Wrapper", (tdp->Version == 2) ? "Mongo2Interface" : "Mongo3Interface"); -#endif // JDBC_SUPPORT tdp->Pretty = 0; #else // !MONGO_SUPPORT sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); @@ -201,7 +197,6 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) return NULL; #endif // !ZIP_SUPPORT } else if (tdp->Uri) { -#if defined(MONGO_SUPPORT) if (tdp->Driver && toupper(*tdp->Driver) == 'C') { #if defined(CMGO_SUPPORT) tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp)); @@ -210,7 +205,7 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) return NULL; #endif } else if (tdp->Driver && toupper(*tdp->Driver) == 'J') { -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp)); #else sprintf(g->Message, "Mongo %s Driver not available", "Java"); @@ -219,14 +214,14 @@ PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info) } else { // Driver not specified #if defined(CMGO_SUPPORT) tjnp = new(g) TDBJSN(tdp, new(g) CMGFAM(tdp)); -#else +#elif defined(JAVA_SUPPORT) tjnp = new(g) TDBJSN(tdp, new(g) JMGFAM(tdp)); +#else + sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); + return NULL; #endif } // endif Driver -#else - sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); - return NULL; -#endif // MONGO_SUPPORT + } else tjnp = new(g) TDBJSN(tdp, new(g) DOSFAM(tdp)); @@ -497,16 +492,12 @@ JSONDEF::JSONDEF(void) Base = 0; Strict = false; Sep = '.'; -#if defined(MONGO_SUPPORT) Uri = NULL; Collname = Options = Filter = NULL; Pipe = false; Driver = NULL; Version = 0; -#if defined(JDBC_SUPPORT) Wrapname = NULL; -#endif // JDBC_SUPPORT -#endif // MONGO_SUPPORT } // end of JSONDEF constructor /***********************************************************************/ @@ -524,7 +515,7 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) Sep = *GetStringCatInfo(g, "Separator", "."); if (Uri = GetStringCatInfo(g, "Connect", NULL)) { -#if defined(MONGO_SUPPORT) +#if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT) Collname = GetStringCatInfo(g, "Name", (Catfunc & (FNC_TABLE | FNC_COL)) ? NULL : Name); Collname = GetStringCatInfo(g, "Tabname", Collname); @@ -534,12 +525,12 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) Driver = GetStringCatInfo(g, "Driver", NULL); Version = GetIntCatInfo("Version", 3); Pretty = 0; -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) if (Version == 2) Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo2Interface"); else Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo3Interface"); -#endif // JDBC_SUPPORT +#endif // JAVA_SUPPORT #else // !MONGO_SUPPORT sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); return true; @@ -569,7 +560,6 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) (m == MODE_UPDATE || m == MODE_DELETE)); if (Uri) { -#if defined(MONGO_SUPPORT) if (Driver && toupper(*Driver) == 'C') { #if defined(CMGO_SUPPORT) txfp = new(g) CMGFAM(this); @@ -578,7 +568,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) return NULL; #endif } else if (Driver && toupper(*Driver) == 'J') { -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) txfp = new(g) JMGFAM(this); #else sprintf(g->Message, "Mongo %s Driver not available", "Java"); @@ -587,14 +577,14 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) } else { // Driver not specified #if defined(CMGO_SUPPORT) txfp = new(g) CMGFAM(this); -#else +#elif defined(JAVA_SUPPORT) txfp = new(g) JMGFAM(this); -#endif +#else // !MONGO_SUPPORT + sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); + return NULL; +#endif // !MONGO_SUPPORT } // endif Driver -#else - sprintf(g->Message, MSG(NO_FEAT_SUPPORT), "MONGO"); - return NULL; -#endif // MONGO_SUPPORT + } else if (Zipped) { #if defined(ZIP_SUPPORT) if (m == MODE_READ || m == MODE_ANY || m == MODE_ALTER) { @@ -1591,8 +1581,7 @@ PVAL JSONCOL::ExpandArray(PGLOBAL g, PJAR arp, int n) /***********************************************************************/ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) { -//int i, ars, nv = 0, nextsame = Tjp->NextSame; - int i, nv = 0, nextsame = Tjp->NextSame; + int i, ars, nv = 0, nextsame = Tjp->NextSame; bool err; OPVAL op = Nodes[n].Op; PVAL val[2], vp = Nodes[n].Valp; @@ -1600,12 +1589,18 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) JVALUE jval; vp->Reset(); -//ars = MY_MIN(Tjp->Limit, arp->size()); + ars = MY_MIN(Tjp->Limit, arp->size()); + + if (trace) + htrc("CalculateArray: size=%d op=%d nextsame=%d\n", + ars, op, nextsame); -//for (i = 0; i < ars; i++) { - for (i = 0; i < arp->size(); i++) { + for (i = 0; i < ars; i++) { jvrp = arp->GetValue(i); + if (trace) + htrc("i=%d nv=%d\n", i, nv); + if (!jvrp->IsNull() || (op == OP_CNC && GetJsonNull())) do { if (jvrp->IsNull()) { jvrp->Value = AllocateValue(g, GetJsonNull(), TYPE_STRING); @@ -1617,13 +1612,16 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) } else jvp = jvrp; - if (!nv++) { + if (trace) + htrc("jvp=%s null=%d\n", + jvp->GetString(g), jvp->IsNull() ? 1 : 0); + + if (!nv++) { SetJsonValue(g, vp, jvp, n); continue; } else SetJsonValue(g, MulVal, jvp, n); - -// if (!MulVal->IsZero()) { + if (!MulVal->IsNull()) { switch (op) { case OP_CNC: @@ -1634,7 +1632,7 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) val[0] = MulVal; err = vp->Compute(g, val, 1, op); - break; + break; // case OP_NUM: case OP_SEP: val[0] = Nodes[n].Valp; @@ -1650,7 +1648,15 @@ PVAL JSONCOL::CalculateArray(PGLOBAL g, PJAR arp, int n) if (err) vp->Reset(); - } // endif Null + if (trace) { + char buf(32); + + htrc("vp='%s' err=%d\n", + vp->GetCharString(&buf), err ? 1 : 0); + + } // endif trace + + } // endif Null } while (Tjp->NextSame > nextsame); diff --git a/storage/connect/tabjson.h b/storage/connect/tabjson.h index 00e2f4614e7..17583cba333 100644 --- a/storage/connect/tabjson.h +++ b/storage/connect/tabjson.h @@ -36,14 +36,12 @@ class DllExport JSONDEF : public DOSDEF { /* Table description */ friend class TDBJSON; friend class TDBJSN; friend class TDBJCL; -#if defined(MONGO_SUPPORT) #if defined(CMGO_SUPPORT) friend class CMGFAM; #endif // CMGO_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) friend class JMGFAM; -#endif // JDBC_SUPPORT -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT friend PQRYRES JSONColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); public: // Constructor @@ -68,17 +66,13 @@ public: bool Strict; /* Strict syntax checking */ char Sep; /* The Jpath separator */ const char *Uri; /* MongoDB connection URI */ -#if defined(MONGO_SUPPORT) PCSZ Collname; /* External collection name */ PSZ Options; /* Colist ; Pipe */ PSZ Filter; /* Filter */ PSZ Driver; /* MongoDB Driver (C or JAVA) */ bool Pipe; /* True if Colist is a pipeline */ int Version; /* Driver version */ -#if defined(JDBC_SUPPORT) PSZ Wrapname; /* MongoDB java wrapper name */ -#endif // JDBC_SUPPORT -#endif // MONGO_SUPPORT }; // end of JSONDEF /* -------------------------- TDBJSN class --------------------------- */ @@ -90,14 +84,12 @@ public: class DllExport TDBJSN : public TDBDOS { friend class JSONCOL; friend class JSONDEF; -#if defined(MONGO_SUPPORT) #if defined(CMGO_SUPPORT) friend class CMGFAM; #endif // CMGO_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) friend class JMGFAM; -#endif // JDBC_SUPPORT -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT public: // Constructor TDBJSN(PJDEF tdp, PTXF txfp); @@ -162,14 +154,12 @@ public: class DllExport JSONCOL : public DOSCOL { friend class TDBJSN; friend class TDBJSON; -#if defined(MONGO_SUPPORT) #if defined(CMGO_SUPPORT) friend class CMGFAM; #endif // CMGO_SUPPORT -#if defined(JDBC_SUPPORT) +#if defined(JAVA_SUPPORT) friend class JMGFAM; -#endif // JDBC_SUPPORT -#endif // MONGO_SUPPORT +#endif // JAVA_SUPPORT public: // Constructors JSONCOL(PGLOBAL g, PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i); diff --git a/storage/connect/tabmac.cpp b/storage/connect/tabmac.cpp index a28b5d7108c..8260ab65391 100644 --- a/storage/connect/tabmac.cpp +++ b/storage/connect/tabmac.cpp @@ -367,13 +367,13 @@ void MACCOL::ReadColumn(PGLOBAL g) case 11: // Description if ((p = strstr(adp->Description, " - Packet Scheduler Miniport"))) { strncpy(buf, adp->Description, p - adp->Description); - i = p - adp->Description; + i = (int)(p - adp->Description); strncpy(buf, adp->Description, i); buf[i] = 0; p = buf; } else if ((p = strstr(adp->Description, " - Miniport d'ordonnancement de paquets"))) { - i = p - adp->Description; + i = (int)(p - adp->Description); strncpy(buf, adp->Description, i); buf[i] = 0; p = buf; diff --git a/storage/connect/tabmul.cpp b/storage/connect/tabmul.cpp index 5c41f9094ac..0967afca6cd 100644 --- a/storage/connect/tabmul.cpp +++ b/storage/connect/tabmul.cpp @@ -203,12 +203,12 @@ bool TDBMUL::InitFileNames(PGLOBAL g) // Data files can be imported from Windows (having CRLF) if (*p == '\n' || *p == '\r') { // is this enough for Unix ??? - *p--; // Eliminate ending CR or LF character + p--; // Eliminate ending CR or LF character if (p >= filename) // is this enough for Unix ??? if (*p == '\n' || *p == '\r') - *p--; // Eliminate ending CR or LF character + p--; // Eliminate ending CR or LF character } // endif p diff --git a/storage/connect/tabtbl.cpp b/storage/connect/tabtbl.cpp index 6e4a038ec92..0c56b3e6614 100644 --- a/storage/connect/tabtbl.cpp +++ b/storage/connect/tabtbl.cpp @@ -650,7 +650,7 @@ bool TDBTBM::IsLocal(PTABLE tbp) return ((!stricmp(tdbp->Host, "localhost") || !strcmp(tdbp->Host, "127.0.0.1")) && - tdbp->Port == GetDefaultPort()); + tdbp->Port == (int)GetDefaultPort()); } // end of IsLocal /***********************************************************************/ diff --git a/storage/connect/tabutil.cpp b/storage/connect/tabutil.cpp index e17e092661f..948ea24aa6b 100644 --- a/storage/connect/tabutil.cpp +++ b/storage/connect/tabutil.cpp @@ -120,7 +120,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db, FLD_REM, FLD_NO, FLD_CHARSET}; unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32}; PCSZ fmt; - char *pn, *tn, *fld, *colname, v; //, *chset; + char *pn, *tn, *fld, *colname, v; // *chset int i, n, ncol = sizeof(buftyp) / sizeof(int); int prec, len, type, scale; int zconv = GetConvSize(); @@ -185,7 +185,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db, colname = (char *)fp->field_name.str; crp->Kdata->SetValue(colname, i); -// chset = (char *)fp->charset()->name; +// chset = (char *)fp->charset()->name; // v = (!strcmp(chset, "binary")) ? 'B' : 0; v = 0; diff --git a/storage/connect/tabxml.h b/storage/connect/tabxml.h index 813f62dde52..f55b7d98de7 100644 --- a/storage/connect/tabxml.h +++ b/storage/connect/tabxml.h @@ -53,6 +53,8 @@ class DllExport XMLDEF : public TABDEF { /* Logical table description */ }; // end of XMLDEF #if defined(INCLUDE_TDBXML) +#include "m_ctype.h" + /***********************************************************************/ /* This is the class declaration for the simple XML tables. */ /***********************************************************************/ diff --git a/storage/connect/valblk.h b/storage/connect/valblk.h index a3d7bf30fcf..ad970105868 100644 --- a/storage/connect/valblk.h +++ b/storage/connect/valblk.h @@ -40,7 +40,7 @@ class MBVALS : public BLOCK { // Methods void *GetMemp(void) {return Mblk.Memp;} PVBLK Allocate(PGLOBAL g, int type, int len, int prec, - int n, bool sub = FALSE); + int n, bool sub = false); bool ReAllocate(PGLOBAL g, int n); void Free(void); diff --git a/storage/connect/value.cpp b/storage/connect/value.cpp index a80da808548..bf56197ac56 100644 --- a/storage/connect/value.cpp +++ b/storage/connect/value.cpp @@ -1374,7 +1374,7 @@ bool TYPVAL<PSZ>::SetValue_char(const char *cp, int n) } else if (cp != Strp) { const char *p = cp + n - 1; - for (p; p >= cp; p--, n--) + for (; p >= cp; p--, n--) if (*p && *p != ' ') break; @@ -1656,39 +1656,48 @@ bool TYPVAL<PSZ>::Compute(PGLOBAL g, PVAL *vp, int np, OPVAL op) char *p[2], val[2][32]; int i; - for (i = 0; i < np; i++) - p[i] = vp[i]->IsNull() ? NULL : vp[i]->GetCharString(val[i]); + if (trace) + htrc("Compute: np=%d op=%d\n", np, op); - if (p[i-1]) { - switch (op) { - case OP_CNC: - assert(np == 1 || np == 2); + for (i = 0; i < np; i++) + if (!vp[i]->IsNull()) { + p[i] = vp[i]->GetCharString(val[i]); - if (np == 2) - SetValue_psz(p[0]); + if (trace) + htrc("p[%d]=%s\n", i, p[i]); - if ((i = Len - (signed)strlen(Strp)) > 0) - strncat(Strp, p[np - 1], i); + } else + return false; - break; - case OP_MIN: - assert(np == 2); - SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]); - break; - case OP_MAX: - assert(np == 2); - SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]); - break; - default: - // sprintf(g->Message, MSG(BAD_EXP_OPER), op); - strcpy(g->Message, "Function not supported"); - return true; - } // endswitch op + switch (op) { + case OP_CNC: + assert(np == 1 || np == 2); - Null = false; - } // endif p[i] + if (np == 2) + SetValue_psz(p[0]); - Null = false; + if ((i = Len - (signed)strlen(Strp)) > 0) + strncat(Strp, p[np - 1], i); + + if (trace) + htrc("Strp=%s\n", Strp); + + break; + case OP_MIN: + assert(np == 2); + SetValue_psz((strcmp(p[0], p[1]) < 0) ? p[0] : p[1]); + break; + case OP_MAX: + assert(np == 2); + SetValue_psz((strcmp(p[0], p[1]) > 0) ? p[0] : p[1]); + break; + default: + // sprintf(g->Message, MSG(BAD_EXP_OPER), op); + strcpy(g->Message, "Function not supported"); + return true; + } // endswitch op + + Null = false; return false; } // end of Compute @@ -1738,7 +1747,7 @@ DECVAL::DECVAL(PSZ s) : TYPVAL<PSZ>(s) if (s) { char *p = strchr(Strp, '.'); - Prec = (p) ? Len - (p - Strp) : 0; + Prec = (p) ? (int)(Len - (p - Strp)) : 0; } // endif s Type = TYPE_DECIM; @@ -2647,7 +2656,7 @@ bool DTVAL::SetValue_char(const char *p, int n) // Trim trailing blanks for (p2 = p + n -1; p < p2 && *p2 == ' '; p2--); - if ((rc = (n = p2 - p + 1) > Len)) + if ((rc = (n = (int)(p2 - p + 1)) > Len)) n = Len; memcpy(Sdate, p, n); diff --git a/storage/connect/value.h b/storage/connect/value.h index f771d33dc52..6613e25100a 100644 --- a/storage/connect/value.h +++ b/storage/connect/value.h @@ -102,7 +102,7 @@ class DllExport VALUE : public BLOCK { virtual bool SetValue_pval(PVAL valp, bool chktype = false) = 0; virtual bool SetValue_char(const char *p, int n) = 0; virtual void SetValue_psz(PCSZ s) = 0; - virtual void SetValue_bool(bool) {assert(FALSE);} + virtual void SetValue_bool(bool) {assert(false);} virtual int CompareValue(PVAL vp) = 0; virtual BYTE TestValue(PVAL vp); virtual void SetValue(char) {assert(false);} diff --git a/storage/connect/xobject.cpp b/storage/connect/xobject.cpp index 85af3779701..c595ce5d6c4 100644 --- a/storage/connect/xobject.cpp +++ b/storage/connect/xobject.cpp @@ -204,7 +204,7 @@ STRING::STRING(PGLOBAL g, uint n, PCSZ str) *Strp = 0; Next = GetNext(); - Size = Next - Strp; + Size = (int)(Next - Strp); Trc = false; } else { // This should normally never happen @@ -239,7 +239,7 @@ char *STRING::Realloc(uint len) p = Strp; Next = GetNext(); - Size = Next - p; + Size = (int)(Next - p); return p; } // end of Realloc diff --git a/storage/connect/xtable.h b/storage/connect/xtable.h index ebef7a2549a..bc9265e0223 100644 --- a/storage/connect/xtable.h +++ b/storage/connect/xtable.h @@ -16,7 +16,7 @@ #include "assert.h" #include "block.h" #include "colblk.h" -#include "m_ctype.h" +//#include "m_ctype.h" #include "reldef.h" typedef class CMD *PCMD; diff --git a/storage/federatedx/federatedx_io_mysql.cc b/storage/federatedx/federatedx_io_mysql.cc index 54059c0ecff..2068716eeba 100644 --- a/storage/federatedx/federatedx_io_mysql.cc +++ b/storage/federatedx/federatedx_io_mysql.cc @@ -265,9 +265,8 @@ ulong federatedx_io_mysql::savepoint_release(ulong sp) savept= dynamic_element(&savepoints, savepoints.elements - 1, SAVEPT *); if (savept->level < sp) break; - if ((savept->flags & (SAVEPOINT_REALIZED | - SAVEPOINT_RESTRICT)) == SAVEPOINT_REALIZED) - last= savept; + if ((savept->flags & (SAVEPOINT_REALIZED | SAVEPOINT_RESTRICT)) == SAVEPOINT_REALIZED) + last= savept; savepoints.elements--; } @@ -293,8 +292,8 @@ ulong federatedx_io_mysql::savepoint_rollback(ulong sp) while (savepoints.elements) { savept= dynamic_element(&savepoints, savepoints.elements - 1, SAVEPT *); - if (savept->level <= sp) - break; + if (savept->level <= sp) + break; savepoints.elements--; } diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index cf2aebe80f5..0fe807ceb00 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -77,22 +77,85 @@ btr_corruption_report( /* Latching strategy of the InnoDB B-tree -------------------------------------- -A tree latch protects all non-leaf nodes of the tree. Each node of a tree -also has a latch of its own. - -A B-tree operation normally first acquires an S-latch on the tree. It -searches down the tree and releases the tree latch when it has the -leaf node latch. To save CPU time we do not acquire any latch on -non-leaf nodes of the tree during a search, those pages are only bufferfixed. - -If an operation needs to restructure the tree, it acquires an X-latch on -the tree before searching to a leaf node. If it needs, for example, to -split a leaf, -(1) InnoDB decides the split point in the leaf, -(2) allocates a new page, -(3) inserts the appropriate node pointer to the first non-leaf level, -(4) releases the tree X-latch, -(5) and then moves records from the leaf to the new allocated page. + +Node pointer page latches acquisition is protected by index->lock latch. + +Before MariaDB 10.2.2, all node pointer pages were protected by index->lock +either in S (shared) or X (exclusive) mode and block->lock was not acquired on +node pointer pages. + +After MariaDB 10.2.2, block->lock S-latch or X-latch is used to protect +node pointer pages and obtaiment of node pointer page latches is protected by +index->lock. + +(0) Definition: B-tree level. + +(0.1) The leaf pages of the B-tree are at level 0. + +(0.2) The parent of a page at level L has level L+1. (The level of the +root page is equal to the tree height.) + +(0.3) The B-tree lock (index->lock) is the parent of the root page and +has a level = tree height + 1. + +Index->lock has 3 possible locking modes: + +(1) S-latch: + +(1.1) All latches for pages must be obtained in descending order of tree level. + +(1.2) Before obtaining the first node pointer page latch at a given B-tree +level, parent latch must be held (at level +1 ). + +(1.3) If a node pointer page is already latched at the same level +we can only obtain latch to its right sibling page latch at the same level. + +(1.4) Release of the node pointer page latches must be done in +child-to-parent order. (Prevents deadlocks when obtained index->lock +in SX mode). + +(1.4.1) Level L node pointer page latch can be released only when +no latches at children level i.e. level < L are hold. + +(1.4.2) All latches from node pointer pages must be released so +that no latches are obtained between. + +(1.5) [implied by (1.1), (1.2)] Root page latch must be first node pointer +latch obtained. + +(2) SX-latch: + +In this case rules (1.2) and (1.3) from S-latch case are relaxed and +merged into (2.2) and rule (1.4) is removed. Thus, latch acquisition +can be skipped at some tree levels and latches can be obtained in +a less restricted order. + +(2.1) [identical to (1.1)]: All latches for pages must be obtained in descending +order of tree level. + +(2.2) When a node pointer latch at level L is obtained, +the left sibling page latch in the same level or some ancestor +page latch (at level > L) must be hold. + +(2.3) [implied by (2.1), (2.2)] The first node pointer page latch obtained can +be any node pointer page. + +(3) X-latch: + +Node pointer latches can be obtained in any order. + +NOTE: New rules after MariaDB 10.2.2 does not affect the latching rules of leaf pages: + +index->lock S-latch is needed in read for the node pointer traversal. When the leaf +level is reached, index-lock can be released (and with the MariaDB 10.2.2 changes, all +node pointer latches). Left to right index travelsal in leaf page level can be safely done +by obtaining right sibling leaf page latch and then releasing the old page latch. + +Single leaf page modifications (BTR_MODIFY_LEAF) are protected by index->lock +S-latch. + +B-tree operations involving page splits or merges (BTR_MODIFY_TREE) and page +allocations are protected by index->lock X-latch. Node pointers ------------- @@ -1041,7 +1104,8 @@ btr_free_root( { fseg_header_t* header; - ut_ad(mtr_memo_contains_flagged(mtr, block, MTR_MEMO_PAGE_X_FIX)); + ut_ad(mtr_memo_contains_flagged(mtr, block, MTR_MEMO_PAGE_X_FIX + | MTR_MEMO_PAGE_SX_FIX)); ut_ad(mtr->is_named_space(block->page.id.space())); btr_search_drop_page_hash_index(block); @@ -1069,8 +1133,6 @@ btr_free_root_invalidate( buf_block_t* block, mtr_t* mtr) { - ut_ad(page_is_root(block->frame)); - btr_page_set_index_id( buf_block_get_frame(block), buf_block_get_page_zip(block), @@ -1371,6 +1433,7 @@ btr_free_if_exists( return; } + ut_ad(page_is_root(root->frame)); btr_free_but_not_root(root, mtr->get_log_mode()); mtr->set_named_space(page_id.space()); btr_free_root(root, mtr); diff --git a/storage/innobase/btr/btr0bulk.cc b/storage/innobase/btr/btr0bulk.cc index a2bd25b4a04..e6b1b94f828 100644 --- a/storage/innobase/btr/btr0bulk.cc +++ b/storage/innobase/btr/btr0bulk.cc @@ -565,8 +565,7 @@ PageBulk::storeExt( page_cur->block = m_block; dberr_t err = btr_store_big_rec_extern_fields( - &btr_pcur, NULL, offsets, big_rec, m_mtr, - BTR_STORE_INSERT_BULK); + &btr_pcur, offsets, big_rec, m_mtr, BTR_STORE_INSERT_BULK); ut_ad(page_offset(m_cur_rec) == page_offset(page_cur->rec)); diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc index e96aceb5f5d..83e64c854d6 100644 --- a/storage/innobase/btr/btr0cur.cc +++ b/storage/innobase/btr/btr0cur.cc @@ -7096,7 +7096,6 @@ btr_store_big_rec_extern_fields( btr_pcur_t* pcur, /*!< in/out: a persistent cursor. if btr_mtr is restarted, then this can be repositioned. */ - const upd_t* upd, /*!< in: update vector */ ulint* offsets, /*!< in/out: rec_get_offsets() on pcur. the "external storage" flags in offsets will correctly correspond diff --git a/storage/innobase/btr/btr0defragment.cc b/storage/innobase/btr/btr0defragment.cc index 335b4fc220d..70444ca1830 100644 --- a/storage/innobase/btr/btr0defragment.cc +++ b/storage/innobase/btr/btr0defragment.cc @@ -564,7 +564,7 @@ btr_defragment_merge_pages( page_get_infimum_rec(from_page)); node_ptr = dict_index_build_node_ptr( index, rec, page_get_page_no(from_page), - heap, level + 1); + heap, level); btr_insert_on_non_leaf_level(0, index, level+1, node_ptr, mtr); } @@ -797,11 +797,16 @@ DECLARE_THREAD(btr_defragment_thread)(void*) now = ut_timer_now(); mtr_start(&mtr); - btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, &mtr); cursor = btr_pcur_get_btr_cur(pcur); index = btr_cur_get_index(cursor); - first_block = btr_cur_get_block(cursor); mtr.set_named_space(index->space); + /* To follow the latching order defined in WL#6326, acquire index->lock X-latch. + This entitles us to acquire page latches in any order for the index. */ + mtr_x_lock(&index->lock, &mtr); + /* This will acquire index->lock SX-latch, which per WL#6363 is allowed + when we are already holding the X-latch. */ + btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, &mtr); + first_block = btr_cur_get_block(cursor); last_block = btr_defragment_n_pages(first_block, index, srv_defragment_n_pages, diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 0d6917489f0..44a3c19235b 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -825,7 +825,6 @@ buf_flush_update_zip_checksum( static_cast<srv_checksum_algorithm_t>(srv_checksum_algorithm)); mach_write_to_8(page + FIL_PAGE_LSN, lsn); - memset(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION, 0, 8); mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM, checksum); } @@ -1079,7 +1078,6 @@ buf_flush_write_block_low( bpage->newest_modification); ut_a(page_zip_verify_checksum(frame, bpage->size.physical())); - memset(frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION, 0, 8); break; case BUF_BLOCK_FILE_PAGE: frame = bpage->zip.data; diff --git a/storage/innobase/buf/buf0rea.cc b/storage/innobase/buf/buf0rea.cc index f7ea768f5c1..598da3ff706 100644 --- a/storage/innobase/buf/buf0rea.cc +++ b/storage/innobase/buf/buf0rea.cc @@ -176,6 +176,17 @@ buf_read_page_low( dst = ((buf_block_t*) bpage)->frame; } + DBUG_EXECUTE_IF( + "innodb_invalid_read_after_truncate", + if (fil_space_t* space = fil_space_acquire(page_id.space())) { + if (!strcmp(space->name, "test/t1") + && page_id.page_no() == space->size - 1) { + type = 0; + sync = true; + } + fil_space_release(space); + }); + IORequest request(type | IORequest::READ); *err = fil_io( @@ -321,6 +332,19 @@ buf_read_ahead_random( that is, reside near the start of the LRU list. */ for (i = low; i < high; i++) { + DBUG_EXECUTE_IF( + "innodb_invalid_read_after_truncate", + if (fil_space_t* space = fil_space_acquire( + page_id.space())) { + bool skip = !strcmp(space->name, "test/t1"); + fil_space_release(space); + if (skip) { + high = space->size; + buf_pool_mutex_exit(buf_pool); + goto read_ahead; + } + }); + const buf_page_t* bpage = buf_page_hash_get( buf_pool, page_id_t(page_id.space(), i)); diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index 4313fa16370..071218c4060 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -501,15 +501,14 @@ dict_table_close( ut_ad(mutex_own(&dict_sys->mutex)); ut_a(table->get_ref_count() > 0); - table->release(); + const bool last_handle = table->release(); /* Force persistent stats re-read upon next open of the table so that FLUSH TABLE can be used to forcibly fetch stats from disk if they have been manually modified. We reset table->stat_initialized only if table reference count is 0 because we do not want too frequent stats re-reads (e.g. in other cases than FLUSH TABLE). */ - if (strchr(table->name.m_name, '/') != NULL - && table->get_ref_count() == 0 + if (last_handle && strchr(table->name.m_name, '/') != NULL && dict_stats_is_persistent_enabled(table)) { dict_stats_deinit(table); @@ -529,11 +528,8 @@ dict_table_close( if (!dict_locked) { table_id_t table_id = table->id; - ibool drop_aborted; - - drop_aborted = try_drop + const bool drop_aborted = last_handle && try_drop && table->drop_aborted - && table->get_ref_count() == 1 && dict_table_get_first_index(table); mutex_exit(&dict_sys->mutex); @@ -914,8 +910,7 @@ dict_index_contains_col_or_prefix( ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); if (dict_index_is_clust(index)) { - - return(TRUE); + return(!is_virtual); } if (is_virtual) { @@ -2057,8 +2052,9 @@ dict_table_remove_from_cache_low( ut_ad(dict_lru_validate()); if (lru_evict && table->drop_aborted) { - /* Do as dict_table_try_drop_aborted() does. */ - + /* When evicting the table definition, + drop the orphan indexes from the data dictionary + and free the index pages. */ trx_t* trx = trx_allocate_for_background(); ut_ad(mutex_own(&dict_sys->mutex)); @@ -2068,12 +2064,7 @@ dict_table_remove_from_cache_low( trx->dict_operation_lock_mode = RW_X_LATCH; trx_set_dict_operation(trx, TRX_DICT_OP_INDEX); - - /* Silence a debug assertion in row_merge_drop_indexes(). */ - ut_d(table->acquire()); - row_merge_drop_indexes(trx, table, TRUE); - ut_d(table->release()); - ut_ad(table->get_ref_count() == 0); + row_merge_drop_indexes_dict(trx, table->id); trx_commit_for_mysql(trx); trx->dict_operation_lock_mode = 0; trx_free_for_background(trx); diff --git a/storage/innobase/dict/dict0mem.cc b/storage/innobase/dict/dict0mem.cc index e7e0e997fa7..aaed29dc58c 100644 --- a/storage/innobase/dict/dict0mem.cc +++ b/storage/innobase/dict/dict0mem.cc @@ -438,6 +438,9 @@ dict_mem_table_col_rename_low( ut_ad(from_len <= NAME_LEN); ut_ad(to_len <= NAME_LEN); + char from[NAME_LEN]; + strncpy(from, s, NAME_LEN); + if (from_len == to_len) { /* The easy case: simply replace the column name in table->col_names. */ @@ -522,14 +525,54 @@ dict_mem_table_col_rename_low( foreign = *it; - for (unsigned f = 0; f < foreign->n_fields; f++) { - /* These can point straight to - table->col_names, because the foreign key - constraints will be freed at the same time - when the table object is freed. */ - foreign->foreign_col_names[f] - = dict_index_get_nth_field( - foreign->foreign_index, f)->name; + if (foreign->foreign_index == NULL) { + /* We may go here when we set foreign_key_checks to 0, + and then try to rename a column and modify the + corresponding foreign key constraint. The index + would have been dropped, we have to find an equivalent + one */ + for (unsigned f = 0; f < foreign->n_fields; f++) { + if (strcmp(foreign->foreign_col_names[f], from) + == 0) { + + char** rc = const_cast<char**>( + foreign->foreign_col_names + + f); + + if (to_len <= strlen(*rc)) { + memcpy(*rc, to, to_len + 1); + } else { + *rc = static_cast<char*>( + mem_heap_dup( + foreign->heap, + to, + to_len + 1)); + } + } + } + + dict_index_t* new_index = dict_foreign_find_index( + foreign->foreign_table, NULL, + foreign->foreign_col_names, + foreign->n_fields, NULL, true, false, + NULL, NULL, NULL); + /* There must be an equivalent index in this case. */ + ut_ad(new_index != NULL); + + foreign->foreign_index = new_index; + + } else { + + for (unsigned f = 0; f < foreign->n_fields; f++) { + /* These can point straight to + table->col_names, because the foreign key + constraints will be freed at the same time + when the table object is freed. */ + foreign->foreign_col_names[f] + = dict_index_get_nth_field( + foreign->foreign_index, + f)->name; + } } } @@ -539,6 +582,8 @@ dict_mem_table_col_rename_low( foreign = *it; + ut_ad(foreign->referenced_index != NULL); + for (unsigned f = 0; f < foreign->n_fields; f++) { /* foreign->referenced_col_names[] need to be copies, because the constraint may become diff --git a/storage/innobase/dict/dict0stats_bg.cc b/storage/innobase/dict/dict0stats_bg.cc index f2ef18b116d..133e7904c94 100644 --- a/storage/innobase/dict/dict0stats_bg.cc +++ b/storage/innobase/dict/dict0stats_bg.cc @@ -259,7 +259,7 @@ dict_stats_wait_bg_to_stop_using_table( unlocking/locking the data dict */ { while (!dict_stats_stop_bg(table)) { - DICT_STATS_BG_YIELD(trx); + DICT_BG_YIELD(trx); } } diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc index 2897d5f9be8..73132754fdf 100644 --- a/storage/innobase/fil/fil0fil.cc +++ b/storage/innobase/fil/fil0fil.cc @@ -1061,139 +1061,28 @@ fil_space_extend_must_retry( const page_size_t pageSize(space->flags); const ulint page_size = pageSize.physical(); -#ifdef _WIN32 - os_offset_t new_file_size = - std::max( - os_offset_t(size - file_start_page_no) * page_size, - os_offset_t(FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE)); - - /* os_file_change_size_win32() handles both compressed(sparse) - and normal files correctly. - It allocates physical storage for normal files and "virtual" - storage for sparse ones.*/ - *success = os_file_change_size_win32(node->name, - node->handle, new_file_size); + /* fil_read_first_page() expects UNIV_PAGE_SIZE bytes. + fil_node_open_file() expects at least 4 * UNIV_PAGE_SIZE bytes.*/ + os_offset_t new_size = std::max( + os_offset_t(size - file_start_page_no) * page_size, + os_offset_t(FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE)); + + *success = os_file_set_size(node->name, node->handle, new_size, + FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags)); + os_has_said_disk_full = *success; if (*success) { last_page_no = size; } else { - ib::error() << "extending file '" << node->name - << " to size " << new_file_size << " failed"; - } -#else - /* We will logically extend the file with ftruncate() if - page_compression is enabled, because the file is expected to - be sparse in that case. Make sure that ftruncate() can deal - with large files. */ - const bool is_sparse = sizeof(off_t) >= 8 - && FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags); - - if (is_sparse) { - /* fil_read_first_page() expects UNIV_PAGE_SIZE bytes. - fil_node_open_file() expects at least 4 * UNIV_PAGE_SIZE bytes. - Do not shrink short ROW_FORMAT=COMPRESSED files. */ - off_t s = std::max(off_t(size - file_start_page_no) - * off_t(page_size), - off_t(FIL_IBD_FILE_INITIAL_SIZE - * UNIV_PAGE_SIZE)); - *success = !ftruncate(node->handle, s); - if (!*success) { - ib::error() << "ftruncate of file '" << node->name - << "' from " - << os_offset_t(last_page_no - - file_start_page_no) - * page_size << " to " << os_offset_t(s) - << " bytes failed with " << errno; - } else { - last_page_no = size; - } - } else { - const os_offset_t start_offset - = os_offset_t(last_page_no - file_start_page_no) - * page_size; - const ulint n_pages = size - last_page_no; - const os_offset_t len = os_offset_t(n_pages) * page_size; -# ifdef HAVE_POSIX_FALLOCATE - int err; - do { - err = posix_fallocate(node->handle, start_offset, len); - } while (err == EINTR - && srv_shutdown_state == SRV_SHUTDOWN_NONE); - - if (err != EINVAL) { - - *success = !err; - if (!*success) { - ib::error() << "extending file '" << node->name - << "' from " - << start_offset - << " to " << len + start_offset - << " bytes failed with: " << err; - } - } else -# endif /* HAVE_POSIX_FALLOCATE */ - { - /* Extend at most 1 megabyte pages at a time */ - ulint n_bytes = std::min(ulint(1) << 20, n_pages) - * page_size; - byte* buf2 = static_cast<byte*>( - calloc(1, n_bytes + page_size)); - *success = buf2 != NULL; - if (!buf2) { - ib::error() << "Cannot allocate " - << n_bytes + page_size - << " bytes to extend file"; - } - byte* const buf = static_cast<byte*>( - ut_align(buf2, page_size)); - IORequest request(IORequest::WRITE); - - - os_offset_t offset = start_offset; - const os_offset_t end = start_offset + len; - const bool read_only_mode = space->purpose - == FIL_TYPE_TEMPORARY && srv_read_only_mode; - - while (*success && offset < end) { - dberr_t err = os_aio( - request, OS_AIO_SYNC, node->name, - node->handle, buf, offset, n_bytes, - read_only_mode, NULL, NULL); - - if (err != DB_SUCCESS) { - *success = false; - ib::error() << "writing zeroes to file '" - << node->name << "' from " - << offset << " to " << offset + n_bytes - << " bytes failed with: " - << ut_strerr(err); - break; - } - - offset += n_bytes; - - n_bytes = std::min(n_bytes, - static_cast<ulint>(end - offset)); - } - - free(buf2); - } + /* Let us measure the size of the file + to determine how much we were able to + extend it */ + os_offset_t fsize = os_file_get_size(node->handle); + ut_a(fsize != os_offset_t(-1)); - os_has_said_disk_full = *success; - if (*success) { - last_page_no = size; - } else { - /* Let us measure the size of the file - to determine how much we were able to - extend it */ - os_offset_t fsize = os_file_get_size(node->handle); - ut_a(fsize != os_offset_t(-1)); - - last_page_no = ulint(fsize / page_size) - + file_start_page_no; - } + last_page_no = ulint(fsize / page_size) + + file_start_page_no; } -#endif mutex_enter(&fil_system->mutex); ut_a(node->being_extended); @@ -1206,11 +1095,7 @@ fil_space_extend_must_retry( const ulint pages_in_MiB = node->size & ~((1 << (20 - UNIV_PAGE_SIZE_SHIFT)) - 1); - fil_node_complete_io(node, -#ifndef _WIN32 - !is_sparse ? IORequestWrite : -#endif /* _WIN32 */ - IORequestRead); + fil_node_complete_io(node,IORequestRead); /* Keep the last data file size info up to date, rounded to full megabytes */ @@ -1333,6 +1218,7 @@ fil_mutex_enter_and_prepare_for_io( fil_flush_file_spaces(FIL_TYPE_TABLESPACE); count++; + mutex_enter(&fil_system->mutex); continue; } } @@ -3237,10 +3123,11 @@ fil_truncate_tablespace( bool success = os_file_truncate(node->name, node->handle, 0); if (success) { - os_offset_t size = size_in_pages * UNIV_PAGE_SIZE; + os_offset_t size = os_offset_t(size_in_pages) * UNIV_PAGE_SIZE; success = os_file_set_size( - node->name, node->handle, size, srv_read_only_mode); + node->name, node->handle, size, + FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags)); if (success) { space->stop_new_ops = false; @@ -3835,72 +3722,17 @@ fil_ibd_create( return(DB_ERROR); } - bool punch_hole = false; + const bool is_compressed = FSP_FLAGS_HAS_PAGE_COMPRESSION(flags); #ifdef _WIN32 - - if (FSP_FLAGS_HAS_PAGE_COMPRESSION(flags)) { - punch_hole = os_file_set_sparse_win32(file); - } - - success = os_file_change_size_win32(path, file, size * UNIV_PAGE_SIZE); - -#else - - success= false; -#ifdef HAVE_POSIX_FALLOCATE - /* - Extend the file using posix_fallocate(). This is required by - FusionIO HW/Firmware but should also be the prefered way to extend - a file. - */ - int ret; - do { - ret = posix_fallocate(file, 0, size * UNIV_PAGE_SIZE); - } while (ret == EINTR - && srv_shutdown_state == SRV_SHUTDOWN_NONE); - - if (ret == 0) { - success = true; - } else if (ret != EINVAL) { - ib::error() << - "posix_fallocate(): Failed to preallocate" - " data for file " << path - << ", desired size " - << size * UNIV_PAGE_SIZE - << " Operating system error number " << ret - << ". Check" - " that the disk is not full or a disk quota" - " exceeded. Some operating system error" - " numbers are described at " REFMAN - "operating-system-error-codes.html"; - } -#endif /* HAVE_POSIX_FALLOCATE */ - - if (!success) { - success = os_file_set_size( - path, file, size * UNIV_PAGE_SIZE, srv_read_only_mode); - } - - /* Note: We are actually punching a hole, previous contents will - be lost after this call, if it succeeds. In this case the file - should be full of NULs. */ - - punch_hole = os_is_sparse_file_supported(file); - - if (punch_hole) { - - dberr_t punch_err; - - punch_err = os_file_punch_hole(file, 0, size * UNIV_PAGE_SIZE); - - if (punch_err != DB_SUCCESS) { - punch_hole = false; - } + if (is_compressed) { + os_file_set_sparse_win32(file); } #endif - ulint block_size = os_file_get_block_size(file, path); + success = os_file_set_size( + path, file, + os_offset_t(size) << UNIV_PAGE_SIZE_SHIFT, is_compressed); if (!success) { os_file_close(file); @@ -3908,6 +3740,10 @@ fil_ibd_create( return(DB_OUT_OF_FILE_SPACE); } + bool punch_hole = os_is_sparse_file_supported(file); + + ulint block_size = os_file_get_block_size(file, path); + /* We have to write the space id to the file immediately and flush the file to disk. This is because in crash recovery we must be aware what tablespaces exist and what are their space id's, so that we can apply diff --git a/storage/innobase/fsp/fsp0sysspace.cc b/storage/innobase/fsp/fsp0sysspace.cc index cc156a5353a..c459c8296e0 100644 --- a/storage/innobase/fsp/fsp0sysspace.cc +++ b/storage/innobase/fsp/fsp0sysspace.cc @@ -410,8 +410,7 @@ SysTablespace::set_size( bool success = os_file_set_size( file.m_filepath, file.m_handle, - static_cast<os_offset_t>(file.m_size << UNIV_PAGE_SIZE_SHIFT), - m_ignore_read_only ? false : srv_read_only_mode); + static_cast<os_offset_t>(file.m_size) << UNIV_PAGE_SIZE_SHIFT); if (success) { ib::info() << "File '" << file.filepath() << "' size is now " diff --git a/storage/innobase/fts/fts0fts.cc b/storage/innobase/fts/fts0fts.cc index 0174e51ec07..8e9c897274b 100644 --- a/storage/innobase/fts/fts0fts.cc +++ b/storage/innobase/fts/fts0fts.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2011, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2011, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2016, 2017, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -28,6 +28,7 @@ Full Text Search interface #include "row0mysql.h" #include "row0upd.h" #include "dict0types.h" +#include "dict0stats_bg.h" #include "row0sel.h" #include "fts0fts.h" #include "fts0priv.h" @@ -860,18 +861,37 @@ fts_drop_index( err = fts_drop_index_tables(trx, index); - fts_free(table); - + for(;;) { + bool retry = false; + if (index->index_fts_syncing) { + retry = true; + } + if (!retry){ + fts_free(table); + break; + } + DICT_BG_YIELD(trx); + } return(err); } - current_doc_id = table->fts->cache->next_doc_id; - first_doc_id = table->fts->cache->first_doc_id; - fts_cache_clear(table->fts->cache); - fts_cache_destroy(table->fts->cache); - table->fts->cache = fts_cache_create(table); - table->fts->cache->next_doc_id = current_doc_id; - table->fts->cache->first_doc_id = first_doc_id; + for(;;) { + bool retry = false; + if (index->index_fts_syncing) { + retry = true; + } + if (!retry){ + current_doc_id = table->fts->cache->next_doc_id; + first_doc_id = table->fts->cache->first_doc_id; + fts_cache_clear(table->fts->cache); + fts_cache_destroy(table->fts->cache); + table->fts->cache = fts_cache_create(table); + table->fts->cache->next_doc_id = current_doc_id; + table->fts->cache->first_doc_id = first_doc_id; + break; + } + DICT_BG_YIELD(trx); + } } else { fts_cache_t* cache = table->fts->cache; fts_index_cache_t* index_cache; @@ -881,9 +901,17 @@ fts_drop_index( index_cache = fts_find_index_cache(cache, index); if (index_cache != NULL) { - if (index_cache->words) { - fts_words_free(index_cache->words); - rbt_free(index_cache->words); + for(;;) { + bool retry = false; + if (index->index_fts_syncing) { + retry = true; + } + if (!retry && index_cache->words) { + fts_words_free(index_cache->words); + rbt_free(index_cache->words); + break; + } + DICT_BG_YIELD(trx); } ib_vector_remove(cache->indexes, *(void**) index_cache); @@ -2635,8 +2663,9 @@ fts_get_next_doc_id( return(DB_SUCCESS); } + DEBUG_SYNC_C("get_next_FTS_DOC_ID"); mutex_enter(&cache->doc_id_lock); - *doc_id = ++cache->next_doc_id; + *doc_id = cache->next_doc_id++; mutex_exit(&cache->doc_id_lock); return(DB_SUCCESS); @@ -3019,52 +3048,6 @@ fts_modify( } /*********************************************************************//** -Create a new document id. -@return DB_SUCCESS if all went well else error */ -dberr_t -fts_create_doc_id( -/*==============*/ - dict_table_t* table, /*!< in: row is of this table. */ - dtuple_t* row, /* in/out: add doc id value to this - row. This is the current row that is - being inserted. */ - mem_heap_t* heap) /*!< in: heap */ -{ - doc_id_t doc_id; - dberr_t error = DB_SUCCESS; - - ut_a(table->fts->doc_col != ULINT_UNDEFINED); - - if (!DICT_TF2_FLAG_IS_SET(table, DICT_TF2_FTS_HAS_DOC_ID)) { - if (table->fts->cache->first_doc_id == FTS_NULL_DOC_ID) { - error = fts_get_next_doc_id(table, &doc_id); - } - return(error); - } - - error = fts_get_next_doc_id(table, &doc_id); - - if (error == DB_SUCCESS) { - dfield_t* dfield; - doc_id_t* write_doc_id; - - ut_a(doc_id > 0); - - dfield = dtuple_get_nth_field(row, table->fts->doc_col); - write_doc_id = static_cast<doc_id_t*>( - mem_heap_alloc(heap, sizeof(*write_doc_id))); - - ut_a(doc_id != FTS_NULL_DOC_ID); - ut_a(sizeof(doc_id) == dfield->type.len); - fts_write_doc_id((byte*) write_doc_id, doc_id); - - dfield_set_data(dfield, write_doc_id, sizeof(*write_doc_id)); - } - - return(error); -} - -/*********************************************************************//** The given transaction is about to be committed; do whatever is necessary from the FTS system's POV. @return DB_SUCCESS or error code */ @@ -4291,6 +4274,16 @@ begin_sync: index_cache = static_cast<fts_index_cache_t*>( ib_vector_get(cache->indexes, i)); + if (index_cache->index->to_be_dropped + || index_cache->index->table->to_be_dropped) { + continue; + } + + index_cache->index->index_fts_syncing = true; + DBUG_EXECUTE_IF("fts_instrument_sync_sleep_drop_waits", + os_thread_sleep(10000000); + ); + error = fts_sync_index(sync, index_cache); if (error != DB_SUCCESS && !sync->interrupted) { @@ -4328,6 +4321,15 @@ end_sync: } rw_lock_x_lock(&cache->lock); + /* Clear fts syncing flags of any indexes incase sync is + interrupeted */ + for (i = 0; i < ib_vector_size(cache->indexes); ++i) { + fts_index_cache_t* index_cache; + index_cache = static_cast<fts_index_cache_t*>( + ib_vector_get(cache->indexes, i)); + index_cache->index->index_fts_syncing = false; + } + sync->interrupted = false; sync->in_progress = false; os_event_set(sync->event); diff --git a/storage/innobase/fts/fts0opt.cc b/storage/innobase/fts/fts0opt.cc index 820e82dc600..d7e434320a3 100644 --- a/storage/innobase/fts/fts0opt.cc +++ b/storage/innobase/fts/fts0opt.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2007, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2016, MariaDB Corporation. All Rights reserved. This program is free software; you can redistribute it and/or modify it under @@ -2953,13 +2953,6 @@ fts_optimize_sync_table( { dict_table_t* table = NULL; - /* Prevent DROP INDEX etc. from running when we are syncing - cache in background. */ - if (!rw_lock_s_lock_nowait(dict_operation_lock, __FILE__, __LINE__)) { - /* Exit when fail to get dict operation lock. */ - return; - } - table = dict_table_open_on_id(table_id, FALSE, DICT_TABLE_OP_NORMAL); if (table) { @@ -2969,8 +2962,6 @@ fts_optimize_sync_table( dict_table_close(table, FALSE, FALSE); } - - rw_lock_s_unlock(dict_operation_lock); } /**********************************************************************//** diff --git a/storage/innobase/fts/fts0que.cc b/storage/innobase/fts/fts0que.cc index 594f337c978..1b03e041871 100644 --- a/storage/innobase/fts/fts0que.cc +++ b/storage/innobase/fts/fts0que.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2007, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2017, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -149,13 +149,6 @@ struct fts_query_t { bool multi_exist; /*!< multiple FTS_EXIST oper */ st_mysql_ftparser* parser; /*!< fts plugin parser */ - - /** limit value for the fts query */ - ulonglong limit; - - /** number of docs fetched by query. This is to restrict the - result with limit value */ - ulonglong n_docs; }; /** For phrase matching, first we collect the documents and the positions @@ -3228,11 +3221,6 @@ fts_query_filter_doc_ids( ulint decoded = 0; ib_rbt_t* doc_freqs = word_freq->doc_freqs; - if (query->limit != ULONG_UNDEFINED - && query->n_docs >= query->limit) { - return(DB_SUCCESS); - } - /* Decode the ilist and add the doc ids to the query doc_id set. */ while (decoded < len) { ulint freq = 0; @@ -3320,17 +3308,11 @@ fts_query_filter_doc_ids( /* Add the word to the document's matched RB tree. */ fts_query_add_word_to_document(query, doc_id, word); } - - if (query->limit != ULONG_UNDEFINED - && query->limit <= ++query->n_docs) { - goto func_exit; - } } /* Some sanity checks. */ ut_a(doc_id == node->last_doc_id); -func_exit: if (query->total_size > fts_result_cache_limit) { return(DB_FTS_EXCEED_RESULT_CACHE_LIMIT); } else { @@ -3813,6 +3795,10 @@ fts_query_free( fts_doc_ids_free(query->deleted); } + if (query->intersection) { + fts_query_free_doc_ids(query, query->intersection); + } + if (query->doc_ids) { fts_query_free_doc_ids(query, query->doc_ids); } @@ -3941,7 +3927,6 @@ fts_query_can_optimize( @param[in] query_str FTS query @param[in] query_len FTS query string len in bytes @param[in,out] result result doc ids -@param[in] limit limit value @return DB_SUCCESS if successful otherwise error code */ dberr_t fts_query( @@ -3950,8 +3935,7 @@ fts_query( uint flags, const byte* query_str, ulint query_len, - fts_result_t** result, - ulonglong limit) + fts_result_t** result) { fts_query_t query; dberr_t error = DB_SUCCESS; @@ -4013,10 +3997,6 @@ fts_query( query.total_docs = dict_table_get_n_rows(index->table); - query.limit = limit; - - query.n_docs = 0; - query.fts_common_table.suffix = "DELETED"; /* Read the deleted doc_ids, we need these for filtering. */ @@ -4078,19 +4058,6 @@ fts_query( fts_result_cache_limit = 2048; ); - /* Optimisation is allowed for limit value - when - i) No ranking involved - ii) Only FTS Union operations involved. */ - if (query.limit != ULONG_UNDEFINED - && !fts_ast_node_check_union(ast)) { - query.limit = ULONG_UNDEFINED; - } - - DBUG_EXECUTE_IF("fts_union_limit_off", - query.limit = ULONG_UNDEFINED; - ); - /* Traverse the Abstract Syntax Tree (AST) and execute the query. */ query.error = fts_ast_visit( diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 0c8cdab4d15..10d54498feb 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -6209,16 +6209,27 @@ ha_innobase::open(const char* name, int, uint) ib_table = open_dict_table(name, norm_name, is_part, ignore_err); - uint n_fields = mysql_fields(table); + if (NULL == ib_table) { - if (ib_table != NULL - && ((!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && n_fields != dict_table_get_n_tot_u_cols(ib_table)) - || (DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && (n_fields != dict_table_get_n_tot_u_cols(ib_table) - 1)))) { + if (is_part) { + sql_print_error("Failed to open table %s.\n", + norm_name); + } +no_such_table: + free_share(m_share); + set_my_errno(ENOENT); + DBUG_RETURN(HA_ERR_NO_SUCH_TABLE); + } + + uint n_fields = mysql_fields(table); + uint n_cols = dict_table_get_n_user_cols(ib_table) + + dict_table_get_n_v_cols(ib_table) + - !!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID); + + if (n_cols != n_fields) { ib::warn() << "Table " << norm_name << " contains " - << dict_table_get_n_tot_u_cols(ib_table) << " user" + << n_cols << " user" " defined columns in InnoDB, but " << n_fields << " columns in MariaDB. Please check" " INFORMATION_SCHEMA.INNODB_SYS_COLUMNS and " REFMAN @@ -6230,21 +6241,7 @@ ha_innobase::open(const char* name, int, uint) ib_table->file_unreadable = true; ib_table->corrupted = true; dict_table_close(ib_table, FALSE, FALSE); - ib_table = NULL; - is_part = NULL; - } - - if (NULL == ib_table) { - - if (is_part) { - sql_print_error("Failed to open table %s.\n", - norm_name); - } - - free_share(m_share); - set_my_errno(ENOENT); - - DBUG_RETURN(HA_ERR_NO_SUCH_TABLE); + goto no_such_table; } innobase_copy_frm_flags_from_table_share(ib_table, table->s); @@ -7983,13 +7980,16 @@ no_icp: } else { ibool contain; - if (innobase_is_v_fld(table->field[i])) { - contain = dict_index_contains_col_or_prefix( - index, num_v, true); - } else { + if (!innobase_is_v_fld(table->field[i])) { contain = dict_index_contains_col_or_prefix( index, i - num_v, false); + } else if (dict_index_is_clust(index)) { + num_v++; + continue; + } else { + contain = dict_index_contains_col_or_prefix( + index, num_v, true); } field = build_template_needs_field( @@ -10313,10 +10313,8 @@ ha_innobase::ft_init_ext( const byte* q = reinterpret_cast<const byte*>( const_cast<char*>(query)); - // JAN: TODO: support for ft_init_ext_with_hints(), remove the line below - m_prebuilt->m_fts_limit= ULONG_UNDEFINED; - dberr_t error = fts_query(trx, index, flags, q, query_len, &result, - m_prebuilt->m_fts_limit); + // FIXME: support ft_init_ext_with_hints(), pass LIMIT + dberr_t error = fts_query(trx, index, flags, q, query_len, &result); if (error != DB_SUCCESS) { my_error(convert_error_code_to_mysql(error, 0, NULL), MYF(0)); @@ -14777,7 +14775,7 @@ ha_innobase::optimize( calls to OPTIMIZE, which is undesirable. */ /* TODO: Defragment is disabled for now */ - if (0) { + if (srv_defragment) { int err; err = defragment_table(m_prebuilt->table->name.m_name, NULL, false); @@ -19279,7 +19277,7 @@ buffer_pool_load_now( const void* save) /*!< in: immediate result from check function */ { - if (*(my_bool*) save) { + if (*(my_bool*) save && !srv_read_only_mode) { buf_load_start(); } } @@ -19302,7 +19300,7 @@ buffer_pool_load_abort( const void* save) /*!< in: immediate result from check function */ { - if (*(my_bool*) save) { + if (*(my_bool*) save && !srv_read_only_mode) { buf_load_abort(); } } @@ -21858,7 +21856,7 @@ const char* TROUBLESHOOT_DATADICT_MSG = " for how to resolve the issue."; const char* BUG_REPORT_MSG = - "Submit a detailed bug report to http://bugs.mysql.com"; + "Submit a detailed bug report to https://jira.mariadb.org/"; const char* FORCE_RECOVERY_MSG = "Please refer to " REFMAN "forcing-innodb-recovery.html" diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 552350ef805..a8769820563 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2005, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2013, 2017, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -471,34 +471,6 @@ innobase_need_rebuild( return(false); } - /* If alter table changes column name and adds a new - index, we need to check is this new index created - to new column name. This is because column name - changes are done normally after creating indexes. */ - if ((ha_alter_info->handler_flags - & Alter_inplace_info::ALTER_COLUMN_NAME) && - ((ha_alter_info->handler_flags - & Alter_inplace_info::ADD_INDEX) || - (ha_alter_info->handler_flags - & Alter_inplace_info::ADD_FOREIGN_KEY))) { - for (ulint i = 0; i < ha_alter_info->index_add_count; i++) { - const KEY* key = &ha_alter_info->key_info_buffer[ - ha_alter_info->index_add_buffer[i]]; - - for (ulint j = 0; j < key->user_defined_key_parts; j++) { - const KEY_PART_INFO* key_part = &(key->key_part[j]); - const Field* field = altered_table->field[key_part->fieldnr]; - - /* Field used on added index is renamed on - this same alter table. We need table - rebuild. */ - if (field && field->flags & FIELD_IS_RENAMED) { - return (true); - } - } - } - } - return(!!(ha_alter_info->handler_flags & INNOBASE_ALTER_REBUILD)); } @@ -625,6 +597,13 @@ ha_innobase::check_if_supported_inplace_alter( { DBUG_ENTER("check_if_supported_inplace_alter"); + /* Before 10.2.2 information about virtual columns was not stored in + system tables. We need to do a full alter to rebuild proper 10.2.2+ + metadata with the information about virtual columns */ + if (table->s->mysql_version < 100202 && table->s->virtual_fields) { + DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED); + } + if (high_level_read_only || srv_sys_space.created_new_raw() || srv_force_recovery) { @@ -1129,8 +1108,15 @@ ha_innobase::check_if_supported_inplace_alter( /* Compute the DEFAULT values of non-constant columns (VCOL_SESSION_FUNC | VCOL_TIME_FUNC). */ - (*af)->set_default(); - goto next_column; + switch ((*af)->set_default()) { + case 0: /* OK */ + case 3: /* DATETIME to TIME or DATE conversion */ + goto next_column; + case -1: /* OOM, or GEOMETRY type mismatch */ + case 1: /* A number adjusted to the min/max value */ + case 2: /* String truncation, or conversion problem */ + break; + } } DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED); @@ -2163,19 +2149,18 @@ name_ok: } /** Create index field definition for key part -@param[in] altered_table MySQL table that is being altered, - or NULL if a new clustered index - is not being created -@param[in] key_part MySQL key definition -@param[in,out] index_field index field -@param[in] new_clustered new cluster */ -static +@param[in] new_clustered true if alter is generating a new clustered +index +@param[in] altered_table MySQL table that is being altered +@param[in] key_part MySQL key definition +@param[out] index_field index field defition for key_part */ +static MY_ATTRIBUTE((nonnull(2,3))) void innobase_create_index_field_def( + bool new_clustered, const TABLE* altered_table, const KEY_PART_INFO* key_part, - index_field_t* index_field, - bool new_clustered) + index_field_t* index_field) { const Field* field; ibool is_unsigned; @@ -2186,11 +2171,11 @@ innobase_create_index_field_def( ut_ad(key_part); ut_ad(index_field); + ut_ad(altered_table); field = new_clustered ? altered_table->field[key_part->fieldnr] : key_part->field; - ut_a(field); for (ulint i = 0; i < key_part->fieldnr; i++) { if (innobase_is_v_fld(altered_table->field[i])) { @@ -2251,9 +2236,10 @@ innobase_create_index_def( DBUG_ENTER("innobase_create_index_def"); DBUG_ASSERT(!key_clustered || new_clustered); + ut_ad(altered_table); + index->fields = static_cast<index_field_t*>( mem_heap_alloc(heap, n_fields * sizeof *index->fields)); - memset(index->fields, 0, n_fields * sizeof *index->fields); index->parser = NULL; index->key_number = key_number; @@ -2331,8 +2317,8 @@ innobase_create_index_def( if (!(key->flags & HA_SPATIAL)) { for (i = 0; i < n_fields; i++) { innobase_create_index_field_def( - altered_table, &key->key_part[i], - &index->fields[i], new_clustered); + new_clustered, altered_table, + &key->key_part[i], &index->fields[i]); if (index->fields[i].is_v_col) { index->ind_type |= DICT_VIRTUAL; @@ -2745,7 +2731,6 @@ created_clustered: index->fields = static_cast<index_field_t*>( mem_heap_alloc(heap, sizeof *index->fields)); - memset(index->fields, 0, sizeof *index->fields); index->n_fields = 1; index->fields->col_no = fts_doc_id_col; index->fields->prefix_len = 0; @@ -4213,7 +4198,7 @@ innobase_add_instant_try( if (big_rec) { if (error == DB_SUCCESS) { error = btr_store_big_rec_extern_fields( - &pcur, update, offsets, big_rec, &mtr, + &pcur, offsets, big_rec, &mtr, BTR_STORE_UPDATE); } @@ -5078,8 +5063,7 @@ new_clustered_failed: } ctx->add_index[a] = row_merge_create_index( - ctx->new_table, - &index_defs[a], add_v, ctx->col_names); + ctx->new_table, &index_defs[a], add_v); add_key_nums[a] = index_defs[a].key_number; @@ -9112,7 +9096,47 @@ ha_innobase::commit_inplace_alter_table( break; } - DICT_STATS_BG_YIELD(trx); + DICT_BG_YIELD(trx); + } + + /* Make a concurrent Drop fts Index to wait until sync of that + fts index is happening in the background */ + for (;;) { + bool retry = false; + + for (inplace_alter_handler_ctx** pctx = ctx_array; + *pctx; pctx++) { + int count =0; + ha_innobase_inplace_ctx* ctx + = static_cast<ha_innobase_inplace_ctx*>(*pctx); + DBUG_ASSERT(new_clustered == ctx->need_rebuild()); + + if (dict_fts_index_syncing(ctx->old_table)) { + count++; + if (count == 100) { + fprintf(stderr, + "Drop index waiting for background sync" + "to finish\n"); + } + retry = true; + } + + if (new_clustered && dict_fts_index_syncing(ctx->new_table)) { + count++; + if (count == 100) { + fprintf(stderr, + "Drop index waiting for background sync" + "to finish\n"); + } + retry = true; + } + } + + if (!retry) { + break; + } + + DICT_BG_YIELD(trx); } /* Apply the changes to the data dictionary tables, for all @@ -9482,8 +9506,13 @@ foreign_fail: ut_d(dict_table_check_for_dup_indexes( ctx->new_table, CHECK_ABORTED_OK)); - ut_a(fts_check_cached_index(ctx->new_table)); +#ifdef UNIV_DEBUG + if (!(ctx->new_table->fts != NULL + && ctx->new_table->fts->cache->sync->in_progress)) { + ut_a(fts_check_cached_index(ctx->new_table)); + } +#endif if (new_clustered) { /* Since the table has been rebuilt, we remove all persistent statistics corresponding to the diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc index 632fcebc2f6..d1728db68e9 100644 --- a/storage/innobase/handler/i_s.cc +++ b/storage/innobase/handler/i_s.cc @@ -6397,6 +6397,7 @@ i_s_sys_tables_fill_table_stats( } heap = mem_heap_create(1000); + rw_lock_s_lock(dict_operation_lock); mutex_enter(&dict_sys->mutex); mtr_start(&mtr); @@ -6405,7 +6406,6 @@ i_s_sys_tables_fill_table_stats( while (rec) { const char* err_msg; dict_table_t* table_rec; - ulint ref_count; /* Fetch the dict_table_t structure corresponding to this SYS_TABLES record */ @@ -6413,16 +6413,7 @@ i_s_sys_tables_fill_table_stats( heap, rec, &table_rec, DICT_TABLE_LOAD_FROM_CACHE, &mtr); - if (table_rec != NULL) { - ut_ad(err_msg == NULL); - - ref_count = table_rec->get_ref_count(); - - /* Protect the dict_table_t object by incrementing - the reference count. */ - table_rec->acquire(); - } - + ulint ref_count = table_rec ? table_rec->get_ref_count() : 0; mutex_exit(&dict_sys->mutex); DBUG_EXECUTE_IF("test_sys_tablestats", { @@ -6431,29 +6422,30 @@ i_s_sys_tables_fill_table_stats( }}); if (table_rec != NULL) { + ut_ad(err_msg == NULL); i_s_dict_fill_sys_tablestats(thd, table_rec, ref_count, tables->table); } else { + ut_ad(err_msg != NULL); push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN, ER_CANT_FIND_SYSTEM_REC, "%s", err_msg); } + rw_lock_s_unlock(dict_operation_lock); mem_heap_empty(heap); /* Get the next record */ + rw_lock_s_lock(dict_operation_lock); mutex_enter(&dict_sys->mutex); - if (table_rec != NULL) { - table_rec->release(); - } - mtr_start(&mtr); rec = dict_getnext_system(&pcur, &mtr); } mtr_commit(&mtr); mutex_exit(&dict_sys->mutex); + rw_lock_s_unlock(dict_operation_lock); mem_heap_free(heap); DBUG_RETURN(0); @@ -8009,18 +8001,16 @@ i_s_dict_fill_sys_tablespaces( ulint flags, /*!< in: tablespace flags */ TABLE* table_to_fill) /*!< in/out: fill this table */ { - Field** fields; - ulint atomic_blobs = FSP_FLAGS_HAS_ATOMIC_BLOBS(flags); - bool is_compressed = FSP_FLAGS_GET_ZIP_SSIZE(flags); - const char* row_format; - const page_size_t page_size(flags); - const char* space_type; + Field** fields; + ulint atomic_blobs = FSP_FLAGS_HAS_ATOMIC_BLOBS(flags); + const char* file_format; + const char* row_format; DBUG_ENTER("i_s_dict_fill_sys_tablespaces"); if (is_system_tablespace(space)) { - row_format = "Compact or Redundant"; - } else if (is_compressed) { + row_format = "Compact, Redundant or Dynamic"; + } else if (FSP_FLAGS_GET_ZIP_SSIZE(flags)) { row_format = "Compressed"; } else if (atomic_blobs) { row_format = "Dynamic"; @@ -8028,12 +8018,6 @@ i_s_dict_fill_sys_tablespaces( row_format = "Compact or Redundant"; } - if (is_system_tablespace(space)) { - space_type = "System"; - } else { - space_type = "Single"; - } - fields = table_to_fill->field; OK(fields[SYS_TABLESPACES_SPACE]->store(space, true)); @@ -8044,19 +8028,32 @@ i_s_dict_fill_sys_tablespaces( OK(field_store_string(fields[SYS_TABLESPACES_ROW_FORMAT], row_format)); + OK(field_store_string(fields[SYS_TABLESPACES_SPACE_TYPE], + is_system_tablespace(space) + ? "System" : "Single")); + + ulint cflags = fsp_flags_is_valid(flags, space) + ? flags : fsp_flags_convert_from_101(flags); + if (cflags == ULINT_UNDEFINED) { + fields[SYS_TABLESPACES_PAGE_SIZE]->set_null(); + fields[SYS_TABLESPACES_ZIP_PAGE_SIZE]->set_null(); + fields[SYS_TABLESPACES_FS_BLOCK_SIZE]->set_null(); + fields[SYS_TABLESPACES_FILE_SIZE]->set_null(); + fields[SYS_TABLESPACES_ALLOC_SIZE]->set_null(); + OK(schema_table_store_record(thd, table_to_fill)); + DBUG_RETURN(0); + } + + const page_size_t page_size(cflags); + OK(fields[SYS_TABLESPACES_PAGE_SIZE]->store( - univ_page_size.physical(), true)); + page_size.logical(), true)); OK(fields[SYS_TABLESPACES_ZIP_PAGE_SIZE]->store( - page_size.is_compressed() - ? page_size.physical() - : 0, true)); - - OK(field_store_string(fields[SYS_TABLESPACES_SPACE_TYPE], - space_type)); + page_size.physical(), true)); char* filepath = NULL; - if (FSP_FLAGS_HAS_DATA_DIR(flags)) { + if (FSP_FLAGS_HAS_DATA_DIR(cflags)) { mutex_enter(&dict_sys->mutex); filepath = dict_get_first_path(space); mutex_exit(&dict_sys->mutex); diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc index e52dfe12b6a..c276a4ce137 100644 --- a/storage/innobase/ibuf/ibuf0ibuf.cc +++ b/storage/innobase/ibuf/ibuf0ibuf.cc @@ -4212,7 +4212,7 @@ ibuf_delete( fprintf(stderr, "\nspace " UINT32PF " offset " UINT32PF " (%u records, index id %llu)\n" "InnoDB: Submit a detailed bug report" - " to http://bugs.mysql.com\n", + " to https://jira.mariadb.org/\n", block->page.id.space(), block->page.id.page_no(), (unsigned) page_get_n_recs(page), diff --git a/storage/innobase/include/btr0cur.h b/storage/innobase/include/btr0cur.h index 0445d0ef59c..76f13325e2a 100644 --- a/storage/innobase/include/btr0cur.h +++ b/storage/innobase/include/btr0cur.h @@ -679,7 +679,6 @@ btr_store_big_rec_extern_fields( btr_pcur_t* pcur, /*!< in/out: a persistent cursor. if btr_mtr is restarted, then this can be repositioned. */ - const upd_t* upd, /*!< in: update vector */ ulint* offsets, /*!< in/out: rec_get_offsets() on pcur. the "external storage" flags in offsets will correctly correspond diff --git a/storage/innobase/include/data0type.ic b/storage/innobase/include/data0type.ic index 3d2f46ed877..a68f4829561 100644 --- a/storage/innobase/include/data0type.ic +++ b/storage/innobase/include/data0type.ic @@ -527,7 +527,7 @@ dtype_get_fixed_size_low( } } /* Treat as variable-length. */ - /* Fall through */ + /* fall through */ case DATA_VARCHAR: case DATA_BINARY: case DATA_DECIMAL: diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h index 03175936f7e..f14487f09d0 100644 --- a/storage/innobase/include/dict0dict.h +++ b/storage/innobase/include/dict0dict.h @@ -789,14 +789,6 @@ dict_table_get_n_user_cols( /*=======================*/ const dict_table_t* table) /*!< in: table */ MY_ATTRIBUTE((warn_unused_result)); -/** Gets the number of user-defined virtual and non-virtual columns in a table -in the dictionary cache. -@param[in] table table -@return number of user-defined (e.g., not ROW_ID) columns of a table */ -UNIV_INLINE -ulint -dict_table_get_n_tot_u_cols( - const dict_table_t* table); /********************************************************************//** Gets the number of all non-virtual columns (also system) in a table in the dictionary cache. diff --git a/storage/innobase/include/dict0dict.ic b/storage/innobase/include/dict0dict.ic index 06cd2434942..26918251d8b 100644 --- a/storage/innobase/include/dict0dict.ic +++ b/storage/innobase/include/dict0dict.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2013, 2017, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -391,22 +391,6 @@ dict_table_get_n_user_cols( return(table->n_cols - DATA_N_SYS_COLS); } -/** Gets the number of user-defined virtual and non-virtual columns in a table -in the dictionary cache. -@param[in] table table -@return number of user-defined (e.g., not ROW_ID) columns of a table */ -UNIV_INLINE -ulint -dict_table_get_n_tot_u_cols( - const dict_table_t* table) -{ - ut_ad(table); - ut_ad(table->magic_n == DICT_TABLE_MAGIC_N); - - return(dict_table_get_n_user_cols(table) - + dict_table_get_n_v_cols(table)); -} - /********************************************************************//** Gets the number of all non-virtual columns (also system) in a table in the dictionary cache. @@ -930,6 +914,27 @@ dict_table_x_lock_indexes( } /*********************************************************************//** +Returns true if the particular FTS index in the table is still syncing +in the background, false otherwise. +@param [in] table Table containing FTS index +@return True if sync of fts index is still going in the background */ +UNIV_INLINE +bool +dict_fts_index_syncing( + dict_table_t* table) +{ + dict_index_t* index; + + for (index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + if (index->index_fts_syncing) { + return(true); + } + } + return(false); +} +/*********************************************************************//** Release the exclusive locks on all index tree. */ UNIV_INLINE void @@ -1536,14 +1541,15 @@ dict_table_t::acquire() ++n_ref_count; } -/** Release the table handle. */ +/** Release the table handle. +@return whether the last handle was released */ inline -void +bool dict_table_t::release() { ut_ad(mutex_own(&dict_sys->mutex)); ut_ad(n_ref_count > 0); - --n_ref_count; + return !--n_ref_count; } /** Encode the number of columns and number of virtual columns in a diff --git a/storage/innobase/include/dict0mem.h b/storage/innobase/include/dict0mem.h index ecfe37f9cc7..ed39ed8a6c6 100644 --- a/storage/innobase/include/dict0mem.h +++ b/storage/innobase/include/dict0mem.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. Copyright (c) 2013, 2017, MariaDB Corporation. @@ -938,6 +938,9 @@ struct dict_index_t{ bool has_new_v_col; /*!< whether it has a newly added virtual column in ALTER */ + bool index_fts_syncing;/*!< Whether the fts index is + still syncing in the background; + FIXME: remove this and use MDL */ UT_LIST_NODE_T(dict_index_t) indexes;/*!< list of indexes of the table */ #ifdef BTR_CUR_ADAPT @@ -1428,8 +1431,9 @@ struct dict_table_t { /** Acquire the table handle. */ inline void acquire(); - /** Release the table handle. */ - inline void release(); + /** Release the table handle. + @return whether the last handle was released */ + inline bool release(); /** @return whether the table supports transactions */ bool no_rollback() const diff --git a/storage/innobase/include/dict0stats_bg.h b/storage/innobase/include/dict0stats_bg.h index f99cbeed780..e66666b66a3 100644 --- a/storage/innobase/include/dict0stats_bg.h +++ b/storage/innobase/include/dict0stats_bg.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2012, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2012, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2017, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -56,8 +56,8 @@ dict_stats_recalc_pool_del( /** Yield the data dictionary latch when waiting for the background thread to stop accessing a table. -@param trx transaction holding the data dictionary locks */ -#define DICT_STATS_BG_YIELD(trx) do { \ +@param trx transaction holding the data dictionary locks */ +#define DICT_BG_YIELD(trx) do { \ row_mysql_unlock_data_dictionary(trx); \ os_thread_sleep(250000); \ row_mysql_lock_data_dictionary(trx); \ diff --git a/storage/innobase/include/fts0fts.h b/storage/innobase/include/fts0fts.h index f1d53165cdd..813e34b43d3 100644 --- a/storage/innobase/include/fts0fts.h +++ b/storage/innobase/include/fts0fts.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2011, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2016, MariaDB Corporation. All Rights reserved. +Copyright (c) 2016, 2017, 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 @@ -456,20 +456,6 @@ fts_update_next_doc_id( doc_id_t doc_id); /*!< in: DOC ID to set */ /******************************************************************//** -Create a new document id . -@return DB_SUCCESS if all went well else error */ -dberr_t -fts_create_doc_id( -/*==============*/ - dict_table_t* table, /*!< in: row is of this - table. */ - dtuple_t* row, /*!< in/out: add doc id - value to this row. This is the - current row that is being - inserted. */ - mem_heap_t* heap); /*!< in: heap */ - -/******************************************************************//** Create a new fts_doc_ids_t. @return new fts_doc_ids_t. */ fts_doc_ids_t* @@ -579,7 +565,6 @@ fts_commit( @param[in] query_str FTS query @param[in] query_len FTS query string len in bytes @param[in,out] result result doc ids -@param[in] limit limit value @return DB_SUCCESS if successful otherwise error code */ dberr_t fts_query( @@ -588,8 +573,7 @@ fts_query( uint flags, const byte* query_str, ulint query_len, - fts_result_t** result, - ulonglong limit) + fts_result_t** result) MY_ATTRIBUTE((warn_unused_result)); /******************************************************************//** @@ -1033,4 +1017,3 @@ fts_check_corrupt( #endif /*!< fts0fts.h */ - diff --git a/storage/innobase/include/mtr0types.h b/storage/innobase/include/mtr0types.h index f6263ab66ef..ac24812cdfc 100644 --- a/storage/innobase/include/mtr0types.h +++ b/storage/innobase/include/mtr0types.h @@ -109,9 +109,6 @@ enum mlog_id_t { /** initialize a page in an undo log */ MLOG_UNDO_INIT = 22, - /** discard an update undo log header */ - MLOG_UNDO_HDR_DISCARD = 23, - /** create an undo log header */ MLOG_UNDO_HDR_CREATE = 25, diff --git a/storage/innobase/include/os0file.h b/storage/innobase/include/os0file.h index 4cd8d79bb41..064430cbf4b 100644 --- a/storage/innobase/include/os0file.h +++ b/storage/innobase/include/os0file.h @@ -1230,19 +1230,27 @@ os_file_get_size( os_file_t file) MY_ATTRIBUTE((warn_unused_result)); -/** Write the specified number of zeros to a newly created file. -@param[in] name name of the file or path as a null-terminated - string -@param[in] file handle to a file -@param[in] size file size -@param[in] read_only Enable read-only checks if true -@return true if success */ +/** Extend a file. + +On Windows, extending a file allocates blocks for the file, +unless the file is sparse. + +On Unix, we will extend the file with ftruncate(), if +file needs to be sparse. Otherwise posix_fallocate() is used +when available, and if not, binary zeroes are added to the end +of file. + +@param[in] name file name +@param[in] file file handle +@param[in] size desired file size +@param[in] sparse whether to create a sparse file (no preallocating) +@return whether the operation succeeded */ bool os_file_set_size( const char* name, os_file_t file, os_offset_t size, - bool read_only) + bool is_sparse = false) MY_ATTRIBUTE((warn_unused_result)); /** Truncates a file at its current position. @@ -1573,8 +1581,10 @@ os_file_set_umask(ulint umask); Make file sparse, on Windows. @param[in] file file handle +@param[in] is_sparse if true, make file sparse, + otherwise "unsparse" the file @return true on success, false on error */ -bool os_file_set_sparse_win32(os_file_t file); +bool os_file_set_sparse_win32(os_file_t file, bool is_sparse = true); /** Changes file size on Windows diff --git a/storage/innobase/include/row0merge.h b/storage/innobase/include/row0merge.h index b7f9dd02cb0..ca620cbef59 100644 --- a/storage/innobase/include/row0merge.h +++ b/storage/innobase/include/row0merge.h @@ -267,15 +267,12 @@ row_merge_rename_index_to_drop( @param[in] index_def the index definition @param[in] add_v new virtual columns added along with add index call -@param[in] col_names column names if columns are renamed - or NULL @return index, or NULL on error */ dict_index_t* row_merge_create_index( dict_table_t* table, const index_def_t* index_def, - const dict_add_v_col_t* add_v, - const char** col_names) + const dict_add_v_col_t* add_v) MY_ATTRIBUTE((warn_unused_result)); /*********************************************************************//** diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index 8d3752974a6..a7a55d202e8 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -844,9 +844,6 @@ struct row_prebuilt_t { /** The MySQL table object */ TABLE* m_mysql_table; - - /** limit value to avoid fts result overflow */ - ulonglong m_fts_limit; }; /** Callback for row_mysql_sys_index_iterate() */ diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h index c471ce5d57d..580a660cedc 100644 --- a/storage/innobase/include/srv0srv.h +++ b/storage/innobase/include/srv0srv.h @@ -489,10 +489,12 @@ enum srv_operation_mode { SRV_OPERATION_NORMAL, /** Mariabackup taking a backup */ SRV_OPERATION_BACKUP, - /** Mariabackup restoring a backup */ + /** Mariabackup restoring a backup for subsequent --copy-back */ SRV_OPERATION_RESTORE, /** Mariabackup restoring the incremental part of a backup */ - SRV_OPERATION_RESTORE_DELTA + SRV_OPERATION_RESTORE_DELTA, + /** Mariabackup restoring a backup for subsequent --export */ + SRV_OPERATION_RESTORE_EXPORT }; /** Current mode of operation */ diff --git a/storage/innobase/include/trx0undo.h b/storage/innobase/include/trx0undo.h index 270bee99a72..51f8035d886 100644 --- a/storage/innobase/include/trx0undo.h +++ b/storage/innobase/include/trx0undo.h @@ -337,16 +337,6 @@ trx_undo_parse_page_header( const byte* end_ptr, page_t* page, mtr_t* mtr); -/***********************************************************//** -Parses the redo log entry of an undo log page header discard. -@return end of log record or NULL */ -byte* -trx_undo_parse_discard_latest( -/*==========================*/ - byte* ptr, /*!< in: buffer */ - byte* end_ptr,/*!< in: buffer end */ - page_t* page, /*!< in: page or NULL */ - mtr_t* mtr); /*!< in: mtr or NULL */ /************************************************************************ Frees an undo log memory copy. */ void diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index 8656b231a88..80c0b5476b0 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -41,7 +41,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 5 #define INNODB_VERSION_MINOR 7 -#define INNODB_VERSION_BUGFIX 19 +#define INNODB_VERSION_BUGFIX 20 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc index fe9d9683785..ed3281e1453 100644 --- a/storage/innobase/lock/lock0lock.cc +++ b/storage/innobase/lock/lock0lock.cc @@ -6657,15 +6657,15 @@ lock_validate() Release both mutexes during the validation check. */ for (ulint i = 0; i < hash_get_n_cells(lock_sys->rec_hash); i++) { - const lock_t* lock; ib_uint64_t limit = 0; - while ((lock = lock_rec_validate(i, &limit)) != 0) { - - ulint space = lock->un_member.rec_lock.space; - ulint page_no = lock->un_member.rec_lock.page_no; - - pages.insert(std::make_pair(space, page_no)); + while (const lock_t* lock = lock_rec_validate(i, &limit)) { + if (lock_rec_find_set_bit(lock) == ULINT_UNDEFINED) { + /* The lock bitmap is empty; ignore it. */ + continue; + } + const lock_rec_t& l = lock->un_member.rec_lock; + pages.insert(std::make_pair(l.space, l.page_no)); } } diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index cba08271bac..21450767689 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -452,35 +452,6 @@ recv_sys_close() recv_spaces.clear(); } -/********************************************************//** -Frees the recovery system memory. */ -void -recv_sys_mem_free(void) -/*===================*/ -{ - if (recv_sys != NULL) { - if (recv_sys->addr_hash != NULL) { - hash_table_free(recv_sys->addr_hash); - } - - if (recv_sys->heap != NULL) { - mem_heap_free(recv_sys->heap); - } - - if (recv_sys->flush_start != NULL) { - os_event_destroy(recv_sys->flush_start); - } - - if (recv_sys->flush_end != NULL) { - os_event_destroy(recv_sys->flush_end); - } - - ut_free(recv_sys->buf); - ut_free(recv_sys); - recv_sys = NULL; - } -} - /************************************************************ Reset the state of the recovery system variables. */ void @@ -1422,10 +1393,6 @@ parse_log: /* Allow anything in page_type when creating a page. */ ptr = trx_undo_parse_page_init(ptr, end_ptr, page, mtr); break; - case MLOG_UNDO_HDR_DISCARD: - ut_ad(!page || page_type == FIL_PAGE_UNDO_LOG); - ptr = trx_undo_parse_discard_latest(ptr, end_ptr, page, mtr); - break; case MLOG_UNDO_HDR_CREATE: ut_ad(!page || page_type == FIL_PAGE_UNDO_LOG); ptr = trx_undo_parse_page_header(ptr, end_ptr, page, mtr); @@ -1985,7 +1952,8 @@ void recv_apply_hashed_log_recs(bool last_batch) { ut_ad(srv_operation == SRV_OPERATION_NORMAL - || srv_operation == SRV_OPERATION_RESTORE); + || srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT); mutex_enter(&recv_sys->mutex); @@ -2004,7 +1972,8 @@ recv_apply_hashed_log_recs(bool last_batch) ut_ad(!last_batch == log_mutex_own()); recv_no_ibuf_operations = !last_batch - || srv_operation == SRV_OPERATION_RESTORE; + || srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT; ut_d(recv_no_log_write = recv_no_ibuf_operations); @@ -3023,7 +2992,8 @@ static dberr_t recv_init_missing_space(dberr_t err, const recv_spaces_t::const_iterator& i) { - if (srv_operation == SRV_OPERATION_RESTORE) { + if (srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT) { ib::warn() << "Tablespace " << i->first << " was not" " found at " << i->second.name << " when" " restoring a (partial?) backup. All redo log" @@ -3181,7 +3151,8 @@ recv_recovery_from_checkpoint_start(lsn_t flush_lsn) dberr_t err = DB_SUCCESS; ut_ad(srv_operation == SRV_OPERATION_NORMAL - || srv_operation == SRV_OPERATION_RESTORE); + || srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT); /* Initialize red-black tree for fast insertions into the flush_list during recovery process. */ @@ -3653,9 +3624,6 @@ get_mlog_string(mlog_id_t type) case MLOG_UNDO_INIT: return("MLOG_UNDO_INIT"); - case MLOG_UNDO_HDR_DISCARD: - return("MLOG_UNDO_HDR_DISCARD"); - case MLOG_UNDO_HDR_CREATE: return("MLOG_UNDO_HDR_CREATE"); diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc index 0fd98350579..c6b9def79a1 100644 --- a/storage/innobase/os/os0file.cc +++ b/storage/innobase/os/os0file.cc @@ -775,9 +775,9 @@ os_win32_device_io_control( OVERLAPPED overlapped = { 0 }; overlapped.hEvent = win_get_syncio_event(); BOOL result = DeviceIoControl(handle, code, inbuf, inbuf_size, outbuf, - outbuf_size, bytes_returned, &overlapped); + outbuf_size, NULL, &overlapped); - if (!result && (GetLastError() == ERROR_IO_PENDING)) { + if (result || (GetLastError() == ERROR_IO_PENDING)) { /* Wait for async io to complete */ result = GetOverlappedResult(handle, &overlapped, bytes_returned, TRUE); } @@ -3238,17 +3238,10 @@ os_file_close_func( @param[in] file handle to an open file @return file size, or (os_offset_t) -1 on failure */ os_offset_t -os_file_get_size( - os_file_t file) +os_file_get_size(os_file_t file) { - /* Store current position */ - os_offset_t pos = lseek(file, 0, SEEK_CUR); - os_offset_t file_size = lseek(file, 0, SEEK_END); - - /* Restore current position as the function should not change it */ - lseek(file, pos, SEEK_SET); - - return(file_size); + struct stat statbuf; + return fstat(file, &statbuf) ? os_offset_t(-1) : statbuf.st_size; } /** Gets a file size. @@ -3458,14 +3451,14 @@ SyncFileIO::execute(const IORequest& request) if (request.is_read()) { ret = ReadFile(m_fh, m_buf, - static_cast<DWORD>(m_n), &n_bytes, &seek); + static_cast<DWORD>(m_n), NULL, &seek); } else { ut_ad(request.is_write()); ret = WriteFile(m_fh, m_buf, - static_cast<DWORD>(m_n), &n_bytes, &seek); + static_cast<DWORD>(m_n), NULL, &seek); } - if (!ret && (GetLastError() == ERROR_IO_PENDING)) { + if (ret || (GetLastError() == ERROR_IO_PENDING)) { /* Wait for async io to complete */ ret = GetOverlappedResult(m_fh, &seek, &n_bytes, TRUE); } @@ -3485,17 +3478,17 @@ SyncFileIO::execute(Slot* slot) ret = ReadFile( slot->file, slot->ptr, slot->len, - &slot->n_bytes, &slot->control); + NULL, &slot->control); } else { ut_ad(slot->type.is_write()); ret = WriteFile( slot->file, slot->ptr, slot->len, - &slot->n_bytes, &slot->control); + NULL, &slot->control); } - if (!ret && (GetLastError() == ERROR_IO_PENDING)) { + if (ret || (GetLastError() == ERROR_IO_PENDING)) { /* Wait for async io to complete */ ret = GetOverlappedResult(slot->file, &slot->control, &slot->n_bytes, TRUE); } @@ -4743,11 +4736,20 @@ Sets a sparse flag on Windows file. @param[in] file file handle @return true on success, false on error */ -bool os_file_set_sparse_win32(os_file_t file) +#include <versionhelpers.h> +bool os_file_set_sparse_win32(os_file_t file, bool is_sparse) { - + if (!is_sparse && !IsWindows8OrGreater()) { + /* Cannot unset sparse flag on older Windows. + Until Windows8 it is documented to produce unpredictable results, + if there are unallocated ranges in file.*/ + return false; + } DWORD temp; - return os_win32_device_io_control(file, FSCTL_SET_SPARSE, 0, 0, 0, 0,&temp); + FILE_SET_SPARSE_BUFFER sparse_buffer; + sparse_buffer.SetSparse = is_sparse; + return os_win32_device_io_control(file, + FSCTL_SET_SPARSE, &sparse_buffer, sizeof(sparse_buffer), 0, 0,&temp); } @@ -5319,23 +5321,77 @@ short_warning: #endif /* _WIN32 */ -/** Write the specified number of zeros to a newly created file. -@param[in] name name of the file or path as a null-terminated - string -@param[in] file handle to a file -@param[in] size file size -@param[in] read_only Enable read-only checks if true -@return true if success */ +/** Extend a file. + +On Windows, extending a file allocates blocks for the file, +unless the file is sparse. + +On Unix, we will extend the file with ftruncate(), if +file needs to be sparse. Otherwise posix_fallocate() is used +when available, and if not, binary zeroes are added to the end +of file. + +@param[in] name file name +@param[in] file file handle +@param[in] size desired file size +@param[in] sparse whether to create a sparse file (no preallocating) +@return whether the operation succeeded */ bool os_file_set_size( const char* name, os_file_t file, os_offset_t size, - bool read_only) + bool is_sparse) { #ifdef _WIN32 + /* On Windows, changing file size works well and as expected for both + sparse and normal files. + + However, 10.2 up until 10.2.9 made every file sparse in innodb, + causing NTFS fragmentation issues(MDEV-13941). We try to undo + the damage, and unsparse the file.*/ + + if (!is_sparse && os_is_sparse_file_supported(file)) { + if (!os_file_set_sparse_win32(file, false)) + /* Unsparsing file failed. Fallback to writing binary + zeros, to avoid even higher fragmentation.*/ + goto fallback; + } + return os_file_change_size_win32(name, file, size); -#endif + +fallback: +#else + if (is_sparse) { + bool success = !ftruncate(file, size); + if (!success) { + ib::error() << "ftruncate of file " << name << " to " + << size << " bytes failed with error " + << errno; + } + return(success); + } + +# ifdef HAVE_POSIX_FALLOCATE + int err; + do { + os_offset_t current_size = os_file_get_size(file); + err = current_size >= size + ? 0 : posix_fallocate(file, current_size, + size - current_size); + } while (err == EINTR + && srv_shutdown_state == SRV_SHUTDOWN_NONE); + + if (err) { + ib::error() << "preallocating " + << size << " bytes for file " << name + << " failed with error " << err; + } + errno = err; + return(!err); +# endif /* HAVE_POSIX_ALLOCATE */ +#endif /* _WIN32*/ + /* Write up to 1 megabyte at a time. */ ulint buf_size = ut_min( static_cast<ulint>(64), @@ -5353,13 +5409,14 @@ os_file_set_size( /* Write buffer full of zeros */ memset(buf, 0, buf_size); - if (size >= (os_offset_t) 100 << 20) { + os_offset_t current_size = os_file_get_size(file); + bool write_progress_info = + (size - current_size >= (os_offset_t) 100 << 20); + if (write_progress_info) { ib::info() << "Progress in MB:"; } - os_offset_t current_size = 0; - while (current_size < size) { ulint n_bytes; @@ -5382,8 +5439,9 @@ os_file_set_size( } /* Print about progress for each 100 MB written */ - if ((current_size + n_bytes) / (100 << 20) - != current_size / (100 << 20)) { + if (write_progress_info && + ((current_size + n_bytes) / (100 << 20) + != current_size / (100 << 20))) { fprintf(stderr, " %lu00", (ulong) ((current_size + n_bytes) @@ -5393,7 +5451,7 @@ os_file_set_size( current_size += n_bytes; } - if (size >= (os_offset_t) 100 << 20) { + if (write_progress_info) { fprintf(stderr, "\n"); } @@ -5578,10 +5636,11 @@ os_is_sparse_file_supported(os_file_t fh) ); #ifdef _WIN32 - BY_HANDLE_FILE_INFORMATION info; - if (GetFileInformationByHandle(fh,&info)) { - if (info.dwFileAttributes != INVALID_FILE_ATTRIBUTES) { - return (info.dwFileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0; + FILE_ATTRIBUTE_TAG_INFO info; + if (GetFileInformationByHandleEx(fh, FileAttributeTagInfo, + &info, (DWORD)sizeof(info))) { + if (info.FileAttributes != INVALID_FILE_ATTRIBUTES) { + return (info.FileAttributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0; } } return false; @@ -6667,7 +6726,7 @@ try_again: #ifdef WIN_ASYNC_IO ret = ReadFile( file, slot->ptr, slot->len, - &slot->n_bytes, &slot->control); + NULL, &slot->control); #elif defined(LINUX_NATIVE_AIO) if (!array->linux_dispatch(slot)) { goto err_exit; @@ -6685,7 +6744,7 @@ try_again: #ifdef WIN_ASYNC_IO ret = WriteFile( file, slot->ptr, slot->len, - &slot->n_bytes, &slot->control); + NULL, &slot->control); #elif defined(LINUX_NATIVE_AIO) if (!array->linux_dispatch(slot)) { goto err_exit; @@ -6701,8 +6760,7 @@ try_again: } #ifdef WIN_ASYNC_IO - if ((ret && slot->len == slot->n_bytes) - || (!ret && GetLastError() == ERROR_IO_PENDING)) { + if (ret || (GetLastError() == ERROR_IO_PENDING)) { /* aio completed or was queued successfully! */ return(DB_SUCCESS); } diff --git a/storage/innobase/rem/rem0rec.cc b/storage/innobase/rem/rem0rec.cc index c9d35521708..70710a1e6ca 100644 --- a/storage/innobase/rem/rem0rec.cc +++ b/storage/innobase/rem/rem0rec.cc @@ -816,9 +816,10 @@ rec_get_offsets_func( case REC_STATUS_SUPREMUM: /* infimum or supremum record */ ut_ad(rec_get_heap_no_new(rec) - == (rec_get_status(rec) == REC_STATUS_INFIMUM - ? PAGE_HEAP_NO_INFIMUM - : PAGE_HEAP_NO_SUPREMUM)); + == ulint(rec_get_status(rec) + == REC_STATUS_INFIMUM + ? PAGE_HEAP_NO_INFIMUM + : PAGE_HEAP_NO_SUPREMUM)); n = 1; break; default: diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index 88508cd8ce3..3729256c03b 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -398,7 +398,7 @@ row_ins_clust_index_entry_by_modify( DEBUG_SYNC_C("before_row_ins_upd_extern"); err = btr_store_big_rec_extern_fields( - pcur, update, *offsets, big_rec, mtr, + pcur, *offsets, big_rec, mtr, BTR_STORE_INSERT_UPDATE); DEBUG_SYNC_C("after_row_ins_upd_extern"); dtuple_big_rec_free(big_rec); @@ -1240,7 +1240,7 @@ row_ins_foreign_check_on_constraint( rec_print(stderr, clust_rec, clust_index); fputs("\n" "InnoDB: Submit a detailed bug report to" - " http://bugs.mysql.com\n", stderr); + " https://jira.mariadb.org/\n", stderr); ut_ad(0); err = DB_SUCCESS; @@ -2504,7 +2504,7 @@ row_ins_index_entry_big_rec( DEBUG_SYNC_C_IF_THD(thd, "before_row_ins_extern"); error = btr_store_big_rec_extern_fields( - &pcur, 0, offsets, big_rec, &mtr, BTR_STORE_INSERT); + &pcur, offsets, big_rec, &mtr, BTR_STORE_INSERT); DEBUG_SYNC_C_IF_THD(thd, "after_row_ins_extern"); if (error == DB_SUCCESS diff --git a/storage/innobase/row/row0log.cc b/storage/innobase/row/row0log.cc index edb55534ada..be4a7138ac7 100644 --- a/storage/innobase/row/row0log.cc +++ b/storage/innobase/row/row0log.cc @@ -2393,7 +2393,7 @@ func_exit_committed: if (big_rec) { if (error == DB_SUCCESS) { error = btr_store_big_rec_extern_fields( - &pcur, update, cur_offsets, big_rec, &mtr, + &pcur, cur_offsets, big_rec, &mtr, BTR_STORE_UPDATE); } diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index a2442222d6d..6a6c65cd70c 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -4401,15 +4401,12 @@ row_merge_rename_tables_dict( @param[in] index_def the index definition @param[in] add_v new virtual columns added along with add index call -@param[in] col_names column names if columns are renamed - or NULL @return index, or NULL on error */ dict_index_t* row_merge_create_index( dict_table_t* table, const index_def_t* index_def, - const dict_add_v_col_t* add_v, - const char** col_names) + const dict_add_v_col_t* add_v) { dict_index_t* index; ulint n_fields = index_def->n_fields; @@ -4446,20 +4443,7 @@ row_merge_create_index( table, ifield->col_no); } } else { - /* - Alter table renaming a column and then adding a index - to this new name e.g ALTER TABLE t - CHANGE COLUMN b c INT NOT NULL, ADD UNIQUE INDEX (c); - requires additional check as column names are not yet - changed when new index definitions are created. Table's - new column names are on a array of column name pointers - if any of the column names are changed. */ - - if (col_names && col_names[i]) { - name = col_names[i]; - } else { - name = dict_table_get_col_name(table, ifield->col_no); - } + name = dict_table_get_col_name(table, ifield->col_no); } dict_mem_index_add_field(index, name, ifield->prefix_len); diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc index f16155ef152..3f7c500c7f5 100644 --- a/storage/innobase/row/row0mysql.cc +++ b/storage/innobase/row/row0mysql.cc @@ -715,11 +715,33 @@ next_column: /* If there is a FTS doc id column and it is not user supplied ( generated by server) then assign it a new doc id. */ - if (prebuilt->table->fts) { + if (!prebuilt->table->fts) { + return; + } + + ut_a(prebuilt->table->fts->doc_col != ULINT_UNDEFINED); + + doc_id_t doc_id; + + if (!DICT_TF2_FLAG_IS_SET(prebuilt->table, DICT_TF2_FTS_HAS_DOC_ID)) { + if (prebuilt->table->fts->cache->first_doc_id + == FTS_NULL_DOC_ID) { + fts_get_next_doc_id(prebuilt->table, &doc_id); + } + return; + } - ut_a(prebuilt->table->fts->doc_col != ULINT_UNDEFINED); + dfield_t* fts_doc_id = dtuple_get_nth_field( + row, prebuilt->table->fts->doc_col); - fts_create_doc_id(prebuilt->table, row, prebuilt->heap); + if (fts_get_next_doc_id(prebuilt->table, &doc_id) == DB_SUCCESS) { + ut_a(doc_id != FTS_NULL_DOC_ID); + ut_ad(sizeof(doc_id) == fts_doc_id->type.len); + dfield_set_data(fts_doc_id, prebuilt->ins_upd_rec_buff + + prebuilt->mysql_row_len, 8); + fts_write_doc_id(fts_doc_id->data, doc_id); + } else { + dfield_set_null(fts_doc_id); } } @@ -1168,7 +1190,10 @@ row_get_prebuilt_insert_row( prebuilt->ins_upd_rec_buff = static_cast<byte*>( mem_heap_alloc( prebuilt->heap, - prebuilt->mysql_row_len)); + DICT_TF2_FLAG_IS_SET(prebuilt->table, + DICT_TF2_FTS_HAS_DOC_ID) + ? prebuilt->mysql_row_len + 8/* FTS_DOC_ID */ + : prebuilt->mysql_row_len)); } dtuple_t* row; @@ -3618,6 +3643,16 @@ row_drop_table_for_mysql( ut_ad(!table->fts->add_wq); ut_ad(lock_trx_has_sys_table_locks(trx) == 0); + for (;;) { + bool retry = false; + if (dict_fts_index_syncing(table)) { + retry = true; + } + if (!retry) { + break; + } + DICT_BG_YIELD(trx); + } row_mysql_unlock_data_dictionary(trx); fts_optimize_remove_table(table); row_mysql_lock_data_dictionary(trx); diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index ad583393d23..11823087f1f 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -2946,6 +2946,7 @@ row_sel_field_store_in_mysql_format_func( case DATA_SYS: /* These column types should never be shipped to MySQL. */ ut_ad(0); + /* fall through */ case DATA_CHAR: case DATA_FIXBINARY: @@ -3457,7 +3458,7 @@ row_sel_get_clust_rec_for_mysql( trx_print(stderr, trx, 600); fputs("\n" "InnoDB: Submit a detailed bug report" - " to http://bugs.mysql.com\n", stderr); + " to https://jira.mariadb.org/\n", stderr); ut_ad(0); } diff --git a/storage/innobase/row/row0upd.cc b/storage/innobase/row/row0upd.cc index a61a074e89b..26ee2849be3 100644 --- a/storage/innobase/row/row0upd.cc +++ b/storage/innobase/row/row0upd.cc @@ -2907,8 +2907,7 @@ row_upd_clust_rec( DEBUG_SYNC_C("before_row_upd_extern"); err = btr_store_big_rec_extern_fields( - pcur, node->update, offsets, big_rec, mtr, - BTR_STORE_UPDATE); + pcur, offsets, big_rec, mtr, BTR_STORE_UPDATE); DEBUG_SYNC_C("after_row_upd_extern"); } diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index e7af965ef28..e3a4eb05010 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1891,7 +1891,7 @@ loop: ib::error() << "Old log sequence number " << old_lsn << " was" << " greater than the new log sequence number " << new_lsn << ". Please submit a bug report to" - " http://bugs.mysql.com"; + " https://jira.mariadb.org/"; ut_ad(0); } diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index f16a3f4c178..25a5a964375 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -375,8 +375,7 @@ create_log_file( ib::info() << "Setting log file " << name << " size to " << srv_log_file_size << " bytes"; - ret = os_file_set_size(name, *file, srv_log_file_size, - srv_read_only_mode); + ret = os_file_set_size(name, *file, srv_log_file_size); if (!ret) { ib::error() << "Cannot set log file " << name << " size to " << srv_log_file_size << " bytes"; @@ -395,13 +394,14 @@ create_log_file( /** Delete all log files. @param[in,out] logfilename buffer for log file name @param[in] dirnamelen length of the directory path -@param[in] n_files number of files to delete */ +@param[in] n_files number of files to delete +@param[in] i first file to delete */ static void -delete_log_files(char* logfilename, size_t dirnamelen, unsigned n_files) +delete_log_files(char* logfilename, size_t dirnamelen, uint n_files, uint i=0) { /* Remove any old log files. */ - for (unsigned i = 0; i < n_files; i++) { + for (; i < n_files; i++) { sprintf(logfilename + dirnamelen, "ib_logfile%u", i); /* Ignore errors about non-existent files or files @@ -655,8 +655,7 @@ srv_undo_tablespace_create( << "wait..."; ret = os_file_set_size( - name, fh, size << UNIV_PAGE_SIZE_SHIFT, - srv_read_only_mode); + name, fh, os_offset_t(size) << UNIV_PAGE_SIZE_SHIFT); if (!ret) { ib::info() << "Error in creating " << name @@ -910,6 +909,7 @@ srv_undo_tablespaces_init(bool create_new_db) } /* fall through */ case SRV_OPERATION_RESTORE: + case SRV_OPERATION_RESTORE_EXPORT: ut_ad(!create_new_db); /* Check if any of the UNDO tablespace needs fix-up because @@ -1316,6 +1316,7 @@ srv_shutdown_all_bg_threads() break; case SRV_OPERATION_NORMAL: case SRV_OPERATION_RESTORE: + case SRV_OPERATION_RESTORE_EXPORT: if (!buf_page_cleaner_is_active && os_aio_all_slots_free()) { os_aio_wake_all_threads_at_shutdown(); @@ -1487,7 +1488,8 @@ innobase_start_or_create_for_mysql() unsigned i = 0; ut_ad(srv_operation == SRV_OPERATION_NORMAL - || srv_operation == SRV_OPERATION_RESTORE); + || srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT); if (srv_force_recovery == SRV_FORCE_NO_LOG_REDO) { srv_read_only_mode = true; @@ -1978,7 +1980,9 @@ innobase_start_or_create_for_mysql() if (err == DB_NOT_FOUND) { if (i == 0) { if (srv_operation - == SRV_OPERATION_RESTORE) { + == SRV_OPERATION_RESTORE + || srv_operation + == SRV_OPERATION_RESTORE_EXPORT) { return(DB_SUCCESS); } if (flushed_lsn @@ -2042,6 +2046,26 @@ innobase_start_or_create_for_mysql() } if (i == 0) { + if (size == 0 + && (srv_operation + == SRV_OPERATION_RESTORE + || srv_operation + == SRV_OPERATION_RESTORE_EXPORT)) { + /* Tolerate an empty ib_logfile0 + from a previous run of + mariabackup --prepare. */ + return(DB_SUCCESS); + } + /* The first log file must consist of + at least the following 512-byte pages: + header, checkpoint page 1, empty, + checkpoint page 2, redo log page(s) */ + if (size <= OS_FILE_LOG_BLOCK_SIZE * 4) { + ib::error() << "Log file " + << logfilename << " size " + << size << " is too small"; + return(srv_init_abort(DB_ERROR)); + } srv_log_file_size = size; } else if (size != srv_log_file_size) { @@ -2286,11 +2310,13 @@ files_checked: recv_recovery_from_checkpoint_finish(); - if (srv_operation == SRV_OPERATION_RESTORE) { + if (srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT) { /* After applying the redo log from SRV_OPERATION_BACKUP, flush the changes - to the data files and delete the log file. - No further change to InnoDB files is needed. */ + to the data files and truncate or delete the log. + Unless --export is specified, no further change to + InnoDB files is needed. */ ut_ad(!srv_force_recovery); ut_ad(srv_n_log_files_found <= 1); ut_ad(recv_no_log_write); @@ -2300,8 +2326,18 @@ files_checked: fil_close_log_files(true); log_group_close_all(); if (err == DB_SUCCESS) { + bool trunc = srv_operation + == SRV_OPERATION_RESTORE; + /* Delete subsequent log files. */ delete_log_files(logfilename, dirnamelen, - srv_n_log_files_found); + srv_n_log_files_found, trunc); + if (trunc) { + /* Truncate the first log file. */ + strcpy(logfilename + dirnamelen, + "ib_logfile0"); + FILE* f = fopen(logfilename, "w"); + fclose(f); + } } return(err); } @@ -2745,6 +2781,7 @@ innodb_shutdown() case SRV_OPERATION_BACKUP: case SRV_OPERATION_RESTORE: case SRV_OPERATION_RESTORE_DELTA: + case SRV_OPERATION_RESTORE_EXPORT: fil_close_all_files(); break; case SRV_OPERATION_NORMAL: diff --git a/storage/innobase/sync/sync0rw.cc b/storage/innobase/sync/sync0rw.cc index 328094f5fd3..b7b68f98c19 100644 --- a/storage/innobase/sync/sync0rw.cc +++ b/storage/innobase/sync/sync0rw.cc @@ -84,10 +84,15 @@ lock_word < -(X_LOCK_DECR + X_LOCK_HALF_DECR): 2 - (lock_word + X_LOCK_DECR + X_LOCK_HALF_DECR) LOCK COMPATIBILITY MATRIX - S SX X - S + + - - SX + - - - X - - - + + | S|SX| X| + --+--+--+--+ + S| +| +| -| + --+--+--+--+ + SX| +| -| -| + --+--+--+--+ + X| -| -| -| + --+--+--+--+ The lock_word is always read and updated atomically and consistently, so that it always represents the state of the lock, and the state of the lock changes diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index 1d4668e54f8..738f713298b 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -1166,7 +1166,7 @@ trx_purge_rseg_get_next_history_log( " list, but its length is still reported as " << trx_sys->rseg_history_len << "! Make" " a detailed bug report, and submit it to" - " http://bugs.mysql.com"; + " https://jira.mariadb.org/"; ut_ad(0); } diff --git a/storage/innobase/trx/trx0rec.cc b/storage/innobase/trx/trx0rec.cc index 931d50e4b82..50a321ea68b 100644 --- a/storage/innobase/trx/trx0rec.cc +++ b/storage/innobase/trx/trx0rec.cc @@ -1214,7 +1214,25 @@ trx_undo_page_report_modify( const char* col_name = dict_table_get_col_name(table, col_no); - if (col->ord_part) { + if (!col->ord_part) { + continue; + } + + if (update) { + for (i = 0; i < update->n_fields; i++) { + const ulint field_no + = upd_get_nth_field(update, i) + ->field_no; + if (field_no >= index->n_fields + || dict_index_get_nth_field( + index, field_no)->col + == col) { + goto already_logged; + } + } + } + + if (true) { ulint pos; spatial_status_t spatial_status; @@ -1311,6 +1329,9 @@ trx_undo_page_report_modify( } } } + +already_logged: + continue; } for (col_no = 0; col_no < dict_table_get_n_v_cols(table); diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index 20fed90c712..75131847da5 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -616,10 +616,12 @@ trx_free_prepared( trx_t* trx) /*!< in, own: trx object */ { ut_a(trx_state_eq(trx, TRX_STATE_PREPARED) - || (trx_state_eq(trx, TRX_STATE_ACTIVE) - && trx->is_recovered + || (trx->is_recovered + && (trx_state_eq(trx, TRX_STATE_ACTIVE) + || trx_state_eq(trx, TRX_STATE_COMMITTED_IN_MEMORY)) && (!srv_was_started || srv_operation == SRV_OPERATION_RESTORE + || srv_operation == SRV_OPERATION_RESTORE_EXPORT || srv_read_only_mode || srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO))); ut_a(trx->magic_n == TRX_MAGIC_N); diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc index e193697139a..9b0c43e4609 100644 --- a/storage/innobase/trx/trx0undo.cc +++ b/storage/innobase/trx/trx0undo.cc @@ -116,15 +116,6 @@ trx_undo_mem_create( const XID* xid, /*!< in: X/Open XA transaction identification*/ ulint page_no,/*!< in: undo log header page number */ ulint offset);/*!< in: undo log header byte offset on page */ -/**********************************************************************//** -If an update undo log can be discarded immediately, this function frees the -space, resetting the page to the proper state for caching. */ -static -void -trx_undo_discard_latest_update_undo( -/*================================*/ - page_t* undo_page, /*!< in: header page of an undo log of size 1 */ - mtr_t* mtr); /*!< in: mtr */ /***********************************************************************//** Gets the previous record in an undo log from the previous page. @@ -674,80 +665,6 @@ trx_undo_parse_page_header( return(const_cast<byte*>(ptr)); } -/**********************************************************************//** -Writes the redo log entry of an update undo log header discard. */ -UNIV_INLINE -void -trx_undo_discard_latest_log( -/*========================*/ - page_t* undo_page, /*!< in: undo log header page */ - mtr_t* mtr) /*!< in: mtr */ -{ - mlog_write_initial_log_record(undo_page, MLOG_UNDO_HDR_DISCARD, mtr); -} - -/***********************************************************//** -Parses the redo log entry of an undo log page header discard. -@return end of log record or NULL */ -byte* -trx_undo_parse_discard_latest( -/*==========================*/ - byte* ptr, /*!< in: buffer */ - byte* end_ptr MY_ATTRIBUTE((unused)), /*!< in: buffer end */ - page_t* page, /*!< in: page or NULL */ - mtr_t* mtr) /*!< in: mtr or NULL */ -{ - ut_ad(end_ptr); - - if (page) { - trx_undo_discard_latest_update_undo(page, mtr); - } - - return(ptr); -} - -/**********************************************************************//** -If an update undo log can be discarded immediately, this function frees the -space, resetting the page to the proper state for caching. */ -static -void -trx_undo_discard_latest_update_undo( -/*================================*/ - page_t* undo_page, /*!< in: header page of an undo log of size 1 */ - mtr_t* mtr) /*!< in: mtr */ -{ - trx_usegf_t* seg_hdr; - trx_upagef_t* page_hdr; - trx_ulogf_t* log_hdr; - trx_ulogf_t* prev_log_hdr; - ulint free; - ulint prev_hdr_offset; - - seg_hdr = undo_page + TRX_UNDO_SEG_HDR; - page_hdr = undo_page + TRX_UNDO_PAGE_HDR; - - free = mach_read_from_2(seg_hdr + TRX_UNDO_LAST_LOG); - log_hdr = undo_page + free; - - prev_hdr_offset = mach_read_from_2(log_hdr + TRX_UNDO_PREV_LOG); - - if (prev_hdr_offset != 0) { - prev_log_hdr = undo_page + prev_hdr_offset; - - mach_write_to_2(page_hdr + TRX_UNDO_PAGE_START, - mach_read_from_2(prev_log_hdr - + TRX_UNDO_LOG_START)); - mach_write_to_2(prev_log_hdr + TRX_UNDO_NEXT_LOG, 0); - } - - mach_write_to_2(page_hdr + TRX_UNDO_PAGE_FREE, free); - - mach_write_to_2(seg_hdr + TRX_UNDO_STATE, TRX_UNDO_CACHED); - mach_write_to_2(seg_hdr + TRX_UNDO_LAST_LOG, prev_hdr_offset); - - trx_undo_discard_latest_log(undo_page, mtr); -} - /** Allocate an undo log page. @param[in,out] trx transaction @param[in,out] undo undo log @@ -1677,6 +1594,12 @@ trx_undo_free_prepared( switch (undo->state) { case TRX_UNDO_PREPARED: break; + case TRX_UNDO_CACHED: + case TRX_UNDO_TO_FREE: + case TRX_UNDO_TO_PURGE: + ut_ad(trx_state_eq(trx, + TRX_STATE_COMMITTED_IN_MEMORY)); + /* fall through */ case TRX_UNDO_ACTIVE: /* lock_trx_release_locks() assigns trx->is_recovered=false */ @@ -1697,6 +1620,12 @@ trx_undo_free_prepared( switch (undo->state) { case TRX_UNDO_PREPARED: break; + case TRX_UNDO_CACHED: + case TRX_UNDO_TO_FREE: + case TRX_UNDO_TO_PURGE: + ut_ad(trx_state_eq(trx, + TRX_STATE_COMMITTED_IN_MEMORY)); + /* fall through */ case TRX_UNDO_ACTIVE: /* lock_trx_release_locks() assigns trx->is_recovered=false */ diff --git a/storage/innobase/ut/ut0dbg.cc b/storage/innobase/ut/ut0dbg.cc index 28643645de9..9e596dcda81 100644 --- a/storage/innobase/ut/ut0dbg.cc +++ b/storage/innobase/ut/ut0dbg.cc @@ -48,7 +48,7 @@ ut_dbg_assertion_failed( fputs("InnoDB: We intentionally generate a memory trap.\n" "InnoDB: Submit a detailed bug report" - " to http://bugs.mysql.com.\n" + " to https://jira.mariadb.org/\n" "InnoDB: If you get repeated assertion failures" " or crashes, even\n" "InnoDB: immediately after the mysqld startup, there may be\n" diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c index adfa53ee24b..0933ca7d736 100644 --- a/storage/maria/ma_checkpoint.c +++ b/storage/maria/ma_checkpoint.c @@ -332,8 +332,8 @@ int ma_checkpoint_init(ulong interval) res= 1; else if (interval > 0) { - compile_time_assert(sizeof(void *) >= sizeof(ulong)); size_t intv= interval; + compile_time_assert(sizeof(void *) >= sizeof(ulong)); if ((res= mysql_thread_create(key_thread_checkpoint, &checkpoint_control.thread, NULL, ma_checkpoint_background, diff --git a/storage/maria/ma_extra.c b/storage/maria/ma_extra.c index 1db81a0ee1b..41261b1422e 100644 --- a/storage/maria/ma_extra.c +++ b/storage/maria/ma_extra.c @@ -314,7 +314,7 @@ int maria_extra(MARIA_HA *info, enum ha_extra_function function, share->state.open_count= 1; share->changed= 1; _ma_mark_file_changed_now(share); - /* Fall through */ + /* fall through */ case HA_EXTRA_PREPARE_FOR_RENAME: { my_bool do_flush= MY_TEST(function != HA_EXTRA_PREPARE_FOR_DROP); @@ -661,4 +661,3 @@ my_bool ma_killed_standalone(MARIA_HA *info __attribute__((unused))) { return 0; } - diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 7f0ac64afd1..d3a0531c73d 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -2727,7 +2727,7 @@ static my_bool translog_recover_page_up_to_sector(uchar *page, uint16 offset) DBUG_PRINT("enter", ("offset: %u first chunk: %u", (uint) offset, (uint) chunk_offset)); - while (page[chunk_offset] != TRANSLOG_FILLER && chunk_offset < offset) + while (chunk_offset < offset && page[chunk_offset] != TRANSLOG_FILLER) { uint16 chunk_length; if ((chunk_length= diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 256cb2b45b2..ad1df75f19e 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -3058,7 +3058,7 @@ static MARIA_HA *get_MARIA_HA_from_REDO_record(const case LOGREC_REDO_INDEX: case LOGREC_REDO_INDEX_FREE_PAGE: index_page_redo_entry= 1; - /* Fall through */ + /* fall through*/ case LOGREC_REDO_INSERT_ROW_HEAD: case LOGREC_REDO_INSERT_ROW_TAIL: case LOGREC_REDO_PURGE_ROW_HEAD: diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt index 39dad9ce16b..a9f9d7cc8b2 100644 --- a/storage/mroonga/CMakeLists.txt +++ b/storage/mroonga/CMakeLists.txt @@ -343,6 +343,7 @@ else() MY_CHECK_AND_SET_COMPILER_FLAG("-fno-exceptions") MY_CHECK_AND_SET_COMPILER_FLAG("-fno-rtti") MY_CHECK_AND_SET_COMPILER_FLAG("-felide-constructors") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") endif() set_source_files_properties(${MRN_SOURCES} PROPERTIES COMPILE_FLAGS "${MYSQL_CFLAGS} ${MRN_CXX_COMPILE_FLAGS}") diff --git a/storage/mroonga/vendor/groonga/CMakeLists.txt b/storage/mroonga/vendor/groonga/CMakeLists.txt index 2d8a59fa664..6c448a4e606 100644 --- a/storage/mroonga/vendor/groonga/CMakeLists.txt +++ b/storage/mroonga/vendor/groonga/CMakeLists.txt @@ -154,7 +154,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGCXX) MY_CHECK_AND_SET_COMPILER_FLAG("-Wformat=2") MY_CHECK_AND_SET_COMPILER_FLAG("-Wstrict-aliasing=2") MY_CHECK_AND_SET_COMPILER_FLAG("-fno-strict-aliasing") - MY_CHECK_AND_SET_COMPILER_FLAG("-Wdisabled-optimization") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-disabled-optimization") MY_CHECK_AND_SET_COMPILER_FLAG("-Wfloat-equal") MY_CHECK_AND_SET_COMPILER_FLAG("-Wpointer-arith") MY_CHECK_AND_SET_COMPILER_FLAG("-Wdeclaration-after-statement") @@ -165,6 +165,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGCXX) MY_CHECK_AND_SET_COMPILER_FLAG("-fexceptions") MY_CHECK_AND_SET_COMPILER_FLAG("-fimplicit-templates") MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-clobbered") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") endif() if(NOT DEFINED CMAKE_C_COMPILE_OPTIONS_PIC) diff --git a/storage/mroonga/vendor/groonga/lib/dat/cursor-factory.cpp b/storage/mroonga/vendor/groonga/lib/dat/cursor-factory.cpp index 6dab51a2978..7276c148796 100644 --- a/storage/mroonga/vendor/groonga/lib/dat/cursor-factory.cpp +++ b/storage/mroonga/vendor/groonga/lib/dat/cursor-factory.cpp @@ -32,7 +32,6 @@ Cursor *CursorFactory::open(const Trie &trie, UInt32 offset, UInt32 limit, UInt32 flags) { - GRN_DAT_THROW_IF(PARAM_ERROR, &trie == NULL); const UInt32 cursor_type = flags & CURSOR_TYPE_MASK; switch (cursor_type) { diff --git a/storage/mroonga/vendor/groonga/lib/tokenizers.c b/storage/mroonga/vendor/groonga/lib/tokenizers.c index 28fd13c33c4..c5f112fa8cd 100644 --- a/storage/mroonga/vendor/groonga/lib/tokenizers.c +++ b/storage/mroonga/vendor/groonga/lib/tokenizers.c @@ -544,7 +544,7 @@ regexp_next(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) grn_obj *buffer = &(tokenizer->buffer); const char *current = tokenizer->next; const char *end = tokenizer->end; - const const uint_least8_t *char_types = tokenizer->char_types; + const uint_least8_t *char_types = tokenizer->char_types; grn_tokenize_mode mode = tokenizer->query->tokenize_mode; grn_bool is_begin = tokenizer->is_begin; grn_bool is_start_token = tokenizer->is_start_token; diff --git a/storage/myisam/mi_extra.c b/storage/myisam/mi_extra.c index d0ec858439c..c10bf61a477 100644 --- a/storage/myisam/mi_extra.c +++ b/storage/myisam/mi_extra.c @@ -263,7 +263,7 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg) share->deleting= TRUE; share->global_changed= FALSE; /* force writing changed flag */ _mi_mark_file_changed(info); - /* Fall through */ + /* fall through */ case HA_EXTRA_PREPARE_FOR_RENAME: DBUG_ASSERT(!share->temporary); mysql_mutex_lock(&THR_LOCK_myisam); diff --git a/storage/oqgraph/graphcore.cc b/storage/oqgraph/graphcore.cc index fb2b105f2fd..bf454aa3333 100644 --- a/storage/oqgraph/graphcore.cc +++ b/storage/oqgraph/graphcore.cc @@ -891,18 +891,18 @@ namespace open_query boost::unordered_map<Vertex, Vertex> p; boost::unordered_map<Vertex, EdgeWeight> d; boost::queue<Vertex> Q; - reverse_graph<Graph> r(share->g); + const reverse_graph<Graph> r(share->g); p[ *dest ]= *dest; d[ *dest ] = EdgeWeight(); switch (ALGORITHM & op) { case DIJKSTRAS: - dijkstra_shortest_paths_no_init(share->g, *dest, + dijkstra_shortest_paths_no_init(r, *dest, make_lazy_property_map(p, identity_initializer<Vertex>()), make_lazy_property_map(d, value_initializer<EdgeWeight>( (std::numeric_limits<EdgeWeight>::max)())), - get(edge_weight, share->g), - get(vertex_index, share->g), + get(edge_weight, r), + get(vertex_index, r), std::less<EdgeWeight>(), closed_plus<EdgeWeight>(), EdgeWeight(), @@ -913,10 +913,10 @@ namespace open_query static_cast<stack_cursor*>(cursor) ) ), - make_two_bit_judy_map(get(vertex_index, share->g))); + make_two_bit_judy_map(get(vertex_index, r))); break; case BREADTH_FIRST: - breadth_first_visit(share->g, *dest, Q, + breadth_first_visit(r, *dest, Q, make_bfs_visitor( std::make_pair( record_predecessors( @@ -935,7 +935,7 @@ namespace open_query ) )) ), - make_two_bit_judy_map(get(vertex_index, share->g))); + make_two_bit_judy_map(get(vertex_index, r))); break; default: abort(); diff --git a/storage/oqgraph/mysql-test/oqgraph/general-Aria.result b/storage/oqgraph/mysql-test/oqgraph/general-Aria.result index a35b5182611..e527705045f 100644 --- a/storage/oqgraph/mysql-test/oqgraph/general-Aria.result +++ b/storage/oqgraph/mysql-test/oqgraph/general-Aria.result @@ -455,16 +455,16 @@ breadth_first NULL 4 1 2 3 breadth_first NULL 4 0 1 4 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 breadth_first NULL 5 0 1 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 breadth_first NULL 6 1 2 5 breadth_first NULL 6 0 1 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 +breadth_first NULL 7 1 2 5 breadth_first NULL 7 0 1 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8; latch origid destid weight seq linkid @@ -473,18 +473,18 @@ latch origid destid weight seq linkid breadth_first NULL 9 0 1 9 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 2 3 11 +breadth_first NULL 10 1 2 12 breadth_first NULL 10 0 1 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 2 3 12 +breadth_first NULL 11 1 2 10 breadth_first NULL 11 0 1 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 2 3 10 +breadth_first NULL 12 1 2 11 breadth_first NULL 12 0 1 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -502,26 +502,26 @@ latch origid destid weight seq linkid breadth_first NULL 4 1 2 3 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1; latch origid destid weight seq linkid breadth_first NULL 6 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +breadth_first NULL 7 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 1 2 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 1 2 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 1 2 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2; latch origid destid weight seq linkid breadth_first NULL 1 2 4 4 @@ -538,22 +538,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 +breadth_first NULL 10 2 3 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 +breadth_first NULL 11 2 3 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 +breadth_first NULL 12 2 3 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3; @@ -847,16 +847,16 @@ latch origid destid weight seq linkid 2 NULL 4 0 1 4 SELECT * FROM graph WHERE latch = '2' AND destid = 5; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 2 NULL 5 0 1 5 SELECT * FROM graph WHERE latch = '2' AND destid = 6; latch origid destid weight seq linkid -2 NULL 6 2 3 7 2 NULL 6 1 2 5 2 NULL 6 0 1 6 SELECT * FROM graph WHERE latch = '2' AND destid = 7; latch origid destid weight seq linkid +2 NULL 7 2 3 6 +2 NULL 7 1 2 5 2 NULL 7 0 1 7 SELECT * FROM graph WHERE latch = '2' AND destid = 8; latch origid destid weight seq linkid @@ -865,18 +865,18 @@ latch origid destid weight seq linkid 2 NULL 9 0 1 9 SELECT * FROM graph WHERE latch = '2' AND destid = 10; latch origid destid weight seq linkid -2 NULL 10 2 3 12 -2 NULL 10 1 2 11 +2 NULL 10 2 3 11 +2 NULL 10 1 2 12 2 NULL 10 0 1 10 SELECT * FROM graph WHERE latch = '2' AND destid = 11; latch origid destid weight seq linkid -2 NULL 11 2 3 10 -2 NULL 11 1 2 12 +2 NULL 11 2 3 12 +2 NULL 11 1 2 10 2 NULL 11 0 1 11 SELECT * FROM graph WHERE latch = '2' AND destid = 12; latch origid destid weight seq linkid -2 NULL 12 2 3 11 -2 NULL 12 1 2 10 +2 NULL 12 2 3 10 +2 NULL 12 1 2 11 2 NULL 12 0 1 12 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -894,26 +894,26 @@ latch origid destid weight seq linkid 2 NULL 4 1 2 3 SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 1; latch origid destid weight seq linkid 2 NULL 6 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +2 NULL 7 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -2 NULL 10 1 2 11 +2 NULL 10 1 2 12 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -2 NULL 11 1 2 12 +2 NULL 11 1 2 10 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -2 NULL 12 1 2 10 +2 NULL 12 1 2 11 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 2; latch origid destid weight seq linkid 2 NULL 1 2 4 4 @@ -930,22 +930,22 @@ SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -2 NULL 6 2 3 7 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +2 NULL 7 2 3 6 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -2 NULL 10 2 3 12 +2 NULL 10 2 3 11 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -2 NULL 11 2 3 10 +2 NULL 11 2 3 12 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -2 NULL 12 2 3 11 +2 NULL 12 2 3 10 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 2 and weight = 3; @@ -1124,16 +1124,16 @@ dijkstras NULL 4 1 2 3 dijkstras NULL 4 0 1 4 SELECT * FROM graph WHERE latch='dijkstras' AND destid=5; latch origid destid weight seq linkid -dijkstras NULL 5 1 3 7 dijkstras NULL 5 1 2 6 dijkstras NULL 5 0 1 5 SELECT * FROM graph WHERE latch='dijkstras' AND destid=6; latch origid destid weight seq linkid -dijkstras NULL 6 2 3 7 dijkstras NULL 6 1 2 5 dijkstras NULL 6 0 1 6 SELECT * FROM graph WHERE latch='dijkstras' AND destid=7; latch origid destid weight seq linkid +dijkstras NULL 7 2 3 6 +dijkstras NULL 7 1 2 5 dijkstras NULL 7 0 1 7 SELECT * FROM graph WHERE latch='dijkstras' AND destid=8; latch origid destid weight seq linkid @@ -1142,18 +1142,18 @@ latch origid destid weight seq linkid dijkstras NULL 9 0 1 9 SELECT * FROM graph WHERE latch='dijkstras' AND destid=10; latch origid destid weight seq linkid -dijkstras NULL 10 2 3 12 -dijkstras NULL 10 1 2 11 +dijkstras NULL 10 2 3 11 +dijkstras NULL 10 1 2 12 dijkstras NULL 10 0 1 10 SELECT * FROM graph WHERE latch='dijkstras' AND destid=11; latch origid destid weight seq linkid -dijkstras NULL 11 2 3 10 -dijkstras NULL 11 1 2 12 +dijkstras NULL 11 2 3 12 +dijkstras NULL 11 1 2 10 dijkstras NULL 11 0 1 11 SELECT * FROM graph WHERE latch='dijkstras' AND destid=12; latch origid destid weight seq linkid -dijkstras NULL 12 2 3 11 -dijkstras NULL 12 1 2 10 +dijkstras NULL 12 2 3 10 +dijkstras NULL 12 1 2 11 dijkstras NULL 12 0 1 12 # legacy string number SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1; @@ -1299,16 +1299,16 @@ latch origid destid weight seq linkid 1 NULL 4 0 1 4 SELECT * FROM graph WHERE latch='1' AND destid=5; latch origid destid weight seq linkid -1 NULL 5 1 3 7 1 NULL 5 1 2 6 1 NULL 5 0 1 5 SELECT * FROM graph WHERE latch='1' AND destid=6; latch origid destid weight seq linkid -1 NULL 6 2 3 7 1 NULL 6 1 2 5 1 NULL 6 0 1 6 SELECT * FROM graph WHERE latch='1' AND destid=7; latch origid destid weight seq linkid +1 NULL 7 2 3 6 +1 NULL 7 1 2 5 1 NULL 7 0 1 7 SELECT * FROM graph WHERE latch='1' AND destid=8; latch origid destid weight seq linkid @@ -1317,18 +1317,18 @@ latch origid destid weight seq linkid 1 NULL 9 0 1 9 SELECT * FROM graph WHERE latch='1' AND destid=10; latch origid destid weight seq linkid -1 NULL 10 2 3 12 -1 NULL 10 1 2 11 +1 NULL 10 2 3 11 +1 NULL 10 1 2 12 1 NULL 10 0 1 10 SELECT * FROM graph WHERE latch='1' AND destid=11; latch origid destid weight seq linkid -1 NULL 11 2 3 10 -1 NULL 11 1 2 12 +1 NULL 11 2 3 12 +1 NULL 11 1 2 10 1 NULL 11 0 1 11 SELECT * FROM graph WHERE latch='1' AND destid=12; latch origid destid weight seq linkid -1 NULL 12 2 3 11 -1 NULL 12 1 2 10 +1 NULL 12 2 3 10 +1 NULL 12 1 2 11 1 NULL 12 0 1 12 INSERT INTO graph_base(from_id, to_id) VALUES (11,13); INSERT INTO graph_base(from_id, to_id) VALUES (10,14); @@ -1395,9 +1395,6 @@ dijkstras 1 NULL 1 2 2 dijkstras 1 NULL 0 1 1 SELECT * FROM graph WHERE latch='dijkstras' AND destid=1; latch origid destid weight seq linkid -dijkstras NULL 1 4 7 18 -dijkstras NULL 1 3 6 17 -dijkstras NULL 1 3 5 16 dijkstras NULL 1 2 4 4 dijkstras NULL 1 1 3 3 dijkstras NULL 1 1 2 2 diff --git a/storage/oqgraph/mysql-test/oqgraph/general-MyISAM.result b/storage/oqgraph/mysql-test/oqgraph/general-MyISAM.result index f12e160a2b7..bbf660e7db4 100644 --- a/storage/oqgraph/mysql-test/oqgraph/general-MyISAM.result +++ b/storage/oqgraph/mysql-test/oqgraph/general-MyISAM.result @@ -455,16 +455,16 @@ breadth_first NULL 4 1 2 3 breadth_first NULL 4 0 1 4 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 breadth_first NULL 5 0 1 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 breadth_first NULL 6 1 2 5 breadth_first NULL 6 0 1 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 +breadth_first NULL 7 1 2 5 breadth_first NULL 7 0 1 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8; latch origid destid weight seq linkid @@ -473,18 +473,18 @@ latch origid destid weight seq linkid breadth_first NULL 9 0 1 9 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 2 3 11 +breadth_first NULL 10 1 2 12 breadth_first NULL 10 0 1 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 2 3 12 +breadth_first NULL 11 1 2 10 breadth_first NULL 11 0 1 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 2 3 10 +breadth_first NULL 12 1 2 11 breadth_first NULL 12 0 1 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -502,26 +502,26 @@ latch origid destid weight seq linkid breadth_first NULL 4 1 2 3 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1; latch origid destid weight seq linkid breadth_first NULL 6 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +breadth_first NULL 7 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 1 2 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 1 2 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 1 2 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2; latch origid destid weight seq linkid breadth_first NULL 1 2 4 4 @@ -538,22 +538,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 +breadth_first NULL 10 2 3 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 +breadth_first NULL 11 2 3 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 +breadth_first NULL 12 2 3 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3; @@ -847,16 +847,16 @@ latch origid destid weight seq linkid 2 NULL 4 0 1 4 SELECT * FROM graph WHERE latch = '2' AND destid = 5; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 2 NULL 5 0 1 5 SELECT * FROM graph WHERE latch = '2' AND destid = 6; latch origid destid weight seq linkid -2 NULL 6 2 3 7 2 NULL 6 1 2 5 2 NULL 6 0 1 6 SELECT * FROM graph WHERE latch = '2' AND destid = 7; latch origid destid weight seq linkid +2 NULL 7 2 3 6 +2 NULL 7 1 2 5 2 NULL 7 0 1 7 SELECT * FROM graph WHERE latch = '2' AND destid = 8; latch origid destid weight seq linkid @@ -865,18 +865,18 @@ latch origid destid weight seq linkid 2 NULL 9 0 1 9 SELECT * FROM graph WHERE latch = '2' AND destid = 10; latch origid destid weight seq linkid -2 NULL 10 2 3 12 -2 NULL 10 1 2 11 +2 NULL 10 2 3 11 +2 NULL 10 1 2 12 2 NULL 10 0 1 10 SELECT * FROM graph WHERE latch = '2' AND destid = 11; latch origid destid weight seq linkid -2 NULL 11 2 3 10 -2 NULL 11 1 2 12 +2 NULL 11 2 3 12 +2 NULL 11 1 2 10 2 NULL 11 0 1 11 SELECT * FROM graph WHERE latch = '2' AND destid = 12; latch origid destid weight seq linkid -2 NULL 12 2 3 11 -2 NULL 12 1 2 10 +2 NULL 12 2 3 10 +2 NULL 12 1 2 11 2 NULL 12 0 1 12 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -894,26 +894,26 @@ latch origid destid weight seq linkid 2 NULL 4 1 2 3 SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 1; latch origid destid weight seq linkid 2 NULL 6 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +2 NULL 7 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -2 NULL 10 1 2 11 +2 NULL 10 1 2 12 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -2 NULL 11 1 2 12 +2 NULL 11 1 2 10 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -2 NULL 12 1 2 10 +2 NULL 12 1 2 11 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 2; latch origid destid weight seq linkid 2 NULL 1 2 4 4 @@ -930,22 +930,22 @@ SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -2 NULL 6 2 3 7 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +2 NULL 7 2 3 6 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -2 NULL 10 2 3 12 +2 NULL 10 2 3 11 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -2 NULL 11 2 3 10 +2 NULL 11 2 3 12 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -2 NULL 12 2 3 11 +2 NULL 12 2 3 10 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 2 and weight = 3; @@ -1124,16 +1124,16 @@ dijkstras NULL 4 1 2 3 dijkstras NULL 4 0 1 4 SELECT * FROM graph WHERE latch='dijkstras' AND destid=5; latch origid destid weight seq linkid -dijkstras NULL 5 1 3 7 dijkstras NULL 5 1 2 6 dijkstras NULL 5 0 1 5 SELECT * FROM graph WHERE latch='dijkstras' AND destid=6; latch origid destid weight seq linkid -dijkstras NULL 6 2 3 7 dijkstras NULL 6 1 2 5 dijkstras NULL 6 0 1 6 SELECT * FROM graph WHERE latch='dijkstras' AND destid=7; latch origid destid weight seq linkid +dijkstras NULL 7 2 3 6 +dijkstras NULL 7 1 2 5 dijkstras NULL 7 0 1 7 SELECT * FROM graph WHERE latch='dijkstras' AND destid=8; latch origid destid weight seq linkid @@ -1142,18 +1142,18 @@ latch origid destid weight seq linkid dijkstras NULL 9 0 1 9 SELECT * FROM graph WHERE latch='dijkstras' AND destid=10; latch origid destid weight seq linkid -dijkstras NULL 10 2 3 12 -dijkstras NULL 10 1 2 11 +dijkstras NULL 10 2 3 11 +dijkstras NULL 10 1 2 12 dijkstras NULL 10 0 1 10 SELECT * FROM graph WHERE latch='dijkstras' AND destid=11; latch origid destid weight seq linkid -dijkstras NULL 11 2 3 10 -dijkstras NULL 11 1 2 12 +dijkstras NULL 11 2 3 12 +dijkstras NULL 11 1 2 10 dijkstras NULL 11 0 1 11 SELECT * FROM graph WHERE latch='dijkstras' AND destid=12; latch origid destid weight seq linkid -dijkstras NULL 12 2 3 11 -dijkstras NULL 12 1 2 10 +dijkstras NULL 12 2 3 10 +dijkstras NULL 12 1 2 11 dijkstras NULL 12 0 1 12 # legacy string number SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1; @@ -1299,16 +1299,16 @@ latch origid destid weight seq linkid 1 NULL 4 0 1 4 SELECT * FROM graph WHERE latch='1' AND destid=5; latch origid destid weight seq linkid -1 NULL 5 1 3 7 1 NULL 5 1 2 6 1 NULL 5 0 1 5 SELECT * FROM graph WHERE latch='1' AND destid=6; latch origid destid weight seq linkid -1 NULL 6 2 3 7 1 NULL 6 1 2 5 1 NULL 6 0 1 6 SELECT * FROM graph WHERE latch='1' AND destid=7; latch origid destid weight seq linkid +1 NULL 7 2 3 6 +1 NULL 7 1 2 5 1 NULL 7 0 1 7 SELECT * FROM graph WHERE latch='1' AND destid=8; latch origid destid weight seq linkid @@ -1317,18 +1317,18 @@ latch origid destid weight seq linkid 1 NULL 9 0 1 9 SELECT * FROM graph WHERE latch='1' AND destid=10; latch origid destid weight seq linkid -1 NULL 10 2 3 12 -1 NULL 10 1 2 11 +1 NULL 10 2 3 11 +1 NULL 10 1 2 12 1 NULL 10 0 1 10 SELECT * FROM graph WHERE latch='1' AND destid=11; latch origid destid weight seq linkid -1 NULL 11 2 3 10 -1 NULL 11 1 2 12 +1 NULL 11 2 3 12 +1 NULL 11 1 2 10 1 NULL 11 0 1 11 SELECT * FROM graph WHERE latch='1' AND destid=12; latch origid destid weight seq linkid -1 NULL 12 2 3 11 -1 NULL 12 1 2 10 +1 NULL 12 2 3 10 +1 NULL 12 1 2 11 1 NULL 12 0 1 12 INSERT INTO graph_base(from_id, to_id) VALUES (11,13); INSERT INTO graph_base(from_id, to_id) VALUES (10,14); @@ -1395,9 +1395,6 @@ dijkstras 1 NULL 1 2 2 dijkstras 1 NULL 0 1 1 SELECT * FROM graph WHERE latch='dijkstras' AND destid=1; latch origid destid weight seq linkid -dijkstras NULL 1 4 7 18 -dijkstras NULL 1 3 6 17 -dijkstras NULL 1 3 5 16 dijkstras NULL 1 2 4 4 dijkstras NULL 1 1 3 3 dijkstras NULL 1 1 2 2 diff --git a/storage/oqgraph/mysql-test/oqgraph/general-innodb.result b/storage/oqgraph/mysql-test/oqgraph/general-innodb.result index b390dd38e34..927d856bc84 100644 --- a/storage/oqgraph/mysql-test/oqgraph/general-innodb.result +++ b/storage/oqgraph/mysql-test/oqgraph/general-innodb.result @@ -455,16 +455,16 @@ breadth_first NULL 4 1 2 3 breadth_first NULL 4 0 1 4 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 breadth_first NULL 5 0 1 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 breadth_first NULL 6 1 2 5 breadth_first NULL 6 0 1 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 +breadth_first NULL 7 1 2 5 breadth_first NULL 7 0 1 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8; latch origid destid weight seq linkid @@ -473,18 +473,18 @@ latch origid destid weight seq linkid breadth_first NULL 9 0 1 9 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 2 3 11 +breadth_first NULL 10 1 2 12 breadth_first NULL 10 0 1 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 2 3 12 +breadth_first NULL 11 1 2 10 breadth_first NULL 11 0 1 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 2 3 10 +breadth_first NULL 12 1 2 11 breadth_first NULL 12 0 1 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -502,26 +502,26 @@ latch origid destid weight seq linkid breadth_first NULL 4 1 2 3 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1; latch origid destid weight seq linkid breadth_first NULL 6 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +breadth_first NULL 7 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 1 2 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 1 2 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 1 2 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2; latch origid destid weight seq linkid breadth_first NULL 1 2 4 4 @@ -538,22 +538,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 +breadth_first NULL 10 2 3 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 +breadth_first NULL 11 2 3 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 +breadth_first NULL 12 2 3 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3; @@ -847,16 +847,16 @@ latch origid destid weight seq linkid 2 NULL 4 0 1 4 SELECT * FROM graph WHERE latch = '2' AND destid = 5; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 2 NULL 5 0 1 5 SELECT * FROM graph WHERE latch = '2' AND destid = 6; latch origid destid weight seq linkid -2 NULL 6 2 3 7 2 NULL 6 1 2 5 2 NULL 6 0 1 6 SELECT * FROM graph WHERE latch = '2' AND destid = 7; latch origid destid weight seq linkid +2 NULL 7 2 3 6 +2 NULL 7 1 2 5 2 NULL 7 0 1 7 SELECT * FROM graph WHERE latch = '2' AND destid = 8; latch origid destid weight seq linkid @@ -865,18 +865,18 @@ latch origid destid weight seq linkid 2 NULL 9 0 1 9 SELECT * FROM graph WHERE latch = '2' AND destid = 10; latch origid destid weight seq linkid -2 NULL 10 2 3 12 -2 NULL 10 1 2 11 +2 NULL 10 2 3 11 +2 NULL 10 1 2 12 2 NULL 10 0 1 10 SELECT * FROM graph WHERE latch = '2' AND destid = 11; latch origid destid weight seq linkid -2 NULL 11 2 3 10 -2 NULL 11 1 2 12 +2 NULL 11 2 3 12 +2 NULL 11 1 2 10 2 NULL 11 0 1 11 SELECT * FROM graph WHERE latch = '2' AND destid = 12; latch origid destid weight seq linkid -2 NULL 12 2 3 11 -2 NULL 12 1 2 10 +2 NULL 12 2 3 10 +2 NULL 12 1 2 11 2 NULL 12 0 1 12 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -894,26 +894,26 @@ latch origid destid weight seq linkid 2 NULL 4 1 2 3 SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -2 NULL 5 1 3 7 2 NULL 5 1 2 6 SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 1; latch origid destid weight seq linkid 2 NULL 6 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +2 NULL 7 1 2 5 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -2 NULL 10 1 2 11 +2 NULL 10 1 2 12 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -2 NULL 11 1 2 12 +2 NULL 11 1 2 10 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -2 NULL 12 1 2 10 +2 NULL 12 1 2 11 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 2; latch origid destid weight seq linkid 2 NULL 1 2 4 4 @@ -930,22 +930,22 @@ SELECT * FROM graph WHERE latch = '2' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -2 NULL 6 2 3 7 SELECT * FROM graph WHERE latch = '2' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +2 NULL 7 2 3 6 SELECT * FROM graph WHERE latch = '2' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -2 NULL 10 2 3 12 +2 NULL 10 2 3 11 SELECT * FROM graph WHERE latch = '2' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -2 NULL 11 2 3 10 +2 NULL 11 2 3 12 SELECT * FROM graph WHERE latch = '2' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -2 NULL 12 2 3 11 +2 NULL 12 2 3 10 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = '2' AND destid = 2 and weight = 3; @@ -1124,16 +1124,16 @@ dijkstras NULL 4 1 2 3 dijkstras NULL 4 0 1 4 SELECT * FROM graph WHERE latch='dijkstras' AND destid=5; latch origid destid weight seq linkid -dijkstras NULL 5 1 3 7 dijkstras NULL 5 1 2 6 dijkstras NULL 5 0 1 5 SELECT * FROM graph WHERE latch='dijkstras' AND destid=6; latch origid destid weight seq linkid -dijkstras NULL 6 2 3 7 dijkstras NULL 6 1 2 5 dijkstras NULL 6 0 1 6 SELECT * FROM graph WHERE latch='dijkstras' AND destid=7; latch origid destid weight seq linkid +dijkstras NULL 7 2 3 6 +dijkstras NULL 7 1 2 5 dijkstras NULL 7 0 1 7 SELECT * FROM graph WHERE latch='dijkstras' AND destid=8; latch origid destid weight seq linkid @@ -1142,18 +1142,18 @@ latch origid destid weight seq linkid dijkstras NULL 9 0 1 9 SELECT * FROM graph WHERE latch='dijkstras' AND destid=10; latch origid destid weight seq linkid -dijkstras NULL 10 2 3 12 -dijkstras NULL 10 1 2 11 +dijkstras NULL 10 2 3 11 +dijkstras NULL 10 1 2 12 dijkstras NULL 10 0 1 10 SELECT * FROM graph WHERE latch='dijkstras' AND destid=11; latch origid destid weight seq linkid -dijkstras NULL 11 2 3 10 -dijkstras NULL 11 1 2 12 +dijkstras NULL 11 2 3 12 +dijkstras NULL 11 1 2 10 dijkstras NULL 11 0 1 11 SELECT * FROM graph WHERE latch='dijkstras' AND destid=12; latch origid destid weight seq linkid -dijkstras NULL 12 2 3 11 -dijkstras NULL 12 1 2 10 +dijkstras NULL 12 2 3 10 +dijkstras NULL 12 1 2 11 dijkstras NULL 12 0 1 12 # legacy string number SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1; @@ -1299,16 +1299,16 @@ latch origid destid weight seq linkid 1 NULL 4 0 1 4 SELECT * FROM graph WHERE latch='1' AND destid=5; latch origid destid weight seq linkid -1 NULL 5 1 3 7 1 NULL 5 1 2 6 1 NULL 5 0 1 5 SELECT * FROM graph WHERE latch='1' AND destid=6; latch origid destid weight seq linkid -1 NULL 6 2 3 7 1 NULL 6 1 2 5 1 NULL 6 0 1 6 SELECT * FROM graph WHERE latch='1' AND destid=7; latch origid destid weight seq linkid +1 NULL 7 2 3 6 +1 NULL 7 1 2 5 1 NULL 7 0 1 7 SELECT * FROM graph WHERE latch='1' AND destid=8; latch origid destid weight seq linkid @@ -1317,18 +1317,18 @@ latch origid destid weight seq linkid 1 NULL 9 0 1 9 SELECT * FROM graph WHERE latch='1' AND destid=10; latch origid destid weight seq linkid -1 NULL 10 2 3 12 -1 NULL 10 1 2 11 +1 NULL 10 2 3 11 +1 NULL 10 1 2 12 1 NULL 10 0 1 10 SELECT * FROM graph WHERE latch='1' AND destid=11; latch origid destid weight seq linkid -1 NULL 11 2 3 10 -1 NULL 11 1 2 12 +1 NULL 11 2 3 12 +1 NULL 11 1 2 10 1 NULL 11 0 1 11 SELECT * FROM graph WHERE latch='1' AND destid=12; latch origid destid weight seq linkid -1 NULL 12 2 3 11 -1 NULL 12 1 2 10 +1 NULL 12 2 3 10 +1 NULL 12 1 2 11 1 NULL 12 0 1 12 INSERT INTO graph_base(from_id, to_id) VALUES (11,13); INSERT INTO graph_base(from_id, to_id) VALUES (10,14); @@ -1395,9 +1395,6 @@ dijkstras 1 NULL 1 2 2 dijkstras 1 NULL 0 1 1 SELECT * FROM graph WHERE latch='dijkstras' AND destid=1; latch origid destid weight seq linkid -dijkstras NULL 1 4 7 18 -dijkstras NULL 1 3 6 17 -dijkstras NULL 1 3 5 16 dijkstras NULL 1 2 4 4 dijkstras NULL 1 1 3 3 dijkstras NULL 1 1 2 2 diff --git a/storage/oqgraph/mysql-test/oqgraph/regression_1196036.result b/storage/oqgraph/mysql-test/oqgraph/regression_1196036.result index 45bbccfa87e..c372a0c088f 100644 --- a/storage/oqgraph/mysql-test/oqgraph/regression_1196036.result +++ b/storage/oqgraph/mysql-test/oqgraph/regression_1196036.result @@ -41,19 +41,19 @@ dijkstras 3 NULL 256 2 2 dijkstras 3 NULL 0 1 3 SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 1; latch origid destid weight seq linkid -dijkstras NULL 1 784 4 4 +dijkstras NULL 1 65808 4 4 dijkstras NULL 1 272 3 3 dijkstras NULL 1 16 2 2 dijkstras NULL 1 0 1 1 SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 2; latch origid destid weight seq linkid -dijkstras NULL 2 768 4 4 +dijkstras NULL 2 65792 4 4 dijkstras NULL 2 256 3 3 dijkstras NULL 2 16 2 1 dijkstras NULL 2 0 1 2 SELECT * FROM graph WHERE latch = 'dijkstras' AND destid = 3; latch origid destid weight seq linkid -dijkstras NULL 3 1024 4 4 +dijkstras NULL 3 65536 4 4 dijkstras NULL 3 272 3 1 dijkstras NULL 3 256 2 2 dijkstras NULL 3 0 1 3 diff --git a/storage/oqgraph/mysql-test/oqgraph/regression_1213120.result b/storage/oqgraph/mysql-test/oqgraph/regression_1213120.result index b6cd53ab673..642c0aa3b5d 100644 --- a/storage/oqgraph/mysql-test/oqgraph/regression_1213120.result +++ b/storage/oqgraph/mysql-test/oqgraph/regression_1213120.result @@ -464,16 +464,16 @@ breadth_first NULL 4 1 2 3 breadth_first NULL 4 0 1 4 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 breadth_first NULL 5 0 1 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 breadth_first NULL 6 1 2 5 breadth_first NULL 6 0 1 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 +breadth_first NULL 7 1 2 5 breadth_first NULL 7 0 1 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8; latch origid destid weight seq linkid @@ -482,18 +482,18 @@ latch origid destid weight seq linkid breadth_first NULL 9 0 1 9 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 2 3 11 +breadth_first NULL 10 1 2 12 breadth_first NULL 10 0 1 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 2 3 12 +breadth_first NULL 11 1 2 10 breadth_first NULL 11 0 1 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 2 3 10 +breadth_first NULL 12 1 2 11 breadth_first NULL 12 0 1 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -511,26 +511,26 @@ latch origid destid weight seq linkid breadth_first NULL 4 1 2 3 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 5 1 3 7 breadth_first NULL 5 1 2 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 1; latch origid destid weight seq linkid breadth_first NULL 6 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 1; latch origid destid weight seq linkid +breadth_first NULL 7 1 2 5 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 1; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 10 1 2 11 +breadth_first NULL 10 1 2 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 11 1 2 12 +breadth_first NULL 11 1 2 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 1; latch origid destid weight seq linkid -breadth_first NULL 12 1 2 10 +breadth_first NULL 12 1 2 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 2; latch origid destid weight seq linkid breadth_first NULL 1 2 4 4 @@ -547,22 +547,22 @@ SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 5 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 6 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 6 2 3 7 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 7 and weight = 2; latch origid destid weight seq linkid +breadth_first NULL 7 2 3 6 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 8 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 9 and weight = 2; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 10 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 10 2 3 12 +breadth_first NULL 10 2 3 11 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 11 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 11 2 3 10 +breadth_first NULL 11 2 3 12 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 12 and weight = 2; latch origid destid weight seq linkid -breadth_first NULL 12 2 3 11 +breadth_first NULL 12 2 3 10 SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 1 and weight = 3; latch origid destid weight seq linkid SELECT * FROM graph WHERE latch = 'breadth_first' AND destid = 2 and weight = 3; @@ -838,8 +838,8 @@ latch origid destid weight seq linkid 2 NULL 1 0 1 1 SELECT * FROM graph WHERE latch = '2' AND destid = 12; latch origid destid weight seq linkid -2 NULL 12 2 3 11 -2 NULL 12 1 2 10 +2 NULL 12 2 3 10 +2 NULL 12 1 2 11 2 NULL 12 0 1 12 SELECT * FROM graph WHERE latch = '2' AND destid = 1 and weight = 1; latch origid destid weight seq linkid @@ -997,16 +997,16 @@ dijkstras NULL 4 1 2 3 dijkstras NULL 4 0 1 4 SELECT * FROM graph WHERE latch='dijkstras' AND destid=5; latch origid destid weight seq linkid -dijkstras NULL 5 1 3 7 dijkstras NULL 5 1 2 6 dijkstras NULL 5 0 1 5 SELECT * FROM graph WHERE latch='dijkstras' AND destid=6; latch origid destid weight seq linkid -dijkstras NULL 6 2 3 7 dijkstras NULL 6 1 2 5 dijkstras NULL 6 0 1 6 SELECT * FROM graph WHERE latch='dijkstras' AND destid=7; latch origid destid weight seq linkid +dijkstras NULL 7 2 3 6 +dijkstras NULL 7 1 2 5 dijkstras NULL 7 0 1 7 SELECT * FROM graph WHERE latch='dijkstras' AND destid=8; latch origid destid weight seq linkid @@ -1015,18 +1015,18 @@ latch origid destid weight seq linkid dijkstras NULL 9 0 1 9 SELECT * FROM graph WHERE latch='dijkstras' AND destid=10; latch origid destid weight seq linkid -dijkstras NULL 10 2 3 12 -dijkstras NULL 10 1 2 11 +dijkstras NULL 10 2 3 11 +dijkstras NULL 10 1 2 12 dijkstras NULL 10 0 1 10 SELECT * FROM graph WHERE latch='dijkstras' AND destid=11; latch origid destid weight seq linkid -dijkstras NULL 11 2 3 10 -dijkstras NULL 11 1 2 12 +dijkstras NULL 11 2 3 12 +dijkstras NULL 11 1 2 10 dijkstras NULL 11 0 1 11 SELECT * FROM graph WHERE latch='dijkstras' AND destid=12; latch origid destid weight seq linkid -dijkstras NULL 12 2 3 11 -dijkstras NULL 12 1 2 10 +dijkstras NULL 12 2 3 10 +dijkstras NULL 12 1 2 11 dijkstras NULL 12 0 1 12 # legacy string number SELECT * FROM graph WHERE latch='1' AND origid=1 AND destid=1; @@ -1172,16 +1172,16 @@ latch origid destid weight seq linkid 1 NULL 4 0 1 4 SELECT * FROM graph WHERE latch='1' AND destid=5; latch origid destid weight seq linkid -1 NULL 5 1 3 7 1 NULL 5 1 2 6 1 NULL 5 0 1 5 SELECT * FROM graph WHERE latch='1' AND destid=6; latch origid destid weight seq linkid -1 NULL 6 2 3 7 1 NULL 6 1 2 5 1 NULL 6 0 1 6 SELECT * FROM graph WHERE latch='1' AND destid=7; latch origid destid weight seq linkid +1 NULL 7 2 3 6 +1 NULL 7 1 2 5 1 NULL 7 0 1 7 SELECT * FROM graph WHERE latch='1' AND destid=8; latch origid destid weight seq linkid @@ -1190,18 +1190,18 @@ latch origid destid weight seq linkid 1 NULL 9 0 1 9 SELECT * FROM graph WHERE latch='1' AND destid=10; latch origid destid weight seq linkid -1 NULL 10 2 3 12 -1 NULL 10 1 2 11 +1 NULL 10 2 3 11 +1 NULL 10 1 2 12 1 NULL 10 0 1 10 SELECT * FROM graph WHERE latch='1' AND destid=11; latch origid destid weight seq linkid -1 NULL 11 2 3 10 -1 NULL 11 1 2 12 +1 NULL 11 2 3 12 +1 NULL 11 1 2 10 1 NULL 11 0 1 11 SELECT * FROM graph WHERE latch='1' AND destid=12; latch origid destid weight seq linkid -1 NULL 12 2 3 11 -1 NULL 12 1 2 10 +1 NULL 12 2 3 10 +1 NULL 12 1 2 11 1 NULL 12 0 1 12 SELECT count(*) FROM graph; count(*) @@ -1280,9 +1280,6 @@ dijkstras 1 NULL 1 2 2 dijkstras 1 NULL 0 1 1 SELECT * FROM graph WHERE latch='dijkstras' AND destid=1; latch origid destid weight seq linkid -dijkstras NULL 1 4 7 18 -dijkstras NULL 1 3 6 17 -dijkstras NULL 1 3 5 16 dijkstras NULL 1 2 4 4 dijkstras NULL 1 1 3 3 dijkstras NULL 1 1 2 2 diff --git a/storage/oqgraph/oqgraph_shim.h b/storage/oqgraph/oqgraph_shim.h index c0a9dbb2b40..f24732af4ef 100644 --- a/storage/oqgraph/oqgraph_shim.h +++ b/storage/oqgraph/oqgraph_shim.h @@ -154,12 +154,12 @@ namespace oqgraph3 typedef std::input_iterator_tag iterator_category; in_edge_iterator() { } in_edge_iterator(const cursor_ptr& cursor) : _cursor(cursor) { } - value_type operator*() { return value_type(_cursor); } + value_type operator*() const { return value_type(_cursor); } self& operator++() { _cursor->seek_next(); return *this; } self operator++(int) { cursor_ptr t(new cursor(*_cursor)); ++(*this); return in_edge_iterator(t); } - bool operator==(const self& x) { return _cursor == x._cursor; } - bool operator!=(const self& x) { return _cursor != x._cursor; } + bool operator==(const self& x) const { return _cursor == x._cursor; } + bool operator!=(const self& x) const { return _cursor != x._cursor; } cursor_ptr _cursor; }; diff --git a/storage/perfschema/pfs.cc b/storage/perfschema/pfs.cc index 7440df6a487..a690bdf911d 100644 --- a/storage/perfschema/pfs.cc +++ b/storage/perfschema/pfs.cc @@ -1,4 +1,4 @@ -/* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2008, 2017, 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 @@ -41,6 +41,7 @@ #include "sp_head.h" #include "pfs_digest.h" +using std::min; /** @page PAGE_PERFORMANCE_SCHEMA The Performance Schema main page MySQL PERFORMANCE_SCHEMA implementation. @@ -2020,7 +2021,8 @@ static void set_thread_account_v1(const char *user, int user_len, DBUG_ASSERT((uint) user_len <= sizeof(pfs->m_username)); DBUG_ASSERT((host != NULL) || (host_len == 0)); DBUG_ASSERT(host_len >= 0); - DBUG_ASSERT((uint) host_len <= sizeof(pfs->m_hostname)); + + host_len= min<size_t>(host_len, sizeof(pfs->m_hostname)); if (unlikely(pfs == NULL)) return; diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt index 6db82119b45..39553566062 100644 --- a/storage/rocksdb/CMakeLists.txt +++ b/storage/rocksdb/CMakeLists.txt @@ -21,6 +21,7 @@ IF(HAVE_SCHED_GETCPU) ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1 -DROCKSDB_SCHED_GETCPU_PRESENT) ENDIF() + # We've had our builders hang during the build process. This prevents MariaRocks # to be built on 32 bit intel OS kernels. IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i[36]86") @@ -79,6 +80,8 @@ SET(ROCKSDB_SE_SOURCES ha_rocksdb.h rdb_i_s.cc rdb_i_s.h + rdb_io_watchdog.h + rdb_io_watchdog.cc rdb_mutex_wrapper.cc rdb_mutex_wrapper.h rdb_index_merge.cc @@ -96,6 +99,11 @@ SET(ROCKSDB_SE_SOURCES rdb_psi.cc ) +# MariaDB: the following is added in build_rocksdb.cmake, when appropriate: +# This is a strong requirement coming from RocksDB. No conditional checks here. +#ADD_DEFINITIONS(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX +#) + MYSQL_ADD_PLUGIN(rocksdb ${ROCKSDB_SE_SOURCES} STORAGE_ENGINE MODULE_OUTPUT_NAME ha_rocksdb COMPONENT rocksdb-engine) @@ -105,11 +113,6 @@ IF(NOT TARGET rocksdb) RETURN() ENDIF() -# MARIAROCKS-TODO: ??? -CHECK_FUNCTION_EXISTS(fallocate HAVE_FALLOCATE) -IF(HAVE_FALLOCATE) - ADD_DEFINITIONS(-DROCKSDB_FALLOCATE_PRESENT) -ENDIF() CHECK_CXX_SOURCE_COMPILES(" @@ -138,7 +141,6 @@ ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib rdb_perf_context.h rdb_sst_info.cc rdb_sst_info.h - rdb_io_watchdog.cc rdb_io_watchdog.h rdb_buff.h rdb_mariadb_port.h ) @@ -169,7 +171,7 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") # (also had to add -frtti above, because something that event_listener.cc # includes requires it. So, now everything in MariaRocks is compiled with # -frtti) - set_source_files_properties(event_listener.cc rdb_cf_options.cc + set_source_files_properties(event_listener.cc rdb_cf_options.cc rdb_sst_info.cc PROPERTIES COMPILE_FLAGS -frtti) ENDIF() @@ -178,6 +180,12 @@ IF(HAVE_SCHED_GETCPU) ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1) ENDIF() +IF (NOT "$ENV{WITH_TBB}" STREQUAL "") + SET(rocksdb_static_libs ${rocksdb_static_libs} + $ENV{WITH_TBB}/libtbb${PIC_EXT}.a) + ADD_DEFINITIONS(-DTBB) +ENDIF() + # # MariaDB: Dynamic plugin build is not suitable with unittest ATM # @@ -189,6 +197,7 @@ if (UNIX AND NOT APPLE) SET(rocksdb_static_libs ${rocksdb_static_libs} "-lrt") endif() + ADD_LIBRARY(rocksdb_tools STATIC rocksdb/tools/ldb_tool.cc rocksdb/tools/ldb_cmd.cc diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake index f0d19dd019f..f7a2cdda46f 100644 --- a/storage/rocksdb/build_rocksdb.cmake +++ b/storage/rocksdb/build_rocksdb.cmake @@ -158,13 +158,13 @@ set(ROCKSDB_SOURCES db/convenience.cc db/db_filesnapshot.cc db/db_impl.cc - db/db_impl_write.cc db/db_impl_compaction_flush.cc - db/db_impl_files.cc - db/db_impl_open.cc db/db_impl_debug.cc db/db_impl_experimental.cc + db/db_impl_files.cc + db/db_impl_open.cc db/db_impl_readonly.cc + db/db_impl_write.cc db/db_info_dumper.cc db/db_iter.cc db/dbformat.cc @@ -204,9 +204,14 @@ set(ROCKSDB_SOURCES env/mock_env.cc memtable/alloc_tracker.cc memtable/hash_cuckoo_rep.cc + memtable/hash_cuckoo_rep.cc memtable/hash_linklist_rep.cc + memtable/hash_linklist_rep.cc + memtable/hash_skiplist_rep.cc memtable/hash_skiplist_rep.cc memtable/skiplistrep.cc + memtable/skiplistrep.cc + memtable/vectorrep.cc memtable/vectorrep.cc memtable/write_buffer_manager.cc monitoring/histogram.cc @@ -218,7 +223,6 @@ set(ROCKSDB_SOURCES monitoring/statistics.cc monitoring/thread_status_impl.cc monitoring/thread_status_updater.cc - monitoring/thread_status_updater_debug.cc monitoring/thread_status_util.cc monitoring/thread_status_util_debug.cc options/cf_options.cc @@ -248,7 +252,6 @@ set(ROCKSDB_SOURCES table/iterator.cc table/merging_iterator.cc table/meta_blocks.cc - table/mock_table.cc table/partitioned_filter_block.cc table/persistent_cache_helper.cc table/plain_table_builder.cc @@ -297,13 +300,6 @@ set(ROCKSDB_SOURCES util/xxhash.cc utilities/backupable/backupable_db.cc utilities/blob_db/blob_db.cc - utilities/blob_db/blob_db_impl.cc - utilities/blob_db/blob_db_options_impl.cc - utilities/blob_db/blob_dump_tool.cc - utilities/blob_db/blob_file.cc - utilities/blob_db/blob_log_format.cc - utilities/blob_db/blob_log_reader.cc - utilities/blob_db/blob_log_writer.cc utilities/checkpoint/checkpoint_impl.cc utilities/col_buf_decoder.cc utilities/col_buf_encoder.cc @@ -315,7 +311,6 @@ set(ROCKSDB_SOURCES utilities/document/json_document.cc utilities/document/json_document_builder.cc utilities/env_mirror.cc - utilities/env_timed.cc utilities/geodb/geodb_impl.cc utilities/leveldb_options/leveldb_options.cc utilities/lua/rocks_lua_compaction_filter.cc @@ -337,16 +332,17 @@ set(ROCKSDB_SOURCES utilities/spatialdb/spatial_db.cc utilities/table_properties_collectors/compact_on_deletion_collector.cc utilities/transactions/optimistic_transaction_db_impl.cc - utilities/transactions/optimistic_transaction_impl.cc + utilities/transactions/pessimistic_transaction.cc + utilities/transactions/pessimistic_transaction_db.cc utilities/transactions/transaction_base.cc - utilities/transactions/transaction_db_impl.cc utilities/transactions/transaction_db_mutex_impl.cc - utilities/transactions/transaction_impl.cc utilities/transactions/transaction_lock_mgr.cc utilities/transactions/transaction_util.cc + utilities/transactions/write_prepared_txn.cc utilities/ttl/db_ttl_impl.cc utilities/write_batch_with_index/write_batch_with_index.cc utilities/write_batch_with_index/write_batch_with_index_internal.cc + ) if(WIN32) @@ -382,3 +378,4 @@ target_link_libraries(rocksdblib ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "-fPIC -fno-builtin-memcmp -frtti") endif() + diff --git a/storage/rocksdb/ha_rocksdb.cc b/storage/rocksdb/ha_rocksdb.cc index a7d0373be2a..dd61a4ed76a 100644 --- a/storage/rocksdb/ha_rocksdb.cc +++ b/storage/rocksdb/ha_rocksdb.cc @@ -43,6 +43,7 @@ #include "./debug_sync.h" #include "./my_bit.h" #include "./my_stacktrace.h" +#include "./my_sys.h" #include "./sql_audit.h" #include "./sql_table.h" #include "./sql_hset.h" @@ -67,6 +68,7 @@ #include "rocksdb/utilities/checkpoint.h" #include "rocksdb/utilities/convenience.h" #include "rocksdb/utilities/memory_util.h" +#include "rocksdb/utilities/sim_cache.h" #include "util/stop_watch.h" /* MyRocks includes */ @@ -114,6 +116,7 @@ namespace myrocks { static st_global_stats global_stats; static st_export_stats export_stats; static st_memory_stats memory_stats; +static st_io_stall_stats io_stall_stats; const std::string DEFAULT_CF_NAME("default"); const std::string DEFAULT_SYSTEM_CF_NAME("__system__"); @@ -170,7 +173,6 @@ static std::shared_ptr<Rdb_tbl_prop_coll_factory> properties_collector_factory; Rdb_dict_manager dict_manager; Rdb_cf_manager cf_manager; Rdb_ddl_manager ddl_manager; -const char *m_mysql_gtid; Rdb_binlog_manager binlog_manager; #if !defined(_WIN32) && !defined(__APPLE__) @@ -406,6 +408,10 @@ static void rocksdb_set_delayed_write_rate(THD *thd, struct st_mysql_sys_var *var, void *var_ptr, const void *save); +static void rocksdb_set_max_latest_deadlocks(THD *thd, + struct st_mysql_sys_var *var, + void *var_ptr, const void *save); + static void rdb_set_collation_exception_list(const char *exception_list); static void rocksdb_set_collation_exception_list(THD *thd, struct st_mysql_sys_var *var, @@ -422,6 +428,10 @@ rocksdb_set_bulk_load(THD *thd, struct st_mysql_sys_var *var MY_ATTRIBUTE((__unused__)), void *var_ptr, const void *save); +static void rocksdb_set_bulk_load_allow_unsorted( + THD *thd, struct st_mysql_sys_var *var MY_ATTRIBUTE((__unused__)), + void *var_ptr, const void *save); + static void rocksdb_set_max_background_jobs(THD *thd, struct st_mysql_sys_var *const var, void *const var_ptr, @@ -430,12 +440,15 @@ static void rocksdb_set_max_background_jobs(THD *thd, // Options definitions ////////////////////////////////////////////////////////////////////////////// static long long rocksdb_block_cache_size; +static long long rocksdb_sim_cache_size; +static my_bool rocksdb_use_clock_cache; /* Use unsigned long long instead of uint64_t because of MySQL compatibility */ static unsigned long long // NOLINT(runtime/int) rocksdb_rate_limiter_bytes_per_sec; static unsigned long long // NOLINT(runtime/int) rocksdb_sst_mgr_rate_bytes_per_sec; static unsigned long long rocksdb_delayed_write_rate; +static uint32_t rocksdb_max_latest_deadlocks; static unsigned long // NOLINT(runtime/int) rocksdb_persistent_cache_size_mb; static ulong rocksdb_info_log_level; @@ -445,6 +458,7 @@ static ulong rocksdb_index_type; static uint32_t rocksdb_flush_log_at_trx_commit; static uint32_t rocksdb_debug_optimizer_n_rows; static my_bool rocksdb_force_compute_memtable_stats; +static uint32_t rocksdb_force_compute_memtable_stats_cachetime; static my_bool rocksdb_debug_optimizer_no_zero_cardinality; static uint32_t rocksdb_wal_recovery_mode; static uint32_t rocksdb_access_hint_on_compaction_start; @@ -462,6 +476,7 @@ static my_bool rocksdb_enable_ttl_read_filtering = 1; static int rocksdb_debug_ttl_rec_ts = 0; static int rocksdb_debug_ttl_snapshot_ts = 0; static int rocksdb_debug_ttl_read_filter_ts = 0; +static my_bool rocksdb_debug_ttl_ignore_pk = 0; static my_bool rocksdb_reset_stats = 0; static uint32_t rocksdb_io_write_timeout_secs = 0; static uint64_t rocksdb_number_stat_computes = 0; @@ -474,6 +489,7 @@ static char *rocksdb_datadir; static uint32_t rocksdb_table_stats_sampling_pct; static my_bool rocksdb_enable_bulk_load_api = 1; static my_bool rocksdb_print_snapshot_conflict_queries = 0; +static my_bool rocksdb_large_prefix = 0; char *compression_types_val= const_cast<char*>(get_rocksdb_supported_compression_types()); @@ -489,6 +505,8 @@ static std::unique_ptr<rocksdb::DBOptions> rdb_init_rocksdb_db_options(void) { o->info_log_level = rocksdb::InfoLogLevel::INFO_LEVEL; o->max_subcompactions = DEFAULT_SUBCOMPACTIONS; + o->concurrent_prepare = true; + o->manual_wal_flush = true; return o; } @@ -583,9 +601,12 @@ const size_t RDB_DEFAULT_MERGE_BUF_SIZE = 64 * 1024 * 1024; const size_t RDB_MIN_MERGE_BUF_SIZE = 100; const size_t RDB_DEFAULT_MERGE_COMBINE_READ_SIZE = 1024 * 1024 * 1024; const size_t RDB_MIN_MERGE_COMBINE_READ_SIZE = 100; +const size_t RDB_DEFAULT_MERGE_TMP_FILE_REMOVAL_DELAY = 0; +const size_t RDB_MIN_MERGE_TMP_FILE_REMOVAL_DELAY = 0; const int64 RDB_DEFAULT_BLOCK_CACHE_SIZE = 512 * 1024 * 1024; const int64 RDB_MIN_BLOCK_CACHE_SIZE = 1024; const int RDB_MAX_CHECKSUMS_PCT = 100; +const ulong RDB_DEADLOCK_DETECT_DEPTH = 50; // TODO: 0 means don't wait at all, and we don't support it yet? static MYSQL_THDVAR_ULONG(lock_wait_timeout, PLUGIN_VAR_RQCMDARG, @@ -596,6 +617,14 @@ static MYSQL_THDVAR_ULONG(lock_wait_timeout, PLUGIN_VAR_RQCMDARG, static MYSQL_THDVAR_BOOL(deadlock_detect, PLUGIN_VAR_RQCMDARG, "Enables deadlock detection", nullptr, nullptr, FALSE); +static MYSQL_THDVAR_ULONG(deadlock_detect_depth, PLUGIN_VAR_RQCMDARG, + "Number of transactions deadlock detection will " + "traverse through before assuming deadlock", + nullptr, nullptr, + /*default*/ RDB_DEADLOCK_DETECT_DEPTH, + /*min*/ 2, + /*max*/ ULONG_MAX, 0); + static MYSQL_THDVAR_BOOL( trace_sst_api, PLUGIN_VAR_RQCMDARG, "Generate trace output in the log for each call to the SstFileWriter", @@ -607,6 +636,11 @@ static MYSQL_THDVAR_BOOL( "unique_checks and enables rocksdb_commit_in_the_middle.", nullptr, rocksdb_set_bulk_load, FALSE); +static MYSQL_THDVAR_BOOL(bulk_load_allow_unsorted, PLUGIN_VAR_RQCMDARG, + "Allow unsorted input during bulk-load. " + "Can be changed only when bulk load is disabled.", + nullptr, rocksdb_set_bulk_load_allow_unsorted, FALSE); + static MYSQL_SYSVAR_BOOL(enable_bulk_load_api, rocksdb_enable_bulk_load_api, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, "Enables using SstFileWriter for bulk loading", @@ -686,6 +720,18 @@ static MYSQL_THDVAR_ULONGLONG( /* min (100B) */ RDB_MIN_MERGE_COMBINE_READ_SIZE, /* max */ SIZE_T_MAX, 1); +static MYSQL_THDVAR_ULONGLONG( + merge_tmp_file_removal_delay_ms, PLUGIN_VAR_RQCMDARG, + "Fast index creation creates a large tmp file on disk during index " + "creation. Removing this large file all at once when index creation is " + "complete can cause trim stalls on Flash. This variable specifies a " + "duration to sleep (in milliseconds) between calling chsize() to truncate " + "the file in chunks. The chunk size is the same as merge_buf_size.", + nullptr, nullptr, + /* default (0ms) */ RDB_DEFAULT_MERGE_TMP_FILE_REMOVAL_DELAY, + /* min (0ms) */ RDB_MIN_MERGE_TMP_FILE_REMOVAL_DELAY, + /* max */ SIZE_T_MAX, 1); + static MYSQL_SYSVAR_BOOL( create_if_missing, *reinterpret_cast<my_bool *>(&rocksdb_db_options->create_if_missing), @@ -694,6 +740,20 @@ static MYSQL_SYSVAR_BOOL( rocksdb_db_options->create_if_missing); static MYSQL_SYSVAR_BOOL( + concurrent_prepare, + *reinterpret_cast<my_bool *>(&rocksdb_db_options->concurrent_prepare), + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "DBOptions::concurrent_prepare for RocksDB", nullptr, nullptr, + rocksdb_db_options->concurrent_prepare); + +static MYSQL_SYSVAR_BOOL( + manual_wal_flush, + *reinterpret_cast<my_bool *>(&rocksdb_db_options->manual_wal_flush), + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "DBOptions::manual_wal_flush for RocksDB", nullptr, nullptr, + rocksdb_db_options->manual_wal_flush); + +static MYSQL_SYSVAR_BOOL( create_missing_column_families, *reinterpret_cast<my_bool *>( &rocksdb_db_options->create_missing_column_families), @@ -736,6 +796,13 @@ static MYSQL_SYSVAR_ULONGLONG(delayed_write_rate, rocksdb_delayed_write_rate, rocksdb_db_options->delayed_write_rate, 0, UINT64_MAX, 0); +static MYSQL_SYSVAR_UINT(max_latest_deadlocks, rocksdb_max_latest_deadlocks, + PLUGIN_VAR_RQCMDARG, + "Maximum number of recent " + "deadlocks to store", + nullptr, rocksdb_set_max_latest_deadlocks, + rocksdb::kInitialMaxDeadlocks, 0, UINT32_MAX, 0); + static MYSQL_SYSVAR_ENUM( info_log_level, rocksdb_info_log_level, PLUGIN_VAR_RQCMDARG, "Filter level for info logs to be written mysqld error log. " @@ -1011,6 +1078,22 @@ static MYSQL_SYSVAR_LONGLONG(block_cache_size, rocksdb_block_cache_size, /* max */ LONGLONG_MAX, /* Block size */ RDB_MIN_BLOCK_CACHE_SIZE); +static MYSQL_SYSVAR_LONGLONG(sim_cache_size, rocksdb_sim_cache_size, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "Simulated cache size for RocksDB", nullptr, + nullptr, + /* default */ 0, + /* min */ 0, + /* max */ LONGLONG_MAX, + /* Block size */ 0); + +static MYSQL_SYSVAR_BOOL( + use_clock_cache, + rocksdb_use_clock_cache, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "Use ClockCache instead of default LRUCache for RocksDB", + nullptr, nullptr, false); + static MYSQL_SYSVAR_BOOL( cache_index_and_filter_blocks, *reinterpret_cast<my_bool *>( @@ -1094,17 +1177,26 @@ static MYSQL_SYSVAR_STR(override_cf_options, rocksdb_override_cf_options, ""); static MYSQL_SYSVAR_STR(update_cf_options, rocksdb_update_cf_options, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - //psergey-july-merge:TODO: need this: | PLUGIN_VAR_ALLOCATED, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC + /* psergey-merge: need this? : PLUGIN_VAR_ALLOCATED*/, "Option updates per column family for RocksDB", nullptr, rocksdb_set_update_cf_options, nullptr); +enum rocksdb_flush_log_at_trx_commit_type : unsigned int { + FLUSH_LOG_NEVER = 0, + FLUSH_LOG_SYNC, + FLUSH_LOG_BACKGROUND, + FLUSH_LOG_MAX /* must be last */ +}; + static MYSQL_SYSVAR_UINT(flush_log_at_trx_commit, rocksdb_flush_log_at_trx_commit, PLUGIN_VAR_RQCMDARG, "Sync on transaction commit. Similar to " "innodb_flush_log_at_trx_commit. 1: sync on commit, " "0,2: not sync on commit", - nullptr, nullptr, 1, 0, 2, 0); + nullptr, nullptr, /* default */ FLUSH_LOG_SYNC, + /* min */ FLUSH_LOG_NEVER, + /* max */ FLUSH_LOG_BACKGROUND, 0); static MYSQL_THDVAR_BOOL(write_disable_wal, PLUGIN_VAR_RQCMDARG, "WriteOptions::disableWAL for RocksDB", nullptr, @@ -1148,6 +1240,13 @@ static MYSQL_SYSVAR_BOOL(force_compute_memtable_stats, "Force to always compute memtable stats", nullptr, nullptr, TRUE); +static MYSQL_SYSVAR_UINT(force_compute_memtable_stats_cachetime, + rocksdb_force_compute_memtable_stats_cachetime, + PLUGIN_VAR_RQCMDARG, + "Time in usecs to cache memtable estimates", nullptr, + nullptr, /* default */ 60 * 1000 * 1000, + /* min */ 0, /* max */ INT_MAX, 0); + static MYSQL_SYSVAR_BOOL( debug_optimizer_no_zero_cardinality, rocksdb_debug_optimizer_no_zero_cardinality, PLUGIN_VAR_RQCMDARG, @@ -1215,6 +1314,12 @@ static MYSQL_SYSVAR_INT( nullptr, nullptr, 0, /* min */ -3600, /* max */ 3600, 0); static MYSQL_SYSVAR_BOOL( + debug_ttl_ignore_pk, rocksdb_debug_ttl_ignore_pk, PLUGIN_VAR_RQCMDARG, + "For debugging purposes only. If true, compaction filtering will not occur " + "on PK TTL data. This variable is a no-op in non-debug builds.", + nullptr, nullptr, FALSE); + +static MYSQL_SYSVAR_BOOL( reset_stats, rocksdb_reset_stats, PLUGIN_VAR_RQCMDARG, "Reset the RocksDB internal statistics without restarting the DB.", nullptr, rocksdb_set_reset_stats, FALSE); @@ -1376,15 +1481,23 @@ static MYSQL_SYSVAR_UINT( RDB_DEFAULT_TBL_STATS_SAMPLE_PCT, /* everything */ 0, /* max */ RDB_TBL_STATS_SAMPLE_PCT_MAX, 0); +static MYSQL_SYSVAR_BOOL( + large_prefix, rocksdb_large_prefix, PLUGIN_VAR_RQCMDARG, + "Support large index prefix length of 3072 bytes. If off, the maximum " + "index prefix length is 767.", + nullptr, nullptr, FALSE); + static const int ROCKSDB_ASSUMED_KEY_VALUE_DISK_SIZE = 100; static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(lock_wait_timeout), MYSQL_SYSVAR(deadlock_detect), + MYSQL_SYSVAR(deadlock_detect_depth), MYSQL_SYSVAR(max_row_locks), MYSQL_SYSVAR(write_batch_max_bytes), MYSQL_SYSVAR(lock_scanned_rows), MYSQL_SYSVAR(bulk_load), + MYSQL_SYSVAR(bulk_load_allow_unsorted), MYSQL_SYSVAR(skip_unique_check_tables), MYSQL_SYSVAR(trace_sst_api), MYSQL_SYSVAR(commit_in_the_middle), @@ -1395,15 +1508,19 @@ static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(enable_bulk_load_api), MYSQL_SYSVAR(tmpdir), MYSQL_SYSVAR(merge_combine_read_size), + MYSQL_SYSVAR(merge_tmp_file_removal_delay_ms), MYSQL_SYSVAR(skip_bloom_filter_on_read), MYSQL_SYSVAR(create_if_missing), + MYSQL_SYSVAR(concurrent_prepare), + MYSQL_SYSVAR(manual_wal_flush), MYSQL_SYSVAR(create_missing_column_families), MYSQL_SYSVAR(error_if_exists), MYSQL_SYSVAR(paranoid_checks), MYSQL_SYSVAR(rate_limiter_bytes_per_sec), MYSQL_SYSVAR(sst_mgr_rate_bytes_per_sec), MYSQL_SYSVAR(delayed_write_rate), + MYSQL_SYSVAR(max_latest_deadlocks), MYSQL_SYSVAR(info_log_level), MYSQL_SYSVAR(max_open_files), MYSQL_SYSVAR(max_total_wal_size), @@ -1443,6 +1560,8 @@ static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(enable_write_thread_adaptive_yield), MYSQL_SYSVAR(block_cache_size), + MYSQL_SYSVAR(sim_cache_size), + MYSQL_SYSVAR(use_clock_cache), MYSQL_SYSVAR(cache_index_and_filter_blocks), MYSQL_SYSVAR(pin_l0_filter_and_index_blocks_in_cache), MYSQL_SYSVAR(index_type), @@ -1468,6 +1587,7 @@ static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(force_index_records_in_range), MYSQL_SYSVAR(debug_optimizer_n_rows), MYSQL_SYSVAR(force_compute_memtable_stats), + MYSQL_SYSVAR(force_compute_memtable_stats_cachetime), MYSQL_SYSVAR(debug_optimizer_no_zero_cardinality), MYSQL_SYSVAR(compact_cf), @@ -1484,6 +1604,7 @@ static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(debug_ttl_rec_ts), MYSQL_SYSVAR(debug_ttl_snapshot_ts), MYSQL_SYSVAR(debug_ttl_read_filter_ts), + MYSQL_SYSVAR(debug_ttl_ignore_pk), MYSQL_SYSVAR(reset_stats), MYSQL_SYSVAR(io_write_timeout), MYSQL_SYSVAR(flush_memtable_on_analyze), @@ -1506,13 +1627,15 @@ static struct st_mysql_sys_var *rocksdb_system_variables[] = { MYSQL_SYSVAR(validate_tables), MYSQL_SYSVAR(table_stats_sampling_pct), + + MYSQL_SYSVAR(large_prefix), nullptr}; static rocksdb::WriteOptions rdb_get_rocksdb_write_options(my_core::THD *const thd) { rocksdb::WriteOptions opt; - opt.sync = (rocksdb_flush_log_at_trx_commit == 1); + opt.sync = (rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC); opt.disableWAL = THDVAR(thd, write_disable_wal); opt.ignore_missing_column_families = THDVAR(thd, write_ignore_missing_column_families); @@ -1668,8 +1791,11 @@ protected: public: const char *m_mysql_log_file_name; my_off_t m_mysql_log_offset; +#ifdef MARIAROCKS_NOT_YET + // TODO: MariaDB probably doesn't need these at all: const char *m_mysql_gtid; const char *m_mysql_max_gtid; +#endif String m_detailed_error; int64_t m_snapshot_timestamp = 0; bool m_ddl_transaction; @@ -1681,6 +1807,12 @@ public: int64_t m_n_mysql_tables_in_use = 0; /* + MariaDB's group commit: + */ + bool commit_ordered_done; + bool commit_ordered_res; + + /* for distinction between rdb_transaction_impl and rdb_writebatch_impl when using walk tx list */ @@ -1795,6 +1927,13 @@ public: } } + void update_bytes_written(ulonglong bytes_written) { + if (m_tbl_io_perf != nullptr) { + m_tbl_io_perf->update_bytes_written(rocksdb_perf_context_level(m_thd), + bytes_written); + } + } + void set_params(int timeout_sec_arg, int max_row_locks_arg) { m_timeout_sec = timeout_sec_arg; m_max_row_locks = max_row_locks_arg; @@ -1856,13 +1995,10 @@ public: rollback(); return true; } else { -#ifdef MARIAROCKS_NOT_YET - my_core::thd_binlog_pos(m_thd, &m_mysql_log_file_name, - &m_mysql_log_offset, &m_mysql_gtid, - &m_mysql_max_gtid); + mysql_bin_log_commit_pos(m_thd, &m_mysql_log_offset, + &m_mysql_log_file_name); binlog_manager.update(m_mysql_log_file_name, m_mysql_log_offset, - m_mysql_max_gtid, get_write_batch()); -#endif + get_write_batch()); return commit_no_binlog(); } } @@ -2292,14 +2428,17 @@ public: tx_opts.set_snapshot = false; tx_opts.lock_timeout = rdb_convert_sec_to_ms(m_timeout_sec); tx_opts.deadlock_detect = THDVAR(m_thd, deadlock_detect); + tx_opts.deadlock_detect_depth = THDVAR(m_thd, deadlock_detect_depth); tx_opts.max_write_batch_size = THDVAR(m_thd, write_batch_max_bytes); - write_opts.sync = (rocksdb_flush_log_at_trx_commit == 1); + write_opts.sync = (rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC); write_opts.disableWAL = THDVAR(m_thd, write_disable_wal); write_opts.ignore_missing_column_families = THDVAR(m_thd, write_ignore_missing_column_families); m_is_two_phase = rocksdb_enable_2pc; + commit_ordered_done= false; + /* If m_rocksdb_reuse_tx is null this will create a new transaction object. Otherwise it will reuse the existing one. @@ -2512,8 +2651,9 @@ public: bool is_tx_started() const override { return (m_batch != nullptr); } void start_tx() override { + commit_ordered_done= false; // Do we need this here? reset(); - write_opts.sync = (rocksdb_flush_log_at_trx_commit == 1); + write_opts.sync = (rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC); write_opts.disableWAL = THDVAR(m_thd, write_disable_wal); write_opts.ignore_missing_column_families = THDVAR(m_thd, write_ignore_missing_column_families); @@ -2557,14 +2697,21 @@ namespace { class Rdb_perf_context_guard { Rdb_io_perf m_io_perf; - THD *m_thd; + Rdb_io_perf *m_io_perf_ptr; + Rdb_transaction *m_tx; + uint m_level; -public: + public: Rdb_perf_context_guard(const Rdb_perf_context_guard &) = delete; Rdb_perf_context_guard &operator=(const Rdb_perf_context_guard &) = delete; - explicit Rdb_perf_context_guard(THD *const thd) : m_thd(thd) { - Rdb_transaction *&tx = get_tx_from_thd(m_thd); + explicit Rdb_perf_context_guard(Rdb_io_perf *io_perf, uint level) + : m_io_perf_ptr(io_perf), m_tx(nullptr), m_level(level) { + m_io_perf_ptr->start(m_level); + } + + explicit Rdb_perf_context_guard(Rdb_transaction *tx, uint level) + : m_io_perf_ptr(nullptr), m_tx(tx), m_level(level) { /* if perf_context information is already being recorded, this becomes a no-op @@ -2575,9 +2722,10 @@ public: } ~Rdb_perf_context_guard() { - Rdb_transaction *&tx = get_tx_from_thd(m_thd); - if (tx != nullptr) { - tx->io_perf_end_and_record(); + if (m_tx != nullptr) { + m_tx->io_perf_end_and_record(); + } else if (m_io_perf_ptr != nullptr) { + m_io_perf_ptr->end_and_record(m_level); } } }; @@ -2667,8 +2815,17 @@ static std::string rdb_xid_to_string(const XID &src) { */ static bool rocksdb_flush_wal(handlerton* hton __attribute__((__unused__))) DBUG_ASSERT(rdb != nullptr); - rocksdb_wal_group_syncs++; - const rocksdb::Status s = rdb->SyncWAL(); + + rocksdb::Status s; + /* + target_lsn is set to 0 when MySQL wants to sync the wal files + */ + if (target_lsn == 0 || rocksdb_flush_log_at_trx_commit != FLUSH_LOG_NEVER) { + rocksdb_wal_group_syncs++; + s = rdb->FlushWAL(target_lsn == 0 || + rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC); + } + if (!s.ok()) { rdb_log_status_error(s); return HA_EXIT_FAILURE; @@ -2683,43 +2840,62 @@ static bool rocksdb_flush_wal(handlerton* hton __attribute__((__unused__))) */ static int rocksdb_prepare(handlerton* hton, THD* thd, bool prepare_tx) { -#ifdef MARIAROCKS_NOT_YET -// This is "ASYNC_COMMIT" feature which is only in webscalesql - bool async=false; -#endif + bool async=false; // This is "ASYNC_COMMIT" feature which is only present in webscalesql Rdb_transaction *&tx = get_tx_from_thd(thd); if (!tx->can_prepare()) { return HA_EXIT_FAILURE; } -#ifdef MARIAROCKS_NOT_YET // disable prepare/commit if (prepare_tx || (!my_core::thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) { /* We were instructed to prepare the whole transaction, or this is an SQL statement end and autocommit is on */ + +#ifdef MARIAROCKS_NOT_YET // Crash-safe slave does not work yet std::vector<st_slave_gtid_info> slave_gtid_info; my_core::thd_slave_gtid_info(thd, &slave_gtid_info); for (const auto &it : slave_gtid_info) { rocksdb::WriteBatchBase *const write_batch = tx->get_blind_write_batch(); binlog_manager.update_slave_gtid_info(it.id, it.db, it.gtid, write_batch); } +#endif if (tx->is_two_phase()) { + + /* + MariaDB: the following branch is never taken. + We always flush at Prepare and rely on RocksDB's internal Group Commit + to do some grouping. + */ if (thd->durability_property == HA_IGNORE_DURABILITY || async) { tx->set_sync(false); } + + /* + MariaDB: do not flush logs if we are running in a non-crash-safe mode. + */ + if (!rocksdb_flush_log_at_trx_commit) + tx->set_sync(false); + XID xid; thd_get_xid(thd, reinterpret_cast<MYSQL_XID *>(&xid)); if (!tx->prepare(rdb_xid_to_string(xid))) { return HA_EXIT_FAILURE; } - if (thd->durability_property == HA_IGNORE_DURABILITY -#ifdef MARIAROCKS_NOT_YET + + /* + MariaDB: our Group Commit implementation does not use the + hton->flush_logs call (at least currently) so the following is not + needed (TODO: will we need this for binlog rotation?) + */ +#ifdef MARIAROCKS_NOT_YET + if (thd->durability_property == HA_IGNORE_DURABILITY ) + (rocksdb_flush_log_at_trx_commit != FLUSH_LOG_NEVER)) && - THDVAR(thd, flush_log_at_trx_commit)) { + THDVAR(thd, flush_log_at_trx_commit)) #endif - { #ifdef MARIAROCKS_NOT_YET + { // MariaRocks: disable the // "write/sync redo log before flushing binlog cache to file" // feature. See a869c56d361bb44f46c0efeb11a8f03561676247 @@ -2727,13 +2903,12 @@ static int rocksdb_prepare(handlerton* hton, THD* thd, bool prepare_tx) we set the log sequence as '1' just to trigger hton->flush_logs */ thd_store_lsn(thd, 1, DB_TYPE_ROCKSDB); -#endif } +#endif } DEBUG_SYNC(thd, "rocksdb.prepared"); } -#endif return HA_EXIT_SUCCESS; } @@ -2879,6 +3054,60 @@ static int rocksdb_recover(handlerton* hton, XID* xid_list, uint len) return count; } + +/* + Handle a commit checkpoint request from server layer. + + InnoDB does this: + We put the request in a queue, so that we can notify upper layer about + checkpoint complete when we have flushed the redo log. + If we have already flushed all relevant redo log, we notify immediately. + + MariaRocks just flushes everything right away ATM +*/ + +static void rocksdb_checkpoint_request(handlerton *hton, + void *cookie) +{ + const rocksdb::Status s= rdb->SyncWAL(); + //TODO: what to do on error? + if (s.ok()) + { + rocksdb_wal_group_syncs++; + commit_checkpoint_notify_ha(hton, cookie); + } +} + +/* + @param all: TRUE - commit the transaction + FALSE - SQL statement ended +*/ +static void rocksdb_commit_ordered(handlerton *hton, THD* thd, bool all) +{ + // Same assert as InnoDB has + DBUG_ASSERT(all || (!thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | + OPTION_BEGIN))); + Rdb_transaction *&tx = get_tx_from_thd(thd); + if (!tx->is_two_phase()) { + /* + ordered_commit is supposedly slower as it is done sequentially + in order to preserve commit order. + + if we are not required do 2-phase commit with the binlog, do not do + anything here. + */ + return; + } + + tx->set_sync(false); + + /* This will note the master position also */ + tx->commit_ordered_res= tx->commit(); + tx->commit_ordered_done= true; + +} + + static int rocksdb_commit(handlerton* hton, THD* thd, bool commit_tx) { DBUG_ENTER_FUNC(); @@ -2889,16 +3118,26 @@ static int rocksdb_commit(handlerton* hton, THD* thd, bool commit_tx) rocksdb::StopWatchNano timer(rocksdb::Env::Default(), true); - /* this will trigger saving of perf_context information */ - Rdb_perf_context_guard guard(thd); - /* note: h->external_lock(F_UNLCK) is called after this function is called) */ Rdb_transaction *&tx = get_tx_from_thd(thd); + /* this will trigger saving of perf_context information */ + Rdb_perf_context_guard guard(tx, rocksdb_perf_context_level(thd)); + if (tx != nullptr) { if (commit_tx || (!my_core::thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) { /* + This will not add anything to commit_latency_stats, and this is correct + right? + */ + if (tx->commit_ordered_done) + { + thd_wakeup_subsequent_commits(thd, 0); + DBUG_RETURN((tx->commit_ordered_res? HA_ERR_INTERNAL_ERROR: 0)); + } + + /* We get here - For a COMMIT statement that finishes a multi-statement transaction - For a statement that has its own transaction @@ -2906,6 +3145,7 @@ static int rocksdb_commit(handlerton* hton, THD* thd, bool commit_tx) if (tx->commit()) { DBUG_RETURN(HA_ERR_ROCKSDB_COMMIT_FAILED); } + thd_wakeup_subsequent_commits(thd, 0); } else { /* We get here when committing a statement within a transaction. @@ -2929,10 +3169,11 @@ static int rocksdb_commit(handlerton* hton, THD* thd, bool commit_tx) DBUG_RETURN(HA_EXIT_SUCCESS); } + static int rocksdb_rollback(handlerton *const hton, THD *const thd, bool rollback_tx) { - Rdb_perf_context_guard guard(thd); Rdb_transaction *&tx = get_tx_from_thd(thd); + Rdb_perf_context_guard guard(tx, rocksdb_perf_context_level(thd)); if (tx != nullptr) { if (rollback_tx) { @@ -3055,7 +3296,82 @@ private: "=========================================\n"; } -public: + static std::string get_dlock_txn_info(const rocksdb::DeadlockInfo &txn, + const GL_INDEX_ID &gl_index_id, + bool is_last_path = false) { + std::string txn_data; + + /* extract table name and index names using the index id */ + std::string table_name = ddl_manager.safe_get_table_name(gl_index_id); + if (table_name.empty()) { + table_name = + "NOT FOUND; INDEX_ID: " + std::to_string(gl_index_id.index_id); + } + auto kd = ddl_manager.safe_find(gl_index_id); + std::string idx_name = + (kd) ? kd->get_name() + : "NOT FOUND; INDEX_ID: " + std::to_string(gl_index_id.index_id); + + /* get the name of the column family */ + rocksdb::ColumnFamilyHandle *cfh = cf_manager.get_cf(txn.m_cf_id); + std::string cf_name = cfh->GetName(); + + txn_data += format_string( + "TRANSACTIONID: %u\n" + "COLUMN FAMILY NAME: %s\n" + "WAITING KEY: %s\n" + "LOCK TYPE: %s\n" + "INDEX NAME: %s\n" + "TABLE NAME: %s\n", + txn.m_txn_id, cf_name.c_str(), + rdb_hexdump(txn.m_waiting_key.c_str(), txn.m_waiting_key.length()) + .c_str(), + txn.m_exclusive ? "EXCLUSIVE" : "SHARED", idx_name.c_str(), + table_name.c_str()); + if (!is_last_path) { + txn_data += "---------------WAITING FOR---------------\n"; + } + return txn_data; + } + + static std::string + get_dlock_path_info(const rocksdb::DeadlockPath &path_entry) { + std::string path_data; + if (path_entry.limit_exceeded) { + path_data += "\n-------DEADLOCK EXCEEDED MAX DEPTH-------\n"; + } else { + path_data += "\n*** DEADLOCK PATH\n" + "=========================================\n"; + for (auto it = path_entry.path.begin(); it != path_entry.path.end(); + it++) { + auto txn = *it; + const GL_INDEX_ID gl_index_id = { + txn.m_cf_id, rdb_netbuf_to_uint32(reinterpret_cast<const uchar *>( + txn.m_waiting_key.c_str()))}; + path_data += get_dlock_txn_info(txn, gl_index_id); + } + + DBUG_ASSERT_IFF(path_entry.limit_exceeded, path_entry.path.empty()); + /* print the first txn in the path to display the full deadlock cycle */ + if (!path_entry.path.empty() && !path_entry.limit_exceeded) { + auto txn = path_entry.path[0]; + const GL_INDEX_ID gl_index_id = { + txn.m_cf_id, rdb_netbuf_to_uint32(reinterpret_cast<const uchar *>( + txn.m_waiting_key.c_str()))}; + path_data += get_dlock_txn_info(txn, gl_index_id, true); + + /* prints the txn id of the transaction that caused the deadlock */ + auto deadlocking_txn = *(path_entry.path.end() - 1); + path_data += + format_string("\n--------TRANSACTIONID: %u GOT DEADLOCK---------\n", + deadlocking_txn.m_txn_id); + } + } + + return path_data; + } + + public: Rdb_snapshot_status() : m_data(get_header()) {} std::string getResult() { return m_data + get_footer(); } @@ -3080,11 +3396,20 @@ public: "%s\n" "lock count %llu, write count %llu\n" "insert count %llu, update count %llu, delete count %llu\n", - curr_time - snapshot_timestamp, buffer, tx->get_lock_count(), + (longlong)(curr_time - snapshot_timestamp), buffer, tx->get_lock_count(), tx->get_write_count(), tx->get_insert_count(), tx->get_update_count(), tx->get_delete_count()); } } + + void populate_deadlock_buffer() { + auto dlock_buffer = rdb->GetDeadlockInfoBuffer(); + m_data += "----------LATEST DETECTED DEADLOCKS----------\n"; + + for (auto path_entry : dlock_buffer) { + m_data += get_dlock_path_info(path_entry); + } + } }; /** @@ -3146,11 +3471,7 @@ public: const auto state_it = state_map.find(rdb_trx->GetState()); DBUG_ASSERT(state_it != state_map.end()); -#ifdef MARIAROCKS_NOT_YET - const int is_replication = (thd->rli_slave != nullptr); -#else - const int is_replication= false; -#endif + const int is_replication = (thd->rgi_slave != nullptr); uint32_t waiting_cf_id; std::string waiting_key; rdb_trx->GetWaitingTxns(&waiting_cf_id, &waiting_key), @@ -3184,10 +3505,10 @@ static bool rocksdb_show_snapshot_status(handlerton *const hton, THD *const thd, Rdb_snapshot_status showStatus; Rdb_transaction::walk_tx_list(&showStatus); + showStatus.populate_deadlock_buffer(); /* Send the result data back to MySQL */ - return print_stats(thd, "SNAPSHOTS", "rocksdb", showStatus.getResult(), - stat_print); + return print_stats(thd, "rocksdb", "", showStatus.getResult(), stat_print); } #endif @@ -3310,7 +3631,6 @@ static bool rocksdb_show_status(handlerton *const hton, THD *const thd, str.clear(); rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(dbs, cache_set, &temp_usage_by_type); - snprintf(buf, sizeof(buf), "\nMemTable Total: %llu", (ulonglong)temp_usage_by_type[rocksdb::MemoryUtil::kMemTableTotal]); str.append(buf); @@ -3327,7 +3647,7 @@ static bool rocksdb_show_status(handlerton *const hton, THD *const thd, (ulonglong)internal_cache_count * kDefaultInternalCacheSize); str.append(buf); res |= print_stats(thd, "MEMORY_STATS", "rocksdb", str, stat_print); - +#ifdef MARIAROCKS_NOT_YET /* Show the background thread status */ std::vector<rocksdb::ThreadStatus> thread_list; rocksdb::Status s = rdb->GetEnv()->GetThreadList(&thread_list); @@ -3364,6 +3684,8 @@ static bool rocksdb_show_status(handlerton *const hton, THD *const thd, str, stat_print); } } +#endif + #ifdef MARIAROCKS_NOT_YET } else if (stat_type == HA_ENGINE_TRX) { /* Handle the SHOW ENGINE ROCKSDB TRANSACTION STATUS command */ @@ -3413,8 +3735,6 @@ static int rocksdb_start_tx_and_assign_read_view( user for whom the transaction should be committed */ { - Rdb_perf_context_guard guard(thd); - ulong const tx_isolation = my_core::thd_tx_isolation(thd); if (tx_isolation != ISO_REPEATABLE_READ) { @@ -3433,6 +3753,8 @@ static int rocksdb_start_tx_and_assign_read_view( mysql_mutex_assert_owner(&LOCK_commit_ordered); Rdb_transaction *const tx = get_or_create_tx(thd); + Rdb_perf_context_guard guard(tx, rocksdb_perf_context_level(thd)); + DBUG_ASSERT(!tx->has_snapshot()); tx->set_tx_read_only(true); rocksdb_register_tx(hton, thd, tx); @@ -3476,6 +3798,7 @@ static void rocksdb_update_table_stats( int n_lock_wait, int n_lock_wait_timeout, int n_lock_deadlock, const char *engine)) { my_io_perf_t io_perf_read; + my_io_perf_t io_perf_write; my_io_perf_t io_perf; page_stats_t page_stats; comp_stats_t comp_stats; @@ -3490,6 +3813,7 @@ static void rocksdb_update_table_stats( memset(&io_perf, 0, sizeof(io_perf)); memset(&page_stats, 0, sizeof(page_stats)); memset(&comp_stats, 0, sizeof(comp_stats)); + memset(&io_perf_write, 0, sizeof(io_perf_write)); tablenames = rdb_open_tables.get_table_names(); @@ -3522,6 +3846,8 @@ static void rocksdb_update_table_stats( io_perf_read.bytes = table_handler->m_io_perf_read.bytes.load(); io_perf_read.requests = table_handler->m_io_perf_read.requests.load(); + io_perf_write.bytes = table_handler->m_io_perf_write.bytes.load(); + io_perf_write.requests = table_handler->m_io_perf_write.requests.load(); lock_wait_timeout_stats = table_handler->m_lock_wait_timeout_counter.load(); deadlock_stats = table_handler->m_deadlock_counter.load(); @@ -3549,9 +3875,10 @@ static void rocksdb_update_table_stats( sizeof(dbname_sys)); my_core::filename_to_tablename(tablename.c_str(), tablename_sys, sizeof(tablename_sys)); - (*cb)(dbname_sys, tablename_sys, is_partition, &io_perf_read, &io_perf, - &io_perf, &io_perf, &io_perf, &page_stats, &comp_stats, 0, - lock_wait_timeout_stats, deadlock_stats, rocksdb_hton_name); + (*cb)(dbname_sys, tablename_sys, is_partition, &io_perf_read, + &io_perf_write, &io_perf, &io_perf, &io_perf, &page_stats, + &comp_stats, 0, lock_wait_timeout_stats, deadlock_stats, + rocksdb_hton_name); } } #endif @@ -3649,11 +3976,19 @@ static int rocksdb_init_func(void *const p) { rocksdb_hton->state = SHOW_OPTION_YES; rocksdb_hton->create = rocksdb_create_handler; rocksdb_hton->close_connection = rocksdb_close_connection; + rocksdb_hton->prepare = rocksdb_prepare; + rocksdb_hton->prepare_ordered = NULL; // Do not need it + rocksdb_hton->commit_by_xid = rocksdb_commit_by_xid; rocksdb_hton->rollback_by_xid = rocksdb_rollback_by_xid; rocksdb_hton->recover = rocksdb_recover; + + rocksdb_hton->commit_ordered= rocksdb_commit_ordered; rocksdb_hton->commit = rocksdb_commit; + + rocksdb_hton->commit_checkpoint_request= rocksdb_checkpoint_request; + rocksdb_hton->rollback = rocksdb_rollback; rocksdb_hton->show_status = rocksdb_show_status; rocksdb_hton->start_consistent_snapshot = @@ -3767,8 +4102,18 @@ static int rocksdb_init_func(void *const p) { (rocksdb::BlockBasedTableOptions::IndexType)rocksdb_index_type; if (!rocksdb_tbl_options->no_block_cache) { - rocksdb_tbl_options->block_cache = - rocksdb::NewLRUCache(rocksdb_block_cache_size); + std::shared_ptr<rocksdb::Cache> block_cache = rocksdb_use_clock_cache + ? rocksdb::NewClockCache(rocksdb_block_cache_size) + : rocksdb::NewLRUCache(rocksdb_block_cache_size); + if (rocksdb_sim_cache_size > 0) { + // Simulated cache enabled + // Wrap block cache inside a simulated cache and pass it to RocksDB + rocksdb_tbl_options->block_cache = + rocksdb::NewSimCache(block_cache, rocksdb_sim_cache_size, 6); + } else { + // Pass block cache to RocksDB + rocksdb_tbl_options->block_cache = block_cache; + } } // Using newer BlockBasedTable format version for better compression // and better memory allocation. @@ -3845,8 +4190,6 @@ static int rocksdb_init_func(void *const p) { rocksdb::Options main_opts(*rocksdb_db_options, cf_options_map->get_defaults()); -#ifdef MARIAROCKS_NOT_YET -#endif rocksdb::TransactionDBOptions tx_db_options; tx_db_options.transaction_lock_timeout = 2; // 2 seconds tx_db_options.custom_mutex_factory = std::make_shared<Rdb_mutex_factory>(); @@ -4163,6 +4506,7 @@ Rdb_open_tables_map::get_table_handler(const char *const table_name) { thr_lock_init(&table_handler->m_thr_lock); #ifdef MARIAROCKS_NOT_YET table_handler->m_io_perf_read.init(); + table_handler->m_io_perf_write.init(); #endif } DBUG_ASSERT(table_handler->m_ref_count >= 0); @@ -4420,11 +4764,11 @@ bool ha_rocksdb::init_with_fields() { rows within a transaction, etc, because the compaction filter ignores snapshots when filtering keys. */ -bool ha_rocksdb::should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val, +bool ha_rocksdb::should_hide_ttl_rec(const Rdb_key_def &kd, + const rocksdb::Slice &ttl_rec_val, const int64_t curr_ts) { - DBUG_ASSERT(m_pk_descr != nullptr); - DBUG_ASSERT(m_pk_descr->has_ttl()); - DBUG_ASSERT(m_pk_descr->m_ttl_rec_offset != UINT_MAX); + DBUG_ASSERT(kd.has_ttl()); + DBUG_ASSERT(kd.m_ttl_rec_offset != UINT_MAX); /* Curr_ts can only be 0 if there are no snapshots open. @@ -4450,7 +4794,7 @@ bool ha_rocksdb::should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val, Find where the 8-byte ttl is for each record in this index. */ uint64 ts; - if (!reader.read(m_pk_descr->m_ttl_rec_offset) || reader.read_uint64(&ts)) { + if (!reader.read(kd.m_ttl_rec_offset) || reader.read_uint64(&ts)) { /* This condition should never be reached since all TTL records have an 8 byte ttl field in front. Don't filter the record out, and log an error. @@ -4458,7 +4802,7 @@ bool ha_rocksdb::should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val, std::string buf; buf = rdb_hexdump(ttl_rec_val.data(), ttl_rec_val.size(), RDB_MAX_HEXDUMP_LEN); - const GL_INDEX_ID gl_index_id = m_pk_descr->get_gl_index_id(); + const GL_INDEX_ID gl_index_id = kd.get_gl_index_id(); // NO_LINT_DEBUG sql_print_error("Decoding ttl from PK value failed, " "for index (%u,%u), val: %s", @@ -4472,10 +4816,23 @@ bool ha_rocksdb::should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val, #ifndef NDEBUG read_filter_ts += rdb_dbug_set_ttl_read_filter_ts(); #endif - return ts + m_pk_descr->m_ttl_duration + read_filter_ts <= + return ts + kd.m_ttl_duration + read_filter_ts <= static_cast<uint64>(curr_ts); } +void ha_rocksdb::rocksdb_skip_expired_records(const Rdb_key_def &kd, + rocksdb::Iterator *const iter, + bool seek_backward) { + if (kd.has_ttl()) { + while (iter->Valid() && + should_hide_ttl_rec( + kd, iter->value(), + get_or_create_tx(table->in_use)->m_snapshot_timestamp)) { + rocksdb_smart_next(seek_backward, iter); + } + } +} + /** Convert record from table->record[0] form into a form that can be written into rocksdb. @@ -4501,6 +4858,7 @@ int ha_rocksdb::convert_record_to_storage_format( if (has_ttl) { /* If it's a TTL record, reserve space for 8 byte TTL value in front. */ m_storage_record.fill(ROCKSDB_SIZEOF_TTL_RECORD + m_null_bytes_in_rec, 0); + m_ttl_bytes_updated = false; /* If the TTL is contained within the key, we use the offset to find the @@ -4531,6 +4889,8 @@ int ha_rocksdb::convert_record_to_storage_format( rdb_netbuf_to_uint64(reinterpret_cast<const uchar *>(data)) + rdb_dbug_set_ttl_rec_ts()); #endif + // Also store in m_ttl_bytes to propagate to update_sk + memcpy(m_ttl_bytes, data, ROCKSDB_SIZEOF_TTL_RECORD); } else if (!has_ttl_column) { /* For implicitly generated TTL records we need to copy over the old @@ -4549,6 +4909,8 @@ int ha_rocksdb::convert_record_to_storage_format( #endif char *const data = const_cast<char *>(m_storage_record.ptr()); rdb_netbuf_store_uint64(reinterpret_cast<uchar *>(data), ts); + // Also store in m_ttl_bytes to propagate to update_sk + memcpy(m_ttl_bytes, data, ROCKSDB_SIZEOF_TTL_RECORD); } } } else { @@ -4630,6 +4992,15 @@ int ha_rocksdb::convert_record_to_storage_format( ts += rdb_dbug_set_ttl_rec_ts(); #endif rdb_netbuf_store_uint64(reinterpret_cast<uchar *>(data), ts); + + // If this is an update and the timestamp has been updated, take note + // so we can avoid updating SKs unnecessarily. + if (!row_info.old_pk_slice.empty()) { + m_ttl_bytes_updated = + memcmp(m_ttl_bytes, data, ROCKSDB_SIZEOF_TTL_RECORD); + } + // Store timestamp in m_ttl_bytes to propagate to update_sk + memcpy(m_ttl_bytes, data, ROCKSDB_SIZEOF_TTL_RECORD); } } } @@ -4907,8 +5278,9 @@ int ha_rocksdb::convert_record_from_storage_format( } if (m_maybe_unpack_info) { - unpack_info = reader.read(RDB_UNPACK_HEADER_SIZE); - if (!unpack_info || unpack_info[0] != RDB_UNPACK_DATA_TAG) { + unpack_info = reader.get_current_ptr(); + if (!unpack_info || !Rdb_key_def::is_unpack_data_tag(unpack_info[0]) || + !reader.read(Rdb_key_def::get_unpack_header_size(unpack_info[0]))) { return HA_ERR_ROCKSDB_CORRUPT_DATA; } @@ -4916,7 +5288,8 @@ int ha_rocksdb::convert_record_from_storage_format( rdb_netbuf_to_uint16(reinterpret_cast<const uchar *>(unpack_info + 1)); unpack_slice = rocksdb::Slice(unpack_info, unpack_info_len); - reader.read(unpack_info_len - RDB_UNPACK_HEADER_SIZE); + reader.read(unpack_info_len - + Rdb_key_def::get_unpack_header_size(unpack_info[0])); } int err = m_pk_descr->unpack_record(table, buf, &rowkey_slice, @@ -5072,8 +5445,7 @@ void ha_rocksdb::setup_field_converters() { If hidden pk exists, we skip this check since the field will never be part of the hidden pk. */ - if (!has_hidden_pk(table) && - field->part_of_key.is_set(table->s->primary_key)) { + if (!has_hidden_pk(table)) { KEY *const pk_info = &table->key_info[table->s->primary_key]; for (uint kp = 0; kp < pk_info->user_defined_key_parts; kp++) { /* key_part->fieldnr is counted from 1 */ @@ -5276,7 +5648,10 @@ int ha_rocksdb::open(const char *const name, int mode, uint test_if_locked) { my_core::thr_lock_data_init(&m_table_handler->m_thr_lock, &m_db_lock, nullptr); m_io_perf.init(&m_table_handler->m_table_perf_context, - &m_table_handler->m_io_perf_read, &stats); + &m_table_handler->m_io_perf_read, + &m_table_handler->m_io_perf_write, &stats); + Rdb_perf_context_guard guard(&m_io_perf, + rocksdb_perf_context_level(ha_thd())); std::string fullname; err = rdb_normalize_tablename(name, &fullname); @@ -5375,6 +5750,13 @@ int ha_rocksdb::close(void) { m_table_handler = nullptr; } + // These are needed to suppress valgrind errors in rocksdb.partition + m_storage_record.free(); + m_last_rowkey.free(); + m_sk_tails.free(); + m_sk_tails_old.free(); + m_pk_unpack_info.free(); + DBUG_RETURN(HA_EXIT_SUCCESS); } @@ -5410,6 +5792,14 @@ static_assert((sizeof(rdb_error_messages) / sizeof(rdb_error_messages[0])) == ((HA_ERR_ROCKSDB_LAST - HA_ERR_ROCKSDB_FIRST) + 1), "Number of error messages doesn't match number of error codes"); +//psergey-merge: do we need this in MariaDB: we have get_error_messages +//below... +#if 0 +static const char *rdb_get_error_message(int nr) { + return rdb_error_messages[nr - HA_ERR_ROCKSDB_FIRST]; +} +#endif + static const char **rdb_get_error_messages(int nr) { return rdb_error_messages; } bool ha_rocksdb::get_error_message(const int error, String *const buf) { @@ -5964,9 +6354,8 @@ int ha_rocksdb::create_key_def(const TABLE *const table_arg, const uint &i, DBUG_RETURN(err); } - /* We don't currently support TTL on tables with secondary keys. */ - if (ttl_duration > 0 && - (table_arg->s->keys > 1 || is_hidden_pk(i, table_arg, tbl_def_arg))) { + /* We don't currently support TTL on tables with hidden primary keys. */ + if (ttl_duration > 0 && is_hidden_pk(i, table_arg, tbl_def_arg)) { my_error(ER_RDB_TTL_UNSUPPORTED, MYF(0)); DBUG_RETURN(HA_EXIT_FAILURE); } @@ -6005,6 +6394,12 @@ int ha_rocksdb::create_key_def(const TABLE *const table_arg, const uint &i, kv_version = Rdb_key_def::PRIMARY_FORMAT_VERSION_UPDATE1; }); + DBUG_EXECUTE_IF("MYROCKS_NO_COVERED_BITMAP_FORMAT", { + if (index_type == Rdb_key_def::INDEX_TYPE_SECONDARY) { + kv_version = Rdb_key_def::SECONDARY_FORMAT_VERSION_UPDATE2; + } + }); + uint32 index_flags = (ttl_duration > 0 ? Rdb_key_def::TTL_FLAG : 0); uint32 ttl_rec_offset = @@ -6366,7 +6761,7 @@ int ha_rocksdb::read_key_exact(const Rdb_key_def &kd, from the POV of the current transaction. If it has, try going to the next key. */ - if (kd.has_ttl() && should_hide_ttl_rec(iter->value(), ttl_filter_ts)) { + if (kd.has_ttl() && should_hide_ttl_rec(kd, iter->value(), ttl_filter_ts)) { rocksdb_smart_next(kd.m_is_reverse_cf, iter); continue; } @@ -6402,7 +6797,7 @@ int ha_rocksdb::read_before_key(const Rdb_key_def &kd, if ((full_key_match && kd.value_matches_prefix(m_scan_it->key(), key_slice)) || (kd.has_ttl() && - should_hide_ttl_rec(m_scan_it->value(), ttl_filter_ts))) { + should_hide_ttl_rec(kd, m_scan_it->value(), ttl_filter_ts))) { rocksdb_smart_next(!kd.m_is_reverse_cf, m_scan_it); continue; } @@ -6432,7 +6827,7 @@ int ha_rocksdb::read_after_key(const Rdb_key_def &kd, key. */ while (m_scan_it->Valid() && kd.has_ttl() && - should_hide_ttl_rec(m_scan_it->value(), ttl_filter_ts)) { + should_hide_ttl_rec(kd, m_scan_it->value(), ttl_filter_ts)) { rocksdb_smart_next(kd.m_is_reverse_cf, m_scan_it); } @@ -6590,17 +6985,21 @@ int ha_rocksdb::read_row_from_secondary_key(uchar *const buf, int rc = 0; uint pk_size; - if (m_keyread_only && m_lock_rows == RDB_LOCK_NONE && !has_hidden_pk(table)) { - /* Get the key columns and primary key value */ - const rocksdb::Slice &rkey = m_scan_it->key(); + /* Get the key columns and primary key value */ + const rocksdb::Slice &rkey = m_scan_it->key(); + const rocksdb::Slice &value = m_scan_it->value(); + + bool covered_lookup = + m_keyread_only || kd.covers_lookup(table, &value, &m_lookup_bitmap); + if (covered_lookup && m_lock_rows == RDB_LOCK_NONE && !has_hidden_pk(table)) { pk_size = kd.get_primary_key_tuple(table, *m_pk_descr, &rkey, m_pk_packed_tuple); - const rocksdb::Slice &value = m_scan_it->value(); if (pk_size == RDB_INVALID_KEY_LEN) { rc = HA_ERR_ROCKSDB_CORRUPT_DATA; } else { rc = kd.unpack_record(table, buf, &rkey, &value, m_verify_row_debug_checksums); + global_stats.covered_secondary_key_lookups.inc(); } } else { if (kd.m_is_reverse_cf) @@ -6710,11 +7109,15 @@ int ha_rocksdb::secondary_index_read(const int keyno, uchar *const buf) { m_last_rowkey.copy((const char *)m_pk_packed_tuple, size, &my_charset_bin); - if (m_keyread_only && m_lock_rows == RDB_LOCK_NONE && + rocksdb::Slice value = m_scan_it->value(); + bool covered_lookup = + m_keyread_only || m_key_descr_arr[keyno]->covers_lookup( + table, &value, &m_lookup_bitmap); + if (covered_lookup && m_lock_rows == RDB_LOCK_NONE && !has_hidden_pk(table)) { - rocksdb::Slice value = m_scan_it->value(); rc = m_key_descr_arr[keyno]->unpack_record( table, buf, &key, &value, m_verify_row_debug_checksums); + global_stats.covered_secondary_key_lookups.inc(); } else { rc = get_row_by_rowid(buf, m_pk_packed_tuple, size); } @@ -6759,12 +7162,9 @@ int ha_rocksdb::read_range_first(const key_range *const start_key, int result; eq_range = eq_range_arg; -#ifdef MARIAROCKS_NOT_YET - // Range scan direction is used to get ICP to work for backwards scans - set_end_range(end_key, RANGE_SCAN_ASC); -#else + + /* MariaDB: Pass RANGE_SCAN_ASC when we support ICP on backwards scans */ set_end_range(end_key); -#endif range_key_part = table->key_info[active_index].key_part; @@ -6823,6 +7223,7 @@ int ha_rocksdb::prepare_range_scan(const key_range *start_key, HA_EXIT_SUCCESS OK other HA_ERR error code (can be SE-specific) */ + int ha_rocksdb::index_read_map(uchar *const buf, const uchar *const key, key_part_map keypart_map, enum ha_rkey_function find_flag) { @@ -7039,6 +7440,8 @@ int ha_rocksdb::find_icp_matching_index_rec(const bool &move_forward, const Rdb_key_def &kd = *m_key_descr_arr[active_index]; while (1) { + rocksdb_skip_expired_records(kd, m_scan_it, !move_forward); + if (!m_scan_it->Valid()) { table->status = STATUS_NOT_FOUND; return HA_ERR_END_OF_FILE; @@ -7068,10 +7471,7 @@ int ha_rocksdb::find_icp_matching_index_rec(const bool &move_forward, const enum icp_result icp_status= handler_index_cond_check(this); if (icp_status == ICP_NO_MATCH) { - if (move_forward) - m_scan_it->Next(); - else - m_scan_it->Prev(); + rocksdb_smart_next(!move_forward, m_scan_it); continue; /* Get the next (or prev) index tuple */ } else if (icp_status == ICP_OUT_OF_RANGE || icp_status == ICP_ABORTED_BY_USER) { @@ -7402,7 +7802,8 @@ int ha_rocksdb::get_row_by_rowid(uchar *const buf, const char *const rowid, if (found) { /* If we found the record, but it's expired, pretend we didn't find it. */ if (!skip_ttl_check && m_pk_descr->has_ttl() && - should_hide_ttl_rec(rocksdb::Slice(&m_retrieved_record.front(), + should_hide_ttl_rec(*m_pk_descr, + rocksdb::Slice(&m_retrieved_record.front(), m_retrieved_record.size()), tx->m_snapshot_timestamp)) { DBUG_RETURN(HA_ERR_KEY_NOT_FOUND); @@ -7481,6 +7882,8 @@ int ha_rocksdb::index_next_with_direction(uchar *const buf, bool move_forward) { else m_scan_it->Prev(); } + rocksdb_skip_expired_records(*m_key_descr_arr[active_index], m_scan_it, + !move_forward); rc = find_icp_matching_index_rec(move_forward, buf); if (!rc) rc = secondary_index_read(active_index, buf); @@ -7837,6 +8240,12 @@ bool ha_rocksdb::is_pk(const uint index, const TABLE *const table_arg, is_hidden_pk(index, table_arg, tbl_def_arg); } +uint ha_rocksdb::max_supported_key_part_length() const { + DBUG_ENTER_FUNC(); + DBUG_RETURN(rocksdb_large_prefix ? MAX_INDEX_COL_LEN_LARGE + : MAX_INDEX_COL_LEN_SMALL); +} + const char *ha_rocksdb::get_key_name(const uint index, const TABLE *const table_arg, const Rdb_tbl_def *const tbl_def_arg) { @@ -8219,7 +8628,8 @@ int ha_rocksdb::check_uniqueness_and_lock( m_retrieved_record by check_and_lock_unique_pk(). */ if (is_pk(key_id, table, m_tbl_def) && found && m_pk_descr->has_ttl() && - should_hide_ttl_rec(rocksdb::Slice(&m_retrieved_record.front(), + should_hide_ttl_rec(*m_pk_descr, + rocksdb::Slice(&m_retrieved_record.front(), m_retrieved_record.size()), (row_info.tx->m_snapshot_timestamp ? row_info.tx->m_snapshot_timestamp @@ -8267,48 +8677,112 @@ int ha_rocksdb::check_duplicate_sk(const TABLE *table_arg, int ha_rocksdb::bulk_load_key(Rdb_transaction *const tx, const Rdb_key_def &kd, const rocksdb::Slice &key, - const rocksdb::Slice &value) { - rocksdb::ColumnFamilyHandle *const cf = kd.get_cf(); + const rocksdb::Slice &value, bool sort) { + DBUG_ENTER_FUNC(); + + rocksdb::ColumnFamilyHandle *cf = kd.get_cf(); DBUG_ASSERT(cf != nullptr); - if (m_sst_info == nullptr) { - m_sst_info = std::make_shared<Rdb_sst_info>( - rdb, m_table_handler->m_table_name, kd.get_name(), cf, - *rocksdb_db_options, THDVAR(ha_thd(), trace_sst_api)); - tx->start_bulk_load(this); - m_bulk_load_tx = tx; - } + int res = HA_EXIT_SUCCESS; + + if (sort) { + GL_INDEX_ID kd_gl_id = kd.get_gl_index_id(); + auto it = m_key_merge.find(kd_gl_id); + if (it == m_key_merge.end()) { + m_key_merge.emplace( + std::piecewise_construct, std::make_tuple(kd_gl_id), + std::make_tuple( + thd_rocksdb_tmpdir(), THDVAR(ha_thd(), merge_buf_size), + THDVAR(ha_thd(), merge_combine_read_size), + THDVAR(ha_thd(), merge_tmp_file_removal_delay_ms), cf)); + it = m_key_merge.find(kd_gl_id); + if ((res = it->second.init()) != 0) { + DBUG_RETURN(res); + } - DBUG_ASSERT(m_sst_info != nullptr); + if (m_bulk_load_tx == nullptr) { + tx->start_bulk_load(this); + m_bulk_load_tx = tx; + } + } + res = it->second.add(key, value); + } else { + if (!m_sst_info) { + m_sst_info.reset(new Rdb_sst_info(rdb, m_table_handler->m_table_name, + kd.get_name(), cf, *rocksdb_db_options, + THDVAR(ha_thd(), trace_sst_api))); + tx->start_bulk_load(this); + m_bulk_load_tx = tx; + } - return m_sst_info->put(key, value); + DBUG_ASSERT(m_sst_info); + + res = m_sst_info->put(key, value); + } + + DBUG_RETURN(res); } int ha_rocksdb::finalize_bulk_load() { - int rc = 0; + DBUG_ENTER_FUNC(); + + DBUG_ASSERT_IMP(!m_key_merge.empty() || m_sst_info, + m_bulk_load_tx != nullptr); /* Skip if there are no possible ongoing bulk loads */ - if (m_sst_info == nullptr && m_bulk_load_tx == nullptr) { - return rc; + if (m_key_merge.empty() && !m_sst_info && m_bulk_load_tx == nullptr) { + DBUG_RETURN(HA_EXIT_SUCCESS); } + int res = HA_EXIT_SUCCESS; + RDB_MUTEX_LOCK_CHECK(m_bulk_load_mutex); - /* - We need this check because it's possible that m_sst_info has been - flushed and cleared by another thread by the time the mutex has been - acquired. - */ - if (m_sst_info != nullptr) { - rc = m_sst_info->commit(); - m_sst_info = nullptr; + if (m_sst_info) { + res = m_sst_info->commit(); + m_sst_info.reset(); + } + + if (!m_key_merge.empty()) { + rocksdb::Slice merge_key; + rocksdb::Slice merge_val; + for (auto it = m_key_merge.begin(); it != m_key_merge.end(); it++) { + const std::string &index_name = + ddl_manager.safe_find(it->first)->get_name(); + Rdb_index_merge &rdb_merge = it->second; + Rdb_sst_info sst_info(rdb, m_table_handler->m_table_name, index_name, + rdb_merge.get_cf(), *rocksdb_db_options, + THDVAR(ha_thd(), trace_sst_api)); + + while ((res = rdb_merge.next(&merge_key, &merge_val)) == 0) { + if ((res = sst_info.put(merge_key, merge_val)) != 0) { + break; + } + } + // res == -1 => finished ok; res > 0 => error + if (res <= 0) { + if ((res = sst_info.commit()) != 0) { + break; + } + } + } + m_key_merge.clear(); + + /* + Explicitly tell jemalloc to clean up any unused dirty pages at this point. + See https://reviews.facebook.net/D63723 for more details. + */ + purge_all_jemalloc_arenas(); + } + + if (m_bulk_load_tx != nullptr) { m_bulk_load_tx->end_bulk_load(this); m_bulk_load_tx = nullptr; } RDB_MUTEX_UNLOCK_CHECK(m_bulk_load_mutex); - return rc; + DBUG_RETURN(res); } int ha_rocksdb::update_pk(const Rdb_key_def &kd, @@ -8316,6 +8790,7 @@ int ha_rocksdb::update_pk(const Rdb_key_def &kd, const bool &pk_changed) { const uint key_id = kd.get_keyno(); const bool hidden_pk = is_hidden_pk(key_id, table, m_tbl_def); + ulonglong bytes_written = 0; /* If the PK has changed, or if this PK uses single deletes and this is an @@ -8330,6 +8805,8 @@ int ha_rocksdb::update_pk(const Rdb_key_def &kd, if (!s.ok()) { return row_info.tx->set_status_error(table->in_use, s, kd, m_tbl_def, m_table_handler); + } else { + bytes_written = row_info.old_pk_slice.size(); } } @@ -8350,7 +8827,8 @@ int ha_rocksdb::update_pk(const Rdb_key_def &kd, /* Write the primary key directly to an SST file using an SstFileWriter */ - rc = bulk_load_key(row_info.tx, kd, row_info.new_pk_slice, value_slice); + rc = bulk_load_key(row_info.tx, kd, row_info.new_pk_slice, value_slice, + THDVAR(table->in_use, bulk_load_allow_unsorted)); } else if (row_info.skip_unique_check || row_info.tx->m_ddl_transaction) { /* It is responsibility of the user to make sure that the data being @@ -8372,6 +8850,10 @@ int ha_rocksdb::update_pk(const Rdb_key_def &kd, } } + if (rc == HA_EXIT_SUCCESS) { + row_info.tx->update_bytes_written( + bytes_written + row_info.new_pk_slice.size() + value_slice.size()); + } return rc; } @@ -8385,24 +8867,31 @@ int ha_rocksdb::update_sk(const TABLE *const table_arg, const Rdb_key_def &kd, rocksdb::Slice old_key_slice; const uint key_id = kd.get_keyno(); + + ulonglong bytes_written = 0; + /* - Can skip updating this key if none of the key fields have changed. + Can skip updating this key if none of the key fields have changed and, if + this table has TTL, the TTL timestamp has not changed. */ - if (row_info.old_data != nullptr && !m_update_scope.is_set(key_id)) { + if (row_info.old_data != nullptr && !m_update_scope.is_set(key_id) && + (!kd.has_ttl() || !m_ttl_bytes_updated)) { return HA_EXIT_SUCCESS; } const bool store_row_debug_checksums = should_store_row_debug_checksums(); - new_packed_size = kd.pack_record( - table_arg, m_pack_buffer, row_info.new_data, m_sk_packed_tuple, - &m_sk_tails, store_row_debug_checksums, row_info.hidden_pk_id); + new_packed_size = + kd.pack_record(table_arg, m_pack_buffer, row_info.new_data, + m_sk_packed_tuple, &m_sk_tails, store_row_debug_checksums, + row_info.hidden_pk_id, 0, nullptr, nullptr, m_ttl_bytes); if (row_info.old_data != nullptr) { // The old value old_packed_size = kd.pack_record( table_arg, m_pack_buffer, row_info.old_data, m_sk_packed_tuple_old, - &m_sk_tails_old, store_row_debug_checksums, row_info.hidden_pk_id); + &m_sk_tails_old, store_row_debug_checksums, row_info.hidden_pk_id, 0, + nullptr, nullptr, m_ttl_bytes); /* Check if we are going to write the same value. This can happen when @@ -8420,6 +8909,7 @@ int ha_rocksdb::update_sk(const TABLE *const table_arg, const Rdb_key_def &kd, */ if (old_packed_size == new_packed_size && m_sk_tails_old.get_current_pos() == m_sk_tails.get_current_pos() && + !(kd.has_ttl() && m_ttl_bytes_updated) && memcmp(m_sk_packed_tuple_old, m_sk_packed_tuple, old_packed_size) == 0 && memcmp(m_sk_tails_old.ptr(), m_sk_tails.ptr(), @@ -8438,6 +8928,8 @@ int ha_rocksdb::update_sk(const TABLE *const table_arg, const Rdb_key_def &kd, row_info.tx->get_indexed_write_batch()->SingleDelete(kd.get_cf(), old_key_slice); + + bytes_written = old_key_slice.size(); } new_key_slice = rocksdb::Slice( @@ -8449,6 +8941,9 @@ int ha_rocksdb::update_sk(const TABLE *const table_arg, const Rdb_key_def &kd, row_info.tx->get_indexed_write_batch()->Put(kd.get_cf(), new_key_slice, new_value_slice); + row_info.tx->update_bytes_written(bytes_written + new_key_slice.size() + + new_value_slice.size()); + return HA_EXIT_SUCCESS; } @@ -8456,14 +8951,19 @@ int ha_rocksdb::update_indexes(const struct update_row_info &row_info, const bool &pk_changed) { int rc; + // The PK must be updated first to pull out the TTL value. + rc = update_pk(*m_pk_descr, row_info, pk_changed); + if (rc != HA_EXIT_SUCCESS) { + return rc; + } + + // Update the remaining indexes. for (uint key_id = 0; key_id < m_tbl_def->m_key_count; key_id++) { - const Rdb_key_def &kd = *m_key_descr_arr[key_id]; if (is_pk(key_id, table, m_tbl_def)) { - rc = update_pk(kd, row_info, pk_changed); - } else { - rc = update_sk(table, kd, row_info); + continue; } + rc = update_sk(table, *m_key_descr_arr[key_id], row_info); if (rc != HA_EXIT_SUCCESS) { return rc; } @@ -8741,7 +9241,8 @@ int ha_rocksdb::rnd_next_with_direction(uchar *const buf, bool move_forward) { DEBUG_SYNC(ha_thd(), "rocksdb_concurrent_delete"); if (m_pk_descr->has_ttl() && - should_hide_ttl_rec(m_scan_it->value(), tx->m_snapshot_timestamp)) { + should_hide_ttl_rec(*m_pk_descr, m_scan_it->value(), + tx->m_snapshot_timestamp)) { continue; } @@ -8772,7 +9273,8 @@ int ha_rocksdb::rnd_next_with_direction(uchar *const buf, bool move_forward) { if (m_pk_descr->has_ttl() && should_hide_ttl_rec( - value, get_or_create_tx(table->in_use)->m_snapshot_timestamp)) { + *m_pk_descr, value, + get_or_create_tx(table->in_use)->m_snapshot_timestamp)) { continue; } @@ -8816,6 +9318,10 @@ int ha_rocksdb::index_init(uint idx, bool sorted) { setup_read_decoders(); + if (!m_keyread_only) { + m_key_descr_arr[idx]->get_lookup_bitmap(table, &m_lookup_bitmap); + } + // If m_lock_rows is not RDB_LOCK_NONE then we will be doing a get_for_update // when accessing the index, so don't acquire the snapshot right away. // Otherwise acquire the snapshot immediately. @@ -8835,6 +9341,8 @@ int ha_rocksdb::index_end() { release_scan_iterator(); + bitmap_free(&m_lookup_bitmap); + active_index = MAX_KEY; in_range_check_pushed_down = FALSE; @@ -8878,6 +9386,7 @@ int ha_rocksdb::delete_row(const uchar *const buf) { rocksdb::Slice key_slice(m_last_rowkey.ptr(), m_last_rowkey.length()); Rdb_transaction *const tx = get_or_create_tx(table->in_use); + ulonglong bytes_written = 0; const uint index = pk_index(table, m_tbl_def); rocksdb::Status s = @@ -8885,6 +9394,8 @@ int ha_rocksdb::delete_row(const uchar *const buf) { if (!s.ok()) { DBUG_RETURN(tx->set_status_error(table->in_use, s, *m_pk_descr, m_tbl_def, m_table_handler)); + } else { + bytes_written = key_slice.size(); } longlong hidden_pk_id = 0; @@ -8907,6 +9418,7 @@ int ha_rocksdb::delete_row(const uchar *const buf) { /* Deleting on secondary key doesn't need any locks: */ tx->get_indexed_write_batch()->SingleDelete(kd.get_cf(), secondary_key_slice); + bytes_written += secondary_key_slice.size(); } } @@ -8919,6 +9431,7 @@ int ha_rocksdb::delete_row(const uchar *const buf) { stats.rows_deleted++; #endif update_row_stats(ROWS_DELETED); + tx->update_bytes_written(bytes_written); DBUG_RETURN(HA_EXIT_SUCCESS); } @@ -9005,13 +9518,37 @@ int ha_rocksdb::info(uint flag) { stats.records+= sz/ROCKSDB_ASSUMED_KEY_VALUE_DISK_SIZE; stats.data_file_length+= sz; } - // Second, compute memtable stats - uint64_t memtableCount; - uint64_t memtableSize; - rdb->GetApproximateMemTableStats(m_pk_descr->get_cf(), r, - &memtableCount, &memtableSize); - stats.records += memtableCount; - stats.data_file_length += memtableSize; + // Second, compute memtable stats. This call is expensive, so cache + // values computed for some time. + uint64_t cachetime = rocksdb_force_compute_memtable_stats_cachetime; + uint64_t time = (cachetime == 0) ? 0 : my_interval_timer() / 1000; + if (cachetime == 0 || + time > m_table_handler->m_mtcache_last_update + cachetime) { + uint64_t memtableCount; + uint64_t memtableSize; + + rdb->GetApproximateMemTableStats(m_pk_descr->get_cf(), r, + &memtableCount, &memtableSize); + + // Atomically update all of these fields at the same time + if (cachetime > 0) { + if (m_table_handler->m_mtcache_lock.fetch_add( + 1, std::memory_order_acquire) == 0) { + m_table_handler->m_mtcache_count = memtableCount; + m_table_handler->m_mtcache_size = memtableSize; + m_table_handler->m_mtcache_last_update = time; + } + m_table_handler->m_mtcache_lock.fetch_sub(1, + std::memory_order_release); + } + + stats.records += memtableCount; + stats.data_file_length += memtableSize; + } else { + // Cached data is still valid, so use it instead + stats.records += m_table_handler->m_mtcache_count; + stats.data_file_length += m_table_handler->m_mtcache_size; + } if (rocksdb_debug_optimizer_n_rows > 0) stats.records = rocksdb_debug_optimizer_n_rows; @@ -9691,6 +10228,7 @@ int ha_rocksdb::remove_rows(Rdb_tbl_def *const tbl) { char key_buf[MAX_KEY_LENGTH]; uint key_len; + ulonglong bytes_written = 0; /* Remove all records in each index. (This is is not crash-safe, but it doesn't matter, because bulk row @@ -9722,11 +10260,13 @@ int ha_rocksdb::remove_rows(Rdb_tbl_def *const tbl) { return tx->set_status_error(table->in_use, s, *m_pk_descr, m_tbl_def, m_table_handler); } - + bytes_written += key.size(); it->Next(); } } + tx->update_bytes_written(bytes_written); + return HA_EXIT_SUCCESS; } @@ -9775,6 +10315,8 @@ int ha_rocksdb::rename_table(const char *const from, const char *const to) { DBUG_RETURN(-1); } + DBUG_EXECUTE_IF("gen_sql_table_name", to_str = to_str + "#sql-test";); + const std::unique_ptr<rocksdb::WriteBatch> wb = dict_manager.begin(); rocksdb::WriteBatch *const batch = wb.get(); dict_manager.lock(); @@ -10486,7 +11028,6 @@ int ha_rocksdb::inplace_populate_sk( const std::unordered_set<std::shared_ptr<Rdb_key_def>> &indexes) { DBUG_ENTER_FUNC(); int res = HA_EXIT_SUCCESS; - const std::unique_ptr<rocksdb::WriteBatch> wb = dict_manager.begin(); rocksdb::WriteBatch *const batch = wb.get(); @@ -10542,7 +11083,7 @@ int ha_rocksdb::inplace_populate_sk( open handlers have been closed at this point, and the one we're on is the only one left. */ - if (m_sst_info != nullptr) { + if (m_sst_info) { if ((res = finalize_bulk_load())) { DBUG_RETURN(res); } @@ -10552,14 +11093,16 @@ int ha_rocksdb::inplace_populate_sk( const ulonglong rdb_merge_buf_size = THDVAR(ha_thd(), merge_buf_size); const ulonglong rdb_merge_combine_read_size = THDVAR(ha_thd(), merge_combine_read_size); + const ulonglong rdb_merge_tmp_file_removal_delay = + THDVAR(ha_thd(), merge_tmp_file_removal_delay_ms); for (const auto &index : indexes) { - const rocksdb::Comparator *index_comp = index->get_cf()->GetComparator(); bool is_unique_index = new_table_arg->key_info[index->get_keyno()].flags & HA_NOSAME; - Rdb_index_merge rdb_merge(thd_rocksdb_tmpdir(), rdb_merge_buf_size, - rdb_merge_combine_read_size, index_comp); + Rdb_index_merge rdb_merge( + thd_rocksdb_tmpdir(), rdb_merge_buf_size, rdb_merge_combine_read_size, + rdb_merge_tmp_file_removal_delay, index->get_cf()); if ((res = rdb_merge.init())) { DBUG_RETURN(res); @@ -10588,7 +11131,8 @@ int ha_rocksdb::inplace_populate_sk( /* Create new secondary index entry */ const int new_packed_size = index->pack_record( new_table_arg, m_pack_buffer, table->record[0], m_sk_packed_tuple, - &m_sk_tails, should_store_row_debug_checksums(), hidden_pk_id); + &m_sk_tails, should_store_row_debug_checksums(), hidden_pk_id, 0, + nullptr, nullptr, m_ttl_bytes); const rocksdb::Slice key = rocksdb::Slice( reinterpret_cast<const char *>(m_sk_packed_tuple), new_packed_size); @@ -10653,7 +11197,7 @@ int ha_rocksdb::inplace_populate_sk( /* Insert key and slice to SST via SSTFileWriter API. */ - if ((res = bulk_load_key(tx, *index, merge_key, merge_val))) { + if ((res = bulk_load_key(tx, *index, merge_key, merge_val, false))) { break; } } @@ -11006,6 +11550,9 @@ static void myrocks_update_status() { export_stats.queries_point = global_stats.queries[QUERIES_POINT]; export_stats.queries_range = global_stats.queries[QUERIES_RANGE]; + + export_stats.covered_secondary_key_lookups = + global_stats.covered_secondary_key_lookups; } static void myrocks_update_memory_status() { @@ -11049,6 +11596,9 @@ static SHOW_VAR myrocks_status_variables[] = { SHOW_LONGLONG), DEF_STATUS_VAR_FUNC("queries_range", &export_stats.queries_range, SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("covered_secondary_key_lookups", + &export_stats.covered_secondary_key_lookups, + SHOW_LONGLONG), {NullS, NullS, SHOW_LONG}}; @@ -11059,6 +11609,91 @@ static void show_myrocks_vars(THD *thd, SHOW_VAR *var, char *buff) { var->value = reinterpret_cast<char *>(&myrocks_status_variables); } +static ulonglong +io_stall_prop_value(const std::map<std::string, std::string> &props, + const std::string &key) { + std::map<std::string, std::string>::const_iterator iter = + props.find("io_stalls." + key); + if (iter != props.end()) { + return std::stoull(iter->second); + } else { + DBUG_PRINT("warning", + ("RocksDB GetMapPropery hasn't returned key=%s", key.c_str())); + DBUG_ASSERT(0); + return 0; + } +} + +static void update_rocksdb_stall_status() { + st_io_stall_stats local_io_stall_stats; + for (const auto &cf_name : cf_manager.get_cf_names()) { + rocksdb::ColumnFamilyHandle *cfh = cf_manager.get_cf(cf_name); + if (cfh == nullptr) { + continue; + } + + std::map<std::string, std::string> props; + if (!rdb->GetMapProperty(cfh, "rocksdb.cfstats", &props)) { + continue; + } + + local_io_stall_stats.level0_slowdown += + io_stall_prop_value(props, "level0_slowdown"); + local_io_stall_stats.level0_slowdown_with_compaction += + io_stall_prop_value(props, "level0_slowdown_with_compaction"); + local_io_stall_stats.level0_numfiles += + io_stall_prop_value(props, "level0_numfiles"); + local_io_stall_stats.level0_numfiles_with_compaction += + io_stall_prop_value(props, "level0_numfiles_with_compaction"); + local_io_stall_stats.stop_for_pending_compaction_bytes += + io_stall_prop_value(props, "stop_for_pending_compaction_bytes"); + local_io_stall_stats.slowdown_for_pending_compaction_bytes += + io_stall_prop_value(props, "slowdown_for_pending_compaction_bytes"); + local_io_stall_stats.memtable_compaction += + io_stall_prop_value(props, "memtable_compaction"); + local_io_stall_stats.memtable_slowdown += + io_stall_prop_value(props, "memtable_slowdown"); + local_io_stall_stats.total_stop += io_stall_prop_value(props, "total_stop"); + local_io_stall_stats.total_slowdown += + io_stall_prop_value(props, "total_slowdown"); + } + io_stall_stats = local_io_stall_stats; +} + +static SHOW_VAR rocksdb_stall_status_variables[] = { + DEF_STATUS_VAR_FUNC("l0_file_count_limit_slowdowns", + &io_stall_stats.level0_slowdown, SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("locked_l0_file_count_limit_slowdowns", + &io_stall_stats.level0_slowdown_with_compaction, + SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("l0_file_count_limit_stops", + &io_stall_stats.level0_numfiles, SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("locked_l0_file_count_limit_stops", + &io_stall_stats.level0_numfiles_with_compaction, + SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("pending_compaction_limit_stops", + &io_stall_stats.stop_for_pending_compaction_bytes, + SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("pending_compaction_limit_slowdowns", + &io_stall_stats.slowdown_for_pending_compaction_bytes, + SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("memtable_limit_stops", + &io_stall_stats.memtable_compaction, SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("memtable_limit_slowdowns", + &io_stall_stats.memtable_slowdown, SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("total_stops", &io_stall_stats.total_stop, + SHOW_LONGLONG), + DEF_STATUS_VAR_FUNC("total_slowdowns", &io_stall_stats.total_slowdown, + SHOW_LONGLONG), + // end of the array marker + {NullS, NullS, SHOW_LONG}}; + +static void show_rocksdb_stall_vars(THD *thd, SHOW_VAR *var, char *buff) { + update_rocksdb_stall_status(); + var->type = SHOW_ARRAY; + var->value = reinterpret_cast<char *>(&rocksdb_stall_status_variables); +} + static SHOW_VAR rocksdb_status_vars[] = { DEF_STATUS_VAR(block_cache_miss), DEF_STATUS_VAR(block_cache_hit), @@ -11126,7 +11761,12 @@ static SHOW_VAR rocksdb_status_vars[] = { SHOW_LONGLONG), DEF_STATUS_VAR_PTR("number_sst_entry_other", &rocksdb_num_sst_entry_other, SHOW_LONGLONG), + // the variables generated by SHOW_FUNC are sorted only by prefix (first + // arg in the tuple below), so make sure it is unique to make sorting + // deterministic as quick sort is not stable {"rocksdb", reinterpret_cast<char *>(&show_myrocks_vars), SHOW_FUNC}, + {"rocksdb_stall", reinterpret_cast<char *>(&show_rocksdb_stall_vars), + SHOW_FUNC}, {NullS, NullS, SHOW_LONG}}; /* @@ -11173,10 +11813,13 @@ void Rdb_background_thread::run() { // pthread_cond_timedwait()) to wait on. set_timespec(ts_next_sync, WAKE_UP_INTERVAL); - // Flush the WAL. - if (rdb && (rocksdb_flush_log_at_trx_commit == 2)) { + // Flush the WAL. Sync it for both background and never modes to copy + // InnoDB's behavior. For mode never, the wal file isn't even written, + // whereas background writes to the wal file, but issues the syncs in a + // background thread. + if (rdb && (rocksdb_flush_log_at_trx_commit != FLUSH_LOG_SYNC)) { DBUG_ASSERT(!rocksdb_db_options->allow_mmap_writes); - const rocksdb::Status s = rdb->SyncWAL(); + const rocksdb::Status s = rdb->FlushWAL(true); if (!s.ok()) { rdb_handle_io_error(s, RDB_IO_ERROR_BG_THREAD); } @@ -11272,6 +11915,7 @@ int rdb_dbug_set_ttl_snapshot_ts() { return rocksdb_debug_ttl_snapshot_ts; } int rdb_dbug_set_ttl_read_filter_ts() { return rocksdb_debug_ttl_read_filter_ts; } +bool rdb_dbug_set_ttl_ignore_pk() { return rocksdb_debug_ttl_ignore_pk; } #endif void rdb_update_global_stats(const operation_type &type, uint count, @@ -11496,6 +12140,17 @@ void rocksdb_set_delayed_write_rate(THD *thd, struct st_mysql_sys_var *var, RDB_MUTEX_UNLOCK_CHECK(rdb_sysvars_mutex); } +void rocksdb_set_max_latest_deadlocks(THD *thd, struct st_mysql_sys_var *var, + void *var_ptr, const void *save) { + RDB_MUTEX_LOCK_CHECK(rdb_sysvars_mutex); + const uint32_t new_val = *static_cast<const uint32_t *>(save); + if (rocksdb_max_latest_deadlocks != new_val) { + rocksdb_max_latest_deadlocks = new_val; + rdb->SetDeadlockInfoBufferSize(rocksdb_max_latest_deadlocks); + } + RDB_MUTEX_UNLOCK_CHECK(rdb_sysvars_mutex); +} + void rdb_set_collation_exception_list(const char *const exception_list) { DBUG_ASSERT(rdb_collation_exceptions != nullptr); @@ -11545,6 +12200,18 @@ void rocksdb_set_bulk_load(THD *const thd, struct st_mysql_sys_var *const var *static_cast<bool *>(var_ptr) = *static_cast<const bool *>(save); } +void rocksdb_set_bulk_load_allow_unsorted( + THD *const thd, + struct st_mysql_sys_var *const var MY_ATTRIBUTE((__unused__)), + void *const var_ptr, const void *const save) { + if (THDVAR(thd, bulk_load)) { + my_error(ER_ERROR_WHEN_EXECUTING_COMMAND, MYF(0), "SET", + "Cannot change this setting while bulk load is enabled"); + } else { + *static_cast<bool *>(var_ptr) = *static_cast<const bool *>(save); + } +} + static void rocksdb_set_max_background_jobs(THD *thd, struct st_mysql_sys_var *const var, void *const var_ptr, @@ -11739,6 +12406,19 @@ double ha_rocksdb::read_time(uint index, uint ranges, ha_rows rows) { } // namespace myrocks +/** + Construct and emit duplicate key error message using information + from table's record buffer. + + @sa print_keydup_error(table, key, msg, errflag, thd, org_table_name). +*/ + +void print_keydup_error(TABLE *table, KEY *key, myf errflag, + const THD *thd, const char *org_table_name) +{ + print_keydup_error(table, key, ER(ER_DUP_ENTRY_WITH_KEY_NAME), errflag); +} + /* Register the storage engine plugin outside of myrocks namespace so that mysql_declare_plugin does not get confused when it does diff --git a/storage/rocksdb/ha_rocksdb.h b/storage/rocksdb/ha_rocksdb.h index 4cbee5cb64d..2949f6d6588 100644 --- a/storage/rocksdb/ha_rocksdb.h +++ b/storage/rocksdb/ha_rocksdb.h @@ -22,6 +22,7 @@ /* C++ standard header files */ #include <set> #include <string> +#include <unordered_map> #include <unordered_set> #include <vector> @@ -250,6 +251,12 @@ enum collations_used { #define ROCKSDB_SIZEOF_TTL_RECORD sizeof(longlong) /* + Maximum index prefix length in bytes. +*/ +#define MAX_INDEX_COL_LEN_LARGE 3072 +#define MAX_INDEX_COL_LEN_SMALL 767 + +/* MyRocks specific error codes. NB! Please make sure that you will update HA_ERR_ROCKSDB_LAST when adding new ones. Also update the strings in rdb_error_messages to include any new error messages. @@ -307,7 +314,14 @@ struct Rdb_table_handler { /* Stores cumulative table statistics */ my_io_perf_atomic_t m_io_perf_read; + my_io_perf_atomic_t m_io_perf_write; Rdb_atomic_perf_counters m_table_perf_context; + + /* Stores cached memtable estimate statistics */ + std::atomic_uint m_mtcache_lock; + uint64_t m_mtcache_count; + uint64_t m_mtcache_size; + uint64_t m_mtcache_last_update; }; class Rdb_key_def; @@ -374,6 +388,8 @@ struct st_global_stats { ib_counter_t<ulonglong, 64, RDB_INDEXER> system_rows[ROWS_MAX]; ib_counter_t<ulonglong, 64, RDB_INDEXER> queries[QUERIES_MAX]; + + ib_counter_t<ulonglong, 64, RDB_INDEXER> covered_secondary_key_lookups; }; /* Struct used for exporting status to MySQL */ @@ -393,6 +409,8 @@ struct st_export_stats { ulonglong queries_point; ulonglong queries_range; + + ulonglong covered_secondary_key_lookups; }; /* Struct used for exporting RocksDB memory status */ @@ -401,6 +419,27 @@ struct st_memory_stats { ulonglong memtable_unflushed; }; +/* Struct used for exporting RocksDB IO stalls stats */ +struct st_io_stall_stats { + ulonglong level0_slowdown; + ulonglong level0_slowdown_with_compaction; + ulonglong level0_numfiles; + ulonglong level0_numfiles_with_compaction; + ulonglong stop_for_pending_compaction_bytes; + ulonglong slowdown_for_pending_compaction_bytes; + ulonglong memtable_compaction; + ulonglong memtable_slowdown; + ulonglong total_stop; + ulonglong total_slowdown; + + st_io_stall_stats() + : level0_slowdown(0), level0_slowdown_with_compaction(0), + level0_numfiles(0), level0_numfiles_with_compaction(0), + stop_for_pending_compaction_bytes(0), + slowdown_for_pending_compaction_bytes(0), memtable_compaction(0), + memtable_slowdown(0), total_stop(0), total_slowdown(0) {} +}; + } // namespace myrocks #include "./rdb_buff.h" @@ -509,6 +548,12 @@ class ha_rocksdb : public my_core::handler { Pointer to the original TTL timestamp value (8 bytes) during UPDATE. */ char m_ttl_bytes[ROCKSDB_SIZEOF_TTL_RECORD]; + /* + The TTL timestamp value can change if the explicit TTL column is + updated. If we detect this when updating the PK, we indicate it here so + we know we must always update any SK's. + */ + bool m_ttl_bytes_updated; /* rowkey of the last record we've read, in StorageFormat. */ String m_last_rowkey; @@ -555,7 +600,9 @@ class ha_rocksdb : public my_core::handler { bool m_update_scope_is_valid; /* SST information used for bulk loading the primary key */ - std::shared_ptr<Rdb_sst_info> m_sst_info; + std::unique_ptr<Rdb_sst_info> m_sst_info; + /* External merge sorts for bulk load: key ID -> merge sort instance */ + std::unordered_map<GL_INDEX_ID, Rdb_index_merge> m_key_merge; Rdb_transaction *m_bulk_load_tx; /* Mutex to protect finalizing bulk load */ mysql_mutex_t m_bulk_load_mutex; @@ -653,6 +700,13 @@ class ha_rocksdb : public my_core::handler { void setup_read_decoders(); /* + For the active index, indicates which columns must be covered for the + current lookup to be covered. If the bitmap field is null, that means this + index does not cover the current lookup for any record. + */ + MY_BITMAP m_lookup_bitmap = {nullptr, nullptr, nullptr, 0, 0}; + + /* Number of bytes in on-disk (storage) record format that are used for storing SQL NULL flags. */ @@ -889,11 +943,7 @@ public: DBUG_RETURN(MAX_REF_PARTS); } - uint max_supported_key_part_length() const override { - DBUG_ENTER_FUNC(); - - DBUG_RETURN(2048); - } + uint max_supported_key_part_length() const override; /** @brief unireg.cc will call this to make sure that the storage engine can handle @@ -1072,9 +1122,13 @@ private: rocksdb::Slice *const packed_rec) MY_ATTRIBUTE((__nonnull__)); - bool should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val, + bool should_hide_ttl_rec(const Rdb_key_def &kd, + const rocksdb::Slice &ttl_rec_val, const int64_t curr_ts) MY_ATTRIBUTE((__warn_unused_result__)); + void rocksdb_skip_expired_records(const Rdb_key_def &kd, + rocksdb::Iterator *const iter, + bool seek_backward); int index_first_intern(uchar *buf) MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); @@ -1107,8 +1161,10 @@ private: struct unique_sk_buf_info *sk_info) MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); int bulk_load_key(Rdb_transaction *const tx, const Rdb_key_def &kd, - const rocksdb::Slice &key, const rocksdb::Slice &value) + const rocksdb::Slice &key, const rocksdb::Slice &value, + bool sort) MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); + void update_bytes_written(ulonglong bytes_written); int update_pk(const Rdb_key_def &kd, const struct update_row_info &row_info, const bool &pk_changed) MY_ATTRIBUTE((__warn_unused_result__)); int update_sk(const TABLE *const table_arg, const Rdb_key_def &kd, diff --git a/storage/rocksdb/ha_rocksdb_proto.h b/storage/rocksdb/ha_rocksdb_proto.h index e465ed7cf25..85c3968cc99 100644 --- a/storage/rocksdb/ha_rocksdb_proto.h +++ b/storage/rocksdb/ha_rocksdb_proto.h @@ -77,6 +77,7 @@ bool rdb_is_ttl_read_filtering_enabled(); int rdb_dbug_set_ttl_rec_ts(); int rdb_dbug_set_ttl_snapshot_ts(); int rdb_dbug_set_ttl_read_filter_ts(); +bool rdb_dbug_set_ttl_ignore_pk(); #endif enum operation_type : int; diff --git a/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority.inc b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority.inc new file mode 100644 index 00000000000..7adca5d7cf2 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority.inc @@ -0,0 +1,174 @@ +############################################################################### +# Common test file for high priority DDL +############################################################################### + + +create user test_user1@localhost; +grant all on test to test_user1@localhost; +create user test_user2@localhost; +grant all on test to test_user2@localhost; + +# Default values +--let $con_block = con1 +--let $con_kill = default +--let $should_kill = 1 +--let $recreate_table = 1 +--let $throw_error = 1 + +## +## killing conflicting shared locks by alter table +## + +--let $blocking_sql = lock tables t1 read; +--let $cmd = alter table t1 modify i bigint; +--let $high_priority_cmd = alter high_priority table t1 modify i bigint; + +--source include/ddl_high_priority_module.inc + +## +## killing conflicting shared lock in a transaction +## transaction will rollback +## + +--let $blocking_sql = begin; insert into t1 values (4); select i from t1; +--let $cmd = alter table t1 rename t1_new; +--let $high_priority_cmd = alter high_priority table t1 rename t1_new; + +--source include/ddl_high_priority_module.inc + +select * from t1_new; +drop table t1_new; + +## +## simulate conflicting DDL which will not be killed +## + +# Simulate conflicting DDL +# This will hold MDL_SHARED_NO_READ_WRITE, which may be upgraded to exclusive +# locks to run DDLs like ALTER TABLE +# the upgradable/exclusive lock should not be killed + +--let $should_kill = 0 + +--let $blocking_sql = lock tables t1 write; +--let $cmd = drop table t1; +--let $high_priority_cmd = drop high_priority table t1; + +--source include/ddl_high_priority_module.inc + +# restore $should_kill +--let $should_kill = 1 + +## +## killing conflicting transaction by drop table DDL +## + +--let $blocking_sql = lock tables t1 read; begin; insert into t1 values (4); +--let $cmd = drop table t1; +--let $high_priority_cmd = drop high_priority table t1; + +--source include/ddl_high_priority_module.inc + +## +## no effect for regular users +## + +connect (con2,localhost,test_user2,,test,,); +# $con_kill is regular user +--let $con_kill = con2 +--let $should_kill = 0 + +--let $blocking_sql = lock tables t1 read; +--let $cmd = alter table t1 modify i bigint; +--let $high_priority_cmd = alter high_priority table t1 modify i bigint; + +--source include/ddl_high_priority_module.inc + +disconnect con2; + +# restore $con_kill +--let $con_kill = default +# restore $should_kill +--let $should_kill = 1 + +## +## create/drop index +## + +# create index + +--let $blocking_sql = lock tables t1 read; +--let $cmd = create index idx1 on t1 (i); +--let $high_priority_cmd = create high_priority index idx1 on t1 (i); + +--source include/ddl_high_priority_module.inc + +# drop index (use the previously created table) +--let $recreate_table = 0 + +--let $cmd = drop index idx1 on t1; +--let $high_priority_cmd = drop high_priority index idx1 on t1; + +--source include/ddl_high_priority_module.inc + +# restore $recreate_table +--let $recreate_table = 1 + +## +## high_priority truncate table +## + +--let $blocking_sql = lock tables t1 read; +--let $cmd = truncate t1; +--let $high_priority_cmd = truncate high_priority t1; + +--source include/ddl_high_priority_module.inc + +## +## high_priority create/drop trigger +## + +--let $blocking_sql = lock tables t1 read; +--let $cmd = create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; +--let $high_priority_cmd = create high_priority trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; + +--source include/ddl_high_priority_module.inc + +# drop trigger (use the previously created table) +--let $recreate_table = 0 + +--let $cmd = drop trigger ins_sum; +--let $high_priority_cmd = drop high_priority trigger ins_sum; + +--source include/ddl_high_priority_module.inc + +# restore $recreate_table +--let $recreate_table = 1 + +## +## high_priority optimize table +## +## "optimize table" doesn't throw errors. It catches all errors, and +## returns a result set in a table +## + +--let $throw_error = 0 + +--let $blocking_sql = lock tables t1 read; +--let $cmd = optimize table t1; +--let $high_priority_cmd = optimize high_priority table t1; + +--source include/ddl_high_priority_module.inc + +# restore throw_error +--let $throw_error = 1 + +## +## clean up +## + +drop user test_user1@localhost; +drop user test_user2@localhost; +--disable_warnings +drop table if exists t1; +--enable_warnings diff --git a/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc new file mode 100644 index 00000000000..ffbdc306455 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc @@ -0,0 +1,141 @@ +############################################################################### +# This file plays as a function/module for ddl_high_priority test +# +# Usage: set the following variables before including +# +# $use_sys_var: whether using sys_var or syntax to trigger high_priority +# value: 0/1 +# +# $con_block: a blocking connection +# value: con1/con2/default +# +# $con_kill: a connection that will attempt to kill $con_blocking +# value: con1/con2/default +# +# $cmd: a regular command to evaluate (to use with sys var) +# value: sql command +# +# $high_priority_cmd: a high_priority command to evaluate +# value: sql command +# +# $should_kill: Expect the con_block to be killed or not +# value: 0/1 +# +# $recreate_table: Should recreate the test table or not +# value: 0/1 +# +# $throw_error: whether a command will throw lock_wait_timeout error. +# Note, optimize table catches all errors. +# value: 0/1 +############################################################################### + +## +## Print out the parameters of the test set +## (useful for debugging) +## +--echo +--echo ## Test parameters: +--echo ## use_sys_var = $use_sys_var +--echo ## con_block = $con_block +--echo ## con_kill = $con_kill +--echo ## cmd = $cmd +--echo ## high_priority_cmd = $high_priority_cmd +--echo ## should_kill = $should_kill +--echo ## recreate_table = $recreate_table +--echo ## throw_error = $throw_error +--echo + + +## +## Setup +## + +connection default; + +# create con1 +connect (con1,localhost,test_user1,,test,,); + +if ($recreate_table) { + # create t1 + --disable_warnings + drop table if exists t1; + --enable_warnings + create table t1 (i int); + show create table t1; + insert into t1 values (1), (2), (3); +} + +## +## Testing +## + +--echo connection: $con_block +--connection $con_block +--eval $blocking_sql + +--echo connection: $con_kill +--connection $con_kill +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; + +describe t1; + +--echo connection: default (for show processlist) +connection default; +--echo # both $con_block and $con_kill exist +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> 9 <RExam> 10 <RSent> 11 <TID> +show processlist; + +--echo connection: $con_kill +--connection $con_kill + +# command will fail without high_priority +if ($throw_error) { + --error ER_LOCK_WAIT_TIMEOUT + --eval $cmd +} + +if (!$throw_error) { + --eval $cmd +} + +if ($use_sys_var) { + set high_priority_ddl = 1; + select @@high_priority_ddl; + + # non-supported command will timeout + --error ER_LOCK_WAIT_TIMEOUT + lock tables t1 write; + + if (!$should_kill) { + # regular user ddl will fail regardless of high_priority_ddl being on + --error ER_LOCK_WAIT_TIMEOUT + --eval $cmd + } + + if ($should_kill) { + --eval $cmd + } + + # reset high_priority_ddl + set high_priority_ddl = 0; +} + +if (!$use_sys_var) { + if (!$should_kill) { + # regular user ddl will fail regardless of high_priority being on + --error ER_LOCK_WAIT_TIMEOUT + --eval $high_priority_cmd + } + + if ($should_kill) { + --eval $high_priority_cmd + } +} + +--echo connection: default (for show processlist) +connection default; +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> 9 <RExam> 10 <RSent> 11 <TID> +show processlist; + +disconnect con1; diff --git a/storage/rocksdb/mysql-test/rocksdb/include/index_merge_ror.inc b/storage/rocksdb/mysql-test/rocksdb/include/index_merge_ror.inc index 2e8a07de349..ed270802db1 100644 --- a/storage/rocksdb/mysql-test/rocksdb/include/index_merge_ror.inc +++ b/storage/rocksdb/mysql-test/rocksdb/include/index_merge_ror.inc @@ -125,6 +125,7 @@ analyze table t1; -- enable_query_log # One row results tests for cases where a single row matches all conditions +--replace_column 9 # explain select key1,key2 from t1 where key1=100 and key2=100; select key1,key2 from t1 where key1=100 and key2=100; if (!$skip_ror_EXPLAIN_for_MyRocks) diff --git a/storage/rocksdb/mysql-test/rocksdb/include/prefix_index_only_query_check.inc b/storage/rocksdb/mysql-test/rocksdb/include/prefix_index_only_query_check.inc new file mode 100644 index 00000000000..e96eb573c1f --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/include/prefix_index_only_query_check.inc @@ -0,0 +1,21 @@ +# +# A helper include file for prefix index index-only query tests +# +# Parameters: +# $prefix_index_check_title - title of the test +# $prefix_index_check_query - test query +# $prefix_index_check_read_avoided_delta - expected change of +# 'rocksdb_covered_secondary_key_lookups' status variable +# value after running the query + +--let $show_count_statement = show status like 'rocksdb_covered_secondary_key_lookups' + +--echo # $prefix_index_check_title +--let $base_count = query_get_value($show_count_statement, Value, 1) + +--eval $prefix_index_check_query + +--let $count = query_get_value($show_count_statement, Value, 1) +--let $assert_text= $prefix_index_check_title: $prefix_index_check_read_avoided_delta rocksdb_covered_secondary_key_lookups +--let $assert_cond= $count - $base_count = $prefix_index_check_read_avoided_delta +--source include/assert.inc diff --git a/storage/rocksdb/mysql-test/rocksdb/my.cnf b/storage/rocksdb/mysql-test/rocksdb/my.cnf index 2beaf514cee..6f1722addc5 100644 --- a/storage/rocksdb/mysql-test/rocksdb/my.cnf +++ b/storage/rocksdb/mysql-test/rocksdb/my.cnf @@ -10,8 +10,11 @@ explicit-defaults-for-timestamp=1 loose-rocksdb_lock_wait_timeout=1 loose-rocksdb_strict_collation_check=0 +# MariaDB: speed up the tests: loose-rocksdb-flush-log-at-trx-commit=0 +loose-rocksdb_force_compute_memtable_stats_cachetime=0 + # The following is to get rid of the harmless # "Deadlock found when trying to get lock" errors, see MDEV-12285. log-warnings=1 diff --git a/storage/rocksdb/mysql-test/rocksdb/r/2pc_group_commit.result b/storage/rocksdb/mysql-test/rocksdb/r/2pc_group_commit.result index 06452a5437f..a9e80f1562e 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/2pc_group_commit.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/2pc_group_commit.result @@ -3,42 +3,87 @@ DROP DATABASE IF EXISTS mysqlslap; CREATE DATABASE mysqlslap; USE mysqlslap; CREATE TABLE t1(id BIGINT AUTO_INCREMENT, value BIGINT, PRIMARY KEY(id)) ENGINE=rocksdb; +SET @save_rocksdb_enable_2pc= @@rocksdb_enable_2pc; +SET @save_rocksdb_flush_log_at_trx_commit= @@rocksdb_flush_log_at_trx_commit; # 2PC enabled, MyRocks durability enabled -SET GLOBAL rocksdb_enable_2pc=0; +SET GLOBAL rocksdb_enable_2pc=1; SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +## ## 2PC + durability + single thread -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c = 1000 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c = 1000 then 'true' else 'false' end -false +## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +select IF(variable_value - @b1 = 1000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +Binlog_commits +OK +select IF(variable_value - @b2 = 1000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +Binlog_group_commits +OK +# Prepare operations sync, commits don't. We expect slightly more than 1K syncs: +select IF(variable_value - @b3 between 1000 and 1500, 'OK', 'FAIL') as Rocksdb_wal_synced +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +Rocksdb_wal_synced +OK +## ## 2PC + durability + group commit -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c > 0 and variable_value-@c < 10000 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c > 0 and variable_value-@c < 10000 then 'true' else 'false' end -false -# 2PC enabled, MyRocks durability disabled -SET GLOBAL rocksdb_enable_2pc=0; -SET GLOBAL rocksdb_flush_log_at_trx_commit=0; -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c = 0 then 'true' else 'false' end -true -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c = 0 then 'true' else 'false' end -true -# 2PC disabled, MyRocks durability enabled -SET GLOBAL rocksdb_enable_2pc=1; -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c = 0 then 'true' else 'false' end -false -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -case when variable_value-@c = 0 then 'true' else 'false' end -false +## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +select IF(variable_value - @b1 = 10000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +Binlog_commits +OK +select IF(variable_value - @b2 between 100 and 5000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +Binlog_group_commits +OK +select IF(variable_value - @b3 between 1 and 9000, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +IF(variable_value - @b3 between 1 and 9000, 'OK', 'FAIL') +OK +## +# 2PC enabled, MyRocks durability disabled, single thread +## SET GLOBAL rocksdb_enable_2pc=1; -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +SET GLOBAL rocksdb_flush_log_at_trx_commit=0; +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +select IF(variable_value - @b1 = 1000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +Binlog_commits +OK +select IF(variable_value - @b2 = 1000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +Binlog_group_commits +OK +select IF(variable_value - @b3 < 10, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +IF(variable_value - @b3 < 10, 'OK', 'FAIL') +OK +## +# 2PC enabled, MyRocks durability disabled, concurrent workload +## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +select IF(variable_value - @b1 = 10000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +Binlog_commits +OK +select IF(variable_value - @b2 < 8000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +Binlog_group_commits +OK +select IF(variable_value - @b3 < 10, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +IF(variable_value - @b3 < 10, 'OK', 'FAIL') +OK +SET GLOBAL rocksdb_enable_2pc= @save_rocksdb_enable_2pc; +SET GLOBAL rocksdb_flush_log_at_trx_commit= @save_rocksdb_flush_log_at_trx_commit; DROP TABLE t1; DROP DATABASE mysqlslap; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace.result b/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace.result index b51680fa5fe..01fa9f1d35b 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace.result @@ -289,12 +289,16 @@ set global rocksdb_bulk_load=1; connect con1,localhost,root,,; # Switch to connection con1 connection con1; -show global variables like 'rocksdb_bulk_load'; +show global variables like 'rocksdb_bulk_load%'; Variable_name Value rocksdb_bulk_load ON -show session variables like 'rocksdb_bulk_load'; +rocksdb_bulk_load_allow_unsorted OFF +rocksdb_bulk_load_size 1000 +show session variables like 'rocksdb_bulk_load%'; Variable_name Value rocksdb_bulk_load ON +rocksdb_bulk_load_allow_unsorted OFF +rocksdb_bulk_load_size 1000 CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB; INSERT INTO t1 VALUES (1,1); # Disconnecting on con1 @@ -341,10 +345,11 @@ SET @prior_rocksdb_strict_collation_check= @@rocksdb_strict_collation_check; SET @prior_rocksdb_merge_buf_size = @@rocksdb_merge_buf_size; SET global rocksdb_strict_collation_check = off; SET session rocksdb_merge_combine_read_size = 566; -SET session rocksdb_merge_buf_size = 336; -show variables like '%rocksdb_bulk_load%'; +SET session rocksdb_merge_buf_size = 340; +show variables like 'rocksdb_bulk_load%'; Variable_name Value rocksdb_bulk_load OFF +rocksdb_bulk_load_allow_unsorted OFF rocksdb_bulk_load_size 1000 CREATE TABLE t1 (a VARCHAR(80)) ENGINE=RocksDB; INSERT INTO t1 (a) VALUES (REPEAT("a", 80)); diff --git a/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace_sstfilewriter.result b/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace_sstfilewriter.result index 2d1ba7ca1d8..0c3ad720194 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace_sstfilewriter.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace_sstfilewriter.result @@ -1,18 +1,18 @@ drop table if exists t1; CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30)) COLLATE 'latin1_bin'; set rocksdb_bulk_load=1; -set rocksdb_bulk_load_size=100000; +set rocksdb_bulk_load_size=10000; LOAD DATA INFILE <input_file> INTO TABLE t1; set rocksdb_bulk_load=0; select count(pk) from t1; count(pk) -3000000 +300000 select count(a) from t1; count(a) -3000000 +300000 select count(b) from t1; count(b) -3000000 +300000 ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE; ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY; SELECT COUNT(*) as c FROM @@ -25,22 +25,22 @@ c 1 select count(*) from t1 FORCE INDEX(kb); count(*) -3000000 +300000 select count(*) from t1 FORCE INDEX(kb_copy); count(*) -3000000 +300000 select count(*) from t1 FORCE INDEX(PRIMARY); count(*) -3000000 +300000 ALTER TABLE t1 DROP INDEX kb, ALGORITHM=INPLACE; ALTER TABLE t1 DROP INDEX kb_copy, ALGORITHM=INPLACE; ALTER TABLE t1 ADD INDEX kb(b), ADD INDEX kab(a,b), ALGORITHM=INPLACE; SELECT COUNT(*) FROM t1 FORCE INDEX(kab); COUNT(*) -3000000 +300000 SELECT COUNT(*) FROM t1 FORCE INDEX(kb); COUNT(*) -3000000 +300000 SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result index eced62bd043..f230b173892 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result @@ -26,4 +26,30 @@ select @@rocksdb_bulk_load; @@rocksdb_bulk_load 0 call mtr.add_suppression('finalizing last SST file while setting bulk loading variable'); +TRUNCATE TABLE t1; +SET rocksdb_bulk_load_allow_unsorted=1; +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES(100); +INSERT INTO t1 VALUES(101); +INSERT INTO t1 VALUES(99); +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +pk +99 +100 +101 +TRUNCATE TABLE t1; +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES(201); +INSERT INTO t1 VALUES(200); +INSERT INTO t1 VALUES(202); +INSERT INTO t1 VALUES(201); +ERROR 23000: Failed to insert the record: the key already exists +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +pk +200 +201 +202 +SET rocksdb_bulk_load_allow_unsorted=DEFAULT; DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted.result b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted.result new file mode 100644 index 00000000000..2a7c7bd69fd --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted.result @@ -0,0 +1,103 @@ +DROP TABLE IF EXISTS t1; +SET rocksdb_bulk_load_size=3; +SET rocksdb_bulk_load_allow_unsorted=1; +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1"); +SET rocksdb_bulk_load=1; +SELECT * FROM t1; +a b +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +a b +-3 5 +-1 3 +2 0 +4 -2 +6 -4 +DROP TABLE t1; +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1", KEY(b)); +SET rocksdb_bulk_load=1; +SELECT * FROM t1; +a b +6 -4 +4 -2 +2 0 +-1 3 +-3 5 +SET rocksdb_bulk_load=0; +DROP TABLE t1; +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1"); +CREATE TABLE t2(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1"); +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES (1,1); +INSERT INTO t2 VALUES (1,1); +SELECT * FROM t1; +a b +1 1 +INSERT INTO t1 VALUES (2,2); +SELECT * FROM t2; +a b +1 1 +SELECT * FROM t1; +a b +1 1 +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +a b +1 1 +2 2 +DROP TABLE t1, t2; +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1"); +CREATE TABLE t2(a INT, b INT, PRIMARY KEY(b) COMMENT "cf1"); +CREATE TABLE t3(a INT, b INT, PRIMARY KEY(a) COMMENT "cf1") +PARTITION BY KEY() PARTITIONS 4; +connect other,localhost,root,,; +set session transaction isolation level repeatable read; +select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS'; +STAT_TYPE VALUE +DB_NUM_SNAPSHOTS 0 +start transaction with consistent snapshot; +select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS'; +STAT_TYPE VALUE +DB_NUM_SNAPSHOTS 1 +connection default; +set rocksdb_bulk_load=1; +set rocksdb_bulk_load_size=100000; +LOAD DATA INFILE <input_file> INTO TABLE t1; +LOAD DATA INFILE <input_file> INTO TABLE t2; +LOAD DATA INFILE <input_file> INTO TABLE t3; +set rocksdb_bulk_load=0; +SHOW TABLE STATUS WHERE name LIKE 't%'; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL +t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL +t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned +ANALYZE TABLE t1, t2, t3; +Table Op Msg_type Msg_text +test.t1 analyze status OK +test.t2 analyze status OK +test.t3 analyze status OK +SHOW TABLE STATUS WHERE name LIKE 't%'; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL +t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL +t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned +select count(a) from t1; +count(a) +5000000 +select count(b) from t1; +count(b) +5000000 +select count(a) from t2; +count(a) +5000000 +select count(b) from t2; +count(b) +5000000 +select count(a) from t3; +count(a) +5000000 +select count(b) from t3; +count(b) +5000000 +DROP TABLE t1, t2, t3; +SET rocksdb_bulk_load_allow_unsorted=0; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted_errors.result b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted_errors.result new file mode 100644 index 00000000000..d8e5b92e897 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/bulk_load_unsorted_errors.result @@ -0,0 +1,4 @@ +SET rocksdb_bulk_load=1; +SET rocksdb_bulk_load_allow_unsorted=1; +ERROR HY000: Error when executing command SET: Cannot change this setting while bulk load is enabled +SET rocksdb_bulk_load=0; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/bytes_written.result b/storage/rocksdb/mysql-test/rocksdb/r/bytes_written.result new file mode 100644 index 00000000000..d9d29e6ac69 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/bytes_written.result @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS stats_test_table; +CREATE TABLE stats_test_table (a INT, b INT, PRIMARY KEY (a)) ENGINE=ROCKSDB; +SET GLOBAL rocksdb_perf_context_level=3; +INSERT INTO stats_test_table VALUES (7,1); +INSERT INTO stats_test_table VALUES (2,2); +SELECT io_write_bytes > 0 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME = "stats_test_table"; +io_write_bytes > 0 +1 +DROP TABLE stats_test_table; +SET GLOBAL rocksdb_perf_context_level=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_not_null.result b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_not_null.result index 7f197f05b15..2ae965b6cfc 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_not_null.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_not_null.result @@ -1643,17 +1643,27 @@ r1_1 -0.9 r1_1 0.0 r1_1 0.9 r1_1 0.9 -SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1; -MAX(f) 9.999999680285692e37 -MAX(d) 1e81 -MAX(d10_10) 0.9999999999 -MAX(d1_0) 9 -MAX(d53) 100000000000000000000000000000000000000000000000000000 -MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000 -MAX(f0) 9.999999680285692e37 -MAX(f20_3) 99999998430674940.000 -MAX(f23_0) 9.999999680285692e37 -MAX(r1_1) 0.9 +SELECT +CONCAT('', MAX(f)), +CONCAT('', MAX(f0)), +CONCAT('', MAX(r1_1)), +CONCAT('', MAX(f23_0)), +CONCAT('', MAX(f20_3)), +CONCAT('', MAX(d)), +CONCAT('', MAX(d1_0)), +CONCAT('', MAX(d10_10)), +CONCAT('', MAX(d53)), +CONCAT('', MAX(d53_10)) FROM t1; +CONCAT('', MAX(f)) 9.999999680285692e37 +CONCAT('', MAX(d)) 1e81 +CONCAT('', MAX(d10_10)) 0.9999999999 +CONCAT('', MAX(d1_0)) 9 +CONCAT('', MAX(d53)) 100000000000000000000000000000000000000000000000000000 +CONCAT('', MAX(d53_10)) 10000000000000000000000000000000000000000000.0000000000 +CONCAT('', MAX(f0)) 9.999999680285692e37 +CONCAT('', MAX(f20_3)) 99999998430674940.000 +CONCAT('', MAX(f23_0)) 9.999999680285692e37 +CONCAT('', MAX(r1_1)) 0.9 INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES ( 9999999999999999999999999999999999999999999999999999999999999.9999, 9999999999999999999999999999999999999999999999999999999999999.9999, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_null.result b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_null.result index fb0e2af4362..a834310417e 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_null.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_null.result @@ -1430,17 +1430,27 @@ r1_1 -0.9 r1_1 0.0 r1_1 0.9 r1_1 0.9 -SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1; -MAX(f) 9.999999680285692e37 -MAX(d) 1e81 -MAX(d10_10) 0.9999999999 -MAX(d1_0) 9 -MAX(d53) 100000000000000000000000000000000000000000000000000000 -MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000 -MAX(f0) 9.999999680285692e37 -MAX(f20_3) 99999998430674940.000 -MAX(f23_0) 9.999999680285692e37 -MAX(r1_1) 0.9 +SELECT +CONCAT('', MAX(f)), +CONCAT('', MAX(f0)), +CONCAT('', MAX(r1_1)), +CONCAT('', MAX(f23_0)), +CONCAT('', MAX(f20_3)), +CONCAT('', MAX(d)), +CONCAT('', MAX(d1_0)), +CONCAT('', MAX(d10_10)), +CONCAT('', MAX(d53)), +CONCAT('', MAX(d53_10)) FROM t1; +CONCAT('', MAX(f)) 9.999999680285692e37 +CONCAT('', MAX(d)) 1e81 +CONCAT('', MAX(d10_10)) 0.9999999999 +CONCAT('', MAX(d1_0)) 9 +CONCAT('', MAX(d53)) 100000000000000000000000000000000000000000000000000000 +CONCAT('', MAX(d53_10)) 10000000000000000000000000000000000000000000.0000000000 +CONCAT('', MAX(f0)) 9.999999680285692e37 +CONCAT('', MAX(f20_3)) 99999998430674940.000 +CONCAT('', MAX(f23_0)) 9.999999680285692e37 +CONCAT('', MAX(r1_1)) 0.9 INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES ( 9999999999999999999999999999999999999999999999999999999999999.9999, 9999999999999999999999999999999999999999999999999999999999999.9999, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_unsigned.result b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_unsigned.result index ef85ad1c237..b931743d59a 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_unsigned.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_unsigned.result @@ -317,17 +317,27 @@ r1_1 0.0 r1_1 0.0 r1_1 0.9 r1_1 0.9 -SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1; -MAX(f) 9.999999680285692e37 -MAX(d) 1e81 -MAX(d10_10) 0.9999999999 -MAX(d1_0) 9 -MAX(d53) 100000000000000000000000000000000000000000000000000000 -MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000 -MAX(f0) 9.999999680285692e37 -MAX(f20_3) 99999998430674940.000 -MAX(f23_0) 9.999999680285692e37 -MAX(r1_1) 0.9 +SELECT +CONCAT('', MAX(f)), +CONCAT('', MAX(f0)), +CONCAT('', MAX(r1_1)), +CONCAT('', MAX(f23_0)), +CONCAT('', MAX(f20_3)), +CONCAT('', MAX(d)), +CONCAT('', MAX(d1_0)), +CONCAT('', MAX(d10_10)), +CONCAT('', MAX(d53)), +CONCAT('', MAX(d53_10)) FROM t1; +CONCAT('', MAX(f)) 9.999999680285692e37 +CONCAT('', MAX(d)) 1e81 +CONCAT('', MAX(d10_10)) 0.9999999999 +CONCAT('', MAX(d1_0)) 9 +CONCAT('', MAX(d53)) 100000000000000000000000000000000000000000000000000000 +CONCAT('', MAX(d53_10)) 10000000000000000000000000000000000000000000.0000000000 +CONCAT('', MAX(f0)) 9.999999680285692e37 +CONCAT('', MAX(f20_3)) 99999998430674940.000 +CONCAT('', MAX(f23_0)) 9.999999680285692e37 +CONCAT('', MAX(r1_1)) 0.9 INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES ( 9999999999999999999999999999999999999999999999999999999999999.9999, 9999999999999999999999999999999999999999999999999999999999999.9999, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_zerofill.result b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_zerofill.result index 1f9bf16ecfc..f8fdfed86e7 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/col_opt_zerofill.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/col_opt_zerofill.result @@ -313,17 +313,27 @@ r1_1 0.0 r1_1 0.0 r1_1 0.9 r1_1 0.9 -SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1; -MAX(f) 9.999999680285692e37 -MAX(d) 1e81 -MAX(d10_10) 0.9999999999 -MAX(d1_0) 9 -MAX(d53) 100000000000000000000000000000000000000000000000000000 -MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000 -MAX(f0) 9.999999680285692e37 -MAX(f20_3) 99999998430674940.000 -MAX(f23_0) 9.999999680285692e37 -MAX(r1_1) 0.9 +SELECT +CONCAT('', MAX(f)), +CONCAT('', MAX(f0)), +CONCAT('', MAX(r1_1)), +CONCAT('', MAX(f23_0)), +CONCAT('', MAX(f20_3)), +CONCAT('', MAX(d)), +CONCAT('', MAX(d1_0)), +CONCAT('', MAX(d10_10)), +CONCAT('', MAX(d53)), +CONCAT('', MAX(d53_10)) FROM t1; +CONCAT('', MAX(f)) 9.999999680285692e37 +CONCAT('', MAX(d)) 1e81 +CONCAT('', MAX(d10_10)) 0.9999999999 +CONCAT('', MAX(d1_0)) 9 +CONCAT('', MAX(d53)) 100000000000000000000000000000000000000000000000000000 +CONCAT('', MAX(d53_10)) 10000000000000000000000000000000000000000000.0000000000 +CONCAT('', MAX(f0)) 9.999999680285692e37 +CONCAT('', MAX(f20_3)) 99999998430674940.000 +CONCAT('', MAX(f23_0)) 9.999999680285692e37 +CONCAT('', MAX(r1_1)) 0.9 INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES ( 9999999999999999999999999999999999999999999999999999999999999.9999, 9999999999999999999999999999999999999999999999999999999999999.9999, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/covered_unpack_info_format.result b/storage/rocksdb/mysql-test/rocksdb/r/covered_unpack_info_format.result new file mode 100644 index 00000000000..195215331b8 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/covered_unpack_info_format.result @@ -0,0 +1,73 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +id INT, +fake_id INT, +bigfield VARCHAR(4096), +PRIMARY KEY (id), +KEY bf (bigfield(32)), +KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), +(8, 1008, REPEAT('b', 8)), +(24, 1024, REPEAT('c', 24)), +(31, 1031, REPEAT('d', 31)), +(32, 1032, REPEAT('x', 32)), +(33, 1033, REPEAT('y', 33)), +(128, 1128, REPEAT('z', 128)); +SELECT * FROM t1; +id fake_id bigfield +1 1001 a +8 1008 bbbbbbbb +24 1024 cccccccccccccccccccccccc +31 1031 ddddddddddddddddddddddddddddddd +32 1032 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +33 1033 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +128 1128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +# Eligible for optimization, access via fake_id only +SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1031; +id bigfield +31 ddddddddddddddddddddddddddddddd +include/assert.inc [Eligible for optimization, access via fake_id only: 2 rocksdb_covered_secondary_key_lookups] +# Not eligible for optimization, access via fake_id of big row. +SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1033; +id bigfield +33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +include/assert.inc [Not eligible for optimization, access via fake_id of big row.: 0 rocksdb_covered_secondary_key_lookups] +DROP TABLE t1; +set session debug= '+d,MYROCKS_NO_COVERED_BITMAP_FORMAT'; +CREATE TABLE t1 ( +id INT, +fake_id INT, +bigfield VARCHAR(4096), +PRIMARY KEY (id), +KEY bf (bigfield(32)), +KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; +set session debug= '-d,MYROCKS_NO_COVERED_BITMAP_FORMAT'; +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), +(8, 1008, REPEAT('b', 8)), +(24, 1024, REPEAT('c', 24)), +(31, 1031, REPEAT('d', 31)), +(32, 1032, REPEAT('x', 32)), +(33, 1033, REPEAT('y', 33)), +(128, 1128, REPEAT('z', 128)); +SELECT * FROM t1; +id fake_id bigfield +1 1001 a +8 1008 bbbbbbbb +24 1024 cccccccccccccccccccccccc +31 1031 ddddddddddddddddddddddddddddddd +32 1032 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +33 1033 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +128 1128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +# No longer eligible for optimization since no covered bitmap was stored. +SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1031; +id bigfield +31 ddddddddddddddddddddddddddddddd +include/assert.inc [No longer eligible for optimization since no covered bitmap was stored.: 0 rocksdb_covered_secondary_key_lookups] +# Not eligible for optimization. +SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1033; +id bigfield +33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +include/assert.inc [Not eligible for optimization.: 0 rocksdb_covered_secondary_key_lookups] +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ddl_high_priority.result b/storage/rocksdb/mysql-test/rocksdb/r/ddl_high_priority.result new file mode 100644 index 00000000000..39130475349 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/ddl_high_priority.result @@ -0,0 +1,1009 @@ +## +## Using the system variable high_priority_ddl" +## +create user test_user1@localhost; +grant all on test to test_user1@localhost; +create user test_user2@localhost; +grant all on test to test_user2@localhost; + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = alter table t1 modify i bigint; +## high_priority_cmd = alter high_priority table t1 modify i bigint; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +alter table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter table t1 modify i bigint;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = alter table t1 rename t1_new; +## high_priority_cmd = alter high_priority table t1 rename t1_new; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +begin; insert into t1 values (4); select i from t1;; +i +1 +2 +3 +4 +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +alter table t1 rename t1_new;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter table t1 rename t1_new;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +select * from t1_new; +i +1 +2 +3 +drop table t1_new; + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = drop table t1; +## high_priority_cmd = drop high_priority table t1; +## should_kill = 0 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 write;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = drop table t1; +## high_priority_cmd = drop high_priority table t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read; begin; insert into t1 values (4);; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop table t1;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = con2 +## cmd = alter table t1 modify i bigint; +## high_priority_cmd = alter high_priority table t1 modify i bigint; +## should_kill = 0 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: con2 +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and con2 exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user2 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: con2 +alter table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user2 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = create index idx1 on t1 (i); +## high_priority_cmd = create high_priority index idx1 on t1 (i); +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +create index idx1 on t1 (i);; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +create index idx1 on t1 (i);; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = drop index idx1 on t1; +## high_priority_cmd = drop high_priority index idx1 on t1; +## should_kill = 1 +## recreate_table = 0 +## throw_error = 1 + +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES MUL NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop index idx1 on t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop index idx1 on t1;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = truncate t1; +## high_priority_cmd = truncate high_priority t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +truncate t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +truncate t1;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; +## high_priority_cmd = create high_priority trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = drop trigger ins_sum; +## high_priority_cmd = drop high_priority trigger ins_sum; +## should_kill = 1 +## recreate_table = 0 +## throw_error = 1 + +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop trigger ins_sum;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop trigger ins_sum;; +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 1; +## con_block = con1 +## con_kill = default +## cmd = optimize table t1; +## high_priority_cmd = optimize high_priority table t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 0 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +optimize table t1;; +Table Op Msg_type Msg_text +test.t1 optimize Error Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +test.t1 optimize status Operation failed +set high_priority_ddl = 1; +select @@high_priority_ddl; +@@high_priority_ddl +1 +lock tables t1 write; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +optimize table t1;; +Table Op Msg_type Msg_text +test.t1 optimize status OK +set high_priority_ddl = 0; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +drop user test_user1@localhost; +drop user test_user2@localhost; +drop table if exists t1; +## +## Using HIGH_PRIORITY syntax +## +create user test_user1@localhost; +grant all on test to test_user1@localhost; +create user test_user2@localhost; +grant all on test to test_user2@localhost; + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = alter table t1 modify i bigint; +## high_priority_cmd = alter high_priority table t1 modify i bigint; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +alter table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter high_priority table t1 modify i bigint;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = alter table t1 rename t1_new; +## high_priority_cmd = alter high_priority table t1 rename t1_new; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +begin; insert into t1 values (4); select i from t1;; +i +1 +2 +3 +4 +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +alter table t1 rename t1_new;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter high_priority table t1 rename t1_new;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +select * from t1_new; +i +1 +2 +3 +drop table t1_new; + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = drop table t1; +## high_priority_cmd = drop high_priority table t1; +## should_kill = 0 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 write;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop high_priority table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = drop table t1; +## high_priority_cmd = drop high_priority table t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read; begin; insert into t1 values (4);; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop table t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop high_priority table t1;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = con2 +## cmd = alter table t1 modify i bigint; +## high_priority_cmd = alter high_priority table t1 modify i bigint; +## should_kill = 0 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: con2 +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and con2 exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user2 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: con2 +alter table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +alter high_priority table t1 modify i bigint;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user2 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = create index idx1 on t1 (i); +## high_priority_cmd = create high_priority index idx1 on t1 (i); +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +create index idx1 on t1 (i);; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +create high_priority index idx1 on t1 (i);; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = drop index idx1 on t1; +## high_priority_cmd = drop high_priority index idx1 on t1; +## should_kill = 1 +## recreate_table = 0 +## throw_error = 1 + +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES MUL NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop index idx1 on t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop high_priority index idx1 on t1;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = truncate t1; +## high_priority_cmd = truncate high_priority t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +truncate t1;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +truncate high_priority t1;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; +## high_priority_cmd = create high_priority trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 1 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +create high_priority trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = drop trigger ins_sum; +## high_priority_cmd = drop high_priority trigger ins_sum; +## should_kill = 1 +## recreate_table = 0 +## throw_error = 1 + +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +drop trigger ins_sum;; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +drop high_priority trigger ins_sum;; +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 + +## Test parameters: +## use_sys_var = 0; +## con_block = con1 +## con_kill = default +## cmd = optimize table t1; +## high_priority_cmd = optimize high_priority table t1; +## should_kill = 1 +## recreate_table = 1 +## throw_error = 0 + +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection: con1 +lock tables t1 read;; +connection: default +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; +describe t1; +Field Type Null Key Default Extra +i int(11) YES NULL +connection: default (for show processlist) +# both con1 and default exist +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +connection: default +optimize table t1;; +Table Op Msg_type Msg_text +test.t1 optimize Error Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1 +test.t1 optimize status Operation failed +optimize high_priority table t1;; +Table Op Msg_type Msg_text +test.t1 optimize status OK +connection: default (for show processlist) +show processlist; +Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id +<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0 +drop user test_user1@localhost; +drop user test_user2@localhost; +drop table if exists t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/deadlock_tracking.result b/storage/rocksdb/mysql-test/rocksdb/r/deadlock_tracking.result new file mode 100644 index 00000000000..d7cb89becb7 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/deadlock_tracking.result @@ -0,0 +1,490 @@ +set @prior_lock_wait_timeout = @@rocksdb_lock_wait_timeout; +set @prior_deadlock_detect = @@rocksdb_deadlock_detect; +set @prior_max_latest_deadlocks = @@rocksdb_max_latest_deadlocks; +set global rocksdb_deadlock_detect = on; +set global rocksdb_lock_wait_timeout = 10000; +# Clears deadlock buffer of any prior deadlocks. +set global rocksdb_max_latest_deadlocks = 0; +set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks; +create table t (i int primary key) engine=rocksdb; +insert into t values (1), (2), (3); +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +Deadlock #1 +begin; +select * from t where i=1 for update; +i +1 +begin; +select * from t where i=2 for update; +i +2 +select * from t where i=2 for update; +select * from t where i=1 for update; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +rollback; +i +2 +rollback; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +Deadlock #2 +begin; +select * from t where i=1 for update; +i +1 +begin; +select * from t where i=2 for update; +i +2 +select * from t where i=2 for update; +select * from t where i=1 for update; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +rollback; +i +2 +rollback; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +set global rocksdb_max_latest_deadlocks = 10; +Deadlock #3 +begin; +select * from t where i=1 for update; +i +1 +begin; +select * from t where i=2 for update; +i +2 +select * from t where i=2 for update; +select * from t where i=1 for update; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +rollback; +i +2 +rollback; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +set global rocksdb_max_latest_deadlocks = 1; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +set rocksdb_deadlock_detect_depth = 2; +Deadlock #4 +begin; +select * from t where i=1 for update; +i +1 +begin; +select * from t where i=2 for update; +i +2 +begin; +select * from t where i=3 for update; +i +3 +select * from t where i=2 for update; +select * from t where i=3 for update; +select * from t where i=1 for update; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +rollback; +i +3 +rollback; +i +2 +rollback; +set global rocksdb_max_latest_deadlocks = 5; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +-------DEADLOCK EXCEEDED MAX DEPTH------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +Deadlock #5 +begin; +select * from t where i=1 for update; +i +1 +begin; +select * from t where i=2 for update; +i +2 +begin; +select * from t where i=3 lock in share mode; +i +3 +select * from t where i=100 for update; +i +select * from t where i=101 for update; +i +select * from t where i=2 for update; +select * from t where i=3 lock in share mode; +i +3 +select * from t where i=200 for update; +i +select * from t where i=201 for update; +i +select * from t where i=1 lock in share mode; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +rollback; +i +2 +rollback; +rollback; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: SHARED +INDEX NAME: PRIMARY +TABLE NAME: test.t +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: PRIMARY +TABLE NAME: test.t + +--------TXN_ID GOT DEADLOCK--------- + +-------DEADLOCK EXCEEDED MAX DEPTH------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout; +set global rocksdb_deadlock_detect = @prior_deadlock_detect; +drop table t; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- + +*** DEADLOCK PATH +========================================= +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: NOT FOUND; IDX_ID +TABLE NAME: NOT FOUND; IDX_ID +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: SHARED +INDEX NAME: NOT FOUND; IDX_ID +TABLE NAME: NOT FOUND; IDX_ID +---------------WAITING FOR--------------- +TXN_ID +COLUMN FAMILY NAME: default +KEY +LOCK TYPE: EXCLUSIVE +INDEX NAME: NOT FOUND; IDX_ID +TABLE NAME: NOT FOUND; IDX_ID + +--------TXN_ID GOT DEADLOCK--------- + +-------DEADLOCK EXCEEDED MAX DEPTH------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + +set global rocksdb_max_latest_deadlocks = 0; +# Clears deadlock buffer of any existent deadlocks. +set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks; +show engine rocksdb transaction status; +Type Name Status +rocksdb +============================================================ +TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT +============================================================ +--------- +SNAPSHOTS +--------- +LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- +----------------------------------------- +END OF ROCKSDB TRANSACTION MONITOR OUTPUT +========================================= + diff --git a/storage/rocksdb/mysql-test/rocksdb/r/drop_table.result b/storage/rocksdb/mysql-test/rocksdb/r/drop_table.result index 49df0b28bdf..dba49d8ff41 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/drop_table.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/drop_table.result @@ -5,6 +5,9 @@ DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t3; DROP TABLE IF EXISTS t4; DROP TABLE IF EXISTS t5; +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); +call mtr.add_suppression("LibRocksDB"); set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; set global rocksdb_signal_drop_index_thread = 1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/drop_table2.result b/storage/rocksdb/mysql-test/rocksdb/r/drop_table2.result index 44668847649..fad2939d206 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/drop_table2.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/drop_table2.result @@ -5,6 +5,8 @@ DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t3; DROP TABLE IF EXISTS t4; DROP TABLE IF EXISTS t5; +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; set global rocksdb_signal_drop_index_thread = 1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/drop_table3.result b/storage/rocksdb/mysql-test/rocksdb/r/drop_table3.result index e5237fe9b1e..7a33fa83cb4 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/drop_table3.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/drop_table3.result @@ -1,6 +1,8 @@ call mtr.add_suppression("Column family 'cf1' not found"); call mtr.add_suppression("Column family 'rev:cf2' not found"); DROP TABLE IF EXISTS t1; +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; set global rocksdb_signal_drop_index_thread = 1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/dup_key_update.result b/storage/rocksdb/mysql-test/rocksdb/r/dup_key_update.result index 954335debf2..b4cebb08bb1 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/dup_key_update.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/dup_key_update.result @@ -178,16 +178,20 @@ id1 id2 id3 9 17 9 DROP TABLE t1; DROP TABLE t2; +set global rocksdb_large_prefix=1; CREATE TABLE t1 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin, id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin, id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci, PRIMARY KEY (id1, id2, id3), UNIQUE KEY (id3, id1)) ENGINE=ROCKSDB; +set global rocksdb_large_prefix=DEFAULT; +set global rocksdb_large_prefix=1; CREATE TABLE t2 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin, id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin, id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci, PRIMARY KEY (id1, id2, id3), UNIQUE KEY (id3, id1) COMMENT 'rev:cf') ENGINE=ROCKSDB; +set global rocksdb_large_prefix=DEFAULT; INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 9; SELECT * FROM t1 WHERE id1 = 1; id1 id2 id3 diff --git a/storage/rocksdb/mysql-test/rocksdb/r/fast_prefix_index_fetch.result b/storage/rocksdb/mysql-test/rocksdb/r/fast_prefix_index_fetch.result new file mode 100644 index 00000000000..963f9706ee8 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/fast_prefix_index_fetch.result @@ -0,0 +1,80 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +id INT, +fake_id INT, +bigfield VARCHAR(4096), +PRIMARY KEY (id), +KEY bf (bigfield(32)), +KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), +(8, 1008, REPEAT('b', 8)), +(24, 1024, REPEAT('c', 24)), +(31, 1031, REPEAT('d', 31)), +(32, 1032, REPEAT('x', 32)), +(33, 1033, REPEAT('y', 33)), +(128, 1128, REPEAT('z', 128)); +SELECT * FROM t1; +id fake_id bigfield +1 1001 a +8 1008 bbbbbbbb +24 1024 cccccccccccccccccccccccc +31 1031 ddddddddddddddddddddddddddddddd +32 1032 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +33 1033 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +128 1128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +# Baseline sanity check +no-op query +no-op query +include/assert.inc [Baseline sanity check: 0 rocksdb_covered_secondary_key_lookups] +# Eligible for optimization. +id bigfield +31 ddddddddddddddddddddddddddddddd +include/assert.inc [Eligible for optimization.: 2 rocksdb_covered_secondary_key_lookups] +# Eligible for optimization, access via fake_id only +id bigfield +31 ddddddddddddddddddddddddddddddd +include/assert.inc [Eligible for optimization, access via fake_id only: 2 rocksdb_covered_secondary_key_lookups] +# Not eligible for optimization, access via fake_id of big row. +id bigfield +33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +include/assert.inc [Not eligible for optimization, access via fake_id of big row.: 0 rocksdb_covered_secondary_key_lookups] +# Eligible for optimization. +id bigfield +32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +include/assert.inc [Eligible for optimization.: 1 rocksdb_covered_secondary_key_lookups] +# Not eligible for optimization. +id bigfield +33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +include/assert.inc [Not eligible for optimization.: 0 rocksdb_covered_secondary_key_lookups] +# Eligible for optimization. +id bigfield +8 bbbbbbbb +include/assert.inc [Eligible for optimization.: 2 rocksdb_covered_secondary_key_lookups] +# Eligible for optimization. +id bigfield +24 cccccccccccccccccccccccc +include/assert.inc [Eligible for optimization.: 2 rocksdb_covered_secondary_key_lookups] +# Not eligible for optimization. +id bigfield +128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +include/assert.inc [Not eligible for optimization.: 0 rocksdb_covered_secondary_key_lookups] +# +# Test that multi-byte charsets are handled correctly +# +# Charset record obviously shorter than the prefix +a b +1 a +include/assert.inc [Charset record obviously shorter than the prefix: 2 rocksdb_covered_secondary_key_lookups] +# Charset record shorter than prefix +a b +2 cc +include/assert.inc [Charset record shorter than prefix: 2 rocksdb_covered_secondary_key_lookups] +# Charset record with glyphs shorter than prefix +a b +3 ŽŽ +include/assert.inc [Charset record with glyphs shorter than prefix: 1 rocksdb_covered_secondary_key_lookups] +# Charset record longer than prefix +a b +4 žžžž +include/assert.inc [Charset record longer than prefix: 0 rocksdb_covered_secondary_key_lookups] diff --git a/storage/rocksdb/mysql-test/rocksdb/r/i_s_ddl.result b/storage/rocksdb/mysql-test/rocksdb/r/i_s_ddl.result index 2a1fcd78126..a39f2d8c0d6 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/i_s_ddl.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/i_s_ddl.result @@ -9,9 +9,9 @@ KEY (x)) ENGINE = ROCKSDB; SELECT TABLE_SCHEMA,TABLE_NAME,PARTITION_NAME,INDEX_NAME,INDEX_TYPE,KV_FORMAT_VERSION,CF FROM INFORMATION_SCHEMA.ROCKSDB_DDL WHERE TABLE_NAME like 'is_ddl_t%'; TABLE_SCHEMA TABLE_NAME PARTITION_NAME INDEX_NAME INDEX_TYPE KV_FORMAT_VERSION CF test is_ddl_t1 NULL PRIMARY 1 13 default -test is_ddl_t1 NULL j 2 12 default -test is_ddl_t1 NULL k 2 12 kl_cf +test is_ddl_t1 NULL j 2 13 default +test is_ddl_t1 NULL k 2 13 kl_cf test is_ddl_t2 NULL PRIMARY 1 13 zy_cf -test is_ddl_t2 NULL x 2 12 default +test is_ddl_t2 NULL x 2 13 default DROP TABLE is_ddl_t1; DROP TABLE is_ddl_t2; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/index.result b/storage/rocksdb/mysql-test/rocksdb/r/index.result index 99390c8ceb2..0920d0e01b2 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/index.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/index.result @@ -40,6 +40,33 @@ t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a ALTER TABLE t1 DROP KEY a; DROP TABLE t1; +set global rocksdb_large_prefix=0; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(768)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 767 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3073)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 3072 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=DEFAULT; # # Issue #376: MyRocks: ORDER BY optimizer is unable to use the index extension # diff --git a/storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result b/storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result index ff33e6061b3..4370715925a 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result @@ -603,7 +603,7 @@ count(*) 64801 explain select key1,key2 from t1 where key1=100 and key2=100; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index_merge key1,key2 key2,key1 5,5 NULL 2 Using intersect(key2,key1); Using where; Using index +1 SIMPLE t1 index_merge key1,key2 key2,key1 5,5 NULL # Using intersect(key2,key1); Using where; Using index select key1,key2 from t1 where key1=100 and key2=100; key1 key2 100 100 diff --git a/storage/rocksdb/mysql-test/rocksdb/r/index_primary.result b/storage/rocksdb/mysql-test/rocksdb/r/index_primary.result index 66481f81c67..1f4c88e5a33 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/index_primary.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/index_primary.result @@ -46,3 +46,26 @@ SHOW KEYS IN t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment t1 0 PRIMARY 1 b A # NULL NULL LSMTREE DROP TABLE t1; +set global rocksdb_large_prefix=0; +CREATE TABLE t1 ( +a BLOB(1024), +PRIMARY KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(1024), +PRIMARY KEY (a(768)) +) ENGINE=rocksdb; +ERROR 42000: Specified key was too long; max key length is 767 bytes +set global rocksdb_large_prefix=1; +CREATE TABLE t1 ( +a BLOB(4096), +PRIMARY KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(4096), +PRIMARY KEY (a(3073)) +) ENGINE=rocksdb; +ERROR 42000: Specified key was too long; max key length is 3072 bytes +set global rocksdb_large_prefix=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/index_type_btree.result b/storage/rocksdb/mysql-test/rocksdb/r/index_type_btree.result index a604663954b..9eaab9f53aa 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/index_type_btree.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/index_type_btree.result @@ -40,3 +40,30 @@ t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a ALTER TABLE t1 DROP KEY a; DROP TABLE t1; +set global rocksdb_large_prefix=0; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(768)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 767 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3073)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 3072 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/index_type_hash.result b/storage/rocksdb/mysql-test/rocksdb/r/index_type_hash.result index ae99badff14..bc1a96fa726 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/index_type_hash.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/index_type_hash.result @@ -40,3 +40,30 @@ t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a ALTER TABLE t1 DROP KEY a; DROP TABLE t1; +set global rocksdb_large_prefix=0; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(1024), +KEY (a(768)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 767 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; +CREATE TABLE t1 ( +a BLOB(4096), +KEY (a(3073)) +) ENGINE=rocksdb; +Warnings: +Note 1071 Specified key was too long; max key length is 3072 bytes +DROP TABLE t1; +set global rocksdb_large_prefix=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/issue243_transactionStatus.result b/storage/rocksdb/mysql-test/rocksdb/r/issue243_transactionStatus.result index 83db308627d..d4d211b9288 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/issue243_transactionStatus.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/issue243_transactionStatus.result @@ -17,7 +17,7 @@ id val1 val2 2 2 2 SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -25,6 +25,7 @@ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT SNAPSHOTS --------- LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -48,7 +49,7 @@ id val1 val2 DELETE FROM t1 WHERE id=30; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -61,6 +62,7 @@ MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION SHOW ENGINE rocksdb TRANSACTION STATUS lock count 8, write count 4 insert count 2, update count 1, delete count 1 +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -68,7 +70,7 @@ END OF ROCKSDB TRANSACTION MONITOR OUTPUT ROLLBACK; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -76,6 +78,7 @@ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT SNAPSHOTS --------- LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -84,7 +87,7 @@ START TRANSACTION; INSERT INTO t1 VALUES(40,40,40); SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -97,6 +100,7 @@ MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION SHOW ENGINE rocksdb TRANSACTION STATUS lock count 2, write count 1 insert count 1, update count 0, delete count 0 +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -104,7 +108,7 @@ END OF ROCKSDB TRANSACTION MONITOR OUTPUT COMMIT; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -112,6 +116,7 @@ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT SNAPSHOTS --------- LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -133,7 +138,7 @@ UPDATE t2 SET value=3 WHERE id2=2; DELETE FROM t2 WHERE id1=10; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -146,6 +151,7 @@ MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION SHOW ENGINE rocksdb TRANSACTION STATUS lock count 9, write count 7 insert count 2, update count 1, delete count 1 +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= diff --git a/storage/rocksdb/mysql-test/rocksdb/r/multi_varchar_sk_lookup.result b/storage/rocksdb/mysql-test/rocksdb/r/multi_varchar_sk_lookup.result new file mode 100644 index 00000000000..86ba6d923a8 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/multi_varchar_sk_lookup.result @@ -0,0 +1,37 @@ +DROP TABLE IF EXISTS T1; +CREATE TABLE T1 ( +P1 VARCHAR(64), P2 VARCHAR(64), P3 VARCHAR(64), P4 VARCHAR(64), +S1 VARCHAR(64), S2 VARCHAR(64), S3 VARCHAR(64), S4 VARCHAR(64), +S5 VARCHAR(64), S6 VARCHAR(64), S7 VARCHAR(64), S8 VARCHAR(64), +S9 VARCHAR(64), S10 VARCHAR(64), S11 VARCHAR(64), S12 VARCHAR(64), +S13 VARCHAR(64), S14 VARCHAR(64), S15 VARCHAR(64), S16 VARCHAR(64), +PRIMARY KEY (P1(8), P2(8), P3(8), P4(8)), +KEY SK (S1(8), S2(8), S3(8), S4(8), +S5(8), S6(8), S7(8), S8(8), +S9(8), S10(8), S11(8), S12(8), +S13(8), S14(8), S15(8), S16(8)) +) ENGINE=rocksdb; +INSERT INTO T1 VALUES ('1', '2', '3', '4', +'5', '6', '7', '8', +'9', '10', '11', '12', +'13', '14', '15', '16', +'17', '18', '19', '20'); +SELECT * FROM T1; +P1 P2 P3 P4 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 +# Not eligible for optimization, shorter than prefix length. +SELECT P4, S2 FROM T1 FORCE INDEX(SK) WHERE S1='5'; +P4 S2 +4 6 +include/assert.inc [Not eligible for optimization, shorter than prefix length.: 0 rocksdb_covered_secondary_key_lookups] +DELETE FROM T1; +INSERT INTO T1 VALUES ('100000000', '200000000', '300000000', '400000000', +'500000000', '600000000', '700000000', '800000000', +'900000000', '100000000', '110000000', '120000000', +'130000000', '140000000', '150000000', '160000000', +'170000000', '180000000', '190000000', '200000000'); +# Not eligible for optimization, longer than prefix length. +SELECT P4, S2 FROM T1 FORCE INDEX(SK) WHERE S1='5'; +P4 S2 +include/assert.inc [Not eligible for optimization, longer than prefix length.: 0 rocksdb_covered_secondary_key_lookups] +DROP TABLE T1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/perf_context.result b/storage/rocksdb/mysql-test/rocksdb/r/perf_context.result index 2e8610d43bd..6586b92d129 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/perf_context.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/perf_context.result @@ -127,6 +127,8 @@ AND STAT_TYPE in ('INTERNAL_KEY_SKIPPED_COUNT', 'INTERNAL_DELETE_SKIPPED_COUNT') TABLE_SCHEMA TABLE_NAME PARTITION_NAME STAT_TYPE VALUE test t1 NULL INTERNAL_KEY_SKIPPED_COUNT 10 test t1 NULL INTERNAL_DELETE_SKIPPED_COUNT 0 +set @tmp_flush_log= @@rocksdb_flush_log_at_trx_commit; +set global rocksdb_flush_log_at_trx_commit=1; BEGIN; INSERT INTO t2 VALUES (1), (2); INSERT INTO t2 VALUES (3), (4); @@ -158,3 +160,4 @@ true DROP TABLE t1; DROP TABLE t2; SET GLOBAL rocksdb_perf_context_level = @prior_rocksdb_perf_context_level; +set global rocksdb_flush_log_at_trx_commit= @tmp_flush_log; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/rocksdb.result b/storage/rocksdb/mysql-test/rocksdb/r/rocksdb.result index 46acd055421..ed0688c96ad 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/rocksdb.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/rocksdb.result @@ -881,6 +881,7 @@ rocksdb_block_restart_interval 16 rocksdb_block_size 4096 rocksdb_block_size_deviation 10 rocksdb_bulk_load OFF +rocksdb_bulk_load_allow_unsorted OFF rocksdb_bulk_load_size 1000 rocksdb_bytes_per_sync 0 rocksdb_cache_index_and_filter_blocks ON @@ -893,13 +894,16 @@ rocksdb_compaction_sequential_deletes 0 rocksdb_compaction_sequential_deletes_count_sd OFF rocksdb_compaction_sequential_deletes_file_size 0 rocksdb_compaction_sequential_deletes_window 0 +rocksdb_concurrent_prepare ON rocksdb_create_checkpoint rocksdb_create_if_missing ON rocksdb_create_missing_column_families OFF rocksdb_datadir ./.rocksdb rocksdb_db_write_buffer_size 0 rocksdb_deadlock_detect OFF +rocksdb_deadlock_detect_depth 50 rocksdb_debug_optimizer_no_zero_cardinality ON +rocksdb_debug_ttl_ignore_pk OFF rocksdb_debug_ttl_read_filter_ts 0 rocksdb_debug_ttl_rec_ts 0 rocksdb_debug_ttl_snapshot_ts 0 @@ -916,6 +920,7 @@ rocksdb_error_if_exists OFF rocksdb_flush_log_at_trx_commit 0 rocksdb_flush_memtable_on_analyze ON rocksdb_force_compute_memtable_stats ON +rocksdb_force_compute_memtable_stats_cachetime 0 rocksdb_force_flush_memtable_and_lzero_now OFF rocksdb_force_flush_memtable_now OFF rocksdb_force_index_records_in_range 0 @@ -925,12 +930,15 @@ rocksdb_info_log_level error_level rocksdb_io_write_timeout 0 rocksdb_is_fd_close_on_exec ON rocksdb_keep_log_file_num 1000 +rocksdb_large_prefix OFF rocksdb_lock_scanned_rows OFF rocksdb_lock_wait_timeout 1 rocksdb_log_file_time_to_roll 0 rocksdb_manifest_preallocation_size 4194304 +rocksdb_manual_wal_flush ON rocksdb_master_skip_tx_api OFF rocksdb_max_background_jobs 2 +rocksdb_max_latest_deadlocks 5 rocksdb_max_log_file_size 0 rocksdb_max_manifest_file_size 18446744073709551615 rocksdb_max_open_files -1 @@ -939,6 +947,7 @@ rocksdb_max_subcompactions 1 rocksdb_max_total_wal_size 0 rocksdb_merge_buf_size 67108864 rocksdb_merge_combine_read_size 1073741824 +rocksdb_merge_tmp_file_removal_delay_ms 0 rocksdb_new_table_reader_for_compaction_inputs OFF rocksdb_no_block_cache OFF rocksdb_override_cf_options @@ -955,6 +964,7 @@ rocksdb_records_in_range 50 rocksdb_reset_stats OFF rocksdb_seconds_between_stat_computes 3600 rocksdb_signal_drop_index_thread OFF +rocksdb_sim_cache_size 0 rocksdb_skip_bloom_filter_on_read OFF rocksdb_skip_fill_cache OFF rocksdb_skip_unique_check_tables .* @@ -970,6 +980,7 @@ rocksdb_trace_sst_api OFF rocksdb_unsafe_for_binlog OFF rocksdb_update_cf_options rocksdb_use_adaptive_mutex OFF +rocksdb_use_clock_cache OFF rocksdb_use_direct_io_for_flush_and_compaction OFF rocksdb_use_direct_reads OFF rocksdb_use_fsync OFF @@ -1451,16 +1462,21 @@ Rocksdb_rows_inserted # Rocksdb_rows_read # Rocksdb_rows_updated # Rocksdb_rows_deleted_blind # -rocksdb_rows_expired # +Rocksdb_rows_expired # Rocksdb_system_rows_deleted # Rocksdb_system_rows_inserted # Rocksdb_system_rows_read # Rocksdb_system_rows_updated # +Rocksdb_memtable_total # +Rocksdb_memtable_unflushed # +Rocksdb_queries_point # +Rocksdb_queries_range # +Rocksdb_covered_secondary_key_lookups # Rocksdb_block_cache_add # -rocksdb_memtable_total # -rocksdb_memtable_unflushed # -rocksdb_queries_point # -rocksdb_queries_range # +Rocksdb_block_cache_data_hit # +Rocksdb_block_cache_data_miss # +Rocksdb_block_cache_filter_hit # +Rocksdb_block_cache_filter_miss # Rocksdb_block_cache_hit # Rocksdb_block_cache_index_hit # Rocksdb_block_cache_index_miss # @@ -1479,13 +1495,13 @@ Rocksdb_compaction_key_drop_obsolete # Rocksdb_compaction_key_drop_user # Rocksdb_flush_write_bytes # Rocksdb_getupdatessince_calls # -Rocksdb_l0_num_files_stall_micros # -Rocksdb_l0_slowdown_micros # -Rocksdb_memtable_compaction_micros # Rocksdb_memtable_hit # Rocksdb_memtable_miss # Rocksdb_no_file_closes # Rocksdb_no_file_errors # +Rocksdb_no_file_opens # +Rocksdb_num_iterators # +Rocksdb_number_block_not_compressed # Rocksdb_number_deletes_filtered # Rocksdb_number_keys_read # Rocksdb_number_keys_updated # @@ -1506,6 +1522,17 @@ Rocksdb_number_superversion_cleanups # Rocksdb_number_superversion_releases # Rocksdb_rate_limit_delay_millis # Rocksdb_snapshot_conflict_errors # +Rocksdb_stall_l0_file_count_limit_slowdowns # +Rocksdb_stall_locked_l0_file_count_limit_slowdowns # +Rocksdb_stall_l0_file_count_limit_stops # +Rocksdb_stall_locked_l0_file_count_limit_stops # +Rocksdb_stall_pending_compaction_limit_stops # +Rocksdb_stall_pending_compaction_limit_slowdowns # +Rocksdb_stall_memtable_limit_stops # +Rocksdb_stall_memtable_limit_slowdowns # +Rocksdb_stall_total_stops # +Rocksdb_stall_total_slowdowns # +Rocksdb_stall_micros # Rocksdb_wal_bytes # Rocksdb_wal_group_syncs # Rocksdb_wal_synced # @@ -1513,7 +1540,6 @@ Rocksdb_write_other # Rocksdb_write_self # Rocksdb_write_timedout # Rocksdb_write_wal # -rocksdb_stall_micros # select VARIABLE_NAME from INFORMATION_SCHEMA.global_status where VARIABLE_NAME LIKE 'rocksdb%'; VARIABLE_NAME ROCKSDB_ROWS_DELETED @@ -1530,6 +1556,7 @@ ROCKSDB_MEMTABLE_TOTAL ROCKSDB_MEMTABLE_UNFLUSHED ROCKSDB_QUERIES_POINT ROCKSDB_QUERIES_RANGE +ROCKSDB_COVERED_SECONDARY_KEY_LOOKUPS ROCKSDB_BLOCK_CACHE_ADD ROCKSDB_BLOCK_CACHE_DATA_HIT ROCKSDB_BLOCK_CACHE_DATA_MISS @@ -1580,6 +1607,16 @@ ROCKSDB_NUMBER_SUPERVERSION_CLEANUPS ROCKSDB_NUMBER_SUPERVERSION_RELEASES ROCKSDB_RATE_LIMIT_DELAY_MILLIS ROCKSDB_SNAPSHOT_CONFLICT_ERRORS +ROCKSDB_STALL_L0_FILE_COUNT_LIMIT_SLOWDOWNS +ROCKSDB_STALL_LOCKED_L0_FILE_COUNT_LIMIT_SLOWDOWNS +ROCKSDB_STALL_L0_FILE_COUNT_LIMIT_STOPS +ROCKSDB_STALL_LOCKED_L0_FILE_COUNT_LIMIT_STOPS +ROCKSDB_STALL_PENDING_COMPACTION_LIMIT_STOPS +ROCKSDB_STALL_PENDING_COMPACTION_LIMIT_SLOWDOWNS +ROCKSDB_STALL_MEMTABLE_LIMIT_STOPS +ROCKSDB_STALL_MEMTABLE_LIMIT_SLOWDOWNS +ROCKSDB_STALL_TOTAL_STOPS +ROCKSDB_STALL_TOTAL_SLOWDOWNS ROCKSDB_STALL_MICROS ROCKSDB_WAL_BYTES ROCKSDB_WAL_GROUP_SYNCS @@ -1606,6 +1643,7 @@ ROCKSDB_MEMTABLE_TOTAL ROCKSDB_MEMTABLE_UNFLUSHED ROCKSDB_QUERIES_POINT ROCKSDB_QUERIES_RANGE +ROCKSDB_COVERED_SECONDARY_KEY_LOOKUPS ROCKSDB_BLOCK_CACHE_ADD ROCKSDB_BLOCK_CACHE_DATA_HIT ROCKSDB_BLOCK_CACHE_DATA_MISS @@ -1656,6 +1694,16 @@ ROCKSDB_NUMBER_SUPERVERSION_CLEANUPS ROCKSDB_NUMBER_SUPERVERSION_RELEASES ROCKSDB_RATE_LIMIT_DELAY_MILLIS ROCKSDB_SNAPSHOT_CONFLICT_ERRORS +ROCKSDB_STALL_L0_FILE_COUNT_LIMIT_SLOWDOWNS +ROCKSDB_STALL_LOCKED_L0_FILE_COUNT_LIMIT_SLOWDOWNS +ROCKSDB_STALL_L0_FILE_COUNT_LIMIT_STOPS +ROCKSDB_STALL_LOCKED_L0_FILE_COUNT_LIMIT_STOPS +ROCKSDB_STALL_PENDING_COMPACTION_LIMIT_STOPS +ROCKSDB_STALL_PENDING_COMPACTION_LIMIT_SLOWDOWNS +ROCKSDB_STALL_MEMTABLE_LIMIT_STOPS +ROCKSDB_STALL_MEMTABLE_LIMIT_SLOWDOWNS +ROCKSDB_STALL_TOTAL_STOPS +ROCKSDB_STALL_TOTAL_SLOWDOWNS ROCKSDB_STALL_MICROS ROCKSDB_WAL_BYTES ROCKSDB_WAL_GROUP_SYNCS @@ -2155,7 +2203,9 @@ SET @old_mode = @@sql_mode; SET sql_mode = 'strict_all_tables'; create table t1 (a int, b text, c varchar(400), Primary Key(a), Key(c, b(255))) engine=rocksdb; drop table t1; +set global rocksdb_large_prefix=1; create table t1 (a int, b text, c varchar(400), Primary Key(a), Key(b(1255))) engine=rocksdb; +set global rocksdb_large_prefix=0; insert into t1 values (1, '1abcde', '1abcde'), (2, '2abcde', '2abcde'), (3, '3abcde', '3abcde'); select * from t1; a b c @@ -2177,7 +2227,7 @@ a b c drop table t1; create table t1 (a int, b text, c varchar(400), Primary Key(a), Key(b(2255))) engine=rocksdb; Warnings: -Warning 1071 Specified key was too long; max key length is 2048 bytes +Note 1071 Specified key was too long; max key length is 767 bytes drop table t1; SET sql_mode = @old_mode; drop table t0; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/show_engine.result b/storage/rocksdb/mysql-test/rocksdb/r/show_engine.result index d1072eee4ad..1bcd3692b4a 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/show_engine.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/show_engine.result @@ -7,17 +7,8 @@ CREATE TABLE t2 (j INT, PRIMARY KEY (j) COMMENT 'rev:cf_t2') ENGINE = ROCKSDB; CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB; CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB PARTITION BY KEY(l) PARTITIONS 4; -SET GLOBAL rocksdb_force_flush_memtable_now=1; -SHOW ENGINE rocksdb STATUS; -Type Name Status -STATISTICS # # -DBSTATS # # -CF_COMPACTION # # -CF_COMPACTION # # -CF_COMPACTION # # -CF_COMPACTION # # -MEMORY_STATS # # -BG_THREADS # # +SET @save.rocksdb_max_background_jobs= @@global.rocksdb_max_background_jobs; +SET GLOBAL rocksdb_max_background_jobs= 1; INSERT INTO t1 VALUES (1), (2), (3); SELECT COUNT(*) FROM t1; COUNT(*) @@ -30,6 +21,19 @@ INSERT INTO t4 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t4; COUNT(*) 5 +SET GLOBAL rocksdb_force_flush_memtable_now=1; +SET GLOBAL rocksdb_compact_cf="cf_t1"; +SHOW ENGINE rocksdb STATUS; +Type Name Status +STATISTICS # # +DBSTATS # # +CF_COMPACTION # # +CF_COMPACTION # # +CF_COMPACTION # # +CF_COMPACTION # # +MEMORY_STATS # # +BG_THREADS # # +BG_THREADS # # SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CFSTATS; CF_NAME STAT_TYPE VALUE __system__ NUM_IMMUTABLE_MEM_TABLE # @@ -356,7 +360,7 @@ Type Name Status SHOW ENGINE ALL MUTEX; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -364,6 +368,7 @@ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT SNAPSHOTS --------- LIST OF SNAPSHOTS FOR EACH SESSION: +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= @@ -371,7 +376,7 @@ END OF ROCKSDB TRANSACTION MONITOR OUTPUT START TRANSACTION WITH CONSISTENT SNAPSHOT; SHOW ENGINE rocksdb TRANSACTION STATUS; Type Name Status -SNAPSHOTS rocksdb +rocksdb ============================================================ TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT ============================================================ @@ -384,8 +389,10 @@ MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION SHOW ENGINE rocksdb TRANSACTION STATUS lock count 0, write count 0 insert count 0, update count 0, delete count 0 +----------LATEST DETECTED DEADLOCKS---------- ----------------------------------------- END OF ROCKSDB TRANSACTION MONITOR OUTPUT ========================================= ROLLBACK; +SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/skip_validate_tmp_table.result b/storage/rocksdb/mysql-test/rocksdb/r/skip_validate_tmp_table.result new file mode 100644 index 00000000000..7642dcda43f --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/skip_validate_tmp_table.result @@ -0,0 +1,4 @@ +CREATE TABLE t1 (pk int primary key) ENGINE=ROCKSDB; +set session debug_dbug="+d,gen_sql_table_name"; +rename table t1 to t2; +set session debug_dbug= "-d,gen_sql_table_name"; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/truncate_table3.result b/storage/rocksdb/mysql-test/rocksdb/r/truncate_table3.result index 813f651be62..eda560fefdb 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/truncate_table3.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/truncate_table3.result @@ -1,6 +1,8 @@ call mtr.add_suppression("Column family 'cf1' not found"); call mtr.add_suppression("Column family 'rev:cf2' not found"); DROP TABLE IF EXISTS t1; +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; set global rocksdb_signal_drop_index_thread = 1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result b/storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result index 79ed7ec0396..2903e9aa7eb 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result @@ -337,9 +337,7 @@ b INT ) ENGINE=rocksdb COMMENT='ttl_duration=100;'; ALTER TABLE t1 DROP PRIMARY KEY; -ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK. -ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE; -ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK. +ERROR HY000: TTL support is currently disabled when table has a hidden PK. DROP TABLE t1; CREATE TABLE t1 ( a INT PRIMARY KEY, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary.result b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary.result new file mode 100644 index 00000000000..1f748a3841a --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary.result @@ -0,0 +1,709 @@ +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`), +KEY kb (`b`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +ts bigint(20) UNSIGNED NOT NULL, +c int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5); +INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +c int NOT NULL, +ts bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a,c), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int, +c int, +ts bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a), +KEY kbc (b, c) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, NULL, NULL, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, NULL, NULL, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64), +`c` varbinary(256), +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`a`), +KEY kbc (`b`, `c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'efghijk', NULL, UNIX_TIMESTAMP(), 'l'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, 5); +INSERT INTO t1 values (2, 4, 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a int, +ts bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a, ts), +KEY kt (ts) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=ts;'; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, UNIX_TIMESTAMP()); +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); +COUNT(*) +2 +set global rocksdb_debug_ttl_snapshot_ts = -10; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 10; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +ts bigint(20) UNSIGNED NOT NULL, +c int NOT NULL, +PRIMARY KEY (a, ts), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5); +INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1; +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64), +`c` varbinary(256), +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`a`, `ts`), +KEY kb (`b`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('de', 'fghijk', NULL, UNIX_TIMESTAMP(), 'l'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1; +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT NOT NULL, +b varbinary(64) NOT NULL, +c varbinary(256) NOT NULL, +ts bigint(20) UNSIGNED NOT NULL, +value mediumblob NOT NULL, +PRIMARY KEY (b,a,c), +KEY kb (b) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=10;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values (2, 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (3, 'i', 'j', UNIX_TIMESTAMP(), 'k'); +INSERT INTO t1 values (4, 'm', 'n', UNIX_TIMESTAMP(), 'o'); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_debug_ttl_snapshot_ts = -3600; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT a FROM t1 FORCE INDEX (kb); +a +1 +2 +3 +4 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT a FROM t1 FORCE INDEX (kb); +a +3 +4 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT a FROM t1 FORCE INDEX (kb); +a +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int NOT NULL, +c int NOT NULL, +ts bigint(20), +PRIMARY KEY (a,c), +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration. +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int NOT NULL, +c int NOT NULL, +ts int, +PRIMARY KEY (a,c), +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration. +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a,c), +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=abc;'; +ERROR HY000: TTL duration (abc) in MyRocks must be an unsigned non-null 64-bit integer. +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a,c), +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=abc;'; +ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration. +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a,c), +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_col=abc;'; +ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration. +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=500;'; +INSERT INTO t1 values (1, 1); +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +1 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +1 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT PRIMARY KEY, +b INT NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; +INSERT INTO t1 values (1, 1); +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +set global rocksdb_debug_ttl_rec_ts = -300; +ALTER TABLE t1 COMMENT = 'ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `b` int(11) NOT NULL, + PRIMARY KEY (`a`), + KEY `kb` (`b`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='ttl_duration=1' +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT PRIMARY KEY, +b INT, +KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; +ALTER TABLE t1 DROP PRIMARY KEY; +ERROR HY000: TTL support is currently disabled when table has a hidden PK. +DROP TABLE t1; +CREATE TABLE t1 ( +a INT PRIMARY KEY, +b INT, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; +INSERT INTO t1 VALUES (1,1); +INSERT INTO t1 VALUES (2,2); +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b); +set global rocksdb_debug_ttl_snapshot_ts = -3600; +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +2 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) UNSIGNED NOT NULL, +b int, +PRIMARY KEY (a,b), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='asdadfasdfsadfadf ;ttl_duration=1; asfasdfasdfadfa'; +INSERT INTO t1 values (UNIX_TIMESTAMP(), 1); +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +1 +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +ALTER TABLE t1 COMMENT = 'adsf;;ttl_duration=5;asfasdfa;ttl_col=a;asdfasdf;'; +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (UNIX_TIMESTAMP(), 2); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +1 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, 0); +INSERT INTO t1 values (3, 0); +INSERT INTO t1 values (5, 0); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (7, 0); +INSERT INTO t1 values (9, 0); +set global rocksdb_debug_ttl_rec_ts = 0; +UPDATE t1 SET a=a+1; +SELECT * FROM t1 FORCE INDEX (kb); +a b +10 0 +2 0 +4 0 +6 0 +8 0 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT * FROM t1; +a b +10 0 +8 0 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT, +b bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT a FROM t1 FORCE INDEX (kb); +a +1 +3 +5 +7 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT a FROM t1 FORCE INDEX (kb); +a +1 +3 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 1); +INSERT INTO t1 values (3, 1); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_enable_ttl=0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_enable_ttl=1; +set global rocksdb_compact_cf='default'; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +variable_value-@c +6 +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a bigint(20) NOT NULL, +b int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +variable_value-@c +0 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT, +b bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a, b), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT a FROM t1 FORCE INDEX (kb); +a +1 +3 +5 +7 +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT a FROM t1 FORCE INDEX (kb); +a +1 +3 +DROP TABLE t1; +CREATE TABLE t1 ( +a INT, +b bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a, b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT a FROM t1; +a +1 +3 +5 +7 +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +SELECT a FROM t1; +a +1 +3 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); +COUNT(*) +1 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*); +COUNT(*) +1 +CREATE INDEX kb on t1 (b); +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', 'd'); +INSERT INTO t1 values ('d', 'e', 'f', 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); +COUNT(*) +1 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*); +COUNT(*) +1 +CREATE INDEX kb on t1 (b); +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`, `ts`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); +COUNT(*) +1 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*); +COUNT(*) +1 +CREATE INDEX kb on t1 (b); +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +COUNT(*) +0 +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering.result b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering.result new file mode 100644 index 00000000000..90de5447891 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering.result @@ -0,0 +1,510 @@ +CREATE TABLE t1 ( +a int PRIMARY KEY, +b int NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +variable_value-@c +2 +DROP TABLE t1; +CREATE TABLE t1 ( +a int PRIMARY KEY, +b BIGINT UNSIGNED NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=10;'; +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (2, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +# 1 should be hidden +SELECT a FROM t1 FORCE INDEX (PRIMARY); +a +2 +3 +SELECT a FROM t1 FORCE INDEX (kb); +a +2 +3 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +# none should be hidden yet, compaction runs but records aren't expired +SELECT a FROM t1 FORCE INDEX (PRIMARY); +a +2 +3 +SELECT a FROM t1 FORCE INDEX (kb); +a +2 +3 +# all should be hidden now, even though compaction hasn't run again +set global rocksdb_debug_ttl_read_filter_ts = -310; +SELECT a FROM t1 FORCE INDEX (PRIMARY); +a +SELECT a FROM t1 FORCE INDEX (kb); +a +set global rocksdb_debug_ttl_read_filter_ts = 0; +DROP TABLE t1; +CREATE TABLE t1 ( +a int PRIMARY KEY, +b int NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +# should return nothing. +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +set global rocksdb_enable_ttl_read_filtering=0; +# should return everything +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +1 1 +3 3 +5 5 +7 7 +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +3 3 +5 5 +7 7 +set global rocksdb_enable_ttl_read_filtering=1; +# should return nothing. +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +DROP TABLE t1; +# Read filtering index scan tests (None of these queries should return any results) +CREATE TABLE t1 ( +a int, +b int, +c int, +PRIMARY KEY (a,b,c), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (0,0,0); +INSERT INTO t1 values (0,0,1); +INSERT INTO t1 values (0,1,0); +INSERT INTO t1 values (0,1,1); +INSERT INTO t1 values (1,1,2); +INSERT INTO t1 values (1,2,1); +INSERT INTO t1 values (1,2,2); +INSERT INTO t1 values (1,2,3); +set global rocksdb_debug_ttl_rec_ts = 0; +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_force_flush_memtable_now=1; +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a=1 AND b=2 AND c=2; +a b c +SELECT * FROM t1 FORCE INDEX (kb) WHERE a=1 AND b=2 AND c=2; +a b c +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a = 1; +a b c +SELECT * FROM t1 FORCE INDEX (kb) WHERE a = 1; +a b c +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a < 3; +max(a) +NULL +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a < 3; +max(a) +NULL +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a < 2 AND b = 1 AND c < 3; +max(a) +NULL +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a < 2 AND b = 1 AND c < 3; +max(a) +NULL +SELECT min(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a >= 1; +min(a) +NULL +SELECT min(a) FROM t1 FORCE INDEX (kb) WHERE a >= 1; +min(a) +NULL +SELECT min(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a > 1; +min(a) +NULL +SELECT min(a) FROM t1 FORCE INDEX (kb) WHERE a > 1; +min(a) +NULL +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a=1 and b in (1) order by c desc; +a b c +SELECT * FROM t1 FORCE INDEX (kb) WHERE a=1 and b in (1) order by c desc; +a b c +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a <=10; +max(a) +NULL +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a <=10; +max(a) +NULL +SELECT a FROM t1 FORCE INDEX (PRIMARY) WHERE a > 0 and a <= 2; +a +SELECT a FROM t1 FORCE INDEX (kb) WHERE a > 0 and a <= 2; +a +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +variable_value-@c +0 +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +variable_value-@c +8 +DROP TABLE t1; +# Attempt to update expired value, should filter out +set global rocksdb_force_flush_memtable_now=1; +CREATE TABLE t1 ( +a int PRIMARY KEY +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a +SELECT * FROM t1; +a +# No error is thrown here, under the hood index_next_with_direction is +# filtering out the record from being seen in the first place. +UPDATE t1 set a = 1; +DROP TABLE t1; +# Ensure no rows can disappear in the middle of long-running transactions +# Also ensure repeatable-read works as expected +connect con1,localhost,root,,; +connect con2,localhost,root,,; +CREATE TABLE t1 ( +a int PRIMARY KEY, +b int NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; +INSERT INTO t1 values (1, 1); +connection con1; +# Creating Snapshot (start transaction) +BEGIN; +# Nothing filtered out here +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +1 1 +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +1 1 +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +# Switching to connection 2 +connection con2; +# compaction doesn't do anything since con1 snapshot is still open +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +# read filtered out, because on a different connection, on +# this connection the records have 'expired' already so they are filtered out +# even though they have not yet been removed by compaction +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +# Switching to connection 1 +connection con1; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +1 1 +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +UPDATE t1 set a = a + 1; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +2 1 +SELECT * FROM t1 FORCE INDEX (kb); +a b +2 1 +COMMIT; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +DROP TABLE t1; +disconnect con1; +disconnect con2; +connect con1,localhost,root,,; +connect con2,localhost,root,,; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +CREATE TABLE t1 ( +a int PRIMARY KEY, +b int NOT NULL, +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +# On Connection 1 +connection con1; +# Creating Snapshot (start transaction) +BEGIN; +SELECT * FROM t1 FORCE INDEX (kb); +a b +# On Connection 2 +connection con2; +set global rocksdb_debug_ttl_rec_ts = -2; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +# On Connection 1 +connection con1; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +# On Connection 2 +connection con2; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +SELECT * FROM t1 FORCE INDEX (kb); +a b +set global rocksdb_enable_ttl_read_filtering=0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b +1 1 +3 3 +5 5 +7 7 +SELECT * FROM t1 FORCE INDEX (kb); +a b +1 1 +3 3 +5 5 +7 7 +set global rocksdb_enable_ttl_read_filtering=1; +disconnect con2; +disconnect con1; +connection default; +DROP TABLE t1; +CREATE TABLE t1 ( +a int, +b int, +ts bigint(20) UNSIGNED NOT NULL, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 VALUES (1, 1, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (2, 2, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (3, 3, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (4, 4, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (5, 5, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (6, 6, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (7, 7, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (8, 8, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (9, 9, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (10, 10, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +# None are expired +SELECT a, b FROM t1 FORCE INDEX (kb); +a b +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +10 10 +set global rocksdb_debug_ttl_rec_ts = -100; +UPDATE t1 SET ts=(UNIX_TIMESTAMP()+1) WHERE a IN (4, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +# 4 and 7 should be gone +SELECT a, b FROM t1 FORCE INDEX (kb); +a b +1 1 +2 2 +3 3 +5 5 +6 6 +8 8 +9 9 +10 10 +DROP TABLE t1; +CREATE TABLE t1 ( +c1 INT, +c2 INT, +name VARCHAR(25) NOT NULL, +PRIMARY KEY (c1, c2), +KEY kc2 (c2) +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (1,1,'a'); +INSERT INTO t1 values (2,2,'b'); +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (3,3,'c'); +INSERT INTO t1 values (4,4,'d'); +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (5,5,'e'); +INSERT INTO t1 values (6,6,'f'); +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (7,7,'g'); +INSERT INTO t1 values (8,8,'h'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name +3 3 c +4 4 d +7 7 g +8 8 h +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name +3 3 c +4 4 d +7 7 g +8 8 h +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 > 5; +c1 c2 name +7 7 g +8 8 h +SELECT * FROM t1 FORCE INDEX (kc2) WHERE c2 > 5; +c1 c2 name +7 7 g +8 8 h +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE 3 < c1 AND c1 < 6; +c1 c2 name +4 4 d +SELECT * FROM t1 FORCE INDEX (kc2) WHERE 3 < c2 AND c2 < 6; +c1 c2 name +4 4 d +DROP TABLE t1; +CREATE TABLE t1 ( +a int, +b int, +PRIMARY KEY (a), +KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1800;'; +set global rocksdb_debug_ttl_rec_ts = 0; +INSERT INTO t1 values (1,1); +INSERT INTO t1 values (2,2); +INSERT INTO t1 values (7,7); +INSERT INTO t1 values (10,10); +INSERT INTO t1 values (11,11); +INSERT INTO t1 values (12,12); +set global rocksdb_debug_ttl_rec_ts = 450; +INSERT INTO t1 values (3,3); +INSERT INTO t1 values (4,4); +INSERT INTO t1 values (8,8); +INSERT INTO t1 values (16,16); +INSERT INTO t1 values (17,17); +INSERT INTO t1 values (18,18); +set global rocksdb_debug_ttl_rec_ts = 900; +INSERT INTO t1 values (5,5); +INSERT INTO t1 values (6,6); +INSERT INTO t1 values (9,9); +INSERT INTO t1 values (13,13); +INSERT INTO t1 values (14,14); +INSERT INTO t1 values (15,15); +set global rocksdb_debug_ttl_rec_ts = 0; +# Should see everything +SELECT * FROM t1; +a b +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +13 13 +14 14 +15 15 +16 16 +17 17 +18 18 +# Should have no records from the first group +set global rocksdb_debug_ttl_read_filter_ts = -1800; +SELECT * FROM t1; +a b +3 3 +4 4 +5 5 +6 6 +8 8 +9 9 +13 13 +14 14 +15 15 +16 16 +17 17 +18 18 +SELECT * FROM t1 FORCE INDEX (kb) WHERE a > 5 AND a < 15; +a b +6 6 +8 8 +9 9 +13 13 +14 14 +# Should only have records from the last group +set global rocksdb_debug_ttl_read_filter_ts = -1800 - 450; +SELECT * FROM t1; +a b +5 5 +6 6 +9 9 +13 13 +14 14 +15 15 +SELECT * FROM t1 FORCE INDEX (kb) WHERE a < 10; +a b +5 5 +6 6 +9 9 +# Should be empty +set global rocksdb_debug_ttl_read_filter_ts = -1800 - 900; +SELECT * FROM t1; +a b +set global rocksdb_debug_ttl_read_filter_ts = 0; +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering_multiple_index.result b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering_multiple_index.result new file mode 100644 index 00000000000..e4c361576f5 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_read_filtering_multiple_index.result @@ -0,0 +1,82 @@ +CREATE TABLE t1 ( +a int NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) COMMENT 'kb', +KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='kb'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kb); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kc); +a b c +3 3 3 +DROP TABLE t1; +CREATE TABLE t1 ( +a int NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) COMMENT 'kb', +KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kb); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kc); +a b c +3 3 3 +DROP TABLE t1; +CREATE TABLE t1 ( +a int NOT NULL, +b int NOT NULL, +c int NOT NULL, +PRIMARY KEY (a), +KEY kb (b) COMMENT 'kb', +KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_compact_cf='kb'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kb); +a b c +3 3 3 +SELECT * FROM t1 FORCE INDEX (kc); +a b c +3 3 3 +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_with_partitions.result b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_with_partitions.result new file mode 100644 index 00000000000..713c7e92fa8 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/r/ttl_secondary_with_partitions.result @@ -0,0 +1,389 @@ +CREATE TABLE t1 ( +c1 INT, +c2 INT, +PRIMARY KEY (`c1`), +KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;" +PARTITION BY LIST(c1) ( +PARTITION custom_p0 VALUES IN (1, 4, 7), +PARTITION custom_p1 VALUES IN (2, 5, 8), +PARTITION custom_p2 VALUES IN (3, 6, 9) +); +set global rocksdb_debug_ttl_rec_ts = -3600; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (4, 4); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (6, 6); +INSERT INTO t1 values (7, 7); +INSERT INTO t1 values (8, 8); +INSERT INTO t1 values (9, 9); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 +2 2 +3 3 +5 5 +6 6 +8 8 +9 9 +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 +2 2 +3 3 +5 5 +6 6 +8 8 +9 9 +DROP TABLE t1; +CREATE TABLE t1 ( +c1 INT, +c2 INT, +name VARCHAR(25) NOT NULL, +PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz', +KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;custom_p1_ttl_duration=7;" +PARTITION BY LIST(c1) ( +PARTITION custom_p0 VALUES IN (1, 4, 7), +PARTITION custom_p1 VALUES IN (2, 5, 8), +PARTITION custom_p2 VALUES IN (3, 6, 9) +); +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (1,1,'a'); +INSERT INTO t1 values (4,4,'aaaa'); +INSERT INTO t1 values (7,7,'aaaaaaa'); +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (2,2,'aa'); +INSERT INTO t1 values (3,3,'aaa'); +INSERT INTO t1 values (5,5,'aaaaa'); +INSERT INTO t1 values (6,6,'aaaaaa'); +INSERT INTO t1 values (8,8,'aaaaaaaa'); +INSERT INTO t1 values (9,9,'aaaaaaaaa'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name +1 1 a +2 2 aa +3 3 aaa +4 4 aaaa +5 5 aaaaa +6 6 aaaaaa +7 7 aaaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name +1 1 a +2 2 aa +3 3 aaa +4 4 aaaa +5 5 aaaaa +6 6 aaaaaa +7 7 aaaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'my_custom_cf'; +set @@global.rocksdb_compact_cf = 'default'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name +2 2 aa +3 3 aaa +5 5 aaaaa +6 6 aaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name +2 2 aa +3 3 aaa +5 5 aaaaa +6 6 aaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set @@global.rocksdb_compact_cf = 'foo'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name +2 2 aa +3 3 aaa +5 5 aaaaa +6 6 aaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name +2 2 aa +3 3 aaa +5 5 aaaaa +6 6 aaaaaa +8 8 aaaaaaaa +9 9 aaaaaaaaa +set @@global.rocksdb_compact_cf = 'my_custom_cf'; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name +3 3 aaa +6 6 aaaaaa +9 9 aaaaaaaaa +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name +3 3 aaa +6 6 aaaaaa +9 9 aaaaaaaaa +DROP TABLE t1; +CREATE TABLE t1 ( +c1 INT, +c2 INT, +name VARCHAR(25) NOT NULL, +event DATE, +PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;', +KEY kc2 (c2) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;" +PARTITION BY LIST(c1) ( +PARTITION custom_p0 VALUES IN (1, 2, 3), +PARTITION custom_p1 VALUES IN (4, 5, 6), +PARTITION custom_p2 VALUES IN (7, 8, 9) +); +INSERT INTO t1 VALUES (1, 1, "one", null); +INSERT INTO t1 VALUES (2, 2, "two", null); +INSERT INTO t1 VALUES (3, 3, "three", null); +INSERT INTO t1 VALUES (4, 4, "four", null); +INSERT INTO t1 VALUES (5, 5, "five", null); +INSERT INTO t1 VALUES (6, 6, "six", null); +INSERT INTO t1 VALUES (7, 7, "seven", null); +INSERT INTO t1 VALUES (8, 8, "eight", null); +INSERT INTO t1 VALUES (9, 9, "nine", null); +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +7 7 seven NULL +8 8 eight NULL +9 9 nine NULL +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +7 7 seven NULL +8 8 eight NULL +9 9 nine NULL +set global rocksdb_debug_ttl_rec_ts = 600; +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'; +set global rocksdb_debug_ttl_rec_ts = 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` int(11) NOT NULL, + `c2` int(11) NOT NULL, + `name` varchar(25) NOT NULL, + `event` date DEFAULT NULL, + PRIMARY KEY (`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;', + KEY `kc2` (`c2`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;' + PARTITION BY LIST (`c1`) +(PARTITION `custom_p0` VALUES IN (1,2,3) ENGINE = ROCKSDB, + PARTITION `custom_p1` VALUES IN (4,5,6) ENGINE = ROCKSDB, + PARTITION `custom_p2` VALUES IN (7,8,9) ENGINE = ROCKSDB) +set global rocksdb_debug_ttl_snapshot_ts = 100; +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'baz'; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +7 7 seven NULL +8 8 eight NULL +9 9 nine NULL +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +7 7 seven NULL +8 8 eight NULL +9 9 nine NULL +set global rocksdb_debug_ttl_snapshot_ts = 1200; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'baz'; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 name event +1 1 one NULL +2 2 two NULL +3 3 three NULL +4 4 four NULL +5 5 five NULL +6 6 six NULL +DROP TABLE t1; +CREATE TABLE t1 ( +c1 BIGINT, +c2 BIGINT UNSIGNED NOT NULL, +name VARCHAR(25) NOT NULL, +event DATE, +PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;', +KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="ttl_duration=1;custom_p1_ttl_duration=100;custom_p1_ttl_col=c2;custom_p2_ttl_duration=5000;" +PARTITION BY LIST(c1) ( +PARTITION custom_p0 VALUES IN (1, 2, 3), +PARTITION custom_p1 VALUES IN (4, 5, 6), +PARTITION custom_p2 VALUES IN (7, 8, 9) +); +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 VALUES (1, UNIX_TIMESTAMP(), "one", null); +INSERT INTO t1 VALUES (2, UNIX_TIMESTAMP(), "two", null); +INSERT INTO t1 VALUES (3, UNIX_TIMESTAMP(), "three", null); +set global rocksdb_debug_ttl_rec_ts = 0; +INSERT INTO t1 VALUES (4, UNIX_TIMESTAMP(), "four", null); +INSERT INTO t1 VALUES (5, UNIX_TIMESTAMP(), "five", null); +INSERT INTO t1 VALUES (6, UNIX_TIMESTAMP(), "six", null); +INSERT INTO t1 VALUES (7, UNIX_TIMESTAMP(), "seven", null); +INSERT INTO t1 VALUES (8, UNIX_TIMESTAMP(), "eight", null); +INSERT INTO t1 VALUES (9, UNIX_TIMESTAMP(), "nine", null); +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'baz'; +set @@global.rocksdb_compact_cf = 'bar'; +set @@global.rocksdb_compact_cf = 'default'; +SELECT c1 FROM t1 FORCE INDEX (PRIMARY); +c1 +4 +5 +6 +7 +8 +9 +SELECT c1 FROM t1 FORCE INDEX (kc2); +c1 +4 +5 +6 +7 +8 +9 +set global rocksdb_debug_ttl_snapshot_ts = 600; +set @@global.rocksdb_compact_cf = 'bar'; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +SELECT c1 FROM t1 FORCE INDEX (PRIMARY); +c1 +7 +8 +9 +SELECT c1 FROM t1 FORCE INDEX (kc2); +c1 +7 +8 +9 +DROP TABLE t1; +CREATE TABLE t1 ( +c1 INT, +c2 INT, +PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;' +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;" +PARTITION BY LIST(c1) ( +PARTITION custom_p0 VALUES IN (1, 4, 7), +PARTITION custom_p1 VALUES IN (2, 5, 8), +PARTITION custom_p2 VALUES IN (3, 6, 9) +); +set global rocksdb_debug_ttl_rec_ts = -3600; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (4, 4); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (6, 6); +INSERT INTO t1 values (8, 8); +INSERT INTO t1 values (9, 9); +SELECT * FROM t1; +c1 c2 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 +CREATE INDEX kc2 on t1 (c2); +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='foo'; +set global rocksdb_compact_cf='default'; +SELECT * FROM t1 FORCE INDEX (PRIMARY); +c1 c2 +2 2 +3 3 +5 5 +6 6 +8 8 +9 9 +SELECT * FROM t1 FORCE INDEX (kc2); +c1 c2 +2 2 +3 3 +5 5 +6 6 +8 8 +9 9 +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/r/type_float.result b/storage/rocksdb/mysql-test/rocksdb/r/type_float.result index fbb44d1552c..778ed95d338 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/type_float.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/type_float.result @@ -127,17 +127,27 @@ r1_1 -0.9 r1_1 0.0 r1_1 0.9 r1_1 0.9 -SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1; -MAX(f) 9.999999680285692e37 -MAX(d) 1e81 -MAX(d10_10) 0.9999999999 -MAX(d1_0) 9 -MAX(d53) 100000000000000000000000000000000000000000000000000000 -MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000 -MAX(f0) 9.999999680285692e37 -MAX(f20_3) 99999998430674940.000 -MAX(f23_0) 9.999999680285692e37 -MAX(r1_1) 0.9 +SELECT +CONCAT('', MAX(f)), +CONCAT('', MAX(f0)), +CONCAT('', MAX(r1_1)), +CONCAT('', MAX(f23_0)), +CONCAT('', MAX(f20_3)), +CONCAT('', MAX(d)), +CONCAT('', MAX(d1_0)), +CONCAT('', MAX(d10_10)), +CONCAT('', MAX(d53)), +CONCAT('', MAX(d53_10)) FROM t1; +CONCAT('', MAX(f)) 9.999999680285692e37 +CONCAT('', MAX(d)) 1e81 +CONCAT('', MAX(d10_10)) 0.9999999999 +CONCAT('', MAX(d1_0)) 9 +CONCAT('', MAX(d53)) 100000000000000000000000000000000000000000000000000000 +CONCAT('', MAX(d53_10)) 10000000000000000000000000000000000000000000.0000000000 +CONCAT('', MAX(f0)) 9.999999680285692e37 +CONCAT('', MAX(f20_3)) 99999998430674940.000 +CONCAT('', MAX(f23_0)) 9.999999680285692e37 +CONCAT('', MAX(r1_1)) 0.9 INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES ( 9999999999999999999999999999999999999999999999999999999999999.9999, 9999999999999999999999999999999999999999999999999999999999999.9999, diff --git a/storage/rocksdb/mysql-test/rocksdb/r/write_sync.result b/storage/rocksdb/mysql-test/rocksdb/r/write_sync.result index 9eed611a970..ee23446eec0 100644 --- a/storage/rocksdb/mysql-test/rocksdb/r/write_sync.result +++ b/storage/rocksdb/mysql-test/rocksdb/r/write_sync.result @@ -2,35 +2,26 @@ SET GLOBAL rocksdb_write_disable_wal=false; SET GLOBAL rocksdb_write_ignore_missing_column_families=true; create table aaa (id int primary key, i int) engine rocksdb; set @save_rocksdb_flush_log_at_trx_commit=@@global.rocksdb_flush_log_at_trx_commit; -SET GLOBAL rocksdb_flush_log_at_trx_commit=0; +SET GLOBAL rocksdb_flush_log_at_trx_commit=1; select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; insert aaa(id, i) values(1,1); select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; variable_value-@a -0 -insert aaa(id, i) values(2,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -variable_value-@a -0 -insert aaa(id, i) values(3,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -variable_value-@a -0 -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; -insert aaa(id, i) values(4,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -variable_value-@a 1 -insert aaa(id, i) values(5,1); +insert aaa(id, i) values(2,1); select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; variable_value-@a 2 -insert aaa(id, i) values(6,1); +insert aaa(id, i) values(3,1); select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; variable_value-@a 3 +SET GLOBAL rocksdb_flush_log_at_trx_commit=0; +select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; +insert aaa(id, i) values(4,1); SET GLOBAL rocksdb_flush_log_at_trx_commit=2; -insert aaa(id, i) values(7,1); +select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; +insert aaa(id, i) values(5,1); truncate table aaa; drop table aaa; set @@global.rocksdb_flush_log_at_trx_commit=@save_rocksdb_flush_log_at_trx_commit; diff --git a/storage/rocksdb/mysql-test/rocksdb/suite.pm b/storage/rocksdb/mysql-test/rocksdb/suite.pm index 79c630f87f1..133d9344414 100644 --- a/storage/rocksdb/mysql-test/rocksdb/suite.pm +++ b/storage/rocksdb/mysql-test/rocksdb/suite.pm @@ -1,5 +1,7 @@ package My::Suite::Rocksdb; +use My::SysInfo; + # # Note: ../rocksdb_sys_vars/suite.pm file has a similar # function. If you modify this file, consider modifying that one, too. @@ -21,5 +23,7 @@ $ENV{MARIAROCKS_SST_DUMP}="$sst_dump"; # Temporarily disable testing under valgrind, due to MDEV-12439 return "RocksDB tests disabled under valgrind" if ($::opt_valgrind); +return "Temporarily disabled on Windows due to MDEV-13852" if (My::SysInfo::IS_WINDOWS); + bless { }; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/2pc_group_commit.test b/storage/rocksdb/mysql-test/rocksdb/t/2pc_group_commit.test index 009fd7beaf2..124d700d51d 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/2pc_group_commit.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/2pc_group_commit.test @@ -12,53 +12,128 @@ CREATE DATABASE mysqlslap; USE mysqlslap; CREATE TABLE t1(id BIGINT AUTO_INCREMENT, value BIGINT, PRIMARY KEY(id)) ENGINE=rocksdb; +SET @save_rocksdb_enable_2pc= @@rocksdb_enable_2pc; +SET @save_rocksdb_flush_log_at_trx_commit= @@rocksdb_flush_log_at_trx_commit; + +# +# In MariaDB, regular group commit operation does not cause increment of +# rocksdb_wal_group_syncs. +# + --echo # 2PC enabled, MyRocks durability enabled -SET GLOBAL rocksdb_enable_2pc=0; +SET GLOBAL rocksdb_enable_2pc=1; SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +--echo ## --echo ## 2PC + durability + single thread -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +--echo ## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; --exec $MYSQL_SLAP --silent --concurrency=1 --number-of-queries=1000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c = 1000 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; - +select IF(variable_value - @b1 = 1000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select IF(variable_value - @b2 = 1000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +--echo # Prepare operations sync, commits don't. We expect slightly more than 1K syncs: +select IF(variable_value - @b3 between 1000 and 1500, 'OK', 'FAIL') as Rocksdb_wal_synced +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; + +--echo ## --echo ## 2PC + durability + group commit -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +--echo ## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; + --exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=10000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c > 0 and variable_value-@c < 10000 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +select IF(variable_value - @b1 = 10000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select IF(variable_value - @b2 between 100 and 5000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +select IF(variable_value - @b3 between 1 and 9000, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; ---echo # 2PC enabled, MyRocks durability disabled -SET GLOBAL rocksdb_enable_2pc=0; +--echo ## +--echo # 2PC enabled, MyRocks durability disabled, single thread +--echo ## +SET GLOBAL rocksdb_enable_2pc=1; SET GLOBAL rocksdb_flush_log_at_trx_commit=0; -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; --exec $MYSQL_SLAP --silent --concurrency=1 --number-of-queries=1000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; ---exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=10000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +select IF(variable_value - @b1 = 1000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select IF(variable_value - @b2 = 1000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +select IF(variable_value - @b3 < 10, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +--echo ## +--echo # 2PC enabled, MyRocks durability disabled, concurrent workload +--echo ## ---echo # 2PC disabled, MyRocks durability enabled -SET GLOBAL rocksdb_enable_2pc=1; -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; - -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; ---exec $MYSQL_SLAP --silent --concurrency=1 --number-of-queries=1000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; -select variable_value into @c from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; --exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=10000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" -select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_wal_group_syncs'; +select IF(variable_value - @b1 = 10000, 'OK', 'FAIL') as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select IF(variable_value - @b2 < 8000, 'OK', 'FAIL') as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +select IF(variable_value - @b3 < 10, 'OK', 'FAIL') +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; + +## +## The next two are disabled because they don't add any test coverage in +## MariaDB. @@rocksdb_enable_2pc=0 is a MyRocks-internal setting, binlog +## [group] commit still happens, and syncing RocksDB WAL too. +## + +--disable_parsing +--echo ## +--echo # 2PC disabled, MyRocks durability enabled, one thread +--echo ## +SET GLOBAL rocksdb_enable_2pc=0; +SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +--exec $MYSQL_SLAP --silent --concurrency=1 --number-of-queries=1000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" +select variable_value - @b1 as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value - @b2 as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value - @b3 as Rocksdb_wal_synced +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; + +--echo ## +--echo # 2PC disabled, MyRocks durability enabled, concurrent workload +--echo ## +select variable_value into @b1 from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value into @b2 from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value into @b3 from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=10000 --query="INSERT INTO t1 (id, value) VALUES(NULL, 1)" +select variable_value - @b1 as Binlog_commits +from information_schema.global_status where variable_name='Binlog_commits'; +select variable_value - @b2 as Binlog_group_commits +from information_schema.global_status where variable_name='Binlog_group_commits'; +select variable_value - @b3 as Rocksdb_wal_synced +from information_schema.global_status where variable_name='Rocksdb_wal_synced'; +--enable_parsing +SET GLOBAL rocksdb_enable_2pc= @save_rocksdb_enable_2pc; +SET GLOBAL rocksdb_flush_log_at_trx_commit= @save_rocksdb_flush_log_at_trx_commit; -SET GLOBAL rocksdb_enable_2pc=1; -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; DROP TABLE t1; DROP DATABASE mysqlslap; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace.test b/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace.test index 7c1af1e38df..c1a91c2a5a2 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace.test @@ -190,8 +190,8 @@ connect (con1,localhost,root,,); --echo # Switch to connection con1 connection con1; -show global variables like 'rocksdb_bulk_load'; -show session variables like 'rocksdb_bulk_load'; +show global variables like 'rocksdb_bulk_load%'; +show session variables like 'rocksdb_bulk_load%'; CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB; @@ -259,9 +259,9 @@ SET @prior_rocksdb_merge_buf_size = @@rocksdb_merge_buf_size; SET global rocksdb_strict_collation_check = off; SET session rocksdb_merge_combine_read_size = 566; -SET session rocksdb_merge_buf_size = 336; +SET session rocksdb_merge_buf_size = 340; -show variables like '%rocksdb_bulk_load%'; +show variables like 'rocksdb_bulk_load%'; CREATE TABLE t1 (a VARCHAR(80)) ENGINE=RocksDB; INSERT INTO t1 (a) VALUES (REPEAT("a", 80)); INSERT INTO t1 (a) VALUES (REPEAT("a", 80)); diff --git a/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_sstfilewriter.test b/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_sstfilewriter.test index 1ac382794ae..78ddbe60da5 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_sstfilewriter.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_sstfilewriter.test @@ -19,7 +19,7 @@ CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30)) COLLATE 'latin1_ perl; my $fn = $ENV{'ROCKSDB_INFILE'}; open(my $fh, '>>', $fn) || die "perl open($fn): $!"; -my $max = 3000000; +my $max = 300000; my @chars = ("A".."Z", "a".."z", "0".."9"); my @lowerchars = ("a".."z"); my @powers_of_26 = (26 * 26 * 26 * 26, 26 * 26 * 26, 26 * 26, 26, 1); @@ -48,7 +48,7 @@ EOF --file_exists $file set rocksdb_bulk_load=1; -set rocksdb_bulk_load_size=100000; +set rocksdb_bulk_load_size=10000; --disable_query_log --echo LOAD DATA INFILE <input_file> INTO TABLE t1; eval LOAD DATA INFILE '$file' INTO TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test index bb3d8164200..4a4c42d1fcd 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test @@ -1,5 +1,6 @@ --source include/have_rocksdb.inc +### Bulk load ### CREATE TABLE t1(pk INT, PRIMARY KEY(pk)); # Make sure we get an error with out of order keys during bulk load @@ -33,4 +34,29 @@ select @@rocksdb_bulk_load; call mtr.add_suppression('finalizing last SST file while setting bulk loading variable'); +TRUNCATE TABLE t1; + +### Bulk load with unsorted PKs ### +SET rocksdb_bulk_load_allow_unsorted=1; + +# We should not get an error with out of order PKs +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES(100); +INSERT INTO t1 VALUES(101); +INSERT INTO t1 VALUES(99); +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +TRUNCATE TABLE t1; + +# We should get an error with duplicate PKs in the same bulk load +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES(201); +INSERT INTO t1 VALUES(200); +INSERT INTO t1 VALUES(202); +--error ER_DUP_ENTRY +INSERT INTO t1 VALUES(201); +SET rocksdb_bulk_load=0; +SELECT * FROM t1; + +SET rocksdb_bulk_load_allow_unsorted=DEFAULT; DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted.test b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted.test new file mode 100644 index 00000000000..9d9433eaafa --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted.test @@ -0,0 +1,137 @@ +--source include/have_rocksdb.inc +--source include/have_partition.inc + +--let pk_cf=cf1 + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +SET rocksdb_bulk_load_size=3; +SET rocksdb_bulk_load_allow_unsorted=1; + +### Test individual INSERTs ### + +# A table with only a PK won't have rows until the bulk load is finished +eval CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf"); +SET rocksdb_bulk_load=1; +--disable_query_log +let $sign = 1; +let $max = 5; +let $i = 1; +while ($i <= $max) { + let $a = 1 + $sign * $i; + let $b = 1 - $sign * $i; + let $sign = -$sign; + let $insert = INSERT INTO t1 VALUES ($a, $b); + eval $insert; + inc $i; +} +--enable_query_log +SELECT * FROM t1; +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +DROP TABLE t1; + +# A table with a PK and a SK shows rows immediately +eval CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf", KEY(b)); +SET rocksdb_bulk_load=1; +--disable_query_log +let $sign = 1; +let $max = 5; +let $i = 1; +while ($i <= $max) { + let $a = 1 + $sign * $i; + let $b = 1 - $sign * $i; + let $sign = -$sign; + let $insert = INSERT INTO t1 VALUES ($a, $b); + eval $insert; + inc $i; +} +--enable_query_log + +SELECT * FROM t1; +SET rocksdb_bulk_load=0; +DROP TABLE t1; + +# Inserting into another table finishes bulk load to the previous table +eval CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf"); +eval CREATE TABLE t2(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf"); + +SET rocksdb_bulk_load=1; +INSERT INTO t1 VALUES (1,1); +INSERT INTO t2 VALUES (1,1); +SELECT * FROM t1; +INSERT INTO t1 VALUES (2,2); +SELECT * FROM t2; +SELECT * FROM t1; +SET rocksdb_bulk_load=0; +SELECT * FROM t1; +DROP TABLE t1, t2; + +### Test bulk load from a file ### +eval CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf"); +eval CREATE TABLE t2(a INT, b INT, PRIMARY KEY(b) COMMENT "$pk_cf"); +eval CREATE TABLE t3(a INT, b INT, PRIMARY KEY(a) COMMENT "$pk_cf") + PARTITION BY KEY() PARTITIONS 4; + +--let $file = `SELECT CONCAT(@@datadir, "test_loadfile.txt")` +# Create a text file with data to import into the table. +# PK and SK are not in any order +--let ROCKSDB_INFILE = $file +perl; +my $fn = $ENV{'ROCKSDB_INFILE'}; +open(my $fh, '>', $fn) || die "perl open($fn): $!"; +my $max = 5000000; +my $sign = 1; +for (my $ii = 0; $ii < $max; $ii++) +{ + my $a = 1 + $sign * $ii; + my $b = 1 - $sign * $ii; + print $fh "$a\t$b\n"; +} +close($fh); +EOF +--file_exists $file + +# Make sure a snapshot held by another user doesn't block the bulk load +connect (other,localhost,root,,); +set session transaction isolation level repeatable read; +select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS'; +start transaction with consistent snapshot; +select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS'; + +connection default; +set rocksdb_bulk_load=1; +set rocksdb_bulk_load_size=100000; +--disable_query_log +--echo LOAD DATA INFILE <input_file> INTO TABLE t1; +eval LOAD DATA INFILE '$file' INTO TABLE t1; +--echo LOAD DATA INFILE <input_file> INTO TABLE t2; +eval LOAD DATA INFILE '$file' INTO TABLE t2; +--echo LOAD DATA INFILE <input_file> INTO TABLE t3; +eval LOAD DATA INFILE '$file' INTO TABLE t3; +--enable_query_log +set rocksdb_bulk_load=0; + +--remove_file $file + +# Make sure row count index stats are correct +--replace_column 6 # 7 # 8 # 9 # +SHOW TABLE STATUS WHERE name LIKE 't%'; + +ANALYZE TABLE t1, t2, t3; + +--replace_column 6 # 7 # 8 # 9 # +SHOW TABLE STATUS WHERE name LIKE 't%'; + +# Make sure all the data is there. +select count(a) from t1; +select count(b) from t1; +select count(a) from t2; +select count(b) from t2; +select count(a) from t3; +select count(b) from t3; + +DROP TABLE t1, t2, t3; +SET rocksdb_bulk_load_allow_unsorted=0; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted_errors.test b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted_errors.test new file mode 100644 index 00000000000..eee4f713a9b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/bulk_load_unsorted_errors.test @@ -0,0 +1,8 @@ +--source include/have_rocksdb.inc +--source include/not_debug.inc + +# Cannot change unsorted input preference during bulk load +SET rocksdb_bulk_load=1; +--error ER_ERROR_WHEN_EXECUTING_COMMAND +SET rocksdb_bulk_load_allow_unsorted=1; +SET rocksdb_bulk_load=0; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/bytes_written.test b/storage/rocksdb/mysql-test/rocksdb/t/bytes_written.test new file mode 100644 index 00000000000..f0361707355 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/bytes_written.test @@ -0,0 +1,22 @@ +--source include/have_rocksdb.inc + +--disable_warnings +DROP TABLE IF EXISTS stats_test_table; +--enable_warnings + +# Create the table +CREATE TABLE stats_test_table (a INT, b INT, PRIMARY KEY (a)) ENGINE=ROCKSDB; + +# Ensure appropriate perf_context_level is set +SET GLOBAL rocksdb_perf_context_level=3; + +# Insert some values +INSERT INTO stats_test_table VALUES (7,1); +INSERT INTO stats_test_table VALUES (2,2); + +# Verify the bytes written are updated in the table stats +SELECT io_write_bytes > 0 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME = "stats_test_table"; + +# Cleanup +DROP TABLE stats_test_table; +SET GLOBAL rocksdb_perf_context_level=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/covered_unpack_info_format.test b/storage/rocksdb/mysql-test/rocksdb/t/covered_unpack_info_format.test new file mode 100644 index 00000000000..ccd91a61ff0 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/covered_unpack_info_format.test @@ -0,0 +1,79 @@ +# Disable until covered unpack_info format enabled in prod +--source include/have_debug.inc +--source include/not_debug.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +# +# Normal case +# + +CREATE TABLE t1 ( + id INT, + fake_id INT, + bigfield VARCHAR(4096), + PRIMARY KEY (id), + KEY bf (bigfield(32)), + KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; + +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), + (8, 1008, REPEAT('b', 8)), + (24, 1024, REPEAT('c', 24)), + (31, 1031, REPEAT('d', 31)), + (32, 1032, REPEAT('x', 32)), + (33, 1033, REPEAT('y', 33)), + (128, 1128, REPEAT('z', 128)); + +SELECT * FROM t1; + +--let $prefix_index_check_title= Eligible for optimization, access via fake_id only +--let $prefix_index_check_read_avoided_delta= 2 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1031 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Not eligible for optimization, access via fake_id of big row. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1033 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DROP TABLE t1; + +# +# Create same table with older format to test compatibility +# + +set session debug= '+d,MYROCKS_NO_COVERED_BITMAP_FORMAT'; +CREATE TABLE t1 ( + id INT, + fake_id INT, + bigfield VARCHAR(4096), + PRIMARY KEY (id), + KEY bf (bigfield(32)), + KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; +set session debug= '-d,MYROCKS_NO_COVERED_BITMAP_FORMAT'; + +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), + (8, 1008, REPEAT('b', 8)), + (24, 1024, REPEAT('c', 24)), + (31, 1031, REPEAT('d', 31)), + (32, 1032, REPEAT('x', 32)), + (33, 1033, REPEAT('y', 33)), + (128, 1128, REPEAT('z', 128)); + +SELECT * FROM t1; + +--let $prefix_index_check_title= No longer eligible for optimization since no covered bitmap was stored. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1031 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Not eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1033 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ddl_high_priority.test b/storage/rocksdb/mysql-test/rocksdb/t/ddl_high_priority.test new file mode 100644 index 00000000000..01bb5cfa4ed --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ddl_high_priority.test @@ -0,0 +1,18 @@ +# Test high priority DDL +# There are two modes of high priority DDL: +# 1. Through the system variable high_priority_ddl +# 2. Through syntax: CREATE/ALTER/DROP/OPTIMIZE HIGH_PRIORITY ... + +--source include/have_rocksdb.inc + +--echo ## +--echo ## Using the system variable high_priority_ddl" +--echo ## +--let $use_sys_var = 1; +--source include/ddl_high_priority.inc + +--echo ## +--echo ## Using HIGH_PRIORITY syntax +--echo ## +--let $use_sys_var = 0; +--source include/ddl_high_priority.inc diff --git a/storage/rocksdb/mysql-test/rocksdb/t/deadlock_tracking.test b/storage/rocksdb/mysql-test/rocksdb/t/deadlock_tracking.test new file mode 100644 index 00000000000..d2abcb3b63b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/deadlock_tracking.test @@ -0,0 +1,153 @@ +set @prior_lock_wait_timeout = @@rocksdb_lock_wait_timeout; +set @prior_deadlock_detect = @@rocksdb_deadlock_detect; +set @prior_max_latest_deadlocks = @@rocksdb_max_latest_deadlocks; +set global rocksdb_deadlock_detect = on; +set global rocksdb_lock_wait_timeout = 10000; +--echo # Clears deadlock buffer of any prior deadlocks. +set global rocksdb_max_latest_deadlocks = 0; +set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks; +let $engine = rocksdb; + +--source include/count_sessions.inc +connect (con1,localhost,root,,); +let $con1= `SELECT CONNECTION_ID()`; + +connect (con2,localhost,root,,); +let $con2= `SELECT CONNECTION_ID()`; + +connect (con3,localhost,root,,); +let $con3= `SELECT CONNECTION_ID()`; + +connection default; +eval create table t (i int primary key) engine=$engine; +insert into t values (1), (2), (3); +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; + +echo Deadlock #1; +--source include/simple_deadlock.inc +connection default; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; + +echo Deadlock #2; +--source include/simple_deadlock.inc +connection default; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; +set global rocksdb_max_latest_deadlocks = 10; + +echo Deadlock #3; +--source include/simple_deadlock.inc +connection default; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; +set global rocksdb_max_latest_deadlocks = 1; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; + +connection con3; +set rocksdb_deadlock_detect_depth = 2; + +echo Deadlock #4; +connection con1; +begin; +select * from t where i=1 for update; + +connection con2; +begin; +select * from t where i=2 for update; + +connection con3; +begin; +select * from t where i=3 for update; + +connection con1; +send select * from t where i=2 for update; + +connection con2; +let $wait_condition = select count(*) = 1 from information_schema.rocksdb_trx +where thread_id = $con1 and waiting_key != ""; +--source include/wait_condition.inc + +send select * from t where i=3 for update; + +connection con3; +let $wait_condition = select count(*) = 1 from information_schema.rocksdb_trx +where thread_id = $con2 and waiting_key != ""; +--source include/wait_condition.inc + +--error ER_LOCK_DEADLOCK +select * from t where i=1 for update; +rollback; + +connection con2; +reap; +rollback; + +connection con1; +reap; +rollback; + +connection default; +set global rocksdb_max_latest_deadlocks = 5; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; + +echo Deadlock #5; +connection con1; +begin; +select * from t where i=1 for update; + +connection con2; +begin; +select * from t where i=2 for update; + +connection con3; +begin; +select * from t where i=3 lock in share mode; + +connection con1; +select * from t where i=100 for update; +select * from t where i=101 for update; +send select * from t where i=2 for update; + +connection con2; +let $wait_condition = select count(*) = 1 from information_schema.rocksdb_trx +where thread_id = $con1 and waiting_key != ""; +--source include/wait_condition.inc + +select * from t where i=3 lock in share mode; +select * from t where i=200 for update; +select * from t where i=201 for update; + +--error ER_LOCK_DEADLOCK +select * from t where i=1 lock in share mode; +rollback; + +connection con1; +reap; +rollback; + +connection con3; +rollback; + +connection default; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ +show engine rocksdb transaction status; + +disconnect con1; +disconnect con2; +disconnect con3; + +set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout; +set global rocksdb_deadlock_detect = @prior_deadlock_detect; +drop table t; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/ +show engine rocksdb transaction status; +set global rocksdb_max_latest_deadlocks = 0; +--echo # Clears deadlock buffer of any existent deadlocks. +set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks; +--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTIONID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/ +show engine rocksdb transaction status; +--source include/wait_until_count_sessions.inc diff --git a/storage/rocksdb/mysql-test/rocksdb/t/disabled.def b/storage/rocksdb/mysql-test/rocksdb/t/disabled.def index 842b85f87c9..3af1d99ff22 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/disabled.def +++ b/storage/rocksdb/mysql-test/rocksdb/t/disabled.def @@ -1,77 +1,86 @@ +## +## See also: storage/rocksdb/mysql-test/rocksdb/suite.pm - tests on +## platforms and under valgrind are disabled from there. +## + +## +## Tests that are disabled in the upstream +## cons_snapshot_serializable : Consistent read does not work on serializable level_read_uncommitted : Not supported level_serializable: Not supported -# Tests that are (temporarily) disabled in MariaDB: +## +## Tests that require FB/MySQL specific features for which there are +## no plans of ever porting them into MariaDB +## +optimizer_loose_index_scans: MariaDB doesnt support Skip Scan +mysqldump : MariaDB's mysqldump doesn't support --print-ordering-key +mysqldump2 : MariaDB's mysqldump doesn't support --print-ordering-key +native_procedure : Not supported in MariaDB slow_query_log: MDEV-11480 select_for_update_skip_locked_nowait: MDEV-11481 -rpl_read_free: MDEV-10976 -lock_wait_timeout_stats: MDEV-13404 - -optimizer_loose_index_scans: MariaDB doesnt support Skip Scan -# MDEV-11735: MyRocks: Gap Lock detector support -gap_lock_issue254: MDEV-11735: MyRocks: Gap Lock detector support -gap_lock_raise_error: MDEV-11735: MyRocks: Gap Lock detector support -# -# The idea of including RQG as a submodule and running RQG as part of -# MTR tests doesn't seem to be a good fit in MariaDB atm. -# -# The objection is that MTR tests are deterministic and can be run in -# a constrained environment. -# +## +## Tests that do not fit MariaDB's test environment. Upstream seems to test +## on boxes with much more RAM and CPU, some tests are more of a stress tests +## than functional tests or bug testcases. +## rqg_examples : Test that use RQG are disabled rqg_runtime : Test that use RQG are disabled rqg_transactions : Test that use RQG are disabled +allow_no_pk_concurrent_insert: stress test +rocksdb_deadlock_stress_rc: stress test +rocksdb_deadlock_stress_rr: stress test -# -# Temporarily disabled tests -# -information_schema : MariaRocks: requires GTIDs -mysqlbinlog_gtid_skip_empty_trans_rocksdb : MariaRocks: requires GTIDs -read_only_tx : MariaRocks: requires GTIDs -rpl_row_triggers : MariaRocks: requires GTIDs -trx_info_rpl : MariaRocks: @@rpl_skip_tx_api doesn't work, yet. -2pc_group_commit : MariaRocks: Group Commit is not functional yet +## +## Tests which hit a problem elsewhere (Upstream, SQL layer, etc) +## +persistent_cache: Upstream RocksDB bug https://github.com/facebook/mysql-5.6/issues/579 +collation: Fails on gcc 4.8 and before, MDEV-12433 +col_opt_zerofill: MDEV-14165: not MyRocks -problem in ps-protocol, happens in upstream too -mysqldump : MariaRocks: MariaDB's mysqldump doesn't support --print-ordering-key -mysqldump2 : MariaRocks: MariaDB's mysqldump doesn't support --print-ordering-key +## +## Tests that require FB/MySQL specific features which MariaDB +## currently doesnt have but eventually might get: +## +gap_lock_issue254: MDEV-11735: MyRocks: Gap Lock detector support +gap_lock_raise_error: MDEV-11735: MyRocks: Gap Lock detector support show_engine : MariaRocks: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS issue243_transactionStatus: MariaDB doesnt support SHOW ENGINE rocksdb TRANSACTION STATUS - rpl_row_not_found : MariaDB doesnt support slave_exec_mode='SEMI_STRICT' +ddl_high_priority: Needs fractional @@lock_wait_timeout +deadlock_tracking : Needs SHOW ENGINE ROCKSDB TRANSACTION STATUS +bytes_written: Needs I_S.TABLE_STATISTICS.IO_WRITE_BYTES +trx_info_rpl : MariaRocks: @@rpl_skip_tx_api doesn't work, yet. +rpl_read_free: MDEV-10976 +lock_wait_timeout_stats: MDEV-13404 -blind_delete_without_tx_api: MDEV-12286: rocksdb.blind_delete_without_tx_api test fails - -persistent_cache: Upstream RocksDB bug https://github.com/facebook/mysql-5.6/issues/579 - -collation: Fails on gcc 4.8 and before, MDEV-12433 -rocksdb : Intermittent failures in BB -unique_sec : Intermittent failures in BB -# See also storage/rocksdb/mysql-test/rocksdb/suite.pm -# Running tests under valgrind is disabled there. +## +## Test failures (in buildbot or else where) +## -allow_no_pk_concurrent_insert: stress test -rocksdb_deadlock_stress_rc: stress test -rocksdb_deadlock_stress_rr: stress test +compact_deletes: MDEV-12663 : rocksdb.compact_deletes times out and causes other tests to fail +blind_delete_without_tx_api: MDEV-12286: rocksdb.blind_delete_without_tx_api test fails -# MDEV-12474 Regularly failing tests on Buildbot -autoinc_vars_thread : MDEV-12474 Regularly fails on buildbot -unique_check : MDEV-12474 Regularly fails on buildbot -bloomfilter : MDEV-12474 Regularly fails on buildbot +# Enabling these didn't seem to cause any trouble: +# autoinc_vars_thread : MDEV-12474 Regularly fails on buildbot +# unique_check : MDEV-12474 Regularly fails on buildbot +# bloomfilter : MDEV-12474 Regularly fails on buildbot +# unique_sec : Intermittent failures in BB -compact_deletes: MDEV-12663 : rocksdb.compact_deletes times out and causes other tests to fail -col_opt_not_null : MDEV-12474 - Fails in fulltest -col_opt_null : : MDEV-12474 - Fails in fulltest -col_opt_unsigned : MDEV-12474 - Fails in fulltest -col_opt_zerofill : MDEV-12474 - Fails in fulltest -type_float : MDEV-12474 - Fails in fulltest +## +## Tests that fail for some other reason +## +information_schema : MariaRocks: requires GTIDs +mysqlbinlog_gtid_skip_empty_trans_rocksdb : MariaRocks: requires GTIDs +read_only_tx : MariaRocks: requires GTIDs +rpl_row_triggers : MariaRocks: requires GTIDs -native_procedure : Not supported in MariaDB diff --git a/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test b/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test index 09725adc558..0d3dee5ab17 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test @@ -10,6 +10,10 @@ DROP TABLE IF EXISTS t4; DROP TABLE IF EXISTS t5; --enable_warnings +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); +call mtr.add_suppression("LibRocksDB"); + # Start from clean slate set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; @@ -107,5 +111,8 @@ let $wait_condition = select count(*) = 0 where TYPE = 'DDL_DROP_INDEX_ONGOING'; --source include/wait_condition.inc +## Upstream has removed the following: +--disable_parsing +--enable_parsing # Cleanup drop table t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test b/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test index 3991a8bd00d..14d856cc0c5 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test @@ -11,6 +11,9 @@ DROP TABLE IF EXISTS t4; DROP TABLE IF EXISTS t5; --enable_warnings +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); + # Start from clean slate set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/drop_table3.inc b/storage/rocksdb/mysql-test/rocksdb/t/drop_table3.inc index 7a643d9a720..1a044384a45 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/drop_table3.inc +++ b/storage/rocksdb/mysql-test/rocksdb/t/drop_table3.inc @@ -7,6 +7,9 @@ call mtr.add_suppression("Column family 'rev:cf2' not found"); DROP TABLE IF EXISTS t1; --enable_warnings +call mtr.add_suppression("Column family 'cf1' not found"); +call mtr.add_suppression("Column family 'rev:cf2' not found"); + # Start from clean slate set global rocksdb_compact_cf = 'cf1'; set global rocksdb_compact_cf = 'rev:cf2'; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/dup_key_update.test b/storage/rocksdb/mysql-test/rocksdb/t/dup_key_update.test index a9a09d44e01..b4a0c9e5e96 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/dup_key_update.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/dup_key_update.test @@ -22,17 +22,21 @@ CREATE TABLE t2 (id1 INT, id2 INT, id3 INT, DROP TABLE t1; DROP TABLE t2; +set global rocksdb_large_prefix=1; CREATE TABLE t1 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin, id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin, id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci, PRIMARY KEY (id1, id2, id3), UNIQUE KEY (id3, id1)) ENGINE=ROCKSDB; +set global rocksdb_large_prefix=DEFAULT; +set global rocksdb_large_prefix=1; CREATE TABLE t2 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin, id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin, id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci, PRIMARY KEY (id1, id2, id3), UNIQUE KEY (id3, id1) COMMENT 'rev:cf') ENGINE=ROCKSDB; +set global rocksdb_large_prefix=DEFAULT; --source include/dup_key_update.inc diff --git a/storage/rocksdb/mysql-test/rocksdb/t/fast_prefix_index_fetch.test b/storage/rocksdb/mysql-test/rocksdb/t/fast_prefix_index_fetch.test new file mode 100644 index 00000000000..0b6cf42aff0 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/fast_prefix_index_fetch.test @@ -0,0 +1,120 @@ +# Disable until covered unpack_info format enabled in prod +--source include/have_debug.inc +--source include/not_debug.inc + +--source include/have_rocksdb.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 ( + id INT, + fake_id INT, + bigfield VARCHAR(4096), + PRIMARY KEY (id), + KEY bf (bigfield(32)), + KEY fid (fake_id, bigfield(32)) +) ENGINE=rocksdb; + +INSERT INTO t1 VALUES (1, 1001, REPEAT('a', 1)), + (8, 1008, REPEAT('b', 8)), + (24, 1024, REPEAT('c', 24)), + (31, 1031, REPEAT('d', 31)), + (32, 1032, REPEAT('x', 32)), + (33, 1033, REPEAT('y', 33)), + (128, 1128, REPEAT('z', 128)); + +SELECT * FROM t1; + +--disable_query_log + +--let $prefix_index_check_title= Baseline sanity check +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT "no-op query" +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 2 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('d', 31) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Eligible for optimization, access via fake_id only +--let $prefix_index_check_read_avoided_delta= 2 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1031 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Not eligible for optimization, access via fake_id of big row. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(fid) WHERE fake_id = 1033 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +# The secondary_index_read call isn't covered because the next record in the +# index has a bigfield value of length 33, so only one of two lookups are +# covered here. +--let $prefix_index_check_title= Eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 1 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('x', 32) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Not eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('y', 33) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 2 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('b', 8) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 2 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('c', 24) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Not eligible for optimization. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT id, bigfield FROM t1 FORCE INDEX(bf) WHERE bigfield = REPEAT('z', 128) +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DROP TABLE t1; + +--echo # +--echo # Test that multi-byte charsets are handled correctly +--echo # + +SET NAMES utf8; + +CREATE TABLE t1 ( + a INT PRIMARY KEY, + b VARCHAR(30) CHARACTER SET utf8 collate utf8_bin, + KEY k (b(2)) +) ENGINE=rocksdb; + +INSERT INTO t1 VALUES + (1, 'a'), + (2, 'cc'), + (3, 'ŽŽ'), + (4, 'žžžž'); + +--let $prefix_index_check_title= Charset record obviously shorter than the prefix +--let $prefix_index_check_query= SELECT * FROM t1 FORCE INDEX(k) WHERE b = "a" +--let $prefix_index_check_read_avoided_delta= 2 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Charset record shorter than prefix +--let $prefix_index_check_query= SELECT * FROM t1 FORCE INDEX(k) WHERE b = "cc" +--let $prefix_index_check_read_avoided_delta= 2 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Charset record with glyphs shorter than prefix +--let $prefix_index_check_query= SELECT * FROM t1 FORCE INDEX(k) WHERE b = "ŽŽ" +--let $prefix_index_check_read_avoided_delta= 1 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +--let $prefix_index_check_title= Charset record longer than prefix +--let $prefix_index_check_query= SELECT * FROM t1 FORCE INDEX(k) WHERE b = "žžžž" +--let $prefix_index_check_read_avoided_delta= 0 +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/index.inc b/storage/rocksdb/mysql-test/rocksdb/t/index.inc index 6b4e4ff233b..8b000a255b3 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/index.inc +++ b/storage/rocksdb/mysql-test/rocksdb/t/index.inc @@ -119,3 +119,37 @@ DROP TABLE t1; --enable_parsing +# +# Test index prefix length limits. +# +set global rocksdb_large_prefix=0; + +CREATE TABLE t1 ( + a BLOB(1024), + KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; + +# Should display warning +CREATE TABLE t1 ( + a BLOB(1024), + KEY (a(768)) +) ENGINE=rocksdb; +DROP TABLE t1; + +set global rocksdb_large_prefix=1; + +CREATE TABLE t1 ( + a BLOB(4096), + KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; + +# Should display warning +CREATE TABLE t1 ( + a BLOB(4096), + KEY (a(3073)) +) ENGINE=rocksdb; +DROP TABLE t1; + +set global rocksdb_large_prefix=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/index_primary.test b/storage/rocksdb/mysql-test/rocksdb/t/index_primary.test index 3abd2dd05fe..5dcfbaa8d3b 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/index_primary.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/index_primary.test @@ -62,3 +62,35 @@ ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY pk (a); SHOW KEYS IN t1; DROP TABLE t1; +# +# Test index prefix length limits. +# +set global rocksdb_large_prefix=0; + +CREATE TABLE t1 ( + a BLOB(1024), + PRIMARY KEY (a(767)) +) ENGINE=rocksdb; +DROP TABLE t1; + +--error ER_TOO_LONG_KEY +CREATE TABLE t1 ( + a BLOB(1024), + PRIMARY KEY (a(768)) +) ENGINE=rocksdb; + +set global rocksdb_large_prefix=1; + +CREATE TABLE t1 ( + a BLOB(4096), + PRIMARY KEY (a(3072)) +) ENGINE=rocksdb; +DROP TABLE t1; + +--error ER_TOO_LONG_KEY +CREATE TABLE t1 ( + a BLOB(4096), + PRIMARY KEY (a(3073)) +) ENGINE=rocksdb; + +set global rocksdb_large_prefix=DEFAULT; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/multi_varchar_sk_lookup.test b/storage/rocksdb/mysql-test/rocksdb/t/multi_varchar_sk_lookup.test new file mode 100644 index 00000000000..cb65cf91f05 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/multi_varchar_sk_lookup.test @@ -0,0 +1,49 @@ +# Disable until covered unpack_info format enabled in prod +--source include/have_debug.inc +--source include/not_debug.inc + +--source include/have_rocksdb.inc + +--disable_warnings +DROP TABLE IF EXISTS T1; +--enable_warnings + +CREATE TABLE T1 ( + P1 VARCHAR(64), P2 VARCHAR(64), P3 VARCHAR(64), P4 VARCHAR(64), + S1 VARCHAR(64), S2 VARCHAR(64), S3 VARCHAR(64), S4 VARCHAR(64), + S5 VARCHAR(64), S6 VARCHAR(64), S7 VARCHAR(64), S8 VARCHAR(64), + S9 VARCHAR(64), S10 VARCHAR(64), S11 VARCHAR(64), S12 VARCHAR(64), + S13 VARCHAR(64), S14 VARCHAR(64), S15 VARCHAR(64), S16 VARCHAR(64), + PRIMARY KEY (P1(8), P2(8), P3(8), P4(8)), + KEY SK (S1(8), S2(8), S3(8), S4(8), + S5(8), S6(8), S7(8), S8(8), + S9(8), S10(8), S11(8), S12(8), + S13(8), S14(8), S15(8), S16(8)) +) ENGINE=rocksdb; + +INSERT INTO T1 VALUES ('1', '2', '3', '4', + '5', '6', '7', '8', + '9', '10', '11', '12', + '13', '14', '15', '16', + '17', '18', '19', '20'); + +SELECT * FROM T1; + +--let $prefix_index_check_title= Not eligible for optimization, shorter than prefix length. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT P4, S2 FROM T1 FORCE INDEX(SK) WHERE S1='5' +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DELETE FROM T1; +INSERT INTO T1 VALUES ('100000000', '200000000', '300000000', '400000000', + '500000000', '600000000', '700000000', '800000000', + '900000000', '100000000', '110000000', '120000000', + '130000000', '140000000', '150000000', '160000000', + '170000000', '180000000', '190000000', '200000000'); + +--let $prefix_index_check_title= Not eligible for optimization, longer than prefix length. +--let $prefix_index_check_read_avoided_delta= 0 +--let $prefix_index_check_query= SELECT P4, S2 FROM T1 FORCE INDEX(SK) WHERE S1='5' +--source suite/rocksdb/include/prefix_index_only_query_check.inc + +DROP TABLE T1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/perf_context.test b/storage/rocksdb/mysql-test/rocksdb/t/perf_context.test index 4290811e868..ee41324a34d 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/perf_context.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/perf_context.test @@ -56,6 +56,8 @@ AND STAT_TYPE in ('INTERNAL_KEY_SKIPPED_COUNT', 'INTERNAL_DELETE_SKIPPED_COUNT') # Statistics for multi-statement transactions cannot be attributed to # individual tables but should show up in global perf context stats +set @tmp_flush_log= @@rocksdb_flush_log_at_trx_commit; +set global rocksdb_flush_log_at_trx_commit=1; BEGIN; INSERT INTO t2 VALUES (1), (2); @@ -90,3 +92,5 @@ SELECT CASE WHEN @b - @a > 0 THEN 'true' ELSE 'false' END; DROP TABLE t1; DROP TABLE t2; SET GLOBAL rocksdb_perf_context_level = @prior_rocksdb_perf_context_level; +set global rocksdb_flush_log_at_trx_commit= @tmp_flush_log; + diff --git a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test index a090a523c41..5c8fa9ed443 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test @@ -1107,6 +1107,10 @@ set autocommit = 1; update t1 set a = sleep(100) where pk = 1; --connect (con1,localhost,root,,) + +let $wait_condition= select State='User sleep' from information_schema.processlist where id=$con_id; +--source include/wait_condition.inc + --echo kill query \$con_id; --disable_query_log eval kill query $con_id; @@ -1663,7 +1667,9 @@ SET @old_mode = @@sql_mode; SET sql_mode = 'strict_all_tables'; create table t1 (a int, b text, c varchar(400), Primary Key(a), Key(c, b(255))) engine=rocksdb; drop table t1; +set global rocksdb_large_prefix=1; create table t1 (a int, b text, c varchar(400), Primary Key(a), Key(b(1255))) engine=rocksdb; +set global rocksdb_large_prefix=0; insert into t1 values (1, '1abcde', '1abcde'), (2, '2abcde', '2abcde'), (3, '3abcde', '3abcde'); select * from t1; --replace_column 9 # diff --git a/storage/rocksdb/mysql-test/rocksdb/t/show_engine.test b/storage/rocksdb/mysql-test/rocksdb/t/show_engine.test index 5a9c80188a9..06f64ddb3fa 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/show_engine.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/show_engine.test @@ -26,10 +26,8 @@ CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB; CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB PARTITION BY KEY(l) PARTITIONS 4; -SET GLOBAL rocksdb_force_flush_memtable_now=1; - ---replace_column 2 # 3 # -SHOW ENGINE rocksdb STATUS; +SET @save.rocksdb_max_background_jobs= @@global.rocksdb_max_background_jobs; +SET GLOBAL rocksdb_max_background_jobs= 1; INSERT INTO t1 VALUES (1), (2), (3); SELECT COUNT(*) FROM t1; @@ -40,6 +38,11 @@ SELECT COUNT(*) FROM t2; INSERT INTO t4 VALUES (1), (2), (3), (4), (5); SELECT COUNT(*) FROM t4; +SET GLOBAL rocksdb_force_flush_memtable_now=1; +SET GLOBAL rocksdb_compact_cf="cf_t1"; +--replace_column 2 # 3 # +SHOW ENGINE rocksdb STATUS; + # Fetch data from information schema as well --replace_column 3 # SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CFSTATS; @@ -83,3 +86,5 @@ SHOW ENGINE rocksdb TRANSACTION STATUS; ROLLBACK; +# Restore old values +SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/skip_validate_tmp_table.test b/storage/rocksdb/mysql-test/rocksdb/t/skip_validate_tmp_table.test new file mode 100644 index 00000000000..945b0079cce --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/skip_validate_tmp_table.test @@ -0,0 +1,39 @@ +--source include/have_rocksdb.inc +--source include/have_debug.inc + +# Write file to make mysql-test-run.pl expect the "crash", but don't restart the +# server until it is told to +--let $_server_id= `SELECT @@server_id` +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect + +CREATE TABLE t1 (pk int primary key) ENGINE=ROCKSDB; + +# Create a .frm file without a matching table +--exec cp $MYSQLTEST_VARDIR/mysqld.$_server_id/data/test/t1.frm $MYSQLTEST_VARDIR/mysqld.$_server_id/data/test/t1#sql-test.frm + +# Restart the server with a .frm file exist but that table is not registered in RocksDB +--exec echo "wait" >$_expect_file_name +shutdown_server 10; +--exec echo "restart" >$_expect_file_name +--sleep 5 +--enable_reconnect +--source include/wait_until_connected_again.inc +--disable_reconnect + +# This will append '#sql-test' to the end of new name +set session debug_dbug="+d,gen_sql_table_name"; +rename table t1 to t2; +set session debug_dbug= "-d,gen_sql_table_name"; + +# Remove the corresponding .frm files +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.$_server_id/data/test *t1*.frm +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.$_server_id/data/test *t2*.frm + +# Restart the server with a table registered in RocksDB but does not have a .frm file +--exec echo "wait" >$_expect_file_name +shutdown_server 10; +--exec echo "restart" >$_expect_file_name +--sleep 5 +--enable_reconnect +--source include/wait_until_connected_again.inc +--disable_reconnect diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_primary.test b/storage/rocksdb/mysql-test/rocksdb/t/ttl_primary.test index 833b6fdd91a..38bfb2eef8f 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/ttl_primary.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_primary.test @@ -374,8 +374,6 @@ COMMENT='ttl_duration=100;'; --error ER_RDB_TTL_UNSUPPORTED ALTER TABLE t1 DROP PRIMARY KEY; ---error ER_RDB_TTL_UNSUPPORTED -ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE; DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary-master.opt b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary-master.opt new file mode 100644 index 00000000000..b991f718a33 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary-master.opt @@ -0,0 +1,2 @@ +--rocksdb_enable_ttl_read_filtering=0 +--rocksdb_default_cf_options=disable_auto_compactions=true diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary.test b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary.test new file mode 100644 index 00000000000..fb439e109e7 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary.test @@ -0,0 +1,780 @@ +--source include/have_debug.inc +--source include/have_rocksdb.inc + +# Basic TTL test, pk ignored, no sk +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1; + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# no rows should be filtered +SELECT COUNT(*) FROM t1; +DROP TABLE t1; + +# Basic TTL test +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`), +KEY kb (`b`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# column before TTL in value +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + ts bigint(20) UNSIGNED NOT NULL, + c int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5); +INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# multi-part PK w/ TTL +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + c int NOT NULL, + ts bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a,c), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# nullable column(s) before TTL +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int, + c int, + ts bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a), + KEY kbc (b, c) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, NULL, NULL, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, NULL, NULL, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# variable len columns + null column(s) before TTL +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64), +`c` varbinary(256), +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`a`), +KEY kbc (`b`, `c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'efghijk', NULL, UNIX_TIMESTAMP(), 'l'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# TTL implicitly generated (no ttl column) +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, 5); +INSERT INTO t1 values (2, 4, 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# TTL field as the PK +CREATE TABLE t1 ( + a int, + ts bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a, ts), + KEY kt (ts) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=ts;'; + +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (2, UNIX_TIMESTAMP()); +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); + +set global rocksdb_debug_ttl_snapshot_ts = -10; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +# should all still be there.. +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 10; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX(kt); +DROP TABLE t1; + +# TTL field inside multi-part pk +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + ts bigint(20) UNSIGNED NOT NULL, + c int NOT NULL, + PRIMARY KEY (a, ts), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5); +INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1; +DROP TABLE t1; + +# TTL field inside key with variable length things.. +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64), +`c` varbinary(256), +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`a`, `ts`), +KEY kb (`b`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('de', 'fghijk', NULL, UNIX_TIMESTAMP(), 'l'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*) FROM t1; + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1; +DROP TABLE t1; + +# TTL test where you compact (values still exist), real_sleep, then compact again, +# values should now be gone. +CREATE TABLE t1 ( +a INT NOT NULL, +b varbinary(64) NOT NULL, +c varbinary(256) NOT NULL, +ts bigint(20) UNSIGNED NOT NULL, +value mediumblob NOT NULL, +PRIMARY KEY (b,a,c), +KEY kb (b) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=10;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values (2, 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (3, 'i', 'j', UNIX_TIMESTAMP(), 'k'); +INSERT INTO t1 values (4, 'm', 'n', UNIX_TIMESTAMP(), 'o'); +set global rocksdb_debug_ttl_rec_ts = 0; + +# Nothing should get removed here. +set global rocksdb_debug_ttl_snapshot_ts = -3600; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +# 1 and 2 should get removed here. +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +# 3 and 4 should get removed here. +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; + +# TTL field with nullable ttl column (should fail) +--error ER_RDB_TTL_COL_FORMAT +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int NOT NULL, + c int NOT NULL, + ts bigint(20), + PRIMARY KEY (a,c), + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +# TTL field with non 8-bit integer column (should fail) +--error ER_RDB_TTL_COL_FORMAT +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int NOT NULL, + c int NOT NULL, + ts int, + PRIMARY KEY (a,c), + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +# TTL duration as some random garbage value +--error ER_RDB_TTL_DURATION_FORMAT +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a,c), + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=abc;'; + +# TTL col is some column outside of the table +--error ER_RDB_TTL_COL_FORMAT +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a,c), + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=abc;'; + +# TTL col must have accompanying duration +--error ER_RDB_TTL_COL_FORMAT +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a,c), + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_col=abc;'; + +# Make sure it doesn't filter out things early +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=500;'; + +INSERT INTO t1 values (1, 1); +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Testing altering table comment with updated TTL duration +# This should trigger a rebuild of the table +CREATE TABLE t1 ( + a INT PRIMARY KEY, + b INT NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; + +INSERT INTO t1 values (1, 1); +SELECT * FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_rec_ts = -300; +ALTER TABLE t1 COMMENT = 'ttl_duration=1'; +set global rocksdb_debug_ttl_rec_ts = 0; +SHOW CREATE TABLE t1; + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Tables with hidden PK disabled +CREATE TABLE t1 ( + a INT PRIMARY KEY, + b INT, + KEY (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; + +--error ER_RDB_TTL_UNSUPPORTED +ALTER TABLE t1 DROP PRIMARY KEY; + +DROP TABLE t1; + +# Test replacing PK, ttl should still work after +CREATE TABLE t1 ( + a INT PRIMARY KEY, + b INT, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; + +INSERT INTO t1 VALUES (1,1); +INSERT INTO t1 VALUES (2,2); + +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b); +set global rocksdb_debug_ttl_snapshot_ts = -3600; +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; + +--sorted_result +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; + +--sorted_result +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; + +# Make sure table comment filled with other text before/after will work +# (basically, it needs semicolon before and after) +CREATE TABLE t1 ( + a bigint(20) UNSIGNED NOT NULL, + b int, + PRIMARY KEY (a,b), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='asdadfasdfsadfadf ;ttl_duration=1; asfasdfasdfadfa'; +INSERT INTO t1 values (UNIX_TIMESTAMP(), 1); +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; + +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +ALTER TABLE t1 COMMENT = 'adsf;;ttl_duration=5;asfasdfa;ttl_col=a;asdfasdf;'; +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (UNIX_TIMESTAMP(), 2); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; + +# nothing removed here +set global rocksdb_compact_cf='default'; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +# all removed here +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +set global rocksdb_debug_ttl_ignore_pk=0; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; + +# Test to make sure that TTL retains original timestamp during update +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, 0); +INSERT INTO t1 values (3, 0); +INSERT INTO t1 values (5, 0); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (7, 0); +INSERT INTO t1 values (9, 0); +set global rocksdb_debug_ttl_rec_ts = 0; + +UPDATE t1 SET a=a+1; +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# 1,3,5 should be dropped +--sorted_result +SELECT * FROM t1; +DROP TABLE t1; + +# test behaviour on update with TTL column, TTL time can be updated here. +CREATE TABLE t1 ( + a INT, + b bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); + +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# 5 and 7 should be gone here +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Test rows expired stat variable and disable ttl variable +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 1); +INSERT INTO t1 values (3, 1); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_enable_ttl=0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_enable_ttl=1; +set global rocksdb_compact_cf='default'; + +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Table with TTL won't increment rows expired when no records have been +# compacted +CREATE TABLE t1 ( + a bigint(20) NOT NULL, + b int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=100;'; + +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); + +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; + +DROP TABLE t1; + +# Test update on TTL column in pk +CREATE TABLE t1 ( + a INT, + b bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a, b), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); + +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk=1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk=0; + +# 5 and 7 should be gone here +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# test behaviour on update with TTL column, TTL time can be updated here. +CREATE TABLE t1 ( + a INT, + b bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a, b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;ttl_col=b;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +INSERT INTO t1 values (5, UNIX_TIMESTAMP()); +INSERT INTO t1 values (7, UNIX_TIMESTAMP()); + +set global rocksdb_debug_ttl_rec_ts = 300; +UPDATE t1 SET b=(UNIX_TIMESTAMP()+1) WHERE a < 4; +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT a FROM t1; + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +# 7 should be gone here +--sorted_result +SELECT a FROM t1; +DROP TABLE t1; + +# Add index inplace +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# nothing filtered out +SELECT COUNT(*); + +CREATE INDEX kb on t1 (b); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Add index inplace, implicit TTL +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', 'd'); +INSERT INTO t1 values ('d', 'e', 'f', 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# nothing filtered out +SELECT COUNT(*); + +CREATE INDEX kb on t1 (b); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; + +# Add index inplace, TTL column in PK +CREATE TABLE t1 ( +`a` binary(8) NOT NULL, +`b` varbinary(64) NOT NULL, +`c` varbinary(256) NOT NULL, +`ts` bigint(20) UNSIGNED NOT NULL, +`value` mediumblob NOT NULL, +PRIMARY KEY (`b`,`a`,`c`, `ts`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd'); +INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g'); +set global rocksdb_debug_ttl_rec_ts = 0; +SELECT COUNT(*); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# nothing filtered out +SELECT COUNT(*); + +CREATE INDEX kb on t1 (b); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +# should have filtered the rows out since ttl is passed in compaction filter +SELECT COUNT(*) FROM t1 FORCE INDEX (kb); +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering-master.opt b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering-master.opt new file mode 100644 index 00000000000..aefc2f5da34 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering-master.opt @@ -0,0 +1 @@ +--rocksdb_default_cf_options=disable_auto_compactions=true diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering.test b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering.test new file mode 100644 index 00000000000..d6be7d95f8d --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering.test @@ -0,0 +1,500 @@ +--source include/have_debug.inc +--source include/have_rocksdb.inc + +# The purpose of read filtering for tables with TTL is to ensure that during a +# transaction a key which has expired already but not removed by compaction +# yet, is not returned to the user. +# +# Without this the user might be hit with problems such as disappearing rows +# within a transaction, etc, because the compaction filter ignores snapshots +# when filtering keys. + +# Basic read filtering test +CREATE TABLE t1 ( + a int PRIMARY KEY, + b int NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; + +DROP TABLE t1; + +# Test that some rows are hidden but others aren't... +CREATE TABLE t1 ( + a int PRIMARY KEY, + b BIGINT UNSIGNED NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=10;'; + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 values (1, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 300; +INSERT INTO t1 values (2, UNIX_TIMESTAMP()); +INSERT INTO t1 values (3, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; + +--echo # 1 should be hidden +--sorted_result +SELECT a FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; + +--echo # none should be hidden yet, compaction runs but records aren't expired +--sorted_result +SELECT a FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); + +--echo # all should be hidden now, even though compaction hasn't run again +set global rocksdb_debug_ttl_read_filter_ts = -310; +--sorted_result +SELECT a FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT a FROM t1 FORCE INDEX (kb); +set global rocksdb_debug_ttl_read_filter_ts = 0; + +DROP TABLE t1; + +# Test the filtering code explicitly. +CREATE TABLE t1 ( + a int PRIMARY KEY, + b int NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; + +--echo # should return nothing. +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +# disable filtering +set global rocksdb_enable_ttl_read_filtering=0; + +--echo # should return everything +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +# enable filtering +set global rocksdb_enable_ttl_read_filtering=1; + +--echo # should return nothing. +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; + +--echo # Read filtering index scan tests (None of these queries should return any results) +CREATE TABLE t1 ( + a int, + b int, + c int, + PRIMARY KEY (a,b,c), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (0,0,0); +INSERT INTO t1 values (0,0,1); +INSERT INTO t1 values (0,1,0); +INSERT INTO t1 values (0,1,1); +INSERT INTO t1 values (1,1,2); +INSERT INTO t1 values (1,2,1); +INSERT INTO t1 values (1,2,2); +INSERT INTO t1 values (1,2,3); +set global rocksdb_debug_ttl_rec_ts = 0; + +select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired'; + +set global rocksdb_force_flush_memtable_now=1; + +# HA_READ_KEY_EXACT, using full key +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a=1 AND b=2 AND c=2; +SELECT * FROM t1 FORCE INDEX (kb) WHERE a=1 AND b=2 AND c=2; + +# HA_READ_KEY_EXACT, not using full key +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a = 1; +SELECT * FROM t1 FORCE INDEX (kb) WHERE a = 1; + +# HA_READ_BEFORE_KEY, not using full key +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a < 3; +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a < 3; + +# HA_READ_BEFORE_KEY, using full key +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a < 2 AND b = 1 AND c < 3; +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a < 2 AND b = 1 AND c < 3; + +# HA_READ_KEY_OR_NEXT +SELECT min(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a >= 1; +SELECT min(a) FROM t1 FORCE INDEX (kb) WHERE a >= 1; + +# HA_READ_AFTER_KEY, /* Find next rec. after key-record */ +SELECT min(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a > 1; +SELECT min(a) FROM t1 FORCE INDEX (kb) WHERE a > 1; + +# HA_READ_PREFIX_LAST, /* Last key with the same prefix */ +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE a=1 and b in (1) order by c desc; +SELECT * FROM t1 FORCE INDEX (kb) WHERE a=1 and b in (1) order by c desc; + +# HA_READ_PREFIX_LAST_OR_PREV, /* Last or prev key with the same prefix */ +SELECT max(a) FROM t1 FORCE INDEX (PRIMARY) WHERE a <=10; +SELECT max(a) FROM t1 FORCE INDEX (kb) WHERE a <=10; + +# need to test read_range_first() +# calls into read_range_next() and uses compare_keys() to see if its out of +# range +SELECT a FROM t1 FORCE INDEX (PRIMARY) WHERE a > 0 and a <= 2; +SELECT a FROM t1 FORCE INDEX (kb) WHERE a > 0 and a <= 2; + +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired'; +DROP TABLE t1; + +--echo # Attempt to update expired value, should filter out +set global rocksdb_force_flush_memtable_now=1; +CREATE TABLE t1 ( + a int PRIMARY KEY +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1); +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1; + +--echo # No error is thrown here, under the hood index_next_with_direction is +--echo # filtering out the record from being seen in the first place. +UPDATE t1 set a = 1; +DROP TABLE t1; + +--echo # Ensure no rows can disappear in the middle of long-running transactions +--echo # Also ensure repeatable-read works as expected +--source include/count_sessions.inc +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); + +CREATE TABLE t1 ( + a int PRIMARY KEY, + b int NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=5;'; + +INSERT INTO t1 values (1, 1); + +connection con1; +--echo # Creating Snapshot (start transaction) +BEGIN; + +# We need the below snippet in case establishing con1 took an arbitrary +# amount of time. See https://github.com/facebook/mysql-5.6/pull/617#discussion_r120525391. +--disable_query_log +--let $snapshot_size= `SELECT COUNT(*) FROM t1` +--let $i= 0 +while ($snapshot_size != 1) +{ + if ($i == 1000) + { + --die Your testing host is too slow for reasonable TTL testing + } + + $i++; + ROLLBACK; + INSERT INTO t1 values (1,1); + BEGIN; + --let $snapshot_size= `SELECT COUNT(*) FROM t1` +} +--enable_query_log + +--echo # Nothing filtered out here +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +--sleep 5 + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); # <= shouldn't be filtered out here + +--echo # Switching to connection 2 +connection con2; +--echo # compaction doesn't do anything since con1 snapshot is still open +set global rocksdb_debug_ttl_ignore_pk = 1; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_debug_ttl_ignore_pk = 0; +--echo # read filtered out, because on a different connection, on +--echo # this connection the records have 'expired' already so they are filtered out +--echo # even though they have not yet been removed by compaction +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +--echo # Switching to connection 1 +connection con1; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); # <= shouldn't be filtered out here + +UPDATE t1 set a = a + 1; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); # <= shouldn't be filtered out here + +COMMIT; + +--sorted_result # <= filtered out here because time has passed. +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; +disconnect con1; +disconnect con2; + +#transaction 1, create a snapshot and select * => returns nothing. +#transaction 2, insert into table, flush +#transaction 1, select * => returns nothing, but the snapshot should prevent the compaction code from removing the rows, no matter what the ttl duration is. +#transaction 2, select * -> sees nothing, disable filter, select * -> sees everything, enable filter, select * -> sees nothing. +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +CREATE TABLE t1 ( + a int PRIMARY KEY, + b int NOT NULL, + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;'; + +--echo # On Connection 1 +connection con1; +--echo # Creating Snapshot (start transaction) +BEGIN; +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); +# Sleep 5 secs after creating snapshot, this ensures any records created after +# this can't be removed by compaction until this snapshot is released. +--sleep 5 + +--echo # On Connection 2 +connection con2; +set global rocksdb_debug_ttl_rec_ts = -2; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +--echo # On Connection 1 +connection con1; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); + +--echo # On Connection 2 +connection con2; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); +set global rocksdb_enable_ttl_read_filtering=0; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kb); +set global rocksdb_enable_ttl_read_filtering=1; + +disconnect con2; +disconnect con1; +connection default; + +DROP TABLE t1; +# Wait till we reached the initial number of concurrent sessions +--source include/wait_until_count_sessions.inc + +# Test that index_next_with_direction skips records properly +CREATE TABLE t1 ( + a int, + b int, + ts bigint(20) UNSIGNED NOT NULL, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1;ttl_col=ts;'; + +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 VALUES (1, 1, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (2, 2, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (3, 3, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (4, 4, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (5, 5, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (6, 6, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (7, 7, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (8, 8, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (9, 9, UNIX_TIMESTAMP()); +INSERT INTO t1 VALUES (10, 10, UNIX_TIMESTAMP()); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; +--echo # None are expired +SELECT a, b FROM t1 FORCE INDEX (kb); + +set global rocksdb_debug_ttl_rec_ts = -100; +UPDATE t1 SET ts=(UNIX_TIMESTAMP()+1) WHERE a IN (4, 7); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +--echo # 4 and 7 should be gone +SELECT a, b FROM t1 FORCE INDEX (kb); + +DROP TABLE t1; + +# Test range scans with various conditionals +CREATE TABLE t1 ( + c1 INT, + c2 INT, + name VARCHAR(25) NOT NULL, + PRIMARY KEY (c1, c2), + KEY kc2 (c2) +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1;'; + +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (1,1,'a'); +INSERT INTO t1 values (2,2,'b'); +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (3,3,'c'); +INSERT INTO t1 values (4,4,'d'); +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (5,5,'e'); +INSERT INTO t1 values (6,6,'f'); +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (7,7,'g'); +INSERT INTO t1 values (8,8,'h'); +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 > 5; +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2) WHERE c2 > 5; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE 3 < c1 AND c1 < 6; +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2) WHERE 3 < c2 AND c2 < 6; + +DROP TABLE t1; + +# Test range scans with varying expirations +CREATE TABLE t1 ( + a int, + b int, + PRIMARY KEY (a), + KEY kb (b) +) ENGINE=rocksdb +COMMENT='ttl_duration=1800;'; + +set global rocksdb_debug_ttl_rec_ts = 0; +INSERT INTO t1 values (1,1); +INSERT INTO t1 values (2,2); +INSERT INTO t1 values (7,7); +INSERT INTO t1 values (10,10); +INSERT INTO t1 values (11,11); +INSERT INTO t1 values (12,12); +set global rocksdb_debug_ttl_rec_ts = 450; +INSERT INTO t1 values (3,3); +INSERT INTO t1 values (4,4); +INSERT INTO t1 values (8,8); +INSERT INTO t1 values (16,16); +INSERT INTO t1 values (17,17); +INSERT INTO t1 values (18,18); +set global rocksdb_debug_ttl_rec_ts = 900; +INSERT INTO t1 values (5,5); +INSERT INTO t1 values (6,6); +INSERT INTO t1 values (9,9); +INSERT INTO t1 values (13,13); +INSERT INTO t1 values (14,14); +INSERT INTO t1 values (15,15); +set global rocksdb_debug_ttl_rec_ts = 0; + +--echo # Should see everything +SELECT * FROM t1; + +--echo # Should have no records from the first group +set global rocksdb_debug_ttl_read_filter_ts = -1800; +SELECT * FROM t1; +SELECT * FROM t1 FORCE INDEX (kb) WHERE a > 5 AND a < 15; + +--echo # Should only have records from the last group +set global rocksdb_debug_ttl_read_filter_ts = -1800 - 450; +SELECT * FROM t1; +SELECT * FROM t1 FORCE INDEX (kb) WHERE a < 10; + +--echo # Should be empty +set global rocksdb_debug_ttl_read_filter_ts = -1800 - 900; +SELECT * FROM t1; + +set global rocksdb_debug_ttl_read_filter_ts = 0; +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering_multiple_index.test b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering_multiple_index.test new file mode 100644 index 00000000000..4f9788ce33c --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_read_filtering_multiple_index.test @@ -0,0 +1,87 @@ +--source include/have_debug.inc +--source include/have_rocksdb.inc + +# Multiple indexes, trigger compaction on sk and check consistency +CREATE TABLE t1 ( + a int NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) COMMENT 'kb', + KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='kb'; + +# Results should be consistent +SELECT * FROM t1 FORCE INDEX (PRIMARY); +SELECT * FROM t1 FORCE INDEX (kb); +SELECT * FROM t1 FORCE INDEX (kc); + +DROP TABLE t1; + +# Trigger compaction on pk and check consistency +CREATE TABLE t1 ( + a int NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) COMMENT 'kb', + KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +# Results should be consistent +SELECT * FROM t1 FORCE INDEX (PRIMARY); +SELECT * FROM t1 FORCE INDEX (kb); +SELECT * FROM t1 FORCE INDEX (kc); + +DROP TABLE t1; + +# Trigger compaction on pk and sk and check consistency +CREATE TABLE t1 ( + a int NOT NULL, + b int NOT NULL, + c int NOT NULL, + PRIMARY KEY (a), + KEY kb (b) COMMENT 'kb', + KEY kc (c) COMMENT 'kc' +) ENGINE=ROCKSDB +COMMENT='ttl_duration=1'; + +set global rocksdb_debug_ttl_rec_ts = -100; +INSERT INTO t1 values (1, 1, 1); +INSERT INTO t1 values (2, 2, 2); +set global rocksdb_debug_ttl_rec_ts = 100; +INSERT INTO t1 values (3, 3, 3); +set global rocksdb_debug_ttl_rec_ts = 0; + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; +set global rocksdb_compact_cf='kb'; + +# Results should be consistent +SELECT * FROM t1 FORCE INDEX (PRIMARY); +SELECT * FROM t1 FORCE INDEX (kb); +SELECT * FROM t1 FORCE INDEX (kc); + +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions-master.opt b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions-master.opt new file mode 100644 index 00000000000..10a88c30361 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions-master.opt @@ -0,0 +1 @@ +--rocksdb_enable_ttl_read_filtering=0 diff --git a/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions.test b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions.test new file mode 100644 index 00000000000..c10c83f9f9d --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/t/ttl_secondary_with_partitions.test @@ -0,0 +1,300 @@ +--source include/have_debug.inc +--source include/have_rocksdb.inc +--source include/have_partition.inc + +# +# Create a table with multiple partitions, but in the comment don't specify +# that per-partition based column families (CF) should be created. Expect that +# default CF will be used and new one won't be created. +# +# In addition, specify TTL on one of the partitions. Insert a few things +# inside all the partitions, verify after compaction that the rows inside the +# partition with TTL has disappeared. +# +# Add secondary keys to all tables to test compatibility. +# +CREATE TABLE t1 ( + c1 INT, + c2 INT, + PRIMARY KEY (`c1`), + KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;" +PARTITION BY LIST(c1) ( + PARTITION custom_p0 VALUES IN (1, 4, 7), + PARTITION custom_p1 VALUES IN (2, 5, 8), + PARTITION custom_p2 VALUES IN (3, 6, 9) +); + +set global rocksdb_debug_ttl_rec_ts = -3600; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (4, 4); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (6, 6); +INSERT INTO t1 values (7, 7); +INSERT INTO t1 values (8, 8); +INSERT INTO t1 values (9, 9); +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='default'; + +# 1,4, and 7 should be gone +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); +DROP TABLE t1; + +# +# Create a table with multiple partitions and request for separate CF to be +# created per every partition. As a result we expect three different CF-s to be +# created. +# +# In addition, specify TTL on some of the partitions. Insert a few things +# inside all the partitions, verify after compaction that the rows inside the +# partition with TTL has disappeared. +# +CREATE TABLE t1 ( + c1 INT, + c2 INT, + name VARCHAR(25) NOT NULL, + PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz', + KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;custom_p1_ttl_duration=7;" +PARTITION BY LIST(c1) ( + PARTITION custom_p0 VALUES IN (1, 4, 7), + PARTITION custom_p1 VALUES IN (2, 5, 8), + PARTITION custom_p2 VALUES IN (3, 6, 9) +); + +set global rocksdb_debug_ttl_rec_ts = -1200; +INSERT INTO t1 values (1,1,'a'); +INSERT INTO t1 values (4,4,'aaaa'); +INSERT INTO t1 values (7,7,'aaaaaaa'); + +set global rocksdb_debug_ttl_rec_ts = 1200; +INSERT INTO t1 values (2,2,'aa'); +INSERT INTO t1 values (3,3,'aaa'); +INSERT INTO t1 values (5,5,'aaaaa'); +INSERT INTO t1 values (6,6,'aaaaaa'); +INSERT INTO t1 values (8,8,'aaaaaaaa'); +INSERT INTO t1 values (9,9,'aaaaaaaaa'); +set global rocksdb_debug_ttl_rec_ts = 0; + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'my_custom_cf'; +set @@global.rocksdb_compact_cf = 'default'; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +set global rocksdb_debug_ttl_snapshot_ts = 3600; +set @@global.rocksdb_compact_cf = 'foo'; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +# Now 2,5,8 should be removed (this verifies that TTL is only operating on the +# particular CF. +set @@global.rocksdb_compact_cf = 'my_custom_cf'; +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +DROP TABLE t1; + +# +# Create a table with CF-s/TTL per partition and verify that ALTER TABLE + DROP +# PRIMARY, ADD PRIMARY work for that scenario and data is persisted/filtered as +# expected. +# +CREATE TABLE t1 ( + c1 INT, + c2 INT, + name VARCHAR(25) NOT NULL, + event DATE, + PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;', + KEY kc2 (c2) +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;" +PARTITION BY LIST(c1) ( + PARTITION custom_p0 VALUES IN (1, 2, 3), + PARTITION custom_p1 VALUES IN (4, 5, 6), + PARTITION custom_p2 VALUES IN (7, 8, 9) +); + +INSERT INTO t1 VALUES (1, 1, "one", null); +INSERT INTO t1 VALUES (2, 2, "two", null); +INSERT INTO t1 VALUES (3, 3, "three", null); + +INSERT INTO t1 VALUES (4, 4, "four", null); +INSERT INTO t1 VALUES (5, 5, "five", null); +INSERT INTO t1 VALUES (6, 6, "six", null); + +INSERT INTO t1 VALUES (7, 7, "seven", null); +INSERT INTO t1 VALUES (8, 8, "eight", null); +INSERT INTO t1 VALUES (9, 9, "nine", null); + +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +# TTL should be reset after alter table +set global rocksdb_debug_ttl_rec_ts = 600; +ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'; +set global rocksdb_debug_ttl_rec_ts = 0; +SHOW CREATE TABLE t1; + +# ...so nothing should be gone here +set global rocksdb_debug_ttl_snapshot_ts = 100; +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'baz'; +# Filter out expired secondary keys too +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +set global rocksdb_debug_ttl_snapshot_ts = 1200; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'baz'; +# Filter out expired secondary keys too +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); + +DROP TABLE t1; + +# +# Create a table with non-partitioned TTL duration, with partitioned TTL +# columns +# +# In this case the same TTL duration will be applied across different TTL +# columns in different partitions, except for in p2 where we override the ttl +# duration. +# +CREATE TABLE t1 ( + c1 BIGINT, + c2 BIGINT UNSIGNED NOT NULL, + name VARCHAR(25) NOT NULL, + event DATE, + PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;', + KEY kc2 (`c2`) +) ENGINE=ROCKSDB +COMMENT="ttl_duration=1;custom_p1_ttl_duration=100;custom_p1_ttl_col=c2;custom_p2_ttl_duration=5000;" +PARTITION BY LIST(c1) ( + PARTITION custom_p0 VALUES IN (1, 2, 3), + PARTITION custom_p1 VALUES IN (4, 5, 6), + PARTITION custom_p2 VALUES IN (7, 8, 9) +); + +set global rocksdb_debug_ttl_rec_ts = -300; +INSERT INTO t1 VALUES (1, UNIX_TIMESTAMP(), "one", null); +INSERT INTO t1 VALUES (2, UNIX_TIMESTAMP(), "two", null); +INSERT INTO t1 VALUES (3, UNIX_TIMESTAMP(), "three", null); +set global rocksdb_debug_ttl_rec_ts = 0; + +INSERT INTO t1 VALUES (4, UNIX_TIMESTAMP(), "four", null); +INSERT INTO t1 VALUES (5, UNIX_TIMESTAMP(), "five", null); +INSERT INTO t1 VALUES (6, UNIX_TIMESTAMP(), "six", null); + +INSERT INTO t1 VALUES (7, UNIX_TIMESTAMP(), "seven", null); +INSERT INTO t1 VALUES (8, UNIX_TIMESTAMP(), "eight", null); +INSERT INTO t1 VALUES (9, UNIX_TIMESTAMP(), "nine", null); + +set global rocksdb_force_flush_memtable_now=1; +set @@global.rocksdb_compact_cf = 'foo'; +set @@global.rocksdb_compact_cf = 'baz'; +set @@global.rocksdb_compact_cf = 'bar'; +# Filter out expired secondary keys too +set @@global.rocksdb_compact_cf = 'default'; + +# here we expect only 1,2,3 to be gone, ttl implicit. +--sorted_result +SELECT c1 FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT c1 FROM t1 FORCE INDEX (kc2); + +# here we expect only 4,5,6 to be gone, ttl based on column c2. +set global rocksdb_debug_ttl_snapshot_ts = 600; +set @@global.rocksdb_compact_cf = 'bar'; +# Filter out expired secondary keys too +set @@global.rocksdb_compact_cf = 'default'; +set global rocksdb_debug_ttl_snapshot_ts = 0; +--sorted_result +SELECT c1 FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT c1 FROM t1 FORCE INDEX (kc2); + +# at this point only 7,8,9 should be left.. +DROP TABLE t1; + +# +# Add index inplace +# +CREATE TABLE t1 ( + c1 INT, + c2 INT, + PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;' +) ENGINE=ROCKSDB +COMMENT="custom_p0_ttl_duration=1;" +PARTITION BY LIST(c1) ( + PARTITION custom_p0 VALUES IN (1, 4, 7), + PARTITION custom_p1 VALUES IN (2, 5, 8), + PARTITION custom_p2 VALUES IN (3, 6, 9) +); + +set global rocksdb_debug_ttl_rec_ts = -3600; +INSERT INTO t1 values (1, 1); +INSERT INTO t1 values (4, 4); +INSERT INTO t1 values (7, 7); +set global rocksdb_debug_ttl_rec_ts = 0; +INSERT INTO t1 values (2, 2); +INSERT INTO t1 values (3, 3); +INSERT INTO t1 values (5, 5); +INSERT INTO t1 values (6, 6); +INSERT INTO t1 values (8, 8); +INSERT INTO t1 values (9, 9); + +# Nothing filtered out +--sorted_result +SELECT * FROM t1; + +CREATE INDEX kc2 on t1 (c2); + +set global rocksdb_force_flush_memtable_now=1; +set global rocksdb_compact_cf='foo'; +set global rocksdb_compact_cf='default'; + +# 1,4, and 7 should be gone +--sorted_result +SELECT * FROM t1 FORCE INDEX (PRIMARY); +--sorted_result +SELECT * FROM t1 FORCE INDEX (kc2); +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb/t/type_float.inc b/storage/rocksdb/mysql-test/rocksdb/t/type_float.inc index 8403b088f9d..ff58b73a91b 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/type_float.inc +++ b/storage/rocksdb/mysql-test/rocksdb/t/type_float.inc @@ -57,7 +57,18 @@ INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (-9999 --query_vertical SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1 --sorted_result ---query_vertical SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1 +query_vertical +SELECT + CONCAT('', MAX(f)), + CONCAT('', MAX(f0)), + CONCAT('', MAX(r1_1)), + CONCAT('', MAX(f23_0)), + CONCAT('', MAX(f20_3)), + CONCAT('', MAX(d)), + CONCAT('', MAX(d1_0)), + CONCAT('', MAX(d10_10)), + CONCAT('', MAX(d53)), + CONCAT('', MAX(d53_10)) FROM t1; # Invalid values diff --git a/storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads_writes.test b/storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads_writes.test index cc7c0502bc0..7a053c659b2 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads_writes.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads_writes.test @@ -31,7 +31,6 @@ select plugin_name, plugin_type from information_schema.plugins where plugin_nam --echo # --echo # Now, repeat the same with another set of invalid arguments --echo # - --let $_mysqld_option=--rocksdb_use_direct_io_for_flush_and_compaction=1 --rocksdb_allow_mmap_writes=1 --default-storage-engine=myisam --source include/restart_mysqld_with_option.inc diff --git a/storage/rocksdb/mysql-test/rocksdb/t/write_sync.test b/storage/rocksdb/mysql-test/rocksdb/t/write_sync.test index ca953afd65d..c20bb1fc89c 100644 --- a/storage/rocksdb/mysql-test/rocksdb/t/write_sync.test +++ b/storage/rocksdb/mysql-test/rocksdb/t/write_sync.test @@ -6,8 +6,8 @@ SET GLOBAL rocksdb_write_ignore_missing_column_families=true; create table aaa (id int primary key, i int) engine rocksdb; set @save_rocksdb_flush_log_at_trx_commit=@@global.rocksdb_flush_log_at_trx_commit; -SET GLOBAL rocksdb_flush_log_at_trx_commit=0; -sleep 30; +SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +--exec sleep 5 select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; insert aaa(id, i) values(1,1); select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; @@ -16,19 +16,22 @@ select variable_value-@a from information_schema.global_status where variable_na insert aaa(id, i) values(3,1); select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -SET GLOBAL rocksdb_flush_log_at_trx_commit=1; +SET GLOBAL rocksdb_flush_log_at_trx_commit=0; +--exec sleep 5 +select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; insert aaa(id, i) values(4,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -insert aaa(id, i) values(5,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; -insert aaa(id, i) values(6,1); -select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced'; + +let $status_var=rocksdb_wal_synced; +let $status_var_value=`select @a+1`; +source include/wait_for_status_var.inc; SET GLOBAL rocksdb_flush_log_at_trx_commit=2; -insert aaa(id, i) values(7,1); +--exec sleep 5 +select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced'; +insert aaa(id, i) values(5,1); let $status_var=rocksdb_wal_synced; -let $status_var_value=`select @a+4`; +let $status_var_value=`select @a+1`; source include/wait_for_status_var.inc; truncate table aaa; diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.inc b/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.inc new file mode 100644 index 00000000000..1f762d38c64 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.inc @@ -0,0 +1,10 @@ +if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.ENGINES WHERE engine = 'rocksdb' AND support IN ('YES', 'DEFAULT', 'ENABLED')`) +{ + --skip Test requires engine RocksDB. +} + +--disable_query_log +# Table statistics can vary depending on when the memtables are flushed, so +# flush them at the beginning of the test to ensure the test runs consistently. +set global rocksdb_force_flush_memtable_now = true; +--enable_query_log diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.opt b/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.opt new file mode 100644 index 00000000000..36d7dda1609 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/include/have_rocksdb.opt @@ -0,0 +1,12 @@ +--loose-enable-rocksdb +--loose-enable-rocksdb_global_info +--loose-enable-rocksdb_ddl +--loose-enable-rocksdb_cf_options +--loose-enable_rocksdb_perf_context +--loose-enable_rocksdb_perf_context_global +--loose-enable-rocksdb_index_file_map +--loose-enable-rocksdb_dbstats +--loose-enable-rocksdb_cfstats +--loose-enable-rocksdb_lock_info +--loose-enable-rocksdb_trx +--loose-enable-rocksdb_locks diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/my.cnf b/storage/rocksdb/mysql-test/rocksdb_rpl/my.cnf new file mode 100644 index 00000000000..2beaf514cee --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/my.cnf @@ -0,0 +1,17 @@ +!include include/default_my.cnf + +[server] +skip-innodb +default-storage-engine=rocksdb + + +sql-mode=NO_ENGINE_SUBSTITUTION +explicit-defaults-for-timestamp=1 +loose-rocksdb_lock_wait_timeout=1 +loose-rocksdb_strict_collation_check=0 + +loose-rocksdb-flush-log-at-trx-commit=0 + +# The following is to get rid of the harmless +# "Deadlock found when trying to get lock" errors, see MDEV-12285. +log-warnings=1 diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/r/multiclient_2pc.result b/storage/rocksdb/mysql-test/rocksdb_rpl/r/multiclient_2pc.result index 7a7400f17e1..493107ec071 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/r/multiclient_2pc.result +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/r/multiclient_2pc.result @@ -1,4 +1,5 @@ DROP TABLE IF EXISTS t1; +SET GLOBAL MAX_BINLOG_SIZE = 4096; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; create table t1 (a int primary key, b int, c varchar(255)) engine=rocksdb; 'con1' @@ -7,12 +8,10 @@ SET DEBUG_SYNC='rocksdb.prepared SIGNAL parked WAIT_FOR go'; insert into t1 values (1, 1, "iamtheogthealphaandomega");; 'con2' insert into t1 values (2, 1, "i_am_just_here_to_trigger_a_flush"); -SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; -SET GLOBAL ROCKSDB_WRITE_SYNC = OFF; +SET GLOBAL ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 0; SET GLOBAL SYNC_BINLOG = 0; SET DEBUG_SYNC='now WAIT_FOR parked'; -SET GLOBAL ROCKSDB_ENABLE_2PC = ON; -SET GLOBAL ROCKSDB_WRITE_SYNC = ON; +SET GLOBAL ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 2; SET GLOBAL SYNC_BINLOG = 1; insert into t1 values (1000000, 1, "i_am_just_here_to_trigger_a_flush"); SET DEBUG_SYNC='now SIGNAL go'; @@ -23,5 +22,5 @@ a b c 1 1 iamtheogthealphaandomega select count(*) from t1; count(*) -1000000 +4096 drop table t1; diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_ddl_high_priority.result b/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_ddl_high_priority.result new file mode 100644 index 00000000000..8a1fd1b94e0 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_ddl_high_priority.result @@ -0,0 +1,39 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +include/rpl_connect.inc [creating slave_block] +drop table if exists t1; +create table t1 (i int); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +insert into t1 values (1), (2), (3); +connection slave +select * from t1; +i +1 +2 +3 +connection slave_block +lock tables t1 read; +connection master; +create high_priority index idx1 on t1 (i); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL, + KEY `idx1` (`i`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +connection slave; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL, + KEY `idx1` (`i`) +) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 +drop table t1; +include/rpl_end.inc diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_rocksdb_2pc_crash_recover.result b/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_rocksdb_2pc_crash_recover.result index 59d1a231327..cf3fe03a305 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_rocksdb_2pc_crash_recover.result +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/r/rpl_rocksdb_2pc_crash_recover.result @@ -1,19 +1,19 @@ DROP TABLE IF EXISTS t1; create table t1 (a int primary key, msg varchar(255)) engine=rocksdb; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; -SET SESSION debug="d,crash_commit_after_prepare"; +SET SESSION debug_dbug="d,crash_commit_after_prepare"; insert into t1 values (1, 'dogz'); select * from t1; a msg SET GLOBAL ROCKSDB_ENABLE_2PC = ON; -SET SESSION debug="d,crash_commit_after_log"; +SET SESSION debug_dbug="d,crash_commit_after_log"; insert into t1 values (2, 'catz'), (3, 'men'); select * from t1; a msg 2 catz 3 men SET GLOBAL ROCKSDB_ENABLE_2PC = ON; -SET SESSION debug="d,crash_commit_after"; +SET SESSION debug_dbug="d,crash_commit_after"; insert into t1 values (4, 'cars'), (5, 'foo'); select * from t1; a msg @@ -22,7 +22,7 @@ a msg 4 cars 5 foo SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; -SET SESSION debug="d,crash_commit_after_log"; +SET SESSION debug_dbug="d,crash_commit_after_log"; insert into t1 values (6, 'shipz'), (7, 'tankz'); select * from t1; a msg @@ -31,7 +31,7 @@ a msg 4 cars 5 foo SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; -SET SESSION debug="d,crash_commit_after"; +SET SESSION debug_dbug="d,crash_commit_after"; insert into t1 values (8, 'space'), (9, 'time'); select * from t1; a msg diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/suite.opt b/storage/rocksdb/mysql-test/rocksdb_rpl/suite.opt new file mode 100644 index 00000000000..f5dc0ce891c --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/suite.opt @@ -0,0 +1,2 @@ +--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --default-storage-engine=rocksdb + diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/suite.pm b/storage/rocksdb/mysql-test/rocksdb_rpl/suite.pm new file mode 100644 index 00000000000..79c630f87f1 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/suite.pm @@ -0,0 +1,25 @@ +package My::Suite::Rocksdb; + +# +# Note: ../rocksdb_sys_vars/suite.pm file has a similar +# function. If you modify this file, consider modifying that one, too. +# +@ISA = qw(My::Suite); +use My::Find; +use File::Basename; +use strict; + +sub is_default { not $::opt_embedded_server } + +my $sst_dump= +::mtr_exe_maybe_exists( + "$::bindir/storage/rocksdb$::opt_vs_config/sst_dump", + "$::path_client_bindir/sst_dump"); +return "RocksDB is not compiled, no sst_dump" unless $sst_dump; +$ENV{MARIAROCKS_SST_DUMP}="$sst_dump"; + +# Temporarily disable testing under valgrind, due to MDEV-12439 +return "RocksDB tests disabled under valgrind" if ($::opt_valgrind); + +bless { }; + diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/disabled.def b/storage/rocksdb/mysql-test/rocksdb_rpl/t/disabled.def new file mode 100644 index 00000000000..07a2738eee5 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/disabled.def @@ -0,0 +1,19 @@ + +# rpl_rocksdb_2pc_crash_recover + +consistent_snapshot_mixed_engines : Didn't try with MariaDB, yet +multiclient_2pc : Didn't try with MariaDB, yet +rpl_crash_safe_wal_corrupt : Didn't try with MariaDB, yet +rpl_ddl_high_priority : Didn't try with MariaDB, yet +rpl_gtid_crash_safe : Didn't try with MariaDB, yet +rpl_gtid_crash_safe_wal_corrupt : Didn't try with MariaDB, yet +rpl_gtid_rocksdb_sys_header : Didn't try with MariaDB, yet +rpl_no_unique_check_on_lag : Didn't try with MariaDB, yet +rpl_no_unique_check_on_lag_mts : Didn't try with MariaDB, yet +rpl_rocksdb_snapshot : Didn't try with MariaDB, yet +rpl_rocksdb_snapshot_without_gtid : Didn't try with MariaDB, yet +rpl_rocksdb_stress_crash : Didn't try with MariaDB, yet +rpl_skip_trx_api_binlog_format : Didn't try with MariaDB, yet +singledelete_idempotent_recovery : Didn't try with MariaDB, yet +singledelete_idempotent_table : Didn't try with MariaDB, yet + diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/multiclient_2pc.test b/storage/rocksdb/mysql-test/rocksdb_rpl/t/multiclient_2pc.test index 0f68de04712..6143824eea6 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/t/multiclient_2pc.test +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/multiclient_2pc.test @@ -3,6 +3,11 @@ --source include/have_debug.inc --source include/have_debug_sync.inc --source include/big_test.inc +# The test involves a crash which does not seem to be handled well with +# mysql-test/lib/My/SafeProcess/my_safe_process under valgrind as it hangs +# forever. The test did not mean to verify the memory leaks so not much +# coverage should be missed by not running it under valgrind. +--source include/not_valgrind.inc --exec echo > $MYSQLTEST_VARDIR/log/mysqld.1.err @@ -10,16 +15,18 @@ DROP TABLE IF EXISTS t1; --enable_warnings +# Set it to the minimum so that we can make the binlog rotate with a few inserts +SET GLOBAL MAX_BINLOG_SIZE = 4096; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; create table t1 (a int primary key, b int, c varchar(255)) engine=rocksdb; connect (con1, localhost, root,,); connect (con2, localhost, root,,); -# On connection one we insert a row and pause after commit marker is written to WAL. -# Connection two then inserts many rows. After connection two -# completes connection one continues only to crash before commit but after -# binlog write. On crash recovery we see that connection one's value +# On connection one we insert a row and pause after prepare marker is written to +# WAL. Connection two then inserts many rows to rotate the binlog. After +# connection two completes, connection one continues only to crash before commit +# but after binlog write. On crash recovery we see that connection one's value # has been recovered and commited connection con1; --echo 'con1' @@ -35,14 +42,14 @@ insert into t1 values (2, 1, "i_am_just_here_to_trigger_a_flush"); # Disable 2PC and syncing for faster inserting of dummy rows # These rows only purpose is to rotate the binlog -SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; -SET GLOBAL ROCKSDB_WRITE_SYNC = OFF; +SET GLOBAL ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 0; SET GLOBAL SYNC_BINLOG = 0; SET DEBUG_SYNC='now WAIT_FOR parked'; --disable_query_log --let $pk= 3 -while ($pk < 1000000) { +# binlog size is 4096 bytes so with that many insertion it will definitely rotate +while ($pk < 4096) { eval insert into t1 values ($pk, 1, "foobardatagoesheresothatmorelogsrollwhichiswhatwewant"); --inc $pk } @@ -50,18 +57,16 @@ while ($pk < 1000000) { # re-enable 2PC an syncing then write to trigger a flush # before we trigger the crash to simulate full-durability -SET GLOBAL ROCKSDB_ENABLE_2PC = ON; -SET GLOBAL ROCKSDB_WRITE_SYNC = ON; +SET GLOBAL ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 2; SET GLOBAL SYNC_BINLOG = 1; insert into t1 values (1000000, 1, "i_am_just_here_to_trigger_a_flush"); SET DEBUG_SYNC='now SIGNAL go'; - +--source include/wait_until_disconnected.inc --enable_reconnect --source include/wait_until_connected_again.inc - ---exec sleep 60 +--disable_reconnect --exec python suite/rocksdb/t/check_log_for_xa.py $MYSQLTEST_VARDIR/log/mysqld.1.err commit,prepare,rollback diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_ddl_high_priority.test b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_ddl_high_priority.test new file mode 100644 index 00000000000..7cf4a4d32b5 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_ddl_high_priority.test @@ -0,0 +1,2 @@ +--source include/have_rocksdb.inc +--source include/rpl_ddl_high_priority.inc diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-master.opt b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-master.opt index 74c2de37100..f8f297c567c 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-master.opt +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-master.opt @@ -1 +1 @@ ---gtid_mode=ON --enforce_gtid_consistency --log_bin --log_slave_updates --rocksdb_flush_log_at_trx_commit=1 --rocksdb_write_disable_wal=OFF +--log_bin --log_slave_updates --rocksdb_flush_log_at_trx_commit=1 diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-slave.opt b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-slave.opt index c747adc94d5..7a3f630fda2 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-slave.opt +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-slave.opt @@ -1 +1 @@ ---gtid_mode=ON --enforce_gtid_consistency --log_bin --log_slave_updates +--log_bin --log_slave_updates diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover.test b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover.test index ea1fe3e34d6..3aa006c84be 100644 --- a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover.test +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover.test @@ -10,7 +10,7 @@ create table t1 (a int primary key, msg varchar(255)) engine=rocksdb; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -SET SESSION debug="d,crash_commit_after_prepare"; +SET SESSION debug_dbug="d,crash_commit_after_prepare"; --error 0,2013 insert into t1 values (1, 'dogz'); --enable_reconnect @@ -19,7 +19,7 @@ select * from t1; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -SET SESSION debug="d,crash_commit_after_log"; +SET SESSION debug_dbug="d,crash_commit_after_log"; --error 0,2013 insert into t1 values (2, 'catz'), (3, 'men'); --enable_reconnect @@ -28,7 +28,7 @@ select * from t1; SET GLOBAL ROCKSDB_ENABLE_2PC = ON; --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -SET SESSION debug="d,crash_commit_after"; +SET SESSION debug_dbug="d,crash_commit_after"; --error 0,2013 insert into t1 values (4, 'cars'), (5, 'foo'); --enable_reconnect @@ -37,7 +37,7 @@ select * from t1; SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -SET SESSION debug="d,crash_commit_after_log"; +SET SESSION debug_dbug="d,crash_commit_after_log"; --error 0,2013 insert into t1 values (6, 'shipz'), (7, 'tankz'); --enable_reconnect @@ -46,7 +46,7 @@ select * from t1; SET GLOBAL ROCKSDB_ENABLE_2PC = OFF; --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -SET SESSION debug="d,crash_commit_after"; +SET SESSION debug_dbug="d,crash_commit_after"; --error 0,2013 insert into t1 values (8, 'space'), (9, 'time'); --enable_reconnect diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/my.cnf b/storage/rocksdb/mysql-test/rocksdb_sys_vars/my.cnf index 1e9b0a9d3bb..20c2d025e0c 100644 --- a/storage/rocksdb/mysql-test/rocksdb_sys_vars/my.cnf +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/my.cnf @@ -8,3 +8,4 @@ default-storage-engine=rocksdb sql-mode=NO_ENGINE_SUBSTITUTION explicit-defaults-for-timestamp=1 loose-rocksdb_lock_wait_timeout=1 +loose-rocksdb_force_compute_memtable_stats_cachetime=0 diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_bulk_load_allow_unsorted_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_bulk_load_allow_unsorted_basic.result new file mode 100644 index 00000000000..a59ba561181 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_bulk_load_allow_unsorted_basic.result @@ -0,0 +1,100 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +SET @start_global_value = @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +SELECT @start_session_value; +@start_session_value +0 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 1" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 1; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 0" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 0; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to on" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = on; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +'# Setting to valid values in session scope#' +"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 1" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 1; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +1 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 0" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 0; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to on" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = on; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +1 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = DEFAULT; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 'aaa'" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED to 'bbb'" +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = 'bbb'; +Got one of the listed errors +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +SET @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = @start_global_value; +SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@global.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +SET @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED = @start_session_value; +SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED; +@@session.ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +0 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_concurrent_prepare_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_concurrent_prepare_basic.result new file mode 100644 index 00000000000..11d4f2363f6 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_concurrent_prepare_basic.result @@ -0,0 +1,14 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +SET @start_global_value = @@global.ROCKSDB_CONCURRENT_PREPARE; +SELECT @start_global_value; +@start_global_value +1 +"Trying to set variable @@global.ROCKSDB_CONCURRENT_PREPARE to 444. It should fail because it is readonly." +SET @@global.ROCKSDB_CONCURRENT_PREPARE = 444; +ERROR HY000: Variable 'rocksdb_concurrent_prepare' is a read only variable +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_deadlock_detect_depth_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_deadlock_detect_depth_basic.result new file mode 100644 index 00000000000..6f05268745d --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_deadlock_detect_depth_basic.result @@ -0,0 +1,79 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(100); +INSERT INTO valid_values VALUES(2); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'123\''); +SET @start_global_value = @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +SELECT @start_global_value; +@start_global_value +50 +SET @start_session_value = @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +SELECT @start_session_value; +@start_session_value +50 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH to 100" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = 100; +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +100 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = DEFAULT; +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +"Trying to set variable @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH to 2" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = 2; +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +2 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = DEFAULT; +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +'# Setting to valid values in session scope#' +"Trying to set variable @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH to 100" +SET @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH = 100; +SELECT @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@session.ROCKSDB_DEADLOCK_DETECT_DEPTH +100 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH = DEFAULT; +SELECT @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@session.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +"Trying to set variable @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH to 2" +SET @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH = 2; +SELECT @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@session.ROCKSDB_DEADLOCK_DETECT_DEPTH +2 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH = DEFAULT; +SELECT @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@session.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH to 'aaa'" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +"Trying to set variable @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH to '123'" +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = '123'; +Got one of the listed errors +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +SET @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH = @start_global_value; +SELECT @@global.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@global.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +SET @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH = @start_session_value; +SELECT @@session.ROCKSDB_DEADLOCK_DETECT_DEPTH; +@@session.ROCKSDB_DEADLOCK_DETECT_DEPTH +50 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_debug_ttl_ignore_pk_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_debug_ttl_ignore_pk_basic.result new file mode 100644 index 00000000000..1d8eb721c1b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_debug_ttl_ignore_pk_basic.result @@ -0,0 +1,64 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +SET @start_global_value = @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +SELECT @start_global_value; +@start_global_value +0 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK to 1" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = 1; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = DEFAULT; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +"Trying to set variable @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK to 0" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = 0; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = DEFAULT; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +"Trying to set variable @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK to on" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = on; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = DEFAULT; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +"Trying to set variable @@session.ROCKSDB_DEBUG_TTL_IGNORE_PK to 444. It should fail because it is not session." +SET @@session.ROCKSDB_DEBUG_TTL_IGNORE_PK = 444; +ERROR HY000: Variable 'rocksdb_debug_ttl_ignore_pk' is a GLOBAL variable and should be set with SET GLOBAL +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK to 'aaa'" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +"Trying to set variable @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK to 'bbb'" +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = 'bbb'; +Got one of the listed errors +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +SET @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK = @start_global_value; +SELECT @@global.ROCKSDB_DEBUG_TTL_IGNORE_PK; +@@global.ROCKSDB_DEBUG_TTL_IGNORE_PK +0 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_memtable_on_analyze_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_memtable_on_analyze_basic.result index 165f3811f84..905feec9b1a 100644 --- a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_memtable_on_analyze_basic.result +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_memtable_on_analyze_basic.result @@ -48,11 +48,11 @@ a b 3 3 SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB 10 Fixed # # 69 0 0 0 4 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB 10 Fixed # # # 0 0 0 4 NULL NULL NULL latin1_swedish_ci NULL ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK SHOW TABLE STATUS LIKE 't1'; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment -t1 ROCKSDB 10 Fixed # # 24 0 0 0 4 NULL NULL NULL latin1_swedish_ci NULL +t1 ROCKSDB 10 Fixed # # # 0 0 0 4 NULL NULL NULL latin1_swedish_ci NULL DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_basic.result index a1c4d3caaa4..90fd829e7c3 100644 --- a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_basic.result +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_basic.result @@ -1,7 +1,7 @@ DROP TABLE IF EXISTS t; CREATE TABLE t (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb; INSERT INTO t (a,b) VALUES (1,'bar'),(2,'foo'); -SET @ORIG_PAUSE_BACKGROUND_WORK = @@rocksdb_force_compute_memtable_stats; +SET @ORIG_FORCE_COMPUTE_MEMTABLE_STATS = @@rocksdb_force_compute_memtable_stats; set global rocksdb_force_flush_memtable_now = true; INSERT INTO t (a,b) VALUES (3,'dead'),(4,'beef'),(5,'a'),(6,'bbb'),(7,'c'),(8,'d'); set global rocksdb_force_compute_memtable_stats=0; @@ -12,4 +12,4 @@ select case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' e case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' else 'false' end true DROP TABLE t; -set global rocksdb_force_compute_memtable_stats = @ORIG_PAUSE_BACKGROUND_WORK; +set global rocksdb_force_compute_memtable_stats = @ORIG_FORCE_COMPUTE_MEMTABLE_STATS; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_cachetime_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_cachetime_basic.result new file mode 100644 index 00000000000..50e06b5bacb --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_cachetime_basic.result @@ -0,0 +1,68 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); +INSERT INTO valid_values VALUES(1024 * 1024 * 1024); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +SET @start_global_value = @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +SELECT @start_global_value; +@start_global_value +0 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 0" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 0; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +0 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = DEFAULT; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +60000000 +"Trying to set variable @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 1" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 1; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = DEFAULT; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +60000000 +"Trying to set variable @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 1024" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 1024; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +1024 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = DEFAULT; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +60000000 +"Trying to set variable @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 1073741824" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 1073741824; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +1073741824 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = DEFAULT; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +60000000 +"Trying to set variable @@session.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 444. It should fail because it is not session." +SET @@session.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 444; +ERROR HY000: Variable 'rocksdb_force_compute_memtable_stats_cachetime' is a GLOBAL variable and should be set with SET GLOBAL +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME to 'aaa'" +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +60000000 +SET @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME = @start_global_value; +SELECT @@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME; +@@global.ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +0 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_large_prefix_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_large_prefix_basic.result new file mode 100644 index 00000000000..89697683d1c --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_large_prefix_basic.result @@ -0,0 +1,64 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +SET @start_global_value = @@global.ROCKSDB_LARGE_PREFIX; +SELECT @start_global_value; +@start_global_value +0 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_LARGE_PREFIX to 1" +SET @@global.ROCKSDB_LARGE_PREFIX = 1; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_LARGE_PREFIX = DEFAULT; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +"Trying to set variable @@global.ROCKSDB_LARGE_PREFIX to 0" +SET @@global.ROCKSDB_LARGE_PREFIX = 0; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_LARGE_PREFIX = DEFAULT; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +"Trying to set variable @@global.ROCKSDB_LARGE_PREFIX to on" +SET @@global.ROCKSDB_LARGE_PREFIX = on; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_LARGE_PREFIX = DEFAULT; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +"Trying to set variable @@session.ROCKSDB_LARGE_PREFIX to 444. It should fail because it is not session." +SET @@session.ROCKSDB_LARGE_PREFIX = 444; +ERROR HY000: Variable 'rocksdb_large_prefix' is a GLOBAL variable and should be set with SET GLOBAL +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_LARGE_PREFIX to 'aaa'" +SET @@global.ROCKSDB_LARGE_PREFIX = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +"Trying to set variable @@global.ROCKSDB_LARGE_PREFIX to 'bbb'" +SET @@global.ROCKSDB_LARGE_PREFIX = 'bbb'; +Got one of the listed errors +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +SET @@global.ROCKSDB_LARGE_PREFIX = @start_global_value; +SELECT @@global.ROCKSDB_LARGE_PREFIX; +@@global.ROCKSDB_LARGE_PREFIX +0 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_manual_wal_flush_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_manual_wal_flush_basic.result new file mode 100644 index 00000000000..9b176263a23 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_manual_wal_flush_basic.result @@ -0,0 +1,14 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +SET @start_global_value = @@global.ROCKSDB_MANUAL_WAL_FLUSH; +SELECT @start_global_value; +@start_global_value +1 +"Trying to set variable @@global.ROCKSDB_MANUAL_WAL_FLUSH to 444. It should fail because it is readonly." +SET @@global.ROCKSDB_MANUAL_WAL_FLUSH = 444; +ERROR HY000: Variable 'rocksdb_manual_wal_flush' is a read only variable +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_max_latest_deadlocks_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_max_latest_deadlocks_basic.result new file mode 100644 index 00000000000..74dbdb4288c --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_max_latest_deadlocks_basic.result @@ -0,0 +1,53 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(100); +INSERT INTO valid_values VALUES(1); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'123\''); +SET @start_global_value = @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +SELECT @start_global_value; +@start_global_value +5 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_MAX_LATEST_DEADLOCKS to 100" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = 100; +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +100 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = DEFAULT; +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +5 +"Trying to set variable @@global.ROCKSDB_MAX_LATEST_DEADLOCKS to 1" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = 1; +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = DEFAULT; +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +5 +"Trying to set variable @@session.ROCKSDB_MAX_LATEST_DEADLOCKS to 444. It should fail because it is not session." +SET @@session.ROCKSDB_MAX_LATEST_DEADLOCKS = 444; +ERROR HY000: Variable 'rocksdb_max_latest_deadlocks' is a GLOBAL variable and should be set with SET GLOBAL +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_MAX_LATEST_DEADLOCKS to 'aaa'" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +5 +"Trying to set variable @@global.ROCKSDB_MAX_LATEST_DEADLOCKS to '123'" +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = '123'; +Got one of the listed errors +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +5 +SET @@global.ROCKSDB_MAX_LATEST_DEADLOCKS = @start_global_value; +SELECT @@global.ROCKSDB_MAX_LATEST_DEADLOCKS; +@@global.ROCKSDB_MAX_LATEST_DEADLOCKS +5 +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_merge_tmp_file_removal_delay_ms_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_merge_tmp_file_removal_delay_ms_basic.result new file mode 100644 index 00000000000..277de716d70 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_merge_tmp_file_removal_delay_ms_basic.result @@ -0,0 +1,93 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +INSERT INTO invalid_values VALUES('on'); +SET @start_global_value = @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +SELECT @start_session_value; +@start_session_value +0 +'# Setting to valid values in global scope#' +"Trying to set variable @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 1" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 1; +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +1 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = DEFAULT; +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Trying to set variable @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 0" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 0; +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Setting the global scope variable back to default" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = DEFAULT; +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +'# Setting to valid values in session scope#' +"Trying to set variable @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 1" +SET @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 1; +SELECT @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +1 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = DEFAULT; +SELECT @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Trying to set variable @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 0" +SET @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 0; +SELECT @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Setting the session scope variable back to default" +SET @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = DEFAULT; +SELECT @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +'# Testing with invalid values in global scope #' +"Trying to set variable @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 'aaa'" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 'aaa'; +Got one of the listed errors +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Trying to set variable @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to 'bbb'" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = 'bbb'; +Got one of the listed errors +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +"Trying to set variable @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS to on" +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = on; +Got one of the listed errors +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +SET @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = @start_global_value; +SELECT @@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@global.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +SET @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS = @start_session_value; +SELECT @@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS; +@@session.ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +0 +DROP TABLE valid_values; +DROP TABLE invalid_values; +set session rocksdb_merge_buf_size=250; +set session rocksdb_merge_combine_read_size=1000; +set session rocksdb_merge_tmp_file_removal_delay_ms=1000; +CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB; +ALTER TABLE t1 ADD INDEX kj(j), ALGORITHM=INPLACE; +include/assert.inc [Alter should have taken at least 10 seconds] +DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_sim_cache_size_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_sim_cache_size_basic.result new file mode 100644 index 00000000000..ef4c619457b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_sim_cache_size_basic.result @@ -0,0 +1,7 @@ +SET @start_global_value = @@global.ROCKSDB_SIM_CACHE_SIZE; +SELECT @start_global_value; +@start_global_value +0 +"Trying to set variable @@global.ROCKSDB_SIM_CACHE_SIZE to 444. It should fail because it is readonly." +SET @@global.ROCKSDB_SIM_CACHE_SIZE = 444; +ERROR HY000: Variable 'rocksdb_sim_cache_size' is a read only variable diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_use_clock_cache_basic.result b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_use_clock_cache_basic.result new file mode 100644 index 00000000000..f23d1889027 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_use_clock_cache_basic.result @@ -0,0 +1,19 @@ +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); +INSERT INTO valid_values VALUES('off'); +INSERT INTO valid_values VALUES('true'); +INSERT INTO valid_values VALUES('false'); +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +SET @start_global_value = @@global.ROCKSDB_USE_CLOCK_CACHE; +SELECT @start_global_value; +@start_global_value +0 +"Trying to set variable @@global.ROCKSDB_USE_CLOCK_CACHE to 444. It should fail because it is readonly." +SET @@global.ROCKSDB_USE_CLOCK_CACHE = 444; +ERROR HY000: Variable 'rocksdb_use_clock_cache' is a read only variable +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_bulk_load_allow_unsorted_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_bulk_load_allow_unsorted_basic.test new file mode 100644 index 00000000000..e57396e0fdc --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_bulk_load_allow_unsorted_basic.test @@ -0,0 +1,18 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); + +--let $sys_var=ROCKSDB_BULK_LOAD_ALLOW_UNSORTED +--let $read_only=0 +--let $session=1 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_concurrent_prepare_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_concurrent_prepare_basic.test new file mode 100644 index 00000000000..451653fe769 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_concurrent_prepare_basic.test @@ -0,0 +1,16 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); + +--let $sys_var=ROCKSDB_CONCURRENT_PREPARE +--let $read_only=1 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_deadlock_detect_depth_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_deadlock_detect_depth_basic.test new file mode 100644 index 00000000000..cab72a11e18 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_deadlock_detect_depth_basic.test @@ -0,0 +1,17 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(100); +INSERT INTO valid_values VALUES(2); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'123\''); + +--let $sys_var=ROCKSDB_DEADLOCK_DETECT_DEPTH +--let $read_only=0 +--let $session=1 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_debug_ttl_ignore_pk_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_debug_ttl_ignore_pk_basic.test new file mode 100644 index 00000000000..8ad071e131b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_debug_ttl_ignore_pk_basic.test @@ -0,0 +1,18 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); + +--let $sys_var=ROCKSDB_DEBUG_TTL_IGNORE_PK +--let $read_only=0 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_memtable_on_analyze_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_memtable_on_analyze_basic.test index c7e04f89498..574375cd1ea 100644 --- a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_memtable_on_analyze_basic.test +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_memtable_on_analyze_basic.test @@ -37,10 +37,10 @@ INSERT INTO t1 (b) VALUES (3); --sorted_result SELECT * FROM t1; ---replace_column 5 # 6 # +--replace_column 5 # 6 # 7 # SHOW TABLE STATUS LIKE 't1'; ANALYZE TABLE t1; ---replace_column 5 # 6 # +--replace_column 5 # 6 # 7 # SHOW TABLE STATUS LIKE 't1'; DROP TABLE t1; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_basic.test index 3a0d7f63938..318ae1ee598 100644 --- a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_basic.test +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_basic.test @@ -6,7 +6,7 @@ DROP TABLE IF EXISTS t; CREATE TABLE t (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb; INSERT INTO t (a,b) VALUES (1,'bar'),(2,'foo'); -SET @ORIG_PAUSE_BACKGROUND_WORK = @@rocksdb_force_compute_memtable_stats; +SET @ORIG_FORCE_COMPUTE_MEMTABLE_STATS = @@rocksdb_force_compute_memtable_stats; set global rocksdb_force_flush_memtable_now = true; INSERT INTO t (a,b) VALUES (3,'dead'),(4,'beef'),(5,'a'),(6,'bbb'),(7,'c'),(8,'d'); @@ -20,4 +20,4 @@ SELECT TABLE_ROWS INTO @ROWS_INCLUDE_MEMTABLE FROM information_schema.TABLES WHE select case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' else 'false' end; DROP TABLE t; -set global rocksdb_force_compute_memtable_stats = @ORIG_PAUSE_BACKGROUND_WORK; +set global rocksdb_force_compute_memtable_stats = @ORIG_FORCE_COMPUTE_MEMTABLE_STATS; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_cachetime_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_cachetime_basic.test new file mode 100644 index 00000000000..20180ec16a9 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_cachetime_basic.test @@ -0,0 +1,18 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); +INSERT INTO valid_values VALUES(1024 * 1024 * 1024); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); + +--let $sys_var=ROCKSDB_FORCE_COMPUTE_MEMTABLE_STATS_CACHETIME +--let $read_only=0 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_large_prefix_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_large_prefix_basic.test new file mode 100644 index 00000000000..5ed3c74131e --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_large_prefix_basic.test @@ -0,0 +1,18 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); + +--let $sys_var=ROCKSDB_LARGE_PREFIX +--let $read_only=0 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_manual_wal_flush_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_manual_wal_flush_basic.test new file mode 100644 index 00000000000..3e01722d5ea --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_manual_wal_flush_basic.test @@ -0,0 +1,16 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(1024); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); + +--let $sys_var=ROCKSDB_MANUAL_WAL_FLUSH +--let $read_only=1 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_max_latest_deadlocks_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_max_latest_deadlocks_basic.test new file mode 100644 index 00000000000..9917ec31d9b --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_max_latest_deadlocks_basic.test @@ -0,0 +1,17 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(100); +INSERT INTO valid_values VALUES(1); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'123\''); + +--let $sys_var=ROCKSDB_MAX_LATEST_DEADLOCKS +--let $read_only=0 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_merge_tmp_file_removal_delay_ms_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_merge_tmp_file_removal_delay_ms_basic.test new file mode 100644 index 00000000000..03cc0b11d8c --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_merge_tmp_file_removal_delay_ms_basic.test @@ -0,0 +1,49 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); +INSERT INTO invalid_values VALUES('on'); + +--let $sys_var=ROCKSDB_MERGE_TMP_FILE_REMOVAL_DELAY_MS +--let $read_only=0 +--let $session=1 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; + +set session rocksdb_merge_buf_size=250; +set session rocksdb_merge_combine_read_size=1000; +set session rocksdb_merge_tmp_file_removal_delay_ms=1000; + +CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB; + +--disable_query_log +let $max = 100; +let $i = 1; +while ($i <= $max) { + let $insert = INSERT INTO t1 VALUES ($i, FLOOR(RAND() * 100)); + inc $i; + eval $insert; +} +--enable_query_log + +let $start= `SELECT UNIX_TIMESTAMP()`; +# this should take a lot longer than normal because each deleted merge file +# will sleep for 1 secs. There should be about 13 buffers. +# So it should take at least 13 secs +ALTER TABLE t1 ADD INDEX kj(j), ALGORITHM=INPLACE; +let $stop_exec= `SELECT UNIX_TIMESTAMP()`; + +let $time_diff= `SELECT ($stop_exec - $start)`; +let $assert_text= Alter should have taken at least 10 seconds; +let $assert_cond= $time_diff >= 10; +source include/assert.inc; + +DROP TABLE t1; + diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_sim_cache_size_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_sim_cache_size_basic.test new file mode 100644 index 00000000000..a82d50e1d03 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_sim_cache_size_basic.test @@ -0,0 +1,6 @@ +--source include/have_rocksdb.inc + +--let $sys_var=ROCKSDB_SIM_CACHE_SIZE +--let $read_only=1 +--let $session=0 +--source ../include/rocksdb_sys_var.inc diff --git a/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_use_clock_cache_basic.test b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_use_clock_cache_basic.test new file mode 100644 index 00000000000..d3e7b652039 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_use_clock_cache_basic.test @@ -0,0 +1,21 @@ +--source include/have_rocksdb.inc + +CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO valid_values VALUES(1); +INSERT INTO valid_values VALUES(0); +INSERT INTO valid_values VALUES('on'); +INSERT INTO valid_values VALUES('off'); +INSERT INTO valid_values VALUES('true'); +INSERT INTO valid_values VALUES('false'); + +CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; +INSERT INTO invalid_values VALUES('\'aaa\''); +INSERT INTO invalid_values VALUES('\'bbb\''); + +--let $sys_var=ROCKSDB_USE_CLOCK_CACHE +--let $read_only=1 +--let $session=0 +--source ../include/rocksdb_sys_var.inc + +DROP TABLE valid_values; +DROP TABLE invalid_values; diff --git a/storage/rocksdb/mysql-test/storage_engine/parts/suite.opt b/storage/rocksdb/mysql-test/storage_engine/parts/suite.opt index 713e46dcddb..1e464761753 100644 --- a/storage/rocksdb/mysql-test/storage_engine/parts/suite.opt +++ b/storage/rocksdb/mysql-test/storage_engine/parts/suite.opt @@ -1 +1 @@ ---ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW +--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW --loose-rocksdb_flush_log_at_trx_commit=0 diff --git a/storage/rocksdb/mysql-test/storage_engine/suite.opt b/storage/rocksdb/mysql-test/storage_engine/suite.opt index 41beb675cc1..8eb0e87db98 100644 --- a/storage/rocksdb/mysql-test/storage_engine/suite.opt +++ b/storage/rocksdb/mysql-test/storage_engine/suite.opt @@ -1 +1 @@ ---ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW --collation-server=latin1_bin +--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW --collation-server=latin1_bin --loose-rocksdb_flush_log_at_trx_commit=0 diff --git a/storage/rocksdb/mysql-test/storage_engine/trx/suite.opt b/storage/rocksdb/mysql-test/storage_engine/trx/suite.opt index 713e46dcddb..1e464761753 100644 --- a/storage/rocksdb/mysql-test/storage_engine/trx/suite.opt +++ b/storage/rocksdb/mysql-test/storage_engine/trx/suite.opt @@ -1 +1 @@ ---ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW +--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW --loose-rocksdb_flush_log_at_trx_commit=0 diff --git a/storage/rocksdb/rdb_buff.h b/storage/rocksdb/rdb_buff.h index 87cfbb54e61..c9647707232 100644 --- a/storage/rocksdb/rdb_buff.h +++ b/storage/rocksdb/rdb_buff.h @@ -379,6 +379,22 @@ public: DBUG_ASSERT(pos < get_current_pos() && (pos + 1) < get_current_pos()); rdb_netbuf_store_uint16(m_data.data() + pos, new_val); } + + void truncate(const size_t &pos) { + DBUG_ASSERT(pos < m_data.size()); + m_data.resize(pos); + } + + void allocate(const size_t &len, const uchar &val = 0) { + DBUG_ASSERT(len > 0); + m_data.resize(m_data.size() + len, val); + } + + /* + An awful hack to deallocate the buffer without relying on the deconstructor. + This is needed to suppress valgrind errors in rocksdb.partition + */ + void free() { std::vector<uchar>().swap(m_data); } }; /* diff --git a/storage/rocksdb/rdb_compact_filter.h b/storage/rocksdb/rdb_compact_filter.h index ea08ac458a6..9bc7ece6e7a 100644 --- a/storage/rocksdb/rdb_compact_filter.h +++ b/storage/rocksdb/rdb_compact_filter.h @@ -139,6 +139,14 @@ public: gl_index_id.cf_id, gl_index_id.index_id); } +#ifndef NDEBUG + if (rdb_dbug_set_ttl_ignore_pk() && + index_info.m_index_type == Rdb_key_def::INDEX_TYPE_PRIMARY) { + *ttl_duration = 0; + return; + } +#endif + *ttl_duration = index_info.m_ttl_duration; if (Rdb_key_def::has_index_flag(index_info.m_index_flags, Rdb_key_def::TTL_FLAG)) { diff --git a/storage/rocksdb/rdb_datadic.cc b/storage/rocksdb/rdb_datadic.cc index 618771c5410..22d117f74ad 100644 --- a/storage/rocksdb/rdb_datadic.cc +++ b/storage/rocksdb/rdb_datadic.cc @@ -36,9 +36,12 @@ #include <vector> /* MySQL header files */ +#include "./field.h" #include "./key.h" #include "./m_ctype.h" #include "./my_bit.h" +#include "./my_bitmap.h" +#include "./sql_table.h" /* MyRocks header files */ #include "./ha_rocksdb_proto.h" @@ -53,20 +56,16 @@ void get_mem_comparable_space(const CHARSET_INFO *cs, size_t *mb_len); /* - MariaDB's stand-in for Field::check_field_name_match that facebook/mysql-5.6 - uses. - - They have that function because of their JSON support, where "a.b.c" is a - sub-field of "a.b". + MariaDB's replacement for FB/MySQL Field::check_field_name_match : */ - -static bool check_field_name_match(Field *field, const char *name) +inline bool field_check_field_name_match(Field *field, const char *name) { return (0 == my_strcasecmp(system_charset_info, field->field_name.str, name)); } + /* Rdb_key_def class implementation */ @@ -92,6 +91,14 @@ Rdb_key_def::Rdb_key_def(uint indexnr_arg, uint keyno_arg, { mysql_mutex_init(0, &m_mutex, MY_MUTEX_INIT_FAST); rdb_netbuf_store_index(m_index_number_storage_form, m_index_number); + m_total_index_flags_length = + calculate_index_flag_offset(m_index_flags_bitmap, MAX_FLAG); + DBUG_ASSERT_IMP(m_index_type == INDEX_TYPE_SECONDARY && + m_kv_format_version <= SECONDARY_FORMAT_VERSION_UPDATE2, + m_total_index_flags_length == 0); + DBUG_ASSERT_IMP(m_index_type == INDEX_TYPE_PRIMARY && + m_kv_format_version <= PRIMARY_FORMAT_VERSION_UPDATE2, + m_total_index_flags_length == 0); DBUG_ASSERT(m_cf_handle != nullptr); } @@ -109,6 +116,14 @@ Rdb_key_def::Rdb_key_def(const Rdb_key_def &k) m_maxlength(k.m_maxlength) { mysql_mutex_init(0, &m_mutex, MY_MUTEX_INIT_FAST); rdb_netbuf_store_index(m_index_number_storage_form, m_index_number); + m_total_index_flags_length = + calculate_index_flag_offset(m_index_flags_bitmap, MAX_FLAG); + DBUG_ASSERT_IMP(m_index_type == INDEX_TYPE_SECONDARY && + m_kv_format_version <= SECONDARY_FORMAT_VERSION_UPDATE2, + m_total_index_flags_length == 0); + DBUG_ASSERT_IMP(m_index_type == INDEX_TYPE_PRIMARY && + m_kv_format_version <= PRIMARY_FORMAT_VERSION_UPDATE2, + m_total_index_flags_length == 0); if (k.m_pack_info) { const size_t size = sizeof(Rdb_field_packing) * k.m_key_parts; m_pack_info = @@ -285,7 +300,7 @@ void Rdb_key_def::setup(const TABLE *const tbl, the offset of the TTL key part here. */ if (!m_ttl_column.empty() && - check_field_name_match(field, m_ttl_column.c_str())) { + field_check_field_name_match(field, m_ttl_column.c_str())) { DBUG_ASSERT(field->real_type() == MYSQL_TYPE_LONGLONG); DBUG_ASSERT(field->key_type() == HA_KEYTYPE_ULONGLONG); DBUG_ASSERT(!field->real_maybe_null()); @@ -405,7 +420,7 @@ uint Rdb_key_def::extract_ttl_col(const TABLE *const table_arg, if (skip_checks) { for (uint i = 0; i < table_arg->s->fields; i++) { Field *const field = table_arg->field[i]; - if (check_field_name_match(field, ttl_col_str.c_str())) { + if (field_check_field_name_match(field, ttl_col_str.c_str())) { *ttl_column = ttl_col_str; *ttl_field_offset = i; } @@ -418,7 +433,7 @@ uint Rdb_key_def::extract_ttl_col(const TABLE *const table_arg, bool found = false; for (uint i = 0; i < table_arg->s->fields; i++) { Field *const field = table_arg->field[i]; - if (check_field_name_match(field, ttl_col_str.c_str()) && + if (field_check_field_name_match(field, ttl_col_str.c_str()) && field->real_type() == MYSQL_TYPE_LONGLONG && field->key_type() == HA_KEYTYPE_ULONGLONG && !field->real_maybe_null()) { @@ -774,11 +789,14 @@ uint Rdb_key_def::pack_index_tuple(TABLE *const tbl, uchar *const pack_buffer, */ bool Rdb_key_def::unpack_info_has_checksum(const rocksdb::Slice &unpack_info) { - const uchar *ptr = (const uchar *)unpack_info.data(); size_t size = unpack_info.size(); + if (size == 0) { + return false; + } + const uchar *ptr = (const uchar *)unpack_info.data(); // Skip unpack info if present. - if (size >= RDB_UNPACK_HEADER_SIZE && ptr[0] == RDB_UNPACK_DATA_TAG) { + if (is_unpack_data_tag(ptr[0]) && size >= get_unpack_header_size(ptr[0])) { const uint16 skip_len = rdb_netbuf_to_uint16(ptr + 1); SHIP_ASSERT(size >= skip_len); @@ -808,6 +826,120 @@ int Rdb_key_def::successor(uchar *const packed_tuple, const uint &len) { return changed; } +static const std::map<char, size_t> UNPACK_HEADER_SIZES = { + {RDB_UNPACK_DATA_TAG, RDB_UNPACK_HEADER_SIZE}, + {RDB_UNPACK_COVERED_DATA_TAG, RDB_UNPACK_COVERED_HEADER_SIZE}}; + +/* + @return The length in bytes of the header specified by the given tag +*/ +size_t Rdb_key_def::get_unpack_header_size(char tag) { + DBUG_ASSERT(is_unpack_data_tag(tag)); + return UNPACK_HEADER_SIZES.at(tag); +} + +/* + Get a bitmap indicating which varchar columns must be covered for this + lookup to be covered. If the bitmap is a subset of the covered bitmap, then + the lookup is covered. If it can already be determined that the lookup is + not covered, map->bitmap will be set to null. + */ +void Rdb_key_def::get_lookup_bitmap(const TABLE *table, MY_BITMAP *map) const { + DBUG_ASSERT(map->bitmap == nullptr); + bitmap_init(map, nullptr, MAX_REF_PARTS, false); + uint curr_bitmap_pos = 0; + + // Indicates which columns in the read set might be covered. + MY_BITMAP maybe_covered_bitmap; + bitmap_init(&maybe_covered_bitmap, nullptr, table->read_set->n_bits, false); + + for (uint i = 0; i < m_key_parts; i++) { + if (table_has_hidden_pk(table) && i + 1 == m_key_parts) { + continue; + } + + Field *const field = m_pack_info[i].get_field_in_table(table); + + // Columns which are always covered are not stored in the covered bitmap so + // we can ignore them here too. + if (m_pack_info[i].m_covered && + bitmap_is_set(table->read_set, field->field_index)) { + bitmap_set_bit(&maybe_covered_bitmap, field->field_index); + continue; + } + + switch (field->real_type()) { + // This type may be covered depending on the record. If it was requested, + // we require the covered bitmap to have this bit set. + case MYSQL_TYPE_VARCHAR: + if (curr_bitmap_pos < MAX_REF_PARTS) { + if (bitmap_is_set(table->read_set, field->field_index)) { + bitmap_set_bit(map, curr_bitmap_pos); + bitmap_set_bit(&maybe_covered_bitmap, field->field_index); + } + curr_bitmap_pos++; + } else { + bitmap_free(&maybe_covered_bitmap); + bitmap_free(map); + return; + } + break; + // This column is a type which is never covered. If it was requested, we + // know this lookup will never be covered. + default: + if (bitmap_is_set(table->read_set, field->field_index)) { + bitmap_free(&maybe_covered_bitmap); + bitmap_free(map); + return; + } + break; + } + } + + // If there are columns which are not covered in the read set, the lookup + // can't be covered. + if (!bitmap_cmp(table->read_set, &maybe_covered_bitmap)) { + bitmap_free(map); + } + bitmap_free(&maybe_covered_bitmap); +} + +/* + Return true if for this secondary index + - All of the requested columns are in the index + - All values for columns that are prefix-only indexes are shorter or equal + in length to the prefix + */ +bool Rdb_key_def::covers_lookup(TABLE *const table, + const rocksdb::Slice *const unpack_info, + const MY_BITMAP *const lookup_bitmap) const { + DBUG_ASSERT(lookup_bitmap != nullptr); + if (!use_covered_bitmap_format() || lookup_bitmap->bitmap == nullptr) { + return false; + } + + Rdb_string_reader unp_reader = Rdb_string_reader::read_or_empty(unpack_info); + + // Check if this unpack_info has a covered_bitmap + const char *unpack_header = unp_reader.get_current_ptr(); + const bool has_covered_unpack_info = + unp_reader.remaining_bytes() && + unpack_header[0] == RDB_UNPACK_COVERED_DATA_TAG; + if (!has_covered_unpack_info || + !unp_reader.read(RDB_UNPACK_COVERED_HEADER_SIZE)) { + return false; + } + + MY_BITMAP covered_bitmap; + my_bitmap_map covered_bits; + bitmap_init(&covered_bitmap, &covered_bits, MAX_REF_PARTS, false); + covered_bits = rdb_netbuf_to_uint16((const uchar *)unpack_header + + sizeof(RDB_UNPACK_COVERED_DATA_TAG) + + RDB_UNPACK_COVERED_DATA_LEN_SIZE); + + return bitmap_is_subset(lookup_bitmap, &covered_bitmap); +} + uchar *Rdb_key_def::pack_field(Field *const field, Rdb_field_packing *pack_info, uchar *tuple, uchar *const packed_tuple, uchar *const pack_buffer, @@ -872,14 +1004,12 @@ uchar *Rdb_key_def::pack_field(Field *const field, Rdb_field_packing *pack_info, Length of the packed tuple */ -uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, - const uchar *const record, - uchar *const packed_tuple, - Rdb_string_writer *const unpack_info, - const bool &should_store_row_debug_checksums, - const longlong &hidden_pk_id, uint n_key_parts, - uint *const n_null_fields, - uint *const ttl_pk_offset) const { +uint Rdb_key_def::pack_record( + const TABLE *const tbl, uchar *const pack_buffer, const uchar *const record, + uchar *const packed_tuple, Rdb_string_writer *const unpack_info, + const bool &should_store_row_debug_checksums, const longlong &hidden_pk_id, + uint n_key_parts, uint *const n_null_fields, uint *const ttl_pk_offset, + const char *const ttl_bytes) const { DBUG_ASSERT(tbl != nullptr); DBUG_ASSERT(pack_buffer != nullptr); DBUG_ASSERT(record != nullptr); @@ -890,7 +1020,9 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, (m_index_type == INDEX_TYPE_SECONDARY)); uchar *tuple = packed_tuple; + size_t unpack_start_pos = size_t(-1); size_t unpack_len_pos = size_t(-1); + size_t covered_bitmap_pos = size_t(-1); const bool hidden_pk_exists = table_has_hidden_pk(tbl); rdb_netbuf_store_index(tuple, m_index_number); @@ -912,14 +1044,57 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, if (n_null_fields) *n_null_fields = 0; + // Check if we need a covered bitmap. If it is certain that all key parts are + // covering, we don't need one. + bool store_covered_bitmap = false; + if (unpack_info && use_covered_bitmap_format()) { + for (uint i = 0; i < n_key_parts; i++) { + if (!m_pack_info[i].m_covered) { + store_covered_bitmap = true; + break; + } + } + } + + const char tag = + store_covered_bitmap ? RDB_UNPACK_COVERED_DATA_TAG : RDB_UNPACK_DATA_TAG; + if (unpack_info) { unpack_info->clear(); - unpack_info->write_uint8(RDB_UNPACK_DATA_TAG); + + if (m_index_type == INDEX_TYPE_SECONDARY && + m_total_index_flags_length > 0) { + // Reserve space for index flag fields + unpack_info->allocate(m_total_index_flags_length); + + // Insert TTL timestamp + if (has_ttl() && ttl_bytes) { + write_index_flag_field(unpack_info, + reinterpret_cast<const uchar *const>(ttl_bytes), + Rdb_key_def::TTL_FLAG); + } + } + + unpack_start_pos = unpack_info->get_current_pos(); + unpack_info->write_uint8(tag); unpack_len_pos = unpack_info->get_current_pos(); // we don't know the total length yet, so write a zero unpack_info->write_uint16(0); + + if (store_covered_bitmap) { + // Reserve two bytes for the covered bitmap. This will store, for key + // parts which are not always covering, whether or not it is covering + // for this record. + covered_bitmap_pos = unpack_info->get_current_pos(); + unpack_info->write_uint16(0); + } } + MY_BITMAP covered_bitmap; + my_bitmap_map covered_bits; + uint curr_bitmap_pos = 0; + bitmap_init(&covered_bitmap, &covered_bits, MAX_REF_PARTS, false); + for (uint i = 0; i < n_key_parts; i++) { // Fill hidden pk id into the last key part for secondary keys for tables // with no pk @@ -938,7 +1113,7 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, // Save the ttl duration offset in the key so we can store it in front of // the record later. if (ttl_pk_offset && m_ttl_duration > 0 && i == m_ttl_pk_key_part_offset) { - DBUG_ASSERT(check_field_name_match(field, m_ttl_column.c_str())); + DBUG_ASSERT(field_check_field_name_match(field, m_ttl_column.c_str())); DBUG_ASSERT(field->real_type() == MYSQL_TYPE_LONGLONG); DBUG_ASSERT(field->key_type() == HA_KEYTYPE_ULONGLONG); DBUG_ASSERT(!field->real_maybe_null()); @@ -953,6 +1128,25 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, tuple = pack_field(field, &m_pack_info[i], tuple, packed_tuple, pack_buffer, unpack_info, n_null_fields); + // If this key part is a prefix of a VARCHAR field, check if it's covered. + if (store_covered_bitmap && field->real_type() == MYSQL_TYPE_VARCHAR && + !m_pack_info[i].m_covered && curr_bitmap_pos < MAX_REF_PARTS) { + size_t data_length = field->data_length(); + uint16 key_length; + if (m_pk_part_no[i] == (uint)-1) { + key_length = tbl->key_info[get_keyno()].key_part[i].length; + } else { + key_length = + tbl->key_info[tbl->s->primary_key].key_part[m_pk_part_no[i]].length; + } + + if (m_pack_info[i].m_unpack_func != nullptr && + data_length <= key_length) { + bitmap_set_bit(&covered_bitmap, curr_bitmap_pos); + } + curr_bitmap_pos++; + } + // Restore field->ptr and field->null_ptr field->move_field(tbl->record[0] + field_offset, maybe_null ? tbl->record[0] + null_offset : nullptr, @@ -960,7 +1154,7 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, } if (unpack_info) { - const size_t len = unpack_info->get_current_pos(); + const size_t len = unpack_info->get_current_pos() - unpack_start_pos; DBUG_ASSERT(len <= std::numeric_limits<uint16_t>::max()); // Don't store the unpack_info if it has only the header (that is, there's @@ -968,9 +1162,12 @@ uint Rdb_key_def::pack_record(const TABLE *const tbl, uchar *const pack_buffer, // Primary Keys are special: for them, store the unpack_info even if it's // empty (provided m_maybe_unpack_info==true, see // ha_rocksdb::convert_record_to_storage_format) - if (len == RDB_UNPACK_HEADER_SIZE && - m_index_type != Rdb_key_def::INDEX_TYPE_PRIMARY) { - unpack_info->clear(); + if (m_index_type == Rdb_key_def::INDEX_TYPE_SECONDARY) { + if (len == get_unpack_header_size(tag) && !covered_bits) { + unpack_info->truncate(unpack_start_pos); + } else if (store_covered_bitmap) { + unpack_info->write_uint16_at(covered_bitmap_pos, covered_bits); + } } else { unpack_info->write_uint16_at(unpack_len_pos, len); } @@ -1216,11 +1413,30 @@ int Rdb_key_def::unpack_record(TABLE *const table, uchar *const buf, // For secondary keys, we expect the value field to contain unpack data and // checksum data in that order. One or both can be missing, but they cannot // be reordered. + const char *unpack_header = unp_reader.get_current_ptr(); const bool has_unpack_info = - unp_reader.remaining_bytes() && - *unp_reader.get_current_ptr() == RDB_UNPACK_DATA_TAG; - if (has_unpack_info && !unp_reader.read(RDB_UNPACK_HEADER_SIZE)) { - return HA_ERR_ROCKSDB_CORRUPT_DATA; + unp_reader.remaining_bytes() && is_unpack_data_tag(unpack_header[0]); + if (has_unpack_info) { + if ((m_index_type == INDEX_TYPE_SECONDARY && + m_total_index_flags_length > 0 && + !unp_reader.read(m_total_index_flags_length)) || + !unp_reader.read(get_unpack_header_size(unpack_header[0]))) { + return HA_ERR_ROCKSDB_CORRUPT_DATA; + } + } + + // Read the covered bitmap + MY_BITMAP covered_bitmap; + my_bitmap_map covered_bits; + uint curr_bitmap_pos = 0; + bitmap_init(&covered_bitmap, &covered_bits, MAX_REF_PARTS, false); + + const bool has_covered_bitmap = + has_unpack_info && (unpack_header[0] == RDB_UNPACK_COVERED_DATA_TAG); + if (has_covered_bitmap) { + covered_bits = rdb_netbuf_to_uint16((const uchar *)unpack_header + + sizeof(RDB_UNPACK_COVERED_DATA_TAG) + + RDB_UNPACK_COVERED_DATA_LEN_SIZE); } for (uint i = 0; i < m_key_parts; i++) { @@ -1241,7 +1457,13 @@ int Rdb_key_def::unpack_record(TABLE *const table, uchar *const buf, Field *const field = fpi->get_field_in_table(table); - if (fpi->m_unpack_func) { + bool covered_column = true; + if (has_covered_bitmap && field->real_type() == MYSQL_TYPE_VARCHAR && + !m_pack_info[i].m_covered) { + covered_column = curr_bitmap_pos < MAX_REF_PARTS && + bitmap_is_set(&covered_bitmap, curr_bitmap_pos++); + } + if (fpi->m_unpack_func && covered_column) { /* It is possible to unpack this column. Do it. */ uint field_offset = field->ptr - table->record[0]; @@ -2835,6 +3057,8 @@ bool Rdb_field_packing::setup(const Rdb_key_def *const key_descr, m_skip_func = &Rdb_key_def::skip_max_length; m_pack_func = &Rdb_key_def::pack_with_make_sort_key; + m_covered = false; + switch (type) { case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: @@ -2842,14 +3066,17 @@ bool Rdb_field_packing::setup(const Rdb_key_def *const key_descr, case MYSQL_TYPE_SHORT: case MYSQL_TYPE_TINY: m_unpack_func = &Rdb_key_def::unpack_integer; + m_covered = true; return true; case MYSQL_TYPE_DOUBLE: m_unpack_func = &Rdb_key_def::unpack_double; + m_covered = true; return true; case MYSQL_TYPE_FLOAT: m_unpack_func = &Rdb_key_def::unpack_float; + m_covered = true; return true; case MYSQL_TYPE_NEWDECIMAL: @@ -2867,6 +3094,7 @@ bool Rdb_field_packing::setup(const Rdb_key_def *const key_descr, case MYSQL_TYPE_YEAR: /* YEAR is packed with Field_tiny::make_sort_key */ /* Everything that comes here is packed with just a memcpy(). */ m_unpack_func = &Rdb_key_def::unpack_binary_str; + m_covered = true; return true; case MYSQL_TYPE_NEWDATE: @@ -2876,6 +3104,7 @@ bool Rdb_field_packing::setup(const Rdb_key_def *const key_descr, and little-endian) */ m_unpack_func = &Rdb_key_def::unpack_newdate; + m_covered = true; return true; case MYSQL_TYPE_TINY_BLOB: case MYSQL_TYPE_MEDIUM_BLOB: @@ -3044,27 +3273,36 @@ bool Rdb_field_packing::setup(const Rdb_key_def *const key_descr, } } - // Make an adjustment: unpacking partially covered columns is not - // possible. field->table is populated when called through - // Rdb_key_def::setup, but not during ha_rocksdb::index_flags. + // Make an adjustment: if this column is partially covered, tell the SQL + // layer we can't do index-only scans. Later when we perform an index read, + // we'll check on a record-by-record basis if we can do an index-only scan + // or not. + uint field_length; if (field->table) { - // Get the original Field object and compare lengths. If this key part is - // a prefix of a column, then we can't do index-only scans. - if (field->table->field[field->field_index]->field_length != key_length) { - m_unpack_func = nullptr; - m_make_unpack_info_func = nullptr; - m_unpack_info_stores_value = true; - res = false; - } + field_length = field->table->field[field->field_index]->field_length; } else { - if (field->field_length != key_length) { + field_length = field->field_length; + } + + if (field_length != key_length) { + res = false; + // If this index doesn't support covered bitmaps, then we won't know + // during a read if the column is actually covered or not. If so, we need + // to assume the column isn't covered and skip it during unpacking. + // + // If key_descr == NULL, then this is a dummy field and we probably don't + // need to perform this step. However, to preserve the behavior before + // this change, we'll only skip this step if we have an index which + // supports covered bitmaps. + if (!key_descr || !key_descr->use_covered_bitmap_format()) { m_unpack_func = nullptr; m_make_unpack_info_func = nullptr; m_unpack_info_stores_value = true; - res = false; } } } + + m_covered = res; return res; } @@ -3180,18 +3418,19 @@ bool Rdb_tbl_def::put_dict(Rdb_dict_manager *const dict, // Length that each index flag takes inside the record. // Each index in the array maps to the enum INDEX_FLAG -static const std::array<int, 1> index_flag_lengths = { +static const std::array<uint, 1> index_flag_lengths = { {ROCKSDB_SIZEOF_TTL_RECORD}}; - bool Rdb_key_def::has_index_flag(uint32 index_flags, enum INDEX_FLAG flag) { return flag & index_flags; } uint32 Rdb_key_def::calculate_index_flag_offset(uint32 index_flags, - enum INDEX_FLAG flag) { + enum INDEX_FLAG flag, + uint *const length) { - DBUG_ASSERT(Rdb_key_def::has_index_flag(index_flags, flag)); + DBUG_ASSERT_IMP(flag != MAX_FLAG, + Rdb_key_def::has_index_flag(index_flags, flag)); uint offset = 0; for (size_t bit = 0; bit < sizeof(index_flags) * CHAR_BIT; ++bit) { @@ -3199,6 +3438,9 @@ uint32 Rdb_key_def::calculate_index_flag_offset(uint32 index_flags, /* Exit once we've reached the proper flag */ if (flag & mask) { + if (length != nullptr) { + *length = index_flag_lengths[bit]; + } break; } @@ -3210,6 +3452,15 @@ uint32 Rdb_key_def::calculate_index_flag_offset(uint32 index_flags, return offset; } +void Rdb_key_def::write_index_flag_field(Rdb_string_writer *const buf, + const uchar *const val, + enum INDEX_FLAG flag) const { + uint len; + uint offset = calculate_index_flag_offset(m_index_flags_bitmap, flag, &len); + DBUG_ASSERT(offset + len <= buf->get_current_pos()); + memcpy(buf->ptr() + offset, val, len); +} + void Rdb_tbl_def::check_if_is_mysql_system_table() { static const char *const system_dbs[] = { "mysql", "performance_schema", "information_schema", @@ -3308,10 +3559,12 @@ struct Rdb_validate_tbls : public Rdb_tables_scanner { int Rdb_validate_tbls::add_table(Rdb_tbl_def *tdef) { DBUG_ASSERT(tdef != nullptr); - /* Add the database/table into the list */ - bool is_partition = tdef->base_partition().size() != 0; - m_list[tdef->base_dbname()].insert( - tbl_info_t(tdef->base_tablename(), is_partition)); + /* Add the database/table into the list that are not temp table */ + if (tdef->base_tablename().find(tmp_file_prefix) == std::string::npos) { + bool is_partition = tdef->base_partition().size() != 0; + m_list[tdef->base_dbname()].insert( + tbl_info_t(tdef->base_tablename(), is_partition)); + } return HA_EXIT_SUCCESS; } @@ -3394,9 +3647,9 @@ bool Rdb_validate_tbls::scan_for_frms(const std::string &datadir, /* Scan through the files in the directory */ struct fileinfo *file_info = dir_info->dir_entry; for (uint ii = 0; ii < dir_info->number_of_files; ii++, file_info++) { - /* Find .frm files that are not temp files (those that start with '#') */ + /* Find .frm files that are not temp files (those that contain '#sql') */ const char *ext = strrchr(file_info->name, '.'); - if (ext != nullptr && !is_prefix(file_info->name, tmp_file_prefix) && + if (ext != nullptr && strstr(file_info->name, tmp_file_prefix) == nullptr && strcmp(ext, ".frm") == 0) { std::string tablename = std::string(file_info->name, ext - file_info->name); @@ -3723,6 +3976,20 @@ Rdb_ddl_manager::find(GL_INDEX_ID gl_index_id) { return empty; } +// this method returns the name of the table based on an index id. It acquires +// a read lock on m_rwlock. +const std::string +Rdb_ddl_manager::safe_get_table_name(const GL_INDEX_ID &gl_index_id) { + std::string ret; + mysql_rwlock_rdlock(&m_rwlock); + auto it = m_index_num_to_keydef.find(gl_index_id); + if (it != m_index_num_to_keydef.end()) { + ret = it->second.first; + } + mysql_rwlock_unlock(&m_rwlock); + return ret; +} + void Rdb_ddl_manager::set_stats( const std::unordered_map<GL_INDEX_ID, Rdb_index_stats> &stats) { mysql_rwlock_wrlock(&m_rwlock); @@ -3961,12 +4228,10 @@ void Rdb_binlog_manager::cleanup() {} write succeeded or not is not possible here. @param binlog_name Binlog name @param binlog_pos Binlog pos - @param binlog_gtid Binlog max GTID @param batch WriteBatch */ void Rdb_binlog_manager::update(const char *const binlog_name, const my_off_t binlog_pos, - const char *const binlog_max_gtid, rocksdb::WriteBatchBase *const batch) { if (binlog_name && binlog_pos) { // max binlog length (512) + binlog pos (4) + binlog gtid (57) < 1024 @@ -3974,7 +4239,7 @@ void Rdb_binlog_manager::update(const char *const binlog_name, uchar value_buf[RDB_MAX_BINLOG_INFO_LEN]; m_dict->put_key( batch, m_key_slice, - pack_value(value_buf, binlog_name, binlog_pos, binlog_max_gtid)); + pack_value(value_buf, binlog_name, binlog_pos, NULL)); } } @@ -4009,7 +4274,6 @@ bool Rdb_binlog_manager::read(char *const binlog_name, @param buf Preallocated buffer to set binlog info. @param binlog_name Binlog name @param binlog_pos Binlog pos - @param binlog_gtid Binlog GTID @return rocksdb::Slice converted from buf and its length */ rocksdb::Slice @@ -4038,15 +4302,21 @@ Rdb_binlog_manager::pack_value(uchar *const buf, const char *const binlog_name, // store binlog gtid length. // If gtid was not set, store 0 instead +#ifdef MARIAROCKS_NOT_YET const uint16_t binlog_gtid_len = binlog_gtid ? (uint16_t)strlen(binlog_gtid) : 0; rdb_netbuf_store_uint16(buf + pack_len, binlog_gtid_len); +#endif pack_len += sizeof(uint16); + // MariaDB: + rdb_netbuf_store_uint16(buf + pack_len, 0); +#ifdef MARIAROCKS_NOT_YET if (binlog_gtid_len > 0) { // store binlog gtid memcpy(buf + pack_len, binlog_gtid, binlog_gtid_len); pack_len += binlog_gtid_len; } +#endif return rocksdb::Slice((char *)buf, pack_len); } diff --git a/storage/rocksdb/rdb_datadic.h b/storage/rocksdb/rdb_datadic.h index 91e8fb6f389..4599f4b1ce3 100644 --- a/storage/rocksdb/rdb_datadic.h +++ b/storage/rocksdb/rdb_datadic.h @@ -16,6 +16,7 @@ #pragma once /* C++ standard header files */ +#include <cstdlib> #include <algorithm> #include <atomic> #include <map> @@ -109,8 +110,8 @@ const size_t RDB_CHECKSUM_CHUNK_SIZE = 2 * RDB_CHECKSUM_SIZE + 1; const char RDB_CHECKSUM_DATA_TAG = 0x01; /* - Unpack data is variable length. It is a 1 tag-byte plus a - two byte length field. The length field includes the header as well. + Unpack data is variable length. The header is 1 tag-byte plus a two byte + length field. The length field includes the header as well. */ const char RDB_UNPACK_DATA_TAG = 0x02; const size_t RDB_UNPACK_DATA_LEN_SIZE = sizeof(uint16_t); @@ -118,6 +119,17 @@ const size_t RDB_UNPACK_HEADER_SIZE = sizeof(RDB_UNPACK_DATA_TAG) + RDB_UNPACK_DATA_LEN_SIZE; /* + This header format is 1 tag-byte plus a two byte length field plus a two byte + covered bitmap. The length field includes the header size. +*/ +const char RDB_UNPACK_COVERED_DATA_TAG = 0x03; +const size_t RDB_UNPACK_COVERED_DATA_LEN_SIZE = sizeof(uint16_t); +const size_t RDB_COVERED_BITMAP_SIZE = sizeof(uint16_t); +const size_t RDB_UNPACK_COVERED_HEADER_SIZE = + sizeof(RDB_UNPACK_COVERED_DATA_TAG) + RDB_UNPACK_COVERED_DATA_LEN_SIZE + + RDB_COVERED_BITMAP_SIZE; + +/* Data dictionary index info field sizes. */ const size_t RDB_SIZEOF_INDEX_INFO_VERSION = sizeof(uint16); @@ -190,7 +202,8 @@ public: const bool &should_store_row_debug_checksums, const longlong &hidden_pk_id = 0, uint n_key_parts = 0, uint *const n_null_fields = nullptr, - uint *const ttl_pk_offset = nullptr) const; + uint *const ttl_pk_offset = nullptr, + const char *const ttl_bytes = nullptr) const; /* Pack the hidden primary key into mem-comparable form. */ uint pack_hidden_pk(const longlong &hidden_pk_id, uchar *const packed_tuple) const; @@ -248,6 +261,17 @@ public: return true; } + void get_lookup_bitmap(const TABLE *table, MY_BITMAP *map) const; + + bool covers_lookup(TABLE *const table, + const rocksdb::Slice *const unpack_info, + const MY_BITMAP *const map) const; + + inline bool use_covered_bitmap_format() const { + return m_index_type == INDEX_TYPE_SECONDARY && + m_kv_format_version >= SECONDARY_FORMAT_VERSION_UPDATE3; + } + /* Return true if the passed mem-comparable key - is from this index, and @@ -305,6 +329,8 @@ public: return m_prefix_extractor.get(); } + static size_t get_unpack_header_size(char tag); + Rdb_key_def &operator=(const Rdb_key_def &) = delete; Rdb_key_def(const Rdb_key_def &k); Rdb_key_def(uint indexnr_arg, uint keyno_arg, @@ -428,7 +454,16 @@ public: // an inefficient where data that was a multiple of 8 bytes in length // had an extra 9 bytes of encoded data. SECONDARY_FORMAT_VERSION_UPDATE2 = 12, - SECONDARY_FORMAT_VERSION_LATEST = SECONDARY_FORMAT_VERSION_UPDATE2, + // This change includes support for TTL + // - This means that when TTL is specified for the table an 8-byte TTL + // field is prepended in front of each value. + SECONDARY_FORMAT_VERSION_TTL = 13, + SECONDARY_FORMAT_VERSION_LATEST = SECONDARY_FORMAT_VERSION_TTL, + // This change includes support for covering SK lookups for varchars. A + // 2-byte bitmap is added after the tag-byte to unpack_info only for + // records which have covered varchar columns. Currently waiting before + // enabling in prod. + SECONDARY_FORMAT_VERSION_UPDATE3 = 65535, }; void setup(const TABLE *const table, const Rdb_tbl_def *const tbl_def); @@ -444,7 +479,11 @@ public: static bool has_index_flag(uint32 index_flags, enum INDEX_FLAG flag); static uint32 calculate_index_flag_offset(uint32 index_flags, - enum INDEX_FLAG flag); + enum INDEX_FLAG flag, + uint *const field_length = nullptr); + void write_index_flag_field(Rdb_string_writer *const buf, + const uchar *const val, + enum INDEX_FLAG flag) const; static const std::string gen_qualifier_for_table(const char *const qualifier, @@ -597,6 +636,10 @@ public: SECONDARY_FORMAT_VERSION_UPDATE2); } + static inline bool is_unpack_data_tag(char c) { + return c == RDB_UNPACK_DATA_TAG || c == RDB_UNPACK_COVERED_DATA_TAG; + } + private: #ifndef DBUG_OFF inline bool is_storage_available(const int &offset, const int &needed) const { @@ -647,6 +690,11 @@ public: uint32 m_index_flags_bitmap; /* + How much space in bytes the index flag fields occupy. + */ + uint32 m_total_index_flags_length; + + /* Offset in the records where the 8-byte TTL is stored (UINT_MAX if no TTL) */ uint32 m_ttl_rec_offset; @@ -764,6 +812,13 @@ public: // spaces in the upack_info bool m_unpack_info_uses_two_bytes; + /* + True implies that an index-only read is always possible for this field. + False means an index-only read may be possible depending on the record and + field type. + */ + bool m_covered; + const std::vector<uchar> *space_xfrm; size_t space_xfrm_len; size_t space_mb_len; @@ -1041,6 +1096,8 @@ public: return m_sequence.get_and_update_next_number(dict); } + const std::string safe_get_table_name(const GL_INDEX_ID &gl_index_id); + /* Walk the data dictionary */ int scan_for_tables(Rdb_tables_scanner *tables_scanner); @@ -1086,7 +1143,6 @@ public: bool init(Rdb_dict_manager *const dict); void cleanup(); void update(const char *const binlog_name, const my_off_t binlog_pos, - const char *const binlog_max_gtid, rocksdb::WriteBatchBase *const batch); bool read(char *const binlog_name, my_off_t *const binlog_pos, char *const binlog_gtid) const; diff --git a/storage/rocksdb/rdb_i_s.cc b/storage/rocksdb/rdb_i_s.cc index 631cb2e06b3..b86245d80b8 100644 --- a/storage/rocksdb/rdb_i_s.cc +++ b/storage/rocksdb/rdb_i_s.cc @@ -41,6 +41,7 @@ #include "./rdb_cf_manager.h" #include "./rdb_datadic.h" #include "./rdb_utils.h" +#include "./rdb_mariadb_server_port.h" #include "./rdb_mariadb_port.h" @@ -849,17 +850,22 @@ static int rdb_i_s_compact_stats_fill_table( continue; } - std::map<std::string, double> props; + std::map<std::string, std::string> props; bool bool_ret MY_ATTRIBUTE((__unused__)); bool_ret = rdb->GetMapProperty(cfh, "rocksdb.cfstats", &props); DBUG_ASSERT(bool_ret); + const std::string prop_name_prefix = "compaction."; for (auto const &prop_ent : props) { std::string prop_name = prop_ent.first; - double value = prop_ent.second; - std::size_t del_pos = prop_name.find('.'); + if (prop_name.find(prop_name_prefix) != 0) { + continue; + } + std::string value = prop_ent.second; + std::size_t del_pos = prop_name.find('.', prop_name_prefix.size()); DBUG_ASSERT(del_pos != std::string::npos); - std::string level_str = prop_name.substr(0, del_pos); + std::string level_str = prop_name.substr( + prop_name_prefix.size(), del_pos - prop_name_prefix.size()); std::string type_str = prop_name.substr(del_pos + 1); Field **field = tables->table->field; @@ -868,7 +874,7 @@ static int rdb_i_s_compact_stats_fill_table( field[0]->store(cf_name.c_str(), cf_name.size(), system_charset_info); field[1]->store(level_str.c_str(), level_str.size(), system_charset_info); field[2]->store(type_str.c_str(), type_str.size(), system_charset_info); - field[3]->store(value, true); + field[3]->store(std::stod(value)); ret |= static_cast<int>( my_core::schema_table_store_record(thd, tables->table)); diff --git a/storage/rocksdb/rdb_index_merge.cc b/storage/rocksdb/rdb_index_merge.cc index 3a6e1cdaf97..12777cf9302 100644 --- a/storage/rocksdb/rdb_index_merge.cc +++ b/storage/rocksdb/rdb_index_merge.cc @@ -31,17 +31,38 @@ namespace myrocks { Rdb_index_merge::Rdb_index_merge(const char *const tmpfile_path, const ulonglong &merge_buf_size, const ulonglong &merge_combine_read_size, - const rocksdb::Comparator *const comparator) + const ulonglong &merge_tmp_file_removal_delay, + rocksdb::ColumnFamilyHandle *cf) : m_tmpfile_path(tmpfile_path), m_merge_buf_size(merge_buf_size), m_merge_combine_read_size(merge_combine_read_size), - m_comparator(comparator), m_rec_buf_unsorted(nullptr), - m_output_buf(nullptr) {} + m_merge_tmp_file_removal_delay(merge_tmp_file_removal_delay), + m_cf_handle(cf), m_rec_buf_unsorted(nullptr), m_output_buf(nullptr) {} Rdb_index_merge::~Rdb_index_merge() { /* - Close tmp file, we don't need to worry about deletion, mysql handles it. + If merge_tmp_file_removal_delay is set, sleep between calls to chsize. + + This helps mitigate potential trim stalls on flash when large files are + being deleted too quickly. + */ + if (m_merge_tmp_file_removal_delay > 0) { + uint64 curr_size = m_merge_buf_size * m_merge_file.m_num_sort_buffers; + for (uint i = 0; i < m_merge_file.m_num_sort_buffers; i++) { + if (my_chsize(m_merge_file.m_fd, curr_size, 0, MYF(MY_WME))) { + // NO_LINT_DEBUG + sql_print_error("Error truncating file during fast index creation."); + } + + my_sleep(m_merge_tmp_file_removal_delay * 1000); + curr_size -= m_merge_buf_size; + } + } + + /* + Close file descriptor, we don't need to worry about deletion, + mysql handles it. */ - my_close(m_merge_file.fd, MYF(MY_WME)); + my_close(m_merge_file.m_fd, MYF(MY_WME)); } int Rdb_index_merge::init() { @@ -75,7 +96,7 @@ int Rdb_index_merge::init() { Create a merge file in the given location. */ int Rdb_index_merge::merge_file_create() { - DBUG_ASSERT(m_merge_file.fd == -1); + DBUG_ASSERT(m_merge_file.m_fd == -1); int fd; #ifdef MARIAROCKS_NOT_YET // mysql_tmpfile_path use @@ -89,11 +110,13 @@ int Rdb_index_merge::merge_file_create() { fd = mysql_tmpfile("myrocks"); #endif if (fd < 0) { + // NO_LINT_DEBUG + sql_print_error("Failed to create temp file during fast index creation."); return HA_ERR_ROCKSDB_MERGE_FILE_ERR; } - m_merge_file.fd = fd; - m_merge_file.num_sort_buffers = 0; + m_merge_file.m_fd = fd; + m_merge_file.m_num_sort_buffers = 0; return HA_EXIT_SUCCESS; } @@ -114,10 +137,10 @@ int Rdb_index_merge::add(const rocksdb::Slice &key, const rocksdb::Slice &val) { out to disk in sorted order using offset tree. */ const uint total_offset = RDB_MERGE_CHUNK_LEN + - m_rec_buf_unsorted->curr_offset + + m_rec_buf_unsorted->m_curr_offset + RDB_MERGE_KEY_DELIMITER + RDB_MERGE_VAL_DELIMITER + key.size() + val.size(); - if (total_offset >= m_rec_buf_unsorted->total_size) { + if (total_offset >= m_rec_buf_unsorted->m_total_size) { /* If the offset tree is empty here, that means that the proposed key to add is too large for the buffer. @@ -136,7 +159,7 @@ int Rdb_index_merge::add(const rocksdb::Slice &key, const rocksdb::Slice &val) { } } - const ulonglong rec_offset = m_rec_buf_unsorted->curr_offset; + const ulonglong rec_offset = m_rec_buf_unsorted->m_curr_offset; /* Store key and value in temporary unsorted in memory buffer pointed to by @@ -145,8 +168,15 @@ int Rdb_index_merge::add(const rocksdb::Slice &key, const rocksdb::Slice &val) { m_rec_buf_unsorted->store_key_value(key, val); /* Find sort order of the new record */ - m_offset_tree.emplace(m_rec_buf_unsorted->block.get() + rec_offset, - m_comparator); + auto res = + m_offset_tree.emplace(m_rec_buf_unsorted->m_block.get() + rec_offset, + m_cf_handle->GetComparator()); + if (!res.second) { + my_printf_error(ER_DUP_ENTRY, + "Failed to insert the record: the key already exists", + MYF(0)); + return ER_DUP_ENTRY; + } return HA_EXIT_SUCCESS; } @@ -155,33 +185,33 @@ int Rdb_index_merge::add(const rocksdb::Slice &key, const rocksdb::Slice &val) { Sort + write merge buffer chunk out to disk. */ int Rdb_index_merge::merge_buf_write() { - DBUG_ASSERT(m_merge_file.fd != -1); + DBUG_ASSERT(m_merge_file.m_fd != -1); DBUG_ASSERT(m_rec_buf_unsorted != nullptr); DBUG_ASSERT(m_output_buf != nullptr); DBUG_ASSERT(!m_offset_tree.empty()); /* Write actual chunk size to first 8 bytes of the merge buffer */ - merge_store_uint64(m_output_buf->block.get(), - m_rec_buf_unsorted->curr_offset + RDB_MERGE_CHUNK_LEN); - m_output_buf->curr_offset += RDB_MERGE_CHUNK_LEN; + merge_store_uint64(m_output_buf->m_block.get(), + m_rec_buf_unsorted->m_curr_offset + RDB_MERGE_CHUNK_LEN); + m_output_buf->m_curr_offset += RDB_MERGE_CHUNK_LEN; /* Iterate through the offset tree. Should be ordered by the secondary key at this point. */ for (const auto &rec : m_offset_tree) { - DBUG_ASSERT(m_output_buf->curr_offset <= m_merge_buf_size); + DBUG_ASSERT(m_output_buf->m_curr_offset <= m_merge_buf_size); /* Read record from offset (should never fail) */ rocksdb::Slice key; rocksdb::Slice val; - merge_read_rec(rec.block, &key, &val); + merge_read_rec(rec.m_block, &key, &val); /* Store key and value into sorted output buffer */ m_output_buf->store_key_value(key, val); } - DBUG_ASSERT(m_output_buf->curr_offset <= m_output_buf->total_size); + DBUG_ASSERT(m_output_buf->m_curr_offset <= m_output_buf->m_total_size); /* Write output buffer to disk. @@ -189,8 +219,9 @@ int Rdb_index_merge::merge_buf_write() { Need to position cursor to the chunk it needs to be at on filesystem then write into the respective merge buffer. */ - if (my_seek(m_merge_file.fd, m_merge_file.num_sort_buffers * m_merge_buf_size, - SEEK_SET, MYF(0)) == MY_FILEPOS_ERROR) { + if (my_seek(m_merge_file.m_fd, + m_merge_file.m_num_sort_buffers * m_merge_buf_size, SEEK_SET, + MYF(0)) == MY_FILEPOS_ERROR) { // NO_LINT_DEBUG sql_print_error("Error seeking to location in merge file on disk."); return HA_ERR_ROCKSDB_MERGE_FILE_ERR; @@ -201,16 +232,16 @@ int Rdb_index_merge::merge_buf_write() { cache can flush out all of the files at the same time, causing a write burst. */ - if (my_write(m_merge_file.fd, m_output_buf->block.get(), - m_output_buf->total_size, MYF(MY_WME | MY_NABP)) || - mysql_file_sync(m_merge_file.fd, MYF(MY_WME))) { + if (my_write(m_merge_file.m_fd, m_output_buf->m_block.get(), + m_output_buf->m_total_size, MYF(MY_WME | MY_NABP)) || + mysql_file_sync(m_merge_file.m_fd, MYF(MY_WME))) { // NO_LINT_DEBUG sql_print_error("Error writing sorted merge buffer to disk."); return HA_ERR_ROCKSDB_MERGE_FILE_ERR; } /* Increment merge file offset to track number of merge buffers written */ - m_merge_file.num_sort_buffers += 1; + m_merge_file.m_num_sort_buffers += 1; /* Reset everything for next run */ merge_reset(); @@ -233,28 +264,29 @@ int Rdb_index_merge::merge_heap_prepare() { return HA_ERR_ROCKSDB_MERGE_FILE_ERR; } - DBUG_ASSERT(m_merge_file.num_sort_buffers > 0); + DBUG_ASSERT(m_merge_file.m_num_sort_buffers > 0); /* For an n-way merge, we need to read chunks of each merge file simultaneously. */ ulonglong chunk_size = - m_merge_combine_read_size / m_merge_file.num_sort_buffers; + m_merge_combine_read_size / m_merge_file.m_num_sort_buffers; if (chunk_size >= m_merge_buf_size) { chunk_size = m_merge_buf_size; } /* Allocate buffers for each chunk */ - for (ulonglong i = 0; i < m_merge_file.num_sort_buffers; i++) { - const auto entry = std::make_shared<merge_heap_entry>(m_comparator); + for (ulonglong i = 0; i < m_merge_file.m_num_sort_buffers; i++) { + const auto entry = + std::make_shared<merge_heap_entry>(m_cf_handle->GetComparator()); /* Read chunk_size bytes from each chunk on disk, and place inside respective chunk buffer. */ const size_t total_size = - entry->prepare(m_merge_file.fd, i * m_merge_buf_size, chunk_size); + entry->prepare(m_merge_file.m_fd, i * m_merge_buf_size, chunk_size); if (total_size == (size_t)-1) { return HA_ERR_ROCKSDB_MERGE_FILE_ERR; @@ -266,7 +298,7 @@ int Rdb_index_merge::merge_heap_prepare() { } /* Read the first record from each buffer to initially populate the heap */ - if (entry->read_rec(&entry->key, &entry->val)) { + if (entry->read_rec(&entry->m_key, &entry->m_val)) { // NO_LINT_DEBUG sql_print_error("Chunk size is too small to process merge."); return HA_ERR_ROCKSDB_MERGE_FILE_ERR; @@ -291,7 +323,7 @@ int Rdb_index_merge::next(rocksdb::Slice *const key, If there are no sort buffer records (alters on empty tables), also exit here. */ - if (m_merge_file.num_sort_buffers == 0) { + if (m_merge_file.m_num_sort_buffers == 0) { if (m_offset_tree.empty()) { return -1; } @@ -299,7 +331,7 @@ int Rdb_index_merge::next(rocksdb::Slice *const key, const auto rec = m_offset_tree.begin(); /* Read record from offset */ - merge_read_rec(rec->block, key, val); + merge_read_rec(rec->m_block, key, val); m_offset_tree.erase(rec); return HA_EXIT_SUCCESS; @@ -339,8 +371,8 @@ void Rdb_index_merge::merge_heap_top(rocksdb::Slice *const key, DBUG_ASSERT(!m_merge_min_heap.empty()); const std::shared_ptr<merge_heap_entry> &entry = m_merge_min_heap.top(); - *key = entry->key; - *val = entry->val; + *key = entry->m_key; + *val = entry->m_val; } /** @@ -360,12 +392,12 @@ int Rdb_index_merge::merge_heap_pop_and_get_next(rocksdb::Slice *const key, /* We are finished w/ current chunk if: - current_offset + disk_offset == total_size + current_offset + disk_offset == m_total_size Return without adding entry back onto heap. If heap is also empty, we must be finished with merge. */ - if (entry->chunk_info->is_chunk_finished()) { + if (entry->m_chunk_info->is_chunk_finished()) { if (m_merge_min_heap.empty()) { return -1; } @@ -377,19 +409,19 @@ int Rdb_index_merge::merge_heap_pop_and_get_next(rocksdb::Slice *const key, /* Make sure we haven't reached the end of the chunk. */ - DBUG_ASSERT(!entry->chunk_info->is_chunk_finished()); + DBUG_ASSERT(!entry->m_chunk_info->is_chunk_finished()); /* If merge_read_rec fails, it means the either the chunk was cut off or we've reached the end of the respective chunk. */ - if (entry->read_rec(&entry->key, &entry->val)) { - if (entry->read_next_chunk_from_disk(m_merge_file.fd)) { + if (entry->read_rec(&entry->m_key, &entry->m_val)) { + if (entry->read_next_chunk_from_disk(m_merge_file.m_fd)) { return HA_ERR_ROCKSDB_MERGE_FILE_ERR; } /* Try reading record again, should never fail. */ - if (entry->read_rec(&entry->key, &entry->val)) { + if (entry->read_rec(&entry->m_key, &entry->m_val)) { return HA_ERR_ROCKSDB_MERGE_FILE_ERR; } } @@ -403,32 +435,33 @@ int Rdb_index_merge::merge_heap_pop_and_get_next(rocksdb::Slice *const key, } int Rdb_index_merge::merge_heap_entry::read_next_chunk_from_disk(File fd) { - if (chunk_info->read_next_chunk_from_disk(fd)) { + if (m_chunk_info->read_next_chunk_from_disk(fd)) { return HA_EXIT_FAILURE; } - block = chunk_info->block.get(); + m_block = m_chunk_info->m_block.get(); return HA_EXIT_SUCCESS; } int Rdb_index_merge::merge_buf_info::read_next_chunk_from_disk(File fd) { - disk_curr_offset += curr_offset; + m_disk_curr_offset += m_curr_offset; - if (my_seek(fd, disk_curr_offset, SEEK_SET, MYF(0)) == MY_FILEPOS_ERROR) { + if (my_seek(fd, m_disk_curr_offset, SEEK_SET, MYF(0)) == MY_FILEPOS_ERROR) { // NO_LINT_DEBUG sql_print_error("Error seeking to location in merge file on disk."); return HA_EXIT_FAILURE; } /* Overwrite the old block */ - const size_t bytes_read = my_read(fd, block.get(), block_len, MYF(MY_WME)); + const size_t bytes_read = + my_read(fd, m_block.get(), m_block_len, MYF(MY_WME)); if (bytes_read == (size_t)-1) { // NO_LINT_DEBUG sql_print_error("Error reading merge file from disk."); return HA_EXIT_FAILURE; } - curr_offset = 0; + m_curr_offset = 0; return HA_EXIT_SUCCESS; } @@ -464,39 +497,39 @@ void Rdb_index_merge::read_slice(rocksdb::Slice *slice, int Rdb_index_merge::merge_heap_entry::read_rec(rocksdb::Slice *const key, rocksdb::Slice *const val) { - const uchar *block_ptr = block; - const auto orig_offset = chunk_info->curr_offset; - const auto orig_block = block; + const uchar *block_ptr = m_block; + const auto orig_offset = m_chunk_info->m_curr_offset; + const auto orig_block = m_block; /* Read key at block offset into key slice and the value into value slice*/ if (read_slice(key, &block_ptr) != 0) { return HA_EXIT_FAILURE; } - chunk_info->curr_offset += (uintptr_t)block_ptr - (uintptr_t)block; - block += (uintptr_t)block_ptr - (uintptr_t)block; + m_chunk_info->m_curr_offset += (uintptr_t)block_ptr - (uintptr_t)m_block; + m_block += (uintptr_t)block_ptr - (uintptr_t)m_block; if (read_slice(val, &block_ptr) != 0) { - chunk_info->curr_offset = orig_offset; - block = orig_block; + m_chunk_info->m_curr_offset = orig_offset; + m_block = orig_block; return HA_EXIT_FAILURE; } - chunk_info->curr_offset += (uintptr_t)block_ptr - (uintptr_t)block; - block += (uintptr_t)block_ptr - (uintptr_t)block; + m_chunk_info->m_curr_offset += (uintptr_t)block_ptr - (uintptr_t)m_block; + m_block += (uintptr_t)block_ptr - (uintptr_t)m_block; return HA_EXIT_SUCCESS; } int Rdb_index_merge::merge_heap_entry::read_slice(rocksdb::Slice *const slice, const uchar **block_ptr) { - if (!chunk_info->has_space(RDB_MERGE_REC_DELIMITER)) { + if (!m_chunk_info->has_space(RDB_MERGE_REC_DELIMITER)) { return HA_EXIT_FAILURE; } uint64 slice_len; merge_read_uint64(block_ptr, &slice_len); - if (!chunk_info->has_space(RDB_MERGE_REC_DELIMITER + slice_len)) { + if (!m_chunk_info->has_space(RDB_MERGE_REC_DELIMITER + slice_len)) { return HA_EXIT_FAILURE; } @@ -508,18 +541,18 @@ int Rdb_index_merge::merge_heap_entry::read_slice(rocksdb::Slice *const slice, size_t Rdb_index_merge::merge_heap_entry::prepare(File fd, ulonglong f_offset, ulonglong chunk_size) { - chunk_info = std::make_shared<merge_buf_info>(chunk_size); - const size_t res = chunk_info->prepare(fd, f_offset); + m_chunk_info = std::make_shared<merge_buf_info>(chunk_size); + const size_t res = m_chunk_info->prepare(fd, f_offset); if (res != (size_t)-1) { - block = chunk_info->block.get() + RDB_MERGE_CHUNK_LEN; + m_block = m_chunk_info->m_block.get() + RDB_MERGE_CHUNK_LEN; } return res; } size_t Rdb_index_merge::merge_buf_info::prepare(File fd, ulonglong f_offset) { - disk_start_offset = f_offset; - disk_curr_offset = f_offset; + m_disk_start_offset = f_offset; + m_disk_curr_offset = f_offset; /* Need to position cursor to the chunk it needs to be at on filesystem @@ -531,7 +564,8 @@ size_t Rdb_index_merge::merge_buf_info::prepare(File fd, ulonglong f_offset) { return (size_t)-1; } - const size_t bytes_read = my_read(fd, block.get(), total_size, MYF(MY_WME)); + const size_t bytes_read = + my_read(fd, m_block.get(), m_total_size, MYF(MY_WME)); if (bytes_read == (size_t)-1) { // NO_LINT_DEBUG sql_print_error("Error reading merge file from disk."); @@ -542,10 +576,10 @@ size_t Rdb_index_merge::merge_buf_info::prepare(File fd, ulonglong f_offset) { Read the first 8 bytes of each chunk, this gives us the actual size of each chunk. */ - const uchar *block_ptr = block.get(); - merge_read_uint64(&block_ptr, &total_size); - curr_offset += RDB_MERGE_CHUNK_LEN; - return total_size; + const uchar *block_ptr = m_block.get(); + merge_read_uint64(&block_ptr, &m_total_size); + m_curr_offset += RDB_MERGE_CHUNK_LEN; + return m_total_size; } /* Store key and value w/ their respective delimiters at the given offset */ @@ -557,13 +591,13 @@ void Rdb_index_merge::merge_buf_info::store_key_value( void Rdb_index_merge::merge_buf_info::store_slice(const rocksdb::Slice &slice) { /* Store length delimiter */ - merge_store_uint64(&block[curr_offset], slice.size()); + merge_store_uint64(&m_block[m_curr_offset], slice.size()); /* Store slice data */ - memcpy(&block[curr_offset + RDB_MERGE_REC_DELIMITER], slice.data(), + memcpy(&m_block[m_curr_offset + RDB_MERGE_REC_DELIMITER], slice.data(), slice.size()); - curr_offset += slice.size() + RDB_MERGE_REC_DELIMITER; + m_curr_offset += slice.size() + RDB_MERGE_REC_DELIMITER; } void Rdb_index_merge::merge_reset() { @@ -574,13 +608,13 @@ void Rdb_index_merge::merge_reset() { m_offset_tree.clear(); /* Reset sort buffer block */ - if (m_rec_buf_unsorted && m_rec_buf_unsorted->block) { - m_rec_buf_unsorted->curr_offset = 0; + if (m_rec_buf_unsorted && m_rec_buf_unsorted->m_block) { + m_rec_buf_unsorted->m_curr_offset = 0; } /* Reset output buf */ - if (m_output_buf && m_output_buf->block) { - m_output_buf->curr_offset = 0; + if (m_output_buf && m_output_buf->m_block) { + m_output_buf->m_curr_offset = 0; } } diff --git a/storage/rocksdb/rdb_index_merge.h b/storage/rocksdb/rdb_index_merge.h index 9d1469fc34e..6e53663160a 100644 --- a/storage/rocksdb/rdb_index_merge.h +++ b/storage/rocksdb/rdb_index_merge.h @@ -49,23 +49,23 @@ class Rdb_index_merge { Rdb_index_merge(const Rdb_index_merge &p) = delete; Rdb_index_merge &operator=(const Rdb_index_merge &p) = delete; -public: + public: /* Information about temporary files used in external merge sort */ struct merge_file_info { - File fd = -1; /* file descriptor */ - ulong num_sort_buffers; /* number of sort buffers in temp file */ + File m_fd = -1; /* file descriptor */ + ulong m_num_sort_buffers = 0; /* number of sort buffers in temp file */ }; /* Buffer for sorting in main memory. */ struct merge_buf_info { /* heap memory allocated for main memory sort/merge */ - std::unique_ptr<uchar[]> block; + std::unique_ptr<uchar[]> m_block; const ulonglong - block_len; /* amount of data bytes allocated for block above */ - ulonglong curr_offset; /* offset of the record pointer for the block */ - ulonglong disk_start_offset; /* where the chunk starts on disk */ - ulonglong disk_curr_offset; /* current offset on disk */ - ulonglong total_size; /* total # of data bytes in chunk */ + m_block_len; /* amount of data bytes allocated for block above */ + ulonglong m_curr_offset; /* offset of the record pointer for the block */ + ulonglong m_disk_start_offset; /* where the chunk starts on disk */ + ulonglong m_disk_curr_offset; /* current offset on disk */ + ulonglong m_total_size; /* total # of data bytes in chunk */ void store_key_value(const rocksdb::Slice &key, const rocksdb::Slice &val) MY_ATTRIBUTE((__nonnull__)); @@ -78,32 +78,33 @@ public: MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); inline bool is_chunk_finished() const { - return curr_offset + disk_curr_offset - disk_start_offset == total_size; + return m_curr_offset + m_disk_curr_offset - m_disk_start_offset == + m_total_size; } inline bool has_space(uint64 needed) const { - return curr_offset + needed <= block_len; + return m_curr_offset + needed <= m_block_len; } explicit merge_buf_info(const ulonglong merge_block_size) - : block(nullptr), block_len(merge_block_size), curr_offset(0), - disk_start_offset(0), disk_curr_offset(0), - total_size(merge_block_size) { + : m_block(nullptr), m_block_len(merge_block_size), m_curr_offset(0), + m_disk_start_offset(0), m_disk_curr_offset(0), + m_total_size(merge_block_size) { /* Will throw an exception if it runs out of memory here */ - block = std::unique_ptr<uchar[]>(new uchar[merge_block_size]); + m_block = std::unique_ptr<uchar[]>(new uchar[merge_block_size]); /* Initialize entire buffer to 0 to avoid valgrind errors */ - memset(block.get(), 0, merge_block_size); + memset(m_block.get(), 0, merge_block_size); } }; /* Represents an entry in the heap during merge phase of external sort */ struct merge_heap_entry { - std::shared_ptr<merge_buf_info> chunk_info; /* pointer to buffer info */ - uchar *block; /* pointer to heap memory where record is stored */ - const rocksdb::Comparator *const comparator; - rocksdb::Slice key; /* current key pointed to by block ptr */ - rocksdb::Slice val; + std::shared_ptr<merge_buf_info> m_chunk_info; /* pointer to buffer info */ + uchar *m_block; /* pointer to heap memory where record is stored */ + const rocksdb::Comparator *const m_comparator; + rocksdb::Slice m_key; /* current key pointed to by block ptr */ + rocksdb::Slice m_val; size_t prepare(File fd, ulonglong f_offset, ulonglong chunk_size) MY_ATTRIBUTE((__nonnull__)); @@ -118,35 +119,37 @@ public: MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); explicit merge_heap_entry(const rocksdb::Comparator *const comparator) - : chunk_info(nullptr), block(nullptr), comparator(comparator) {} + : m_chunk_info(nullptr), m_block(nullptr), m_comparator(comparator) {} }; struct merge_heap_comparator { bool operator()(const std::shared_ptr<merge_heap_entry> &lhs, const std::shared_ptr<merge_heap_entry> &rhs) { - return lhs->comparator->Compare(rhs->key, lhs->key) < 0; + return lhs->m_comparator->Compare(rhs->m_key, lhs->m_key) < 0; } }; /* Represents a record in unsorted buffer */ struct merge_record { - uchar *block; /* points to offset of key in sort buffer */ - const rocksdb::Comparator *const comparator; + uchar *m_block; /* points to offset of key in sort buffer */ + const rocksdb::Comparator *const m_comparator; bool operator<(const merge_record &record) const { - return merge_record_compare(this->block, record.block, comparator) < 0; + return merge_record_compare(this->m_block, record.m_block, m_comparator) < + 0; } merge_record(uchar *const block, const rocksdb::Comparator *const comparator) - : block(block), comparator(comparator) {} + : m_block(block), m_comparator(comparator) {} }; -private: + private: const char *m_tmpfile_path; const ulonglong m_merge_buf_size; const ulonglong m_merge_combine_read_size; - const rocksdb::Comparator *m_comparator; + const ulonglong m_merge_tmp_file_removal_delay; + rocksdb::ColumnFamilyHandle *m_cf_handle; struct merge_file_info m_merge_file; std::shared_ptr<merge_buf_info> m_rec_buf_unsorted; std::shared_ptr<merge_buf_info> m_output_buf; @@ -184,11 +187,12 @@ private: void read_slice(rocksdb::Slice *slice, const uchar *block_ptr) MY_ATTRIBUTE((__nonnull__)); -public: + public: Rdb_index_merge(const char *const tmpfile_path, const ulonglong &merge_buf_size, const ulonglong &merge_combine_read_size, - const rocksdb::Comparator *const comparator); + const ulonglong &merge_tmp_file_removal_delay, + rocksdb::ColumnFamilyHandle *cf); ~Rdb_index_merge(); int init() MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); @@ -213,6 +217,8 @@ public: MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)); void merge_reset(); + + rocksdb::ColumnFamilyHandle *get_cf() const { return m_cf_handle; } }; -} // namespace myrocks +} // namespace myrocks diff --git a/storage/rocksdb/rdb_mariadb_port.h b/storage/rocksdb/rdb_mariadb_port.h index 1661338030f..627674905cc 100644 --- a/storage/rocksdb/rdb_mariadb_port.h +++ b/storage/rocksdb/rdb_mariadb_port.h @@ -49,4 +49,7 @@ typedef struct my_io_perf_struct my_io_perf_t; std::vector<std::string> split_into_vector(const std::string& input, char delimiter); +void +mysql_bin_log_commit_pos(THD *thd, ulonglong *out_pos, const char **out_file); + #endif diff --git a/storage/rocksdb/rdb_mariadb_server_port.h b/storage/rocksdb/rdb_mariadb_server_port.h index e424fbb91f8..fe963446ebb 100644 --- a/storage/rocksdb/rdb_mariadb_server_port.h +++ b/storage/rocksdb/rdb_mariadb_server_port.h @@ -70,4 +70,7 @@ class Regex_list_handler void warn_about_bad_patterns(const Regex_list_handler* regex_list_handler, const char *name); +void print_keydup_error(TABLE *table, KEY *key, myf errflag, + const THD *thd, const char *org_table_name=NULL); + #endif diff --git a/storage/rocksdb/rdb_perf_context.cc b/storage/rocksdb/rdb_perf_context.cc index 6047a9f404e..a3cdb9698e9 100644 --- a/storage/rocksdb/rdb_perf_context.cc +++ b/storage/rocksdb/rdb_perf_context.cc @@ -179,6 +179,16 @@ bool Rdb_io_perf::start(const uint32_t perf_context_level) { return true; } +void Rdb_io_perf::update_bytes_written(const uint32_t perf_context_level, + ulonglong bytes_written) { + const rocksdb::PerfLevel perf_level = + static_cast<rocksdb::PerfLevel>(perf_context_level); + if (perf_level != rocksdb::kDisable && m_shared_io_perf_write) { + io_write_bytes += bytes_written; + io_write_requests += 1; + } +} + void Rdb_io_perf::end_and_record(const uint32_t perf_context_level) { const rocksdb::PerfLevel perf_level = static_cast<rocksdb::PerfLevel>(perf_context_level); @@ -217,6 +227,18 @@ void Rdb_io_perf::end_and_record(const uint32_t perf_context_level) { } #ifdef MARIAROCKS_NOT_YET + if (m_shared_io_perf_write && + (io_write_bytes != 0 || io_write_requests != 0)) { + my_io_perf_t io_perf_write; + io_perf_write.init(); + io_perf_write.bytes = io_write_bytes; + io_perf_write.requests = io_write_requests; + m_shared_io_perf_write->sum(io_perf_write); + m_stats->table_io_perf_write.sum(io_perf_write); + io_write_bytes = 0; + io_write_requests = 0; + } + if (m_stats) { if (rocksdb::get_perf_context()->internal_key_skipped_count != 0) { m_stats->key_skipped += diff --git a/storage/rocksdb/rdb_perf_context.h b/storage/rocksdb/rdb_perf_context.h index 9d580ff0b8a..f9b9fd48d3e 100644 --- a/storage/rocksdb/rdb_perf_context.h +++ b/storage/rocksdb/rdb_perf_context.h @@ -110,30 +110,42 @@ class Rdb_io_perf { // Context management Rdb_atomic_perf_counters *m_atomic_counters = nullptr; my_io_perf_atomic_t *m_shared_io_perf_read = nullptr; + my_io_perf_atomic_t *m_shared_io_perf_write = nullptr; ha_statistics *m_stats = nullptr; -public: + uint64_t io_write_bytes; + uint64_t io_write_requests; + + public: Rdb_io_perf(const Rdb_io_perf &) = delete; Rdb_io_perf &operator=(const Rdb_io_perf &) = delete; void init(Rdb_atomic_perf_counters *const atomic_counters, my_io_perf_atomic_t *const shared_io_perf_read, + my_io_perf_atomic_t *const shared_io_perf_write, ha_statistics *const stats) { DBUG_ASSERT(atomic_counters != nullptr); DBUG_ASSERT(shared_io_perf_read != nullptr); + DBUG_ASSERT(shared_io_perf_write != nullptr); DBUG_ASSERT(stats != nullptr); m_atomic_counters = atomic_counters; m_shared_io_perf_read = shared_io_perf_read; + m_shared_io_perf_write = shared_io_perf_write; m_stats = stats; + + io_write_bytes = 0; + io_write_requests = 0; } bool start(const uint32_t perf_context_level); + void update_bytes_written(const uint32_t perf_context_level, + ulonglong bytes_written); void end_and_record(const uint32_t perf_context_level); explicit Rdb_io_perf() : m_atomic_counters(nullptr), m_shared_io_perf_read(nullptr), - m_stats(nullptr) {} + m_stats(nullptr), io_write_bytes(0), io_write_requests(0) {} }; } // namespace myrocks diff --git a/storage/rocksdb/rdb_utils.cc b/storage/rocksdb/rdb_utils.cc index f6275acce36..b347ac8bafe 100644 --- a/storage/rocksdb/rdb_utils.cc +++ b/storage/rocksdb/rdb_utils.cc @@ -303,6 +303,18 @@ bool rdb_database_exists(const std::string &db_name) { return true; } +void rdb_log_status_error(const rocksdb::Status &s, const char *msg) { + if (msg == nullptr) { + // NO_LINT_DEBUG + sql_print_error("RocksDB: status error, code: %d, error message: %s", + s.code(), s.ToString().c_str()); + return; + } + + // NO_LINT_DEBUG + sql_print_error("RocksDB: %s, Status Code: %d, Status: %s", msg, s.code(), + s.ToString().c_str()); +} /* @brief @@ -340,18 +352,4 @@ const char *get_rocksdb_supported_compression_types() return compression_methods_buf.c_str(); } -void rdb_log_status_error(const rocksdb::Status &s, const char *msg) { - if (msg == nullptr) { - // NO_LINT_DEBUG - sql_print_error("RocksDB: status error, code: %d, error message: %s", - s.code(), s.ToString().c_str()); - return; - } - - // NO_LINT_DEBUG - sql_print_error("RocksDB: %s, Status Code: %d, Status: %s", msg, s.code(), - s.ToString().c_str()); -} - - } // namespace myrocks diff --git a/storage/rocksdb/rocksdb b/storage/rocksdb/rocksdb -Subproject 857e9960be8a5e4ee3aecfd7d27fe7b1ef6bb35 +Subproject 9a970c81af9807071bd690f4c808c5045866291 diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc index d5773de8593..fdc51685f7d 100644 --- a/storage/sphinx/ha_sphinx.cc +++ b/storage/sphinx/ha_sphinx.cc @@ -1713,13 +1713,16 @@ bool CSphSEQuery::ParseField ( char * sField ) char * sLat = sValue; char * p = sValue; - if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0'; + if (!( p = strchr ( p, ',' ) )) break; + *p++ = '\0'; char * sLong = p; - if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0'; + if (!( p = strchr ( p, ',' ) )) break; + *p++ = '\0'; char * sLatVal = p; - if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0'; + if (!( p = strchr ( p, ',' ) )) break; + *p++ = '\0'; char * sLongVal = p; m_sGeoLatAttr = chop(sLat); @@ -1788,7 +1791,8 @@ bool CSphSEQuery::ParseField ( char * sField ) while ( sRest ) { char * sId = sRest; - if (!( sRest = strchr ( sRest, ':' ) )) break; *sRest++ = '\0'; + if (!( sRest = strchr ( sRest, ':' ) )) break; + *sRest++ = '\0'; if (!( sRest - sId )) break; sValue = sRest; diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt index 73e4bf37a06..b0ed6e41188 100644 --- a/storage/tokudb/CMakeLists.txt +++ b/storage/tokudb/CMakeLists.txt @@ -38,6 +38,7 @@ IF(NOT LIBJEMALLOC) ENDIF() MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG) +MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") ############################################ MARK_AS_ADVANCED(BUILDNAME) diff --git a/storage/tokudb/PerconaFT/third_party/snappy-1.1.2/CMakeLists.txt b/storage/tokudb/PerconaFT/third_party/snappy-1.1.2/CMakeLists.txt index f9d93917627..c241f7918ee 100644 --- a/storage/tokudb/PerconaFT/third_party/snappy-1.1.2/CMakeLists.txt +++ b/storage/tokudb/PerconaFT/third_party/snappy-1.1.2/CMakeLists.txt @@ -1,3 +1,4 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) set(snappy_srcs diff --git a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure index 2d3e2062f0d..bfa3d4ad4df 100755 --- a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure +++ b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure @@ -19870,98 +19870,6 @@ if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY" fi -if test "$GCC" = yes ; then - # Enable as much warnings as possible. These commented warnings won't - # work for this package though: - # * -Wunreachable-code breaks several assert(0) cases, which are - # backed up with "return LZMA_PROG_ERROR". - # * -Wcast-qual would break various things where we need a non-const - # pointer although we don't modify anything through it. - # * -Wcast-align breaks optimized CRC32 and CRC64 implementation - # on some architectures (not on x86), where this warning is bogus, - # because we take care of correct alignment. - # * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations - # don't seem so useful here; at least the last one gives some - # warnings which are not bugs. - for NEW_FLAG in \ - -Wall \ - -Wextra \ - -Wformat=2 \ - -Winit-self \ - -Wmissing-include-dirs \ - -Wstrict-aliasing \ - -Wfloat-equal \ - -Wundef \ - -Wshadow \ - -Wpointer-arith \ - -Wbad-function-cast \ - -Wwrite-strings \ - -Wlogical-op \ - -Waggregate-return \ - -Wstrict-prototypes \ - -Wold-style-definition \ - -Wmissing-prototypes \ - -Wmissing-declarations \ - -Wmissing-noreturn \ - -Wredundant-decls - do - { $as_echo "$as_me:$LINENO: checking if $CC accepts $NEW_FLAG" >&5 -$as_echo_n "checking if $CC accepts $NEW_FLAG... " >&6; } - OLD_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $NEW_FLAG" - cat >conftest.$ac_ext <<_ACEOF -void foo(void) { } -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - - AM_CFLAGS="$AM_CFLAGS $NEW_FLAG" - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$OLD_CFLAGS" - done - - # Check whether --enable-werror was given. -if test "${enable_werror+set}" = set; then - enableval=$enable_werror; -else - enable_werror=no -fi - - if test "x$enable_werror" = "xyes"; then - AM_CFLAGS="$AM_CFLAGS -Werror" - fi -fi - - ############################################################################### # Create the makefiles and config.h ############################################################################### diff --git a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac index 148f174169e..e2bb87781c8 100644 --- a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac +++ b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac @@ -569,63 +569,6 @@ if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY" fi -if test "$GCC" = yes ; then - # Enable as much warnings as possible. These commented warnings won't - # work for this package though: - # * -Wunreachable-code breaks several assert(0) cases, which are - # backed up with "return LZMA_PROG_ERROR". - # * -Wcast-qual would break various things where we need a non-const - # pointer although we don't modify anything through it. - # * -Wcast-align breaks optimized CRC32 and CRC64 implementation - # on some architectures (not on x86), where this warning is bogus, - # because we take care of correct alignment. - # * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations - # don't seem so useful here; at least the last one gives some - # warnings which are not bugs. - for NEW_FLAG in \ - -Wall \ - -Wextra \ - -Wformat=2 \ - -Winit-self \ - -Wmissing-include-dirs \ - -Wstrict-aliasing \ - -Wfloat-equal \ - -Wundef \ - -Wshadow \ - -Wpointer-arith \ - -Wbad-function-cast \ - -Wwrite-strings \ - -Wlogical-op \ - -Waggregate-return \ - -Wstrict-prototypes \ - -Wold-style-definition \ - -Wmissing-prototypes \ - -Wmissing-declarations \ - -Wmissing-noreturn \ - -Wredundant-decls - do - AC_MSG_CHECKING([if $CC accepts $NEW_FLAG]) - OLD_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $NEW_FLAG" - AC_COMPILE_IFELSE([void foo(void) { }], [ - AM_CFLAGS="$AM_CFLAGS $NEW_FLAG" - AC_MSG_RESULT([yes]) - ], [ - AC_MSG_RESULT([no]) - ]) - CFLAGS="$OLD_CFLAGS" - done - - AC_ARG_ENABLE([werror], - AC_HELP_STRING([--enable-werror], [Enable -Werror to abort - compilation on all compiler warnings.]), - [], [enable_werror=no]) - if test "x$enable_werror" = "xyes"; then - AM_CFLAGS="$AM_CFLAGS -Werror" - fi -fi - - ############################################################################### # Create the makefiles and config.h ############################################################################### diff --git a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/libtool.m4 b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/libtool.m4 index 39ba996cb96..faec0c309e8 100644 --- a/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/libtool.m4 +++ b/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/libtool.m4 @@ -1021,7 +1021,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { @@ -4826,9 +4826,9 @@ _LT_EOF # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE(int foo(void) {}, + AC_LINK_IFELSE([AC_LANG_SOURCE([int foo(void) {}]), _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - ) + ]) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index 56330bd68cb..a73de37bbd7 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -5112,7 +5112,6 @@ static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)), switch (count) { - /* Fall through all cases!!! */ case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800; /* fall through */ case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0; @@ -7497,7 +7496,6 @@ my_wc_mb_utf8mb4(CHARSET_INFO *cs __attribute__((unused)), return MY_CS_TOOSMALLN(count); switch (count) { - /* Fall through all cases!!! */ case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000; /* fall through */ case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800; @@ -7532,7 +7530,6 @@ my_wc_mb_utf8mb4_no_range(CHARSET_INFO *cs __attribute__((unused)), switch (count) { - /* Fall through all cases!!! */ case 4: r[3]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000; /* fall through */ case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800; diff --git a/strings/dtoa.c b/strings/dtoa.c index 0da850bd1ca..9e0f7f4f43d 100644 --- a/strings/dtoa.c +++ b/strings/dtoa.c @@ -1466,11 +1466,9 @@ static double my_strtod_int(const char *s00, char **se, int *error, char *buf, s esign= 0; if (++s < end) switch (c= *s) { - case '-': - esign= 1; - /* fall through */ - case '+': - c= *++s; + case '-': esign= 1; + /* fall through */ + case '+': c= *++s; } if (s < end && c >= '0' && c <= '9') { diff --git a/strings/json_lib.c b/strings/json_lib.c index 176aa22c1e4..8e928e2c522 100644 --- a/strings/json_lib.c +++ b/strings/json_lib.c @@ -1041,7 +1041,7 @@ static int json_path_transitions[N_PATH_STATES][N_PATH_CLASSES]= /* PT */ { PS_OK, JE_SYN, PS_AST, PS_AR, JE_SYN, PS_KEY, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_NOT_JSON_CHR, JE_BAD_CHR}, -/* AR */ { JE_EOS, JE_SYN, PS_AWD, JE_SYN, PS_PT, JE_SYN, PS_Z, +/* AR */ { JE_EOS, JE_SYN, PS_AWD, JE_SYN, JE_SYN, JE_SYN, PS_Z, PS_INT, JE_SYN, JE_SYN, PS_SAR, JE_SYN, JE_SYN, JE_SYN, JE_NOT_JSON_CHR, JE_BAD_CHR}, /* SAR */ { JE_EOS, JE_SYN, PS_AWD, JE_SYN, PS_PT, JE_SYN, PS_Z, diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 9ef85b42d5c..dd1e10e7529 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -19637,6 +19637,229 @@ static void test_mdev12579() myquery(rc); } +/* Test test_mdev14013 sql_mode=EMPTY_STRING_IS_NULL */ + +static void test_mdev14013() +{ + MYSQL *lmysql; + MYSQL_STMT *stmt1; + MYSQL_BIND my_bind[2]; + MYSQL_RES *result; + char str_data[20]; + unsigned int count; + int rc; + char query[MAX_TEST_QUERY_LENGTH]; + + myheader("test_mdev14013"); + + if (!opt_silent) + fprintf(stdout, "\n Establishing a test connection ..."); + if (!(lmysql= mysql_client_init(NULL))) + { + myerror("mysql_client_init() failed"); + exit(1); + } + if (!(mysql_real_connect(lmysql, opt_host, opt_user, + opt_password, current_db, opt_port, + opt_unix_socket, 0))) + { + myerror("connection failed"); + exit(1); + } + mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true); + if (!opt_silent) + fprintf(stdout, "OK"); + + /* set AUTOCOMMIT to ON*/ + mysql_autocommit(lmysql, TRUE); + + strmov(query, "SET SQL_MODE= \"EMPTY_STRING_IS_NULL\""); + if (!opt_silent) + fprintf(stdout, "\n With %s", query); + rc= mysql_query(mysql, query); + myquery(rc); + + rc= mysql_query(lmysql, "DROP TABLE IF EXISTS test_mdev14013"); + myquery(rc); + + rc= mysql_query(lmysql, "CREATE TABLE test_mdev14013(id int, val varchar(10))"); + myquery(rc); + + strmov(query, "INSERT INTO test_mdev14013(id,val) VALUES(?,?)"); + stmt1= mysql_simple_prepare(mysql, query); + check_stmt(stmt1); + + verify_param_count(stmt1, 2); + + /* + We need to bzero bind structure because mysql_stmt_bind_param checks all + its members. + */ + bzero((char*) my_bind, sizeof(my_bind)); + + my_bind[0].buffer= (void *)&count; + my_bind[0].buffer_type= MYSQL_TYPE_LONG; + count= 100; + + strcpy(str_data,""); + my_bind[1].buffer_type= MYSQL_TYPE_STRING; + my_bind[1].buffer= (char *) str_data; + my_bind[1].buffer_length= strlen(str_data); + + rc= mysql_stmt_bind_param(stmt1, my_bind); + + rc= mysql_stmt_execute(stmt1); + check_execute(stmt1, rc); + + verify_st_affected_rows(stmt1, 1); + + rc= mysql_stmt_close(stmt1); + + strmov(query, "SET SQL_MODE= default"); + if (!opt_silent) + fprintf(stdout, "\n With %s\n", query); + rc= mysql_query(mysql, query); + myquery(rc); + + strmov(query, "INSERT INTO test_mdev14013(id,val) VALUES(?,?)"); + stmt1= mysql_simple_prepare(mysql, query); + check_stmt(stmt1); + + count= 200; + rc= mysql_stmt_bind_param(stmt1, my_bind); + + rc= mysql_stmt_execute(stmt1); + check_execute(stmt1, rc); + + verify_st_affected_rows(stmt1, 1); + + rc= mysql_stmt_close(stmt1); + if (!opt_silent) + fprintf(stdout, "\n test_mdev14013(x) returned: %d", rc); + DIE_UNLESS( rc == 0); + + rc= mysql_query(mysql, "SELECT id, val FROM test_mdev14013 order by id"); + myquery(rc); + + result= mysql_store_result(mysql); + mytest(result); + + rc= my_process_result_set(result); + DIE_UNLESS(rc == 2); + mysql_free_result(result); + + rc= mysql_query(mysql, "SELECT id, val FROM test_mdev14013 where val is null"); + myquery(rc); + + result= mysql_store_result(mysql); + mytest(result); + + rc= my_process_result_set(result); + DIE_UNLESS(rc == 1); + mysql_free_result(result); + + myquery(mysql_query(mysql, "drop table test_mdev14013")); + mysql_close(lmysql); +} + +static void test_mdev14013_1() +{ + MYSQL *lmysql; + MYSQL_STMT *stmt1; + MYSQL_BIND my_bind[3]; + char str_data[3][255]; + int rc; + char query[MAX_TEST_QUERY_LENGTH]; + + myheader("test_mdev14013_1"); + + if (!opt_silent) + fprintf(stdout, "\n Establishing a test connection ..."); + if (!(lmysql= mysql_client_init(NULL))) + { + myerror("mysql_client_init() failed"); + exit(1); + } + if (!(mysql_real_connect(lmysql, opt_host, opt_user, + opt_password, current_db, opt_port, + opt_unix_socket, 0))) + { + myerror("connection failed"); + exit(1); + } + mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true); + if (!opt_silent) + fprintf(stdout, "OK"); + + /* set AUTOCOMMIT to ON*/ + mysql_autocommit(lmysql, TRUE); + + strmov(query, "SET SQL_MODE= \"EMPTY_STRING_IS_NULL\""); + if (!opt_silent) + fprintf(stdout, "\n With %s", query); + rc= mysql_query(mysql, query); + myquery(rc); + + rc= mysql_query(mysql, + "CREATE OR REPLACE PROCEDURE test_mdev14013_p1(" + " IN i1 VARCHAR(255) , " + " INOUT io1 VARCHAR(255), " + " OUT o2 VARBINARY(255)) " + "BEGIN " + " SET o2 = concat(concat(coalesce(i1,'i1 is null'),' - '),coalesce(i1,'io1 is null')); " + "END"); + myquery(rc); + + strmov(query, "CALL test_mdev14013_p1(?, ?, ?)"); + stmt1= mysql_simple_prepare(mysql, query); + check_stmt(stmt1); + + /* Init PS-parameters. */ + + bzero((char *) my_bind, sizeof (my_bind)); + + strcpy(str_data[0],""); + my_bind[0].buffer_type= MYSQL_TYPE_STRING; + my_bind[0].buffer= (char *) str_data[0]; + my_bind[0].buffer_length= strlen(str_data[0]); + + strcpy(str_data[1],""); + my_bind[1].buffer_type= MYSQL_TYPE_STRING; + my_bind[1].buffer= (char *) str_data[1]; + my_bind[1].buffer_length= strlen(str_data[1]); + + strcpy(str_data[2],""); + my_bind[2].buffer_type= MYSQL_TYPE_STRING; + my_bind[2].buffer= (char *) str_data[2]; + my_bind[2].buffer_length= strlen(str_data[2]); + + /* Bind parameters. */ + + rc= mysql_stmt_bind_param(stmt1, my_bind); + check_execute(stmt1, rc); + /* Execute */ + + rc= mysql_stmt_execute(stmt1); + check_execute(stmt1, rc); + + my_bind[0].buffer_length= sizeof(str_data[0]); + my_bind[1].buffer_length= sizeof(str_data[1]); + + mysql_stmt_bind_result(stmt1, my_bind); + rc= mysql_stmt_fetch(stmt1); + + if (!opt_silent) + fprintf(stdout,"\nstr_data[1]=%s\n",str_data[1]); + + DIE_UNLESS(strcmp(str_data[1], "i1 is null - io1 is null") == 0); + + rc= mysql_stmt_close(stmt1); + DIE_UNLESS( rc == 0); + + myquery(mysql_query(mysql, "drop procedure test_mdev14013_p1")); + mysql_close(lmysql); +} + typedef struct { char sig[12]; @@ -20093,6 +20316,8 @@ static struct my_tests_st my_tests[]= { { "test_big_packet", test_big_packet }, { "test_prepare_analyze", test_prepare_analyze }, { "test_mdev12579", test_mdev12579 }, + { "test_mdev14013", test_mdev14013 }, + { "test_mdev14013_1", test_mdev14013_1 }, #ifndef EMBEDDED_LIBRARY { "test_proxy_header", test_proxy_header}, #endif diff --git a/unittest/mysys/ma_dyncol-t.c b/unittest/mysys/ma_dyncol-t.c index 3b43c10a6a8..124f16e15be 100644 --- a/unittest/mysys/ma_dyncol-t.c +++ b/unittest/mysys/ma_dyncol-t.c @@ -124,7 +124,7 @@ void test_value_single_double(double num, const char *name) if (mariadb_dyncol_get_num(&str, 1, &res)) goto err; rc= (res.type == DYN_COL_DOUBLE) && (res.x.double_value == num); - num= res.x.ulong_value; + num= res.x.double_value; err: ok(rc, "%s - %lf", name, num); /* cleanup */ diff --git a/unittest/mysys/my_getopt-t.c b/unittest/mysys/my_getopt-t.c index 39814d76690..3e16d79424e 100644 --- a/unittest/mysys/my_getopt-t.c +++ b/unittest/mysys/my_getopt-t.c @@ -72,7 +72,7 @@ void run(const char *arg, ...) arg= va_arg(ap, char*); } va_end(ap); - arg_c= arg_v - arg_s; + arg_c= (int)(arg_v - arg_s); arg_v= arg_s; res= handle_options(&arg_c, &arg_v, mopts_options, 0); } diff --git a/win/packaging/ca/CustomAction.cpp b/win/packaging/ca/CustomAction.cpp index 9281ce27d34..c0062ddcdd1 100644 --- a/win/packaging/ca/CustomAction.cpp +++ b/win/packaging/ca/CustomAction.cpp @@ -767,6 +767,49 @@ extern "C" UINT __stdcall PresetDatabaseProperties(MSIHANDLE hInstall) LExit: return WcaFinalize(er); } + +static BOOL FindErrorLog(const wchar_t *dir, wchar_t * ErrorLogFile, size_t ErrorLogLen) +{ + WIN32_FIND_DATA FindFileData; + HANDLE hFind; + wchar_t name[MAX_PATH]; + wcsncpy_s(name,dir, MAX_PATH); + wcsncat_s(name,L"\\*.err", MAX_PATH); + hFind = FindFirstFileW(name,&FindFileData); + if (hFind != INVALID_HANDLE_VALUE) + { + _snwprintf(ErrorLogFile, ErrorLogLen, + L"%s\\%s",dir, FindFileData.cFileName); + FindClose(hFind); + return TRUE; + } + return FALSE; +} + +static void DumpErrorLog(const wchar_t *dir) +{ + wchar_t filepath[MAX_PATH]; + if (!FindErrorLog(dir, filepath, MAX_PATH)) + return; + FILE *f= _wfopen(filepath, L"r"); + if (!f) + return; + char buf[2048]; + WcaLog(LOGMSG_STANDARD,"=== dumping error log %S === ",filepath); + while (fgets(buf, sizeof(buf), f)) + { + /* Strip off EOL chars. */ + size_t len = strlen(buf); + if (len > 0 && buf[len-1] == '\n') + buf[--len]= 0; + if (len > 0 && buf[len-1] == '\r') + buf[--len]= 0; + WcaLog(LOGMSG_STANDARD,"%s",buf); + } + fclose(f); + WcaLog(LOGMSG_STANDARD,"=== end of error log ==="); +} + /* Remove service and data directory created by CreateDatabase operation */ extern "C" UINT __stdcall CreateDatabaseRollback(MSIHANDLE hInstall) { @@ -774,7 +817,6 @@ extern "C" UINT __stdcall CreateDatabaseRollback(MSIHANDLE hInstall) UINT er = ERROR_SUCCESS; wchar_t* service= 0; wchar_t* dir= 0; - hr = WcaInitialize(hInstall, __FUNCTION__); ExitOnFailure(hr, "Failed to initialize"); WcaLog(LOGMSG_STANDARD, "Initialized."); @@ -804,6 +846,7 @@ extern "C" UINT __stdcall CreateDatabaseRollback(MSIHANDLE hInstall) } if(dir) { + DumpErrorLog(dir); ExecRemoveDataDirectory(dir); } LExit: |