diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml index 0e8e37f9..e015f01f 100644 --- a/.github/workflows/rust.yaml +++ b/.github/workflows/rust.yaml @@ -38,7 +38,7 @@ jobs: name: Download duckdb with: repository: "duckdb/duckdb" - tag: "v0.7.0" + tag: "v0.7.1" fileName: ${{ matrix.duckdb }} out-file-path: . diff --git a/Cargo.toml b/Cargo.toml index b65e7ba8..9a00f97f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "duckdb" -version = "0.7.0" +version = "0.7.1" authors = ["wangfenjin "] edition = "2021" description = "Ergonomic wrapper for DuckDB" @@ -69,7 +69,7 @@ tempdir = "0.3.7" [dependencies.libduckdb-sys] path = "libduckdb-sys" -version = "0.7.0" +version = "0.7.1" [package.metadata.docs.rs] features = [] diff --git a/libduckdb-sys/Cargo.toml b/libduckdb-sys/Cargo.toml index 90d48fa3..d115d2aa 100644 --- a/libduckdb-sys/Cargo.toml +++ b/libduckdb-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libduckdb-sys" -version = "0.7.0" +version = "0.7.1" authors = ["wangfenjin "] edition = "2021" build = "build.rs" diff --git a/libduckdb-sys/duckdb/duckdb.cpp b/libduckdb-sys/duckdb/duckdb.cpp index 1a7e3de7..99fa044c 100644 --- a/libduckdb-sys/duckdb/duckdb.cpp +++ b/libduckdb-sys/duckdb/duckdb.cpp @@ -583,7 +583,7 @@ class IndexCatalogEntry : public StandardEntry { public: string ToSQL() override; - void Serialize(duckdb::MetaBlockWriter &serializer); + void Serialize(Serializer &serializer); static unique_ptr Deserialize(Deserializer &source, ClientContext &context); virtual string GetSchemaName() = 0; @@ -1366,6 +1366,7 @@ class ViewCatalogEntry : public StandardEntry { + //===----------------------------------------------------------------------===// // DuckDB // @@ -1524,7 +1525,7 @@ struct ClientData { //! The set of temporary objects that belong to this client shared_ptr temporary_objects; //! The set of bound prepared statements that belong to this client - unordered_map> prepared_statements; + case_insensitive_map_t> prepared_statements; //! The writer used to log queries (if logging is enabled) unique_ptr log_query_writer; @@ -5776,6 +5777,11 @@ class DatabaseInstance; class TemporaryDirectoryHandle; struct EvictionQueue; +struct TemporaryFileInformation { + string path; + idx_t size; +}; + //! The buffer manager is in charge of handling memory management for the database. It hands out memory buffers that can //! be used by the database internally. // @@ -5851,6 +5857,9 @@ class BufferManager { DUCKDB_API void ReserveMemory(idx_t size); DUCKDB_API void FreeReservedMemory(idx_t size); + //! Returns a list of all temporary files + vector GetTemporaryFiles(); + private: //! Register an in-memory buffer of arbitrary size, as long as it is >= BLOCK_SIZE. can_destroy signifies whether or //! not the buffer can be destroyed when unpinned, or whether or not it needs to be written to a temporary file so @@ -6297,11 +6306,11 @@ class Index { IndexType type; //! Associated table io manager TableIOManager &table_io_manager; - //! Column identifiers to extract from the base table + //! Column identifiers to extract key columns from the base table vector column_ids; - //! Unordered_set of column_ids used by the index + //! Unordered set of column_ids used by the index unordered_set column_id_set; - //! Unbound expressions used by the index + //! Unbound expressions used by the index during optimizations vector> unbound_expressions; //! The physical types stored in the index vector types; @@ -6321,94 +6330,103 @@ class Index { bool track_memory; public: - //! Initialize a scan on the index with the given expression and column ids - //! to fetch from the base table when we only have one query predicate + //! Initialize a single predicate scan on the index with the given expression and column IDs virtual unique_ptr InitializeScanSinglePredicate(const Transaction &transaction, const Value &value, ExpressionType expressionType) = 0; - //! Initialize a scan on the index with the given expression and column ids - //! to fetch from the base table for two query predicates + //! Initialize a two predicate scan on the index with the given expression and column IDs virtual unique_ptr InitializeScanTwoPredicates(Transaction &transaction, const Value &low_value, ExpressionType low_expression_type, const Value &high_value, ExpressionType high_expression_type) = 0; - //! Perform a lookup on the index, fetching up to max_count result ids. Returns true if all row ids were fetched, - //! and false otherwise. + //! Performs a lookup on the index, fetching up to max_count result IDs. Returns true if all row IDs were fetched, + //! and false otherwise virtual bool Scan(Transaction &transaction, DataTable &table, IndexScanState &state, idx_t max_count, vector &result_ids) = 0; //! Obtain a lock on the index virtual void InitializeLock(IndexLock &state); - //! Called when data is appended to the index. The lock obtained from InitializeAppend must be held + //! Called when data is appended to the index. The lock obtained from InitializeLock must be held virtual bool Append(IndexLock &state, DataChunk &entries, Vector &row_identifiers) = 0; + //! Obtains a lock and calls Append while holding that lock bool Append(DataChunk &entries, Vector &row_identifiers); - //! Verify that data can be appended to the index + //! Verify that data can be appended to the index without a constraint violation virtual void VerifyAppend(DataChunk &chunk) = 0; - //! Verify that data can be appended to the index + //! Verify that data can be appended to the index without a constraint violation using the conflict manager virtual void VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) = 0; - //! Verify that data can be appended to the index for foreign key constraint - virtual void VerifyAppendForeignKey(DataChunk &chunk) = 0; - //! Verify that data can be delete from the index for foreign key constraint - virtual void VerifyDeleteForeignKey(DataChunk &chunk) = 0; + //! Performs constraint checking for a chunk of input data + virtual void CheckConstraintsForChunk(DataChunk &input, ConflictManager &conflict_manager) = 0; - //! Called when data inside the index is Deleted + //! Delete a chunk of entries from the index. The lock obtained from InitializeLock must be held virtual void Delete(IndexLock &state, DataChunk &entries, Vector &row_identifiers) = 0; + //! Obtains a lock and calls Delete while holding that lock void Delete(DataChunk &entries, Vector &row_identifiers); - //! Insert data into the index. Does not lock the index. + //! Insert a chunk of entries into the index virtual bool Insert(IndexLock &lock, DataChunk &input, Vector &row_identifiers) = 0; - //! Merge other_index into this index. + //! Merge another index into this index. The lock obtained from InitializeLock must be held, and the other + //! index must also be locked during the merge virtual bool MergeIndexes(IndexLock &state, Index *other_index) = 0; + //! Obtains a lock and calls MergeIndexes while holding that lock bool MergeIndexes(Index *other_index); //! Returns the string representation of an index virtual string ToString() = 0; - //! Verifies that the memory_size value of the index matches its actual size + //! Verifies that the in-memory size value of the index matches its actual size virtual void Verify() = 0; + //! Increases the memory size by the difference between the old size and the current size + //! and performs verifications + virtual void IncreaseAndVerifyMemorySize(idx_t old_memory_size) = 0; - //! Returns true if the index is affected by updates on the specified column ids, and false otherwise - bool IndexIsUpdated(const vector &column_ids) const; + //! Increases the in-memory size value + inline void IncreaseMemorySize(idx_t size) { + memory_size += size; + }; + //! Decreases the in-memory size value + inline void DecreaseMemorySize(idx_t size) { + D_ASSERT(memory_size >= size); + memory_size -= size; + }; - //! Returns how many of the input values were found in the 'input' chunk, with the option to also record what those - //! matches were. For this purpose, nulls count as a match, and are returned in 'null_count' - virtual void LookupValues(DataChunk &input, ConflictManager &conflict_manager) = 0; + //! Returns true if the index is affected by updates on the specified column IDs, and false otherwise + bool IndexIsUpdated(const vector &column_ids) const; //! Returns unique flag bool IsUnique() { return (constraint_type == IndexConstraintType::UNIQUE || constraint_type == IndexConstraintType::PRIMARY); } - //! Returns primary flag + //! Returns primary key flag bool IsPrimary() { return (constraint_type == IndexConstraintType::PRIMARY); } - //! Returns foreign flag + //! Returns foreign key flag bool IsForeign() { return (constraint_type == IndexConstraintType::FOREIGN); } - //! Serializes the index and returns the pair of block_id offset positions - virtual BlockPointer Serialize(duckdb::MetaBlockWriter &writer); - BlockPointer GetBlockPointer(); - //! Returns block/offset of where index was most recently serialized. + //! Serializes the index and returns the pair of block_id offset positions + virtual BlockPointer Serialize(MetaBlockWriter &writer); + //! Returns the serialized data pointer to the block and offset of the serialized index BlockPointer GetSerializedDataPointer() const { return serialized_data_pointer; } -protected: + //! Execute the index expressions on an input chunk void ExecuteExpressions(DataChunk &input, DataChunk &result); - //! Lock used for updating the index +protected: + //! Lock used for any changes to the index mutex lock; - - //! Pointer to most recently checkpointed index data. + //! Pointer to serialized index data BlockPointer serialized_data_pointer; private: - //! Bound expressions used by the index + //! Bound expressions used during expression execution vector> bound_expressions; - //! Expression executor for the index expressions + //! Expression executor to execute the index expressions ExpressionExecutor executor; + //! Bind the unbound expressions of the index unique_ptr BindExpression(unique_ptr expr); }; @@ -6541,7 +6559,7 @@ class DefaultTypeGenerator : public DefaultGenerator { //===----------------------------------------------------------------------===// // DuckDB // -// duckdb/main/extension_functions.hpp +// duckdb/main/extension_entries.hpp // // //===----------------------------------------------------------------------===// @@ -6552,12 +6570,12 @@ class DefaultTypeGenerator : public DefaultGenerator { namespace duckdb { -struct ExtensionFunction { - char function[48]; +struct ExtensionEntry { + char name[48]; char extension[48]; }; -static constexpr ExtensionFunction EXTENSION_FUNCTIONS[] = { +static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = { {"->>", "json"}, {"array_to_json", "json"}, {"create_fts_index", "fts"}, @@ -6570,9 +6588,9 @@ static constexpr ExtensionFunction EXTENSION_FUNCTIONS[] = { {"from_json", "json"}, {"from_json_strict", "json"}, {"from_substrait", "substrait"}, + {"from_substrait_json", "substrait"}, {"get_substrait", "substrait"}, {"get_substrait_json", "substrait"}, - {"from_substrait_json", "substrait"}, {"icu_calendar_names", "icu"}, {"icu_sort_key", "icu"}, {"json", "json"}, @@ -6628,6 +6646,28 @@ static constexpr ExtensionFunction EXTENSION_FUNCTIONS[] = { {"visualize_json_profiling_output", "visualizer"}, {"visualize_last_profiling_output", "visualizer"}, }; + +static constexpr ExtensionEntry EXTENSION_SETTINGS[] = { + {"binary_as_string", "parquet"}, + {"calendar", "icu"}, + {"http_retries", "httpfs"}, + {"http_retry_backoff", "httpfs"}, + {"http_retry_wait_ms", "httpfs"}, + {"http_timeout", "httpfs"}, + {"s3_access_key_id", "httpfs"}, + {"s3_endpoint", "httpfs"}, + {"s3_region", "httpfs"}, + {"s3_secret_access_key", "httpfs"}, + {"s3_session_token", "httpfs"}, + {"s3_uploader_max_filesize", "httpfs"}, + {"s3_uploader_max_parts_per_file", "httpfs"}, + {"s3_uploader_thread_limit", "httpfs"}, + {"s3_url_compatibility_mode", "httpfs"}, + {"s3_url_style", "httpfs"}, + {"s3_use_ssl", "httpfs"}, + {"sqlite_all_varchar", "sqlite_scanner"}, + {"timezone", "icu"}, +}; } // namespace duckdb @@ -7074,6 +7114,20 @@ CatalogEntry *Catalog::CreateCollation(CatalogTransaction transaction, SchemaCat return schema->CreateCollation(transaction, info); } +//===--------------------------------------------------------------------===// +// Index +//===--------------------------------------------------------------------===// +CatalogEntry *Catalog::CreateIndex(CatalogTransaction transaction, CreateIndexInfo *info) { + auto &context = transaction.GetContext(); + return CreateIndex(context, info); +} + +CatalogEntry *Catalog::CreateIndex(ClientContext &context, CreateIndexInfo *info) { + auto schema = GetSchema(context, info->schema); + auto table = GetEntry(context, schema->name, info->table->table_name); + return schema->CreateIndex(context, info, table); +} + //===--------------------------------------------------------------------===// // Lookup Structures //===--------------------------------------------------------------------===// @@ -7140,17 +7194,26 @@ SimilarCatalogEntry Catalog::SimilarEntryInSchemas(ClientContext &context, const return result; } -string FindExtension(const string &function_name) { - auto size = sizeof(EXTENSION_FUNCTIONS) / sizeof(ExtensionFunction); - auto it = std::lower_bound( - EXTENSION_FUNCTIONS, EXTENSION_FUNCTIONS + size, function_name, - [](const ExtensionFunction &element, const string &value) { return element.function < value; }); - if (it != EXTENSION_FUNCTIONS + size && it->function == function_name) { +string FindExtensionGeneric(const string &name, const ExtensionEntry entries[], idx_t size) { + auto lcase = StringUtil::Lower(name); + auto it = std::lower_bound(entries, entries + size, lcase, + [](const ExtensionEntry &element, const string &value) { return element.name < value; }); + if (it != entries + size && it->name == lcase) { return it->extension; } return ""; } +string FindExtensionForFunction(const string &name) { + idx_t size = sizeof(EXTENSION_FUNCTIONS) / sizeof(ExtensionEntry); + return FindExtensionGeneric(name, EXTENSION_FUNCTIONS, size); +} + +string FindExtensionForSetting(const string &name) { + idx_t size = sizeof(EXTENSION_SETTINGS) / sizeof(ExtensionEntry); + return FindExtensionGeneric(name, EXTENSION_SETTINGS, size); +} + vector GetCatalogEntries(ClientContext &context, const string &catalog, const string &schema) { vector entries; auto &search_path = *context.client_data->catalog_search_path; @@ -7215,6 +7278,26 @@ void FindMinimalQualification(ClientContext &context, const string &catalog_name qualify_schema = true; } +CatalogException Catalog::UnrecognizedConfigurationError(ClientContext &context, const string &name) { + // check if the setting exists in any extensions + auto extension_name = FindExtensionForSetting(name); + if (!extension_name.empty()) { + return CatalogException( + "Setting with name \"%s\" is not in the catalog, but it exists in the %s extension.\n\nTo " + "install and load the extension, run:\nINSTALL %s;\nLOAD %s;", + name, extension_name, extension_name, extension_name); + } + // the setting is not in an extension + // get a list of all options + vector potential_names = DBConfig::GetOptionNames(); + for (auto &entry : DBConfig::GetConfig(context).extension_parameters) { + potential_names.push_back(entry.first); + } + + throw CatalogException("unrecognized configuration parameter \"%s\"\n%s", name, + StringUtil::CandidatesErrorMessage(potential_names, name, "Did you mean")); +} + CatalogException Catalog::CreateMissingEntryException(ClientContext &context, const string &entry_name, CatalogType type, const unordered_set &schemas, @@ -7231,13 +7314,18 @@ CatalogException Catalog::CreateMissingEntryException(ClientContext &context, co unseen_schemas.insert(current_schema); } } - auto unseen_entry = SimilarEntryInSchemas(context, entry_name, type, unseen_schemas); - auto extension_name = FindExtension(entry_name); - if (!extension_name.empty()) { - return CatalogException("Function with name %s is not on the catalog, but it exists in the %s extension. To " - "Install and Load the extension, run: INSTALL %s; LOAD %s;", - entry_name, extension_name, extension_name, extension_name); + // check if the entry exists in any extension + if (type == CatalogType::TABLE_FUNCTION_ENTRY || type == CatalogType::SCALAR_FUNCTION_ENTRY || + type == CatalogType::AGGREGATE_FUNCTION_ENTRY) { + auto extension_name = FindExtensionForFunction(entry_name); + if (!extension_name.empty()) { + return CatalogException( + "Function with name \"%s\" is not in the catalog, but it exists in the %s extension.\n\nTo " + "install and load the extension, run:\nINSTALL %s;\nLOAD %s;", + entry_name, extension_name, extension_name, extension_name); + } } + auto unseen_entry = SimilarEntryInSchemas(context, entry_name, type, unseen_schemas); string did_you_mean; if (unseen_entry.Found() && unseen_entry.distance < entry.distance) { // the closest matching entry requires qualification as it is not in the default search path @@ -7777,7 +7865,7 @@ CopyFunctionCatalogEntry::CopyFunctionCatalogEntry(Catalog *catalog, SchemaCatal //===----------------------------------------------------------------------===// // DuckDB // -// duckdb/catalog/catalog_entry/dindex_catalog_entry.hpp +// duckdb/catalog/catalog_entry/duck_index_entry.hpp // // //===----------------------------------------------------------------------===// @@ -8497,6 +8585,12 @@ class DataTable { void UpdateColumn(TableCatalogEntry &table, ClientContext &context, Vector &row_ids, const vector &column_path, DataChunk &updates); + //! Add an index to the DataTable. NOTE: for CREATE (UNIQUE) INDEX statements, we use the PhysicalCreateIndex + //! operator. This function is only used during the WAL replay, and is a much less performant index creation + //! approach. + void WALAddIndex(ClientContext &context, unique_ptr index, + const vector> &expressions); + //! Fetches an append lock void AppendLock(TableAppendState &state); //! Begin appending structs to this table, obtaining necessary locks, etc @@ -8551,7 +8645,7 @@ class DataTable { static bool IsForeignKeyIndex(const vector &fk_keys, Index &index, ForeignKeyType fk_type); //! Initializes a special scan that is used to create an index on the table, it keeps locks on the table - void InitializeCreateIndexScan(CreateIndexScanState &state, const vector &column_ids); + void InitializeWALCreateIndexScan(CreateIndexScanState &state, const vector &column_ids); //! Scans the next chunk for the CREATE INDEX operator bool CreateIndexScan(TableScanState &state, DataChunk &result, TableScanType type); @@ -8832,24 +8926,24 @@ class Key { public: template - static inline Key CreateKey(ArenaAllocator &allocator, T element) { + static inline Key CreateKey(ArenaAllocator &allocator, const LogicalType &type, T element) { auto data = Key::CreateData(allocator, element); return Key(data, sizeof(element)); } template - static inline Key CreateKey(ArenaAllocator &allocator, const Value &element) { - return CreateKey(allocator, element.GetValueUnsafe()); + static inline Key CreateKey(ArenaAllocator &allocator, const LogicalType &type, const Value &element) { + return CreateKey(allocator, type, element.GetValueUnsafe()); } template - static inline void CreateKey(ArenaAllocator &allocator, Key &key, T element) { + static inline void CreateKey(ArenaAllocator &allocator, const LogicalType &type, Key &key, T element) { key.data = Key::CreateData(allocator, element); key.len = sizeof(element); } template - static inline void CreateKey(ArenaAllocator &allocator, Key &key, const Value element) { + static inline void CreateKey(ArenaAllocator &allocator, const LogicalType &type, Key &key, const Value element) { key.data = Key::CreateData(allocator, element.GetValueUnsafe()); key.len = sizeof(element); } @@ -8880,14 +8974,11 @@ class Key { }; template <> -Key Key::CreateKey(ArenaAllocator &allocator, string_t value); +Key Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, string_t value); template <> -Key Key::CreateKey(ArenaAllocator &allocator, const char *value); +Key Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, const char *value); template <> -void Key::CreateKey(ArenaAllocator &allocator, Key &key, string_t value); -template <> -void Key::CreateKey(ArenaAllocator &allocator, Key &key, const char *value); - +void Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, Key &key, string_t value); } // namespace duckdb //===----------------------------------------------------------------------===// @@ -9576,24 +9667,21 @@ namespace duckdb { class ConflictManager; struct ARTIndexScanState : public IndexScanState { - ARTIndexScanState() : checked(false), result_index(0) { - } + //! Scan predicates (single predicate scan or range scan) Value values[2]; + //! Expressions of the scan predicates ExpressionType expressions[2]; - bool checked; + bool checked = false; + //! All scanned row IDs vector result_ids; Iterator iterator; - //! Stores the current leaf - Leaf *cur_leaf = nullptr; - //! Offset to leaf - idx_t result_index = 0; }; enum class VerifyExistenceType : uint8_t { - APPEND = 0, // for purpose to append into table - APPEND_FK = 1, // for purpose to append into table has foreign key - DELETE_FK = 2 // for purpose to delete from table related to foreign key + APPEND = 0, // appends to a table + APPEND_FK = 1, // appends to a table that has a foreign key + DELETE_FK = 2 // delete from a table that has a foreign key }; class ART : public Index { @@ -9609,47 +9697,44 @@ class ART : public Index { Node *tree; public: - //! Initialize a scan on the index with the given expression and column ids - //! to fetch from the base table for a single predicate + //! Initialize a single predicate scan on the index with the given expression and column IDs unique_ptr InitializeScanSinglePredicate(const Transaction &transaction, const Value &value, ExpressionType expression_type) override; - - //! Initialize a scan on the index with the given expression and column ids - //! to fetch from the base table for two predicates + //! Initialize a two predicate scan on the index with the given expression and column IDs unique_ptr InitializeScanTwoPredicates(Transaction &transaction, const Value &low_value, ExpressionType low_expression_type, const Value &high_value, ExpressionType high_expression_type) override; - - //! Perform a lookup on the index + //! Performs a lookup on the index, fetching up to max_count result IDs. Returns true if all row IDs were fetched, + //! and false otherwise bool Scan(Transaction &transaction, DataTable &table, IndexScanState &state, idx_t max_count, vector &result_ids) override; - //! Append entries to the index + + //! Called when data is appended to the index. The lock obtained from InitializeLock must be held bool Append(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override; - //! Verify that data can be appended to the index + //! Verify that data can be appended to the index without a constraint violation void VerifyAppend(DataChunk &chunk) override; - //! Verify that data can be appended to the index + //! Verify that data can be appended to the index without a constraint violation using the conflict manager void VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) override; - //! Verify that data can be appended to the index for foreign key constraint - void VerifyAppendForeignKey(DataChunk &chunk) override; - //! Verify that data can be delete from the index for foreign key constraint - void VerifyDeleteForeignKey(DataChunk &chunk) override; - //! Delete entries in the index + //! Delete a chunk of entries from the index. The lock obtained from InitializeLock must be held void Delete(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override; - //! Insert data into the index + //! Insert a chunk of entries into the index bool Insert(IndexLock &lock, DataChunk &data, Vector &row_ids) override; //! Construct an ART from a vector of sorted keys bool ConstructFromSorted(idx_t count, vector &keys, Vector &row_identifiers); - //! Search Equal and fetches the row IDs + //! Search equal values and fetches the row IDs bool SearchEqual(Key &key, idx_t max_count, vector &result_ids); - //! Search Equal used for Joins that do not need to fetch data + //! Search equal values used for joins that do not need to fetch data void SearchEqualJoinNoFetch(Key &key, idx_t &result_size); - //! Serialized the ART + + //! Serializes the index and returns the pair of block_id offset positions BlockPointer Serialize(duckdb::MetaBlockWriter &writer) override; - //! Merge two ARTs + //! Merge another index into this index. The lock obtained from InitializeLock must be held, and the other + //! index must also be locked during the merge bool MergeIndexes(IndexLock &state, Index *other_index) override; + //! Generate ART keys for an input chunk static void GenerateKeys(ArenaAllocator &allocator, DataChunk &input, vector &keys); @@ -9657,30 +9742,32 @@ class ART : public Index { string GenerateErrorKeyName(DataChunk &input, idx_t row); //! Generate the matching error message for a constraint violation string GenerateConstraintErrorMessage(VerifyExistenceType verify_type, const string &key_name); + //! Performs constraint checking for a chunk of input data + void CheckConstraintsForChunk(DataChunk &input, ConflictManager &conflict_manager) override; //! Returns the string representation of an ART string ToString() override; - //! Verifies that the memory_size value of the ART matches its actual size + //! Verifies that the in-memory size value of the index matches its actual size void Verify() override; + //! Increases the memory size by the difference between the old size and the current size + //! and performs verifications + void IncreaseAndVerifyMemorySize(idx_t old_memory_size) override; private: - //! Insert a row id into a leaf node + //! Insert a row ID into a leaf bool InsertToLeaf(Leaf &leaf, row_t row_id); - //! Insert the leaf value into the tree + //! Insert a key into the tree bool Insert(Node *&node, Key &key, idx_t depth, row_t row_id); - - //! Erase element from leaf (if leaf has more than one value) or eliminate the leaf itself + //! Erase a key from the tree (if a leaf has more than one value) or erase the leaf itself void Erase(Node *&node, Key &key, idx_t depth, row_t row_id); - - //! Perform 'Lookup' for an entire chunk, marking which succeeded - void LookupValues(DataChunk &input, ConflictManager &conflict_manager) final override; - - //! Find the node with a matching key, optimistic version + //! Find the node with a matching key, or return nullptr if not found Leaf *Lookup(Node *node, Key &key, idx_t depth); - + //! Returns all row IDs belonging to a key greater (or equal) than the search key bool SearchGreater(ARTIndexScanState *state, Key &key, bool inclusive, idx_t max_count, vector &result_ids); + //! Returns all row IDs belonging to a key less (or equal) than the upper_bound bool SearchLess(ARTIndexScanState *state, Key &upper_bound, bool inclusive, idx_t max_count, vector &result_ids); + //! Returns all row IDs belonging to a key within the range of lower_bound and upper_bound bool SearchCloseRange(ARTIndexScanState *state, Key &lower_bound, Key &upper_bound, bool left_inclusive, bool right_inclusive, idx_t max_count, vector &result_ids); }; @@ -10640,6 +10727,9 @@ enum class WALType : uint8_t { CREATE_TABLE_MACRO = 21, DROP_TABLE_MACRO = 22, + CREATE_INDEX = 23, + DROP_INDEX = 24, + // ----------------------------- // Data // ----------------------------- @@ -10662,6 +10752,7 @@ enum class WALType : uint8_t { + namespace duckdb { struct AlterInfo; @@ -10721,6 +10812,9 @@ class ReplayState { void ReplayCreateTableMacro(); void ReplayDropTableMacro(); + void ReplayCreateIndex(); + void ReplayDropIndex(); + void ReplayUseTable(); void ReplayInsert(); void ReplayDelete(); @@ -10769,6 +10863,9 @@ class WriteAheadLog { void WriteCreateTableMacro(TableMacroCatalogEntry *entry); void WriteDropTableMacro(TableMacroCatalogEntry *entry); + void WriteCreateIndex(IndexCatalogEntry *entry); + void WriteDropIndex(IndexCatalogEntry *entry); + void WriteCreateType(TypeCatalogEntry *entry); void WriteDropType(TypeCatalogEntry *entry); //! Sets the table used for subsequent insert/delete/update commands @@ -11932,10 +12029,11 @@ string IndexCatalogEntry::ToSQL() { return sql; } -void IndexCatalogEntry::Serialize(duckdb::MetaBlockWriter &serializer) { - // Here we serialize the index metadata in the following order: - // schema name, table name, index name, sql, index type, index constraint type, expression list. - // column_ids, unbound_expression +void IndexCatalogEntry::Serialize(Serializer &serializer) { + // here we serialize the index metadata in the following order: + // schema name, table name, index name, sql, index type, index constraint type, expression list, parsed expressions, + // column IDs + FieldWriter writer(serializer); writer.WriteString(GetSchemaName()); writer.WriteString(GetTableName()); @@ -11950,9 +12048,9 @@ void IndexCatalogEntry::Serialize(duckdb::MetaBlockWriter &serializer) { } unique_ptr IndexCatalogEntry::Deserialize(Deserializer &source, ClientContext &context) { - // Here we deserialize the index metadata in the following order: - // root block, root offset, schema name, table name, index name, sql, index type, index constraint type, expression - // list. + // here we deserialize the index metadata in the following order: + // schema name, table schema name, table name, index name, sql, index type, index constraint type, expression list, + // parsed expression list, column IDs auto create_index_info = make_unique(); @@ -12274,7 +12372,7 @@ SimilarCatalogEntry SchemaCatalogEntry::GetSimilarEntry(CatalogTransaction trans const string &name) { SimilarCatalogEntry result; Scan(transaction.GetContext(), type, [&](CatalogEntry *entry) { - auto ldist = StringUtil::LevenshteinDistance(entry->name, name); + auto ldist = StringUtil::SimilarityScore(entry->name, name); if (ldist < result.distance) { result.distance = ldist; result.name = entry->name; @@ -13873,7 +13971,7 @@ SimilarCatalogEntry CatalogSet::SimilarEntry(CatalogTransaction transaction, con for (auto &kv : mapping) { auto mapping_value = GetMapping(transaction, kv.first); if (mapping_value && !mapping_value->deleted) { - auto ldist = StringUtil::LevenshteinDistance(kv.first, name); + auto ldist = StringUtil::SimilarityScore(kv.first, name); if (ldist < result.distance) { result.distance = ldist; result.name = kv.first; @@ -14376,6 +14474,7 @@ static DefaultMacro internal_macros[] = { {DEFAULT_SCHEMA, "fdiv", {"x", "y", nullptr}, "floor(x/y)"}, {DEFAULT_SCHEMA, "fmod", {"x", "y", nullptr}, "(x-y*floor(x/y))"}, {DEFAULT_SCHEMA, "count_if", {"l", nullptr}, "sum(if(l, 1, 0))"}, + {DEFAULT_SCHEMA, "split_part", {"string", "delimiter", "position", nullptr}, "coalesce(string_split(string, delimiter)[position],'')"}, // algebraic list aggregates {DEFAULT_SCHEMA, "list_avg", {"l", nullptr}, "list_aggr(l, 'avg')"}, @@ -14707,7 +14806,7 @@ static DefaultView internal_views[] = { {"pg_catalog", "pg_views", "SELECT schema_name schemaname, view_name viewname, 'duckdb' viewowner, sql definition FROM duckdb_views()"}, {"information_schema", "columns", "SELECT database_name table_catalog, schema_name table_schema, table_name, column_name, column_index ordinal_position, column_default, CASE WHEN is_nullable THEN 'YES' ELSE 'NO' END is_nullable, data_type, character_maximum_length, NULL character_octet_length, numeric_precision, numeric_precision_radix, numeric_scale, NULL datetime_precision, NULL interval_type, NULL interval_precision, NULL character_set_catalog, NULL character_set_schema, NULL character_set_name, NULL collation_catalog, NULL collation_schema, NULL collation_name, NULL domain_catalog, NULL domain_schema, NULL domain_name, NULL udt_catalog, NULL udt_schema, NULL udt_name, NULL scope_catalog, NULL scope_schema, NULL scope_name, NULL maximum_cardinality, NULL dtd_identifier, NULL is_self_referencing, NULL is_identity, NULL identity_generation, NULL identity_start, NULL identity_increment, NULL identity_maximum, NULL identity_minimum, NULL identity_cycle, NULL is_generated, NULL generation_expression, NULL is_updatable FROM duckdb_columns;"}, {"information_schema", "schemata", "SELECT database_name catalog_name, schema_name, 'duckdb' schema_owner, NULL default_character_set_catalog, NULL default_character_set_schema, NULL default_character_set_name, sql sql_path FROM duckdb_schemas()"}, - {"information_schema", "tables", "SELECT database_name table_catalog, schema_name table_schema, table_name, CASE WHEN temporary THEN 'LOCAL TEMPORARY' ELSE 'BASE TABLE' END table_type, NULL self_referencing_column_name, NULL reference_generation, NULL user_defined_type_catalog, NULL user_defined_type_schema, NULL user_defined_type_name, 'YES' is_insertable_into, 'NO' is_typed, CASE WHEN temporary THEN 'PRESERVE' ELSE NULL END commit_action FROM duckdb_tables() UNION ALL SELECT NULL table_catalog, schema_name table_schema, view_name table_name, 'VIEW' table_type, NULL self_referencing_column_name, NULL reference_generation, NULL user_defined_type_catalog, NULL user_defined_type_schema, NULL user_defined_type_name, 'NO' is_insertable_into, 'NO' is_typed, NULL commit_action FROM duckdb_views;"}, + {"information_schema", "tables", "SELECT database_name table_catalog, schema_name table_schema, table_name, CASE WHEN temporary THEN 'LOCAL TEMPORARY' ELSE 'BASE TABLE' END table_type, NULL self_referencing_column_name, NULL reference_generation, NULL user_defined_type_catalog, NULL user_defined_type_schema, NULL user_defined_type_name, 'YES' is_insertable_into, 'NO' is_typed, CASE WHEN temporary THEN 'PRESERVE' ELSE NULL END commit_action FROM duckdb_tables() UNION ALL SELECT database_name table_catalog, schema_name table_schema, view_name table_name, 'VIEW' table_type, NULL self_referencing_column_name, NULL reference_generation, NULL user_defined_type_catalog, NULL user_defined_type_schema, NULL user_defined_type_name, 'NO' is_insertable_into, 'NO' is_typed, NULL commit_action FROM duckdb_views;"}, {nullptr, nullptr, nullptr}}; static unique_ptr GetDefaultView(ClientContext &context, const string &input_schema, const string &input_name) { @@ -16910,6 +17009,8 @@ class Value; Value ConvertVectorToValue(vector set); vector ParseColumnList(const vector &set, vector &names, const string &option_name); vector ParseColumnList(const Value &value, vector &names, const string &option_name); +vector ParseColumnsOrdered(const vector &set, vector &names, const string &loption); +vector ParseColumnsOrdered(const Value &value, vector &names, const string &loption); } // namespace duckdb @@ -16918,6 +17019,7 @@ vector ParseColumnList(const Value &value, vector &names, const st +#include namespace duckdb { @@ -16978,6 +17080,60 @@ vector ParseColumnList(const Value &value, vector &names, const st return ParseColumnList(children, names, loption); } +vector ParseColumnsOrdered(const vector &set, vector &names, const string &loption) { + vector result; + + if (set.empty()) { + throw BinderException("\"%s\" expects a column list or * as parameter", loption); + } + + // Maps option to bool indicating if its found and the index in the original set + case_insensitive_map_t> option_map; + for (idx_t i = 0; i < set.size(); i++) { + option_map[set[i].ToString()] = {false, i}; + } + result.resize(option_map.size()); + + for (idx_t i = 0; i < names.size(); i++) { + auto entry = option_map.find(names[i]); + if (entry != option_map.end()) { + result[entry->second.second] = i; + entry->second.first = true; + } + } + for (auto &entry : option_map) { + if (!entry.second.first) { + throw BinderException("\"%s\" expected to find %s, but it was not found in the table", loption, + entry.first.c_str()); + } + } + return result; +} + +vector ParseColumnsOrdered(const Value &value, vector &names, const string &loption) { + vector result; + + // Only accept a list of arguments + if (value.type().id() != LogicalTypeId::LIST) { + // Support a single argument if it's '*' + if (value.type().id() == LogicalTypeId::VARCHAR && value.GetValue() == "*") { + result.resize(names.size(), 0); + std::iota(std::begin(result), std::end(result), 0); + return result; + } + throw BinderException("\"%s\" expects a column list or * as parameter", loption); + } + auto &children = ListValue::GetChildren(value); + // accept '*' as single argument + if (children.size() == 1 && children[0].type().id() == LogicalTypeId::VARCHAR && + children[0].GetValue() == "*") { + result.resize(names.size(), 0); + std::iota(std::begin(result), std::end(result), 0); + return result; + } + return ParseColumnsOrdered(children, names, loption); +} + } // namespace duckdb //===----------------------------------------------------------------------===// // DuckDB @@ -19376,6 +19532,8 @@ string LogicalOperatorToString(LogicalOperatorType type) { return "CREATE_SCHEMA"; case LogicalOperatorType::LOGICAL_ATTACH: return "ATTACH"; + case LogicalOperatorType::LOGICAL_DETACH: + return "ATTACH"; case LogicalOperatorType::LOGICAL_DROP: return "DROP"; case LogicalOperatorType::LOGICAL_PRAGMA: @@ -19591,6 +19749,8 @@ string PhysicalOperatorToString(PhysicalOperatorType type) { return "CREATE_TYPE"; case PhysicalOperatorType::ATTACH: return "ATTACH"; + case PhysicalOperatorType::DETACH: + return "DETACH"; case PhysicalOperatorType::RESULT_COLLECTOR: return "RESULT_COLLECTOR"; case PhysicalOperatorType::EXTENSION: @@ -19727,6 +19887,8 @@ string StatementTypeToString(StatementType type) { return "LOGICAL_PLAN"; case StatementType::ATTACH_STATEMENT: return "ATTACH"; + case StatementType::DETACH_STATEMENT: + return "DETACH"; case StatementType::INVALID_STATEMENT: break; } @@ -20503,12 +20665,11 @@ using wstring_view = basic_string_view; #if FMT_HAS_FEATURE(__cpp_char8_t) typedef char8_t fmt_char8_t; #else -typedef unsigned char fmt_char8_t; +typedef char fmt_char8_t; #endif /** Specifies if ``T`` is a character type. Can be specialized by users. */ template struct is_char : std::false_type {}; -template <> struct is_char : std::true_type {}; template <> struct is_char : std::true_type {}; template <> struct is_char : std::true_type {}; template <> struct is_char : std::true_type {}; @@ -26981,7 +27142,8 @@ struct LengthFun { struct LikeFun { static void RegisterFunction(BuiltinFunctions &set); - DUCKDB_API static bool Glob(const char *s, idx_t slen, const char *pattern, idx_t plen); + DUCKDB_API static bool Glob(const char *s, idx_t slen, const char *pattern, idx_t plen, + bool allow_question_mark = true); }; struct LikeEscapeFun { @@ -27110,6 +27272,96 @@ struct JaroWinklerFun { +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/main/extension_helper.hpp +// +// +//===----------------------------------------------------------------------===// + + + +#include + + +namespace duckdb { +class DuckDB; + +enum class ExtensionLoadResult : uint8_t { LOADED_EXTENSION = 0, EXTENSION_UNKNOWN = 1, NOT_LOADED = 2 }; + +struct DefaultExtension { + const char *name; + const char *description; + bool statically_loaded; +}; + +struct ExtensionAlias { + const char *alias; + const char *extension; +}; + +struct ExtensionInitResult { + string filename; + string basename; + + void *lib_hdl; +}; + +class ExtensionHelper { +public: + static void LoadAllExtensions(DuckDB &db); + + static ExtensionLoadResult LoadExtension(DuckDB &db, const std::string &extension); + + static void InstallExtension(ClientContext &context, const string &extension, bool force_install); + static void InstallExtension(DBConfig &config, FileSystem &fs, const string &extension, bool force_install); + static void LoadExternalExtension(ClientContext &context, const string &extension); + static void LoadExternalExtension(DatabaseInstance &db, FileOpener *opener, const string &extension); + + static string ExtensionDirectory(ClientContext &context); + static string ExtensionDirectory(DBConfig &config, FileSystem &fs, FileOpener *opener); + + static idx_t DefaultExtensionCount(); + static DefaultExtension GetDefaultExtension(idx_t index); + + static idx_t ExtensionAliasCount(); + static ExtensionAlias GetExtensionAlias(idx_t index); + + static const vector GetPublicKeys(); + + static void StorageInit(string &extension, DBConfig &config); + + // Returns extension name, or empty string if not a replacement open path + static string ExtractExtensionPrefixFromPath(const string &path); + + //! Apply any known extension aliases + static string ApplyExtensionAlias(string extension_name); + + static string GetExtensionName(const string &extension); + static bool IsFullPath(const string &extension); + +private: + static void InstallExtensionInternal(DBConfig &config, ClientConfig *client_config, FileSystem &fs, + const string &local_path, const string &extension, bool force_install); + static const vector PathComponents(); + static bool AllowAutoInstall(const string &extension); + static ExtensionInitResult InitialLoad(DBConfig &config, FileOpener *opener, const string &extension); + static bool TryInitialLoad(DBConfig &config, FileOpener *opener, const string &extension, + ExtensionInitResult &result, string &error); + //! For tagged releases we use the tag, else we use the git commit hash + static const string GetVersionDirectoryName(); + //! Version tags occur with and without 'v', tag in extension path is always with 'v' + static const string NormalizeVersionTag(const string &version_tag); + static bool IsRelease(const string &version_tag); + static bool CreateSuggestions(const string &extension_name, string &message); + +private: + static ExtensionLoadResult LoadExtensionInternal(DuckDB &db, const std::string &extension, bool initial_load); +}; + +} // namespace duckdb + #include #include @@ -27435,6 +27687,33 @@ bool FileSystem::CanHandleFile(const string &fpath) { throw NotImplementedException("%s: CanHandleFile is not implemented!", GetName()); } +vector FileSystem::GlobFiles(const string &pattern, ClientContext &context) { + auto result = Glob(pattern, context); + if (result.empty()) { + string required_extension; + const string prefixes[] = {"http://", "https://", "s3://"}; + for (auto &prefix : prefixes) { + if (StringUtil::StartsWith(pattern, prefix)) { + required_extension = "httpfs"; + break; + } + } + if (!required_extension.empty() && !context.db->ExtensionIsLoaded(required_extension)) { + // an extension is required to read this file but it is not loaded - try to load it + ExtensionHelper::LoadExternalExtension(context, required_extension); + // success! glob again + // check the extension is loaded just in case to prevent an infinite loop here + if (!context.db->ExtensionIsLoaded(required_extension)) { + throw InternalException("Extension load \"%s\" did not throw but somehow the extension was not loaded", + required_extension); + } + return GlobFiles(pattern, context); + } + throw IOException("No files found that match the pattern \"%s\"", pattern); + } + return result; +} + void FileSystem::Seek(FileHandle &handle, idx_t location) { throw NotImplementedException("%s: Seek is not implemented!", GetName()); } @@ -32044,7 +32323,15 @@ struct HivePartitionKey { struct Equality { bool operator()(const HivePartitionKey &a, const HivePartitionKey &b) const { - return a.values == b.values; + if (a.values.size() != b.values.size()) { + return false; + } + for (idx_t i = 0; i < a.values.size(); i++) { + if (!Value::NotDistinctFrom(a.values[i], b.values[i])) { + return false; + } + } + return true; } }; }; @@ -32248,6 +32535,7 @@ HivePartitionedColumnData::HivePartitionedColumnData(const HivePartitionedColumn void HivePartitionedColumnData::ComputePartitionIndices(PartitionedColumnDataAppendState &state, DataChunk &input) { Vector hashes(LogicalType::HASH, input.size()); input.Hash(group_by_columns, hashes); + hashes.Flatten(input.size()); for (idx_t i = 0; i < input.size(); i++) { HivePartitionKey key; @@ -33318,8 +33606,8 @@ static bool HasGlob(const string &str) { return false; } -static void GlobFiles(FileSystem &fs, const string &path, const string &glob, bool match_directory, - vector &result, bool join_path) { +static void GlobFilesInternal(FileSystem &fs, const string &path, const string &glob, bool match_directory, + vector &result, bool join_path) { fs.ListFiles(path, [&](const string &fname, bool is_directory) { if (is_directory != match_directory) { return; @@ -33436,12 +33724,12 @@ vector LocalFileSystem::Glob(const string &path, FileOpener *opener) { } else { if (previous_directories.empty()) { // no previous directories: list in the current path - GlobFiles(*this, ".", splits[i], !is_last_chunk, result, false); + GlobFilesInternal(*this, ".", splits[i], !is_last_chunk, result, false); } else { // previous directories // we iterate over each of the previous directories, and apply the glob of the current directory for (auto &prev_directory : previous_directories) { - GlobFiles(*this, prev_directory, splits[i], !is_last_chunk, result, true); + GlobFilesInternal(*this, prev_directory, splits[i], !is_last_chunk, result, true); } } } @@ -39233,13 +39521,13 @@ static bool IntegerCastLoop(const char *buf, idx_t len, T &result, bool strict) ExponentData exponent {0, false}; int negative = buf[pos] == '-'; if (negative) { - if (!IntegerCastLoop(buf + pos, len - pos, - exponent, strict)) { + if (!IntegerCastLoop( + buf + pos, len - pos, exponent, strict)) { return false; } } else { - if (!IntegerCastLoop(buf + pos, len - pos, - exponent, strict)) { + if (!IntegerCastLoop( + buf + pos, len - pos, exponent, strict)) { return false; } } @@ -39841,16 +40129,22 @@ dtime_t Cast::Operation(string_t input) { //===--------------------------------------------------------------------===// template <> bool TryCastErrorMessage::Operation(string_t input, timestamp_t &result, string *error_message, bool strict) { - if (!TryCast::Operation(input, result, strict)) { + auto cast_result = Timestamp::TryConvertTimestamp(input.GetDataUnsafe(), input.GetSize(), result); + if (cast_result == TimestampCastResult::SUCCESS) { + return true; + } + if (cast_result == TimestampCastResult::ERROR_INCORRECT_FORMAT) { HandleCastError::AssignError(Timestamp::ConversionError(input), error_message); - return false; + } else { + HandleCastError::AssignError(Timestamp::UnsupportedTimezoneError(input), error_message); } - return true; + return false; } template <> bool TryCast::Operation(string_t input, timestamp_t &result, bool strict) { - return Timestamp::TryConvertTimestamp(input.GetDataUnsafe(), input.GetSize(), result); + return Timestamp::TryConvertTimestamp(input.GetDataUnsafe(), input.GetSize(), result) == + TimestampCastResult::SUCCESS; } template <> @@ -41483,7 +41777,7 @@ idx_t Printer::TerminalWidth() { int columns, rows; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); - rows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1; + rows = csbi.srWindow.Right - csbi.srWindow.Left + 1; return rows; #else struct winsize w; @@ -41818,13 +42112,13 @@ class RadixPartitionedColumnData : public PartitionedColumnData { case 2: case 3: case 4: - return GetBufferSize(1); + return GetBufferSize(1 << 1); case 5: - return GetBufferSize(2); + return GetBufferSize(1 << 2); case 6: - return GetBufferSize(3); + return GetBufferSize(1 << 3); default: - return GetBufferSize(4); + return GetBufferSize(1 << 4); } } void InitializeAppendStateInternal(PartitionedColumnDataAppendState &state) const override; @@ -51594,7 +51888,7 @@ struct LevenshteinArray { }; // adapted from https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#C++ -idx_t StringUtil::LevenshteinDistance(const string &s1_p, const string &s2_p) { +idx_t StringUtil::LevenshteinDistance(const string &s1_p, const string &s2_p, idx_t not_equal_penalty) { auto s1 = StringUtil::Lower(s1_p); auto s2 = StringUtil::Lower(s2_p); idx_t len1 = s1.size(); @@ -51618,7 +51912,7 @@ idx_t StringUtil::LevenshteinDistance(const string &s1_p, const string &s2_p) { // d[i][j] = std::min({ d[i - 1][j] + 1, // d[i][j - 1] + 1, // d[i - 1][j - 1] + (s1[i - 1] == s2[j - 1] ? 0 : 1) }); - int equal = s1[i - 1] == s2[j - 1] ? 0 : 1; + int equal = s1[i - 1] == s2[j - 1] ? 0 : not_equal_penalty; idx_t adjacent_score1 = array.Score(i - 1, j) + 1; idx_t adjacent_score2 = array.Score(i, j - 1) + 1; idx_t adjacent_score3 = array.Score(i - 1, j - 1) + equal; @@ -51630,15 +51924,19 @@ idx_t StringUtil::LevenshteinDistance(const string &s1_p, const string &s2_p) { return array.Score(len1, len2); } +idx_t StringUtil::SimilarityScore(const string &s1, const string &s2) { + return LevenshteinDistance(s1, s2, 3); +} + vector StringUtil::TopNLevenshtein(const vector &strings, const string &target, idx_t n, idx_t threshold) { vector> scores; scores.reserve(strings.size()); for (auto &str : strings) { if (target.size() < str.size()) { - scores.emplace_back(str, LevenshteinDistance(str.substr(0, target.size()), target)); + scores.emplace_back(str, SimilarityScore(str.substr(0, target.size()), target)); } else { - scores.emplace_back(str, LevenshteinDistance(str, target)); + scores.emplace_back(str, SimilarityScore(str, target)); } } return TopNStrings(scores, n, threshold); @@ -59614,6 +59912,7 @@ void PartitionedColumnData::FlushAppendState(PartitionedColumnDataAppendState &s auto &partition_buffer = *state.partition_buffers[i]; if (partition_buffer.size() > 0) { partitions[i]->Append(partition_buffer); + partition_buffer.Reset(); } } } @@ -60407,7 +60706,7 @@ bool Time::TryConvertTime(const char *buf, idx_t len, idx_t &pos, dtime_t &resul if (!strict) { // last chance, check if we can parse as timestamp timestamp_t timestamp; - if (Timestamp::TryConvertTimestamp(buf, len, timestamp)) { + if (Timestamp::TryConvertTimestamp(buf, len, timestamp) == TimestampCastResult::SUCCESS) { if (!Timestamp::IsFinite(timestamp)) { return false; } @@ -60610,11 +60909,27 @@ bool Timestamp::TryConvertTimestampTZ(const char *str, idx_t len, timestamp_t &r return true; } -bool Timestamp::TryConvertTimestamp(const char *str, idx_t len, timestamp_t &result) { +TimestampCastResult Timestamp::TryConvertTimestamp(const char *str, idx_t len, timestamp_t &result) { string_t tz(nullptr, 0); bool has_offset = false; // We don't understand TZ without an extension, so fail if one was provided. - return TryConvertTimestampTZ(str, len, result, has_offset, tz) && !tz.GetSize(); + auto success = TryConvertTimestampTZ(str, len, result, has_offset, tz); + if (!success) { + return TimestampCastResult::ERROR_INCORRECT_FORMAT; + } + if (tz.GetSize() == 0) { + // no timezone provided - success! + return TimestampCastResult::SUCCESS; + } + if (tz.GetSize() == 3) { + // we can ONLY handle UTC without ICU being loaded + auto tz_ptr = tz.GetDataUnsafe(); + if ((tz_ptr[0] == 'u' || tz_ptr[0] == 'U') && (tz_ptr[1] == 't' || tz_ptr[1] == 'T') && + (tz_ptr[2] == 'c' || tz_ptr[2] == 'C')) { + return TimestampCastResult::SUCCESS; + } + } + return TimestampCastResult::ERROR_NON_UTC_TIMEZONE; } string Timestamp::ConversionError(const string &str) { @@ -60623,16 +60938,31 @@ string Timestamp::ConversionError(const string &str) { str); } +string Timestamp::UnsupportedTimezoneError(const string &str) { + return StringUtil::Format("timestamp field value \"%s\" has a timestamp that is not UTC.\nUse the TIMESTAMPTZ type " + "with the ICU extension loaded to handle non-UTC timestamps.", + str); +} + string Timestamp::ConversionError(string_t str) { return Timestamp::ConversionError(str.GetString()); } +string Timestamp::UnsupportedTimezoneError(string_t str) { + return Timestamp::UnsupportedTimezoneError(str.GetString()); +} + timestamp_t Timestamp::FromCString(const char *str, idx_t len) { timestamp_t result; - if (!Timestamp::TryConvertTimestamp(str, len, result)) { + auto cast_result = Timestamp::TryConvertTimestamp(str, len, result); + if (cast_result == TimestampCastResult::SUCCESS) { + return result; + } + if (cast_result == TimestampCastResult::ERROR_NON_UTC_TIMEZONE) { + throw ConversionException(Timestamp::UnsupportedTimezoneError(string(str, len))); + } else { throw ConversionException(Timestamp::ConversionError(string(str, len))); } - return result; } bool Timestamp::TryParseUTCOffset(const char *str, idx_t &pos, idx_t len, int &hour_offset, int &minute_offset) { @@ -65882,7 +66212,7 @@ string LogicalType::ToString() const { auto &child_types = StructType::GetChildTypes(*this); string ret = "STRUCT("; for (size_t i = 0; i < child_types.size(); i++) { - ret += child_types[i].first + " " + child_types[i].second.ToString(); + ret += KeywordHelper::WriteOptionallyQuoted(child_types[i].first) + " " + child_types[i].second.ToString(); if (i < child_types.size() - 1) { ret += ", "; } @@ -65962,11 +66292,32 @@ LogicalType TransformStringToLogicalType(const string &str) { return Parser::ParseColumnList("dummy " + str).GetColumn(LogicalIndex(0)).Type(); } +LogicalType GetUserTypeRecursive(const LogicalType &type, ClientContext &context) { + if (type.id() == LogicalTypeId::USER && type.HasAlias()) { + return Catalog::GetSystemCatalog(context).GetType(context, SYSTEM_CATALOG, DEFAULT_SCHEMA, type.GetAlias()); + } + // Look for LogicalTypeId::USER in nested types + if (type.id() == LogicalTypeId::STRUCT) { + child_list_t children; + children.reserve(StructType::GetChildCount(type)); + for (auto &child : StructType::GetChildTypes(type)) { + children.emplace_back(child.first, GetUserTypeRecursive(child.second, context)); + } + return LogicalType::STRUCT(std::move(children)); + } + if (type.id() == LogicalTypeId::LIST) { + return LogicalType::LIST(GetUserTypeRecursive(ListType::GetChildType(type), context)); + } + if (type.id() == LogicalTypeId::MAP) { + return LogicalType::MAP(GetUserTypeRecursive(MapType::KeyType(type), context), + GetUserTypeRecursive(MapType::ValueType(type), context)); + } + // Not LogicalTypeId::USER or a nested type + return type; +} + LogicalType TransformStringToLogicalType(const string &str, ClientContext &context) { - auto type = TransformStringToLogicalType(str); - return type.id() == LogicalTypeId::USER - ? Catalog::GetSystemCatalog(context).GetType(context, SYSTEM_CATALOG, DEFAULT_SCHEMA, str) - : type; + return GetUserTypeRecursive(TransformStringToLogicalType(str), context); } bool LogicalType::IsIntegral() const { @@ -66346,18 +66697,23 @@ void LogicalType::SetAlias(string alias) { } string LogicalType::GetAlias() const { - if (!type_info_) { - return string(); - } else { + if (id() == LogicalTypeId::USER) { + return UserType::GetTypeName(*this); + } + if (type_info_) { return type_info_->alias; } + return string(); } bool LogicalType::HasAlias() const { - if (!type_info_) { - return false; + if (id() == LogicalTypeId::USER) { + return !UserType::GetTypeName(*this).empty(); + } + if (type_info_ && !type_info_->alias.empty()) { + return true; } - return !type_info_->alias.empty(); + return false; } void LogicalType::SetCatalog(LogicalType &type, TypeCatalogEntry *catalog_entry) { @@ -71403,9 +71759,12 @@ void ColumnBindingResolver::VisitOperator(LogicalOperator &op) { // ON CONFLICT DO UPDATE clause auto &insert_op = (LogicalInsert &)op; if (insert_op.action_type != OnConflictAction::THROW) { + // Get the bindings from the children VisitOperatorChildren(op); - auto dummy_bindings = LogicalOperator::GenerateColumnBindings( - insert_op.excluded_table_index, insert_op.table->GetColumns().PhysicalColumnCount()); + auto column_count = insert_op.table->GetColumns().PhysicalColumnCount(); + auto dummy_bindings = LogicalOperator::GenerateColumnBindings(insert_op.excluded_table_index, column_count); + // Now insert our dummy bindings at the start of the bindings, + // so the first 'column_count' indices of the chunk are reserved for our 'excluded' columns bindings.insert(bindings.begin(), dummy_bindings.begin(), dummy_bindings.end()); if (insert_op.on_conflict_condition) { VisitExpression(&insert_op.on_conflict_condition); @@ -73027,7 +73386,10 @@ ART::ART(const vector &column_ids, TableIOManager &table_io_manager, tree = nullptr; if (block_id != DConstants::INVALID_INDEX) { tree = Node::Deserialize(*this, block_id, block_offset); - ART::Verify(); + Verify(); + if (track_memory) { + buffer_manager.IncreaseUsedMemory(memory_size); + } } serialized_data_pointer = BlockPointer(block_id, block_offset); @@ -73058,7 +73420,7 @@ ART::~ART() { if (!tree) { return; } - ART::Verify(); + Verify(); if (track_memory) { buffer_manager.DecreaseUsedMemory(memory_size); } @@ -73072,6 +73434,7 @@ ART::~ART() { unique_ptr ART::InitializeScanSinglePredicate(const Transaction &transaction, const Value &value, ExpressionType expression_type) { + // initialize point lookup auto result = make_unique(); result->values[0] = value; result->expressions[0] = expression_type; @@ -73081,6 +73444,7 @@ unique_ptr ART::InitializeScanSinglePredicate(const Transaction unique_ptr ART::InitializeScanTwoPredicates(Transaction &transaction, const Value &low_value, ExpressionType low_expression_type, const Value &high_value, ExpressionType high_expression_type) { + // initialize range lookup auto result = make_unique(); result->values[0] = low_value; result->expressions[0] = low_expression_type; @@ -73103,7 +73467,7 @@ static void TemplatedGenerateKeys(ArenaAllocator &allocator, Vector &input, idx_ for (idx_t i = 0; i < count; i++) { auto idx = idata.sel->get_index(i); if (idata.validity.RowIsValid(idx)) { - Key::CreateKey(allocator, keys[i], input_data[idx]); + Key::CreateKey(allocator, input.GetType(), keys[i], input_data[idx]); } } } @@ -73123,7 +73487,7 @@ static void ConcatenateKeys(ArenaAllocator &allocator, Vector &input, idx_t coun // this column entry is NULL, set whole key to NULL keys[i] = Key(); } else { - auto other_key = Key::CreateKey(allocator, input_data[idx]); + auto other_key = Key::CreateKey(allocator, input.GetType(), input_data[idx]); keys[i].ConcatenateKey(allocator, other_key); } } @@ -73225,7 +73589,7 @@ void ART::GenerateKeys(ArenaAllocator &allocator, DataChunk &input, vector } //===--------------------------------------------------------------------===// -// Construct from sorted data +// Construct from sorted data (only during CREATE (UNIQUE) INDEX statements) //===--------------------------------------------------------------------===// struct KeySection { @@ -73283,7 +73647,7 @@ bool Construct(ART &art, vector &keys, row_t *row_ids, Node *&node, KeySect } else { node = Leaf::New(start_key, prefix_start, row_ids + key_section.start, num_row_ids); } - art.memory_size += node->MemorySize(art, false); + art.IncreaseMemorySize(node->MemorySize(art, false)); return true; } // create a new node and recurse @@ -73297,7 +73661,7 @@ bool Construct(ART &art, vector &keys, row_t *row_ids, Node *&node, KeySect auto prefix_length = key_section.depth - prefix_start; node->prefix = Prefix(start_key, prefix_start, prefix_length); - art.memory_size += node->MemorySize(art, false); + art.IncreaseMemorySize(node->MemorySize(art, false)); // recurse on each child section for (auto &child_section : child_sections) { @@ -73323,7 +73687,7 @@ bool ART::ConstructFromSorted(idx_t count, vector &keys, Vector &row_identi } //===--------------------------------------------------------------------===// -// Insert +// Insert / Verification / Constraint Checking //===--------------------------------------------------------------------===// bool ART::Insert(IndexLock &lock, DataChunk &input, Vector &row_ids) { @@ -73331,13 +73695,13 @@ bool ART::Insert(IndexLock &lock, DataChunk &input, Vector &row_ids) { D_ASSERT(row_ids.GetType().InternalType() == ROW_TYPE); D_ASSERT(logical_types[0] == input.data[0].GetType()); + auto old_memory_size = memory_size; + // generate the keys for the given input ArenaAllocator arena_allocator(BufferAllocator::Get(db)); vector keys(input.size()); GenerateKeys(arena_allocator, input, keys); - auto old_memory_size = this->memory_size; - // get the corresponding row IDs row_ids.Flatten(input.size()); auto row_identifiers = FlatVector::GetData(row_ids); @@ -73356,9 +73720,9 @@ bool ART::Insert(IndexLock &lock, DataChunk &input, Vector &row_ids) { break; } } - if (failed_index != DConstants::INVALID_INDEX) { - // failed to insert because of constraint violation: remove previously inserted entries + // failed to insert because of constraint violation: remove previously inserted entries + if (failed_index != DConstants::INVALID_INDEX) { for (idx_t i = 0; i < failed_index; i++) { if (keys[i].Empty()) { continue; @@ -73366,14 +73730,11 @@ bool ART::Insert(IndexLock &lock, DataChunk &input, Vector &row_ids) { row_t row_id = row_identifiers[i]; Erase(tree, keys[i], 0, row_id); } - // nothing changed, no need to update the buffer memory size - return false; } - D_ASSERT(old_memory_size <= memory_size); - Verify(); - if (track_memory) { - buffer_manager.IncreaseUsedMemory(memory_size - old_memory_size); + IncreaseAndVerifyMemorySize(old_memory_size); + if (failed_index != DConstants::INVALID_INDEX) { + return false; } return true; } @@ -73391,25 +73752,12 @@ bool ART::Append(IndexLock &lock, DataChunk &appended_data, Vector &row_identifi void ART::VerifyAppend(DataChunk &chunk) { ConflictManager conflict_manager(VerifyExistenceType::APPEND, chunk.size()); - LookupValues(chunk, conflict_manager); + CheckConstraintsForChunk(chunk, conflict_manager); } void ART::VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) { D_ASSERT(conflict_manager.LookupType() == VerifyExistenceType::APPEND); - LookupValues(chunk, conflict_manager); -} - -void ART::VerifyAppendForeignKey(DataChunk &chunk) { - ConflictManager conflict_manager(VerifyExistenceType::APPEND_FK, chunk.size()); - LookupValues(chunk, conflict_manager); -} - -void ART::VerifyDeleteForeignKey(DataChunk &chunk) { - if (!IsUnique()) { - return; - } - ConflictManager conflict_manager(VerifyExistenceType::DELETE_FK, chunk.size()); - LookupValues(chunk, conflict_manager); + CheckConstraintsForChunk(chunk, conflict_manager); } bool ART::InsertToLeaf(Leaf &leaf, row_t row_id) { @@ -73430,7 +73778,7 @@ bool ART::Insert(Node *&node, Key &key, idx_t depth, row_t row_id) { if (!node) { // node is currently empty, create a leaf here with the key node = Leaf::New(key, depth, row_id); - this->memory_size += node->MemorySize(*this, false); + IncreaseMemorySize(node->MemorySize(*this, false)); return true; } @@ -73455,14 +73803,14 @@ bool ART::Insert(Node *&node, Key &key, idx_t depth, row_t row_id) { Node *new_node = Node4::New(); new_node->prefix = Prefix(key, depth, new_prefix_length); - this->memory_size += new_node->MemorySize(*this, false); + IncreaseMemorySize(new_node->MemorySize(*this, false)); auto key_byte = node->prefix.Reduce(*this, new_prefix_length); Node4::InsertChild(*this, new_node, key_byte, node); Node *leaf_node = Leaf::New(key, depth + new_prefix_length + 1, row_id); Node4::InsertChild(*this, new_node, key[depth + new_prefix_length], leaf_node); - this->memory_size += leaf_node->MemorySize(*this, false); + IncreaseMemorySize(leaf_node->MemorySize(*this, false)); node = new_node; return true; @@ -73476,7 +73824,7 @@ bool ART::Insert(Node *&node, Key &key, idx_t depth, row_t row_id) { // prefix differs, create new node Node *new_node = Node4::New(); new_node->prefix = Prefix(key, depth, mismatch_pos); - this->memory_size += new_node->MemorySize(*this, false); + IncreaseMemorySize(new_node->MemorySize(*this, false)); // break up prefix auto key_byte = node->prefix.Reduce(*this, mismatch_pos); @@ -73484,7 +73832,7 @@ bool ART::Insert(Node *&node, Key &key, idx_t depth, row_t row_id) { Node *leaf_node = Leaf::New(key, depth + mismatch_pos + 1, row_id); Node4::InsertChild(*this, new_node, key[depth + mismatch_pos], leaf_node); - this->memory_size += leaf_node->MemorySize(*this, false); + IncreaseMemorySize(leaf_node->MemorySize(*this, false)); node = new_node; return true; @@ -73504,7 +73852,7 @@ bool ART::Insert(Node *&node, Key &key, idx_t depth, row_t row_id) { Node *leaf_node = Leaf::New(key, depth + 1, row_id); Node::InsertChild(*this, node, key[depth], leaf_node); - this->memory_size += leaf_node->MemorySize(*this, false); + IncreaseMemorySize(leaf_node->MemorySize(*this, false)); return true; } @@ -73525,7 +73873,7 @@ void ART::Delete(IndexLock &state, DataChunk &input, Vector &row_ids) { vector keys(expression.size()); GenerateKeys(arena_allocator, expression, keys); - auto old_memory_size = this->memory_size; + auto old_memory_size = memory_size; // now erase the elements from the database row_ids.Flatten(input.size()); @@ -73547,10 +73895,13 @@ void ART::Delete(IndexLock &state, DataChunk &input, Vector &row_ids) { #endif } - D_ASSERT(old_memory_size >= memory_size); + // if we deserialize nodes while erasing, then we might end up with more + // memory afterwards, so we have to either increase or decrease the used memory Verify(); - if (track_memory) { + if (track_memory && old_memory_size >= memory_size) { buffer_manager.DecreaseUsedMemory(old_memory_size - memory_size); + } else if (track_memory) { + buffer_manager.IncreaseUsedMemory(memory_size - old_memory_size); } } @@ -73566,8 +73917,7 @@ void ART::Erase(Node *&node, Key &key, idx_t depth, row_t row_id) { leaf->Remove(*this, row_id); if (leaf->count == 0) { - D_ASSERT(this->memory_size >= leaf->MemorySize(*this, false)); - this->memory_size -= leaf->MemorySize(*this, false); + DecreaseMemorySize(leaf->MemorySize(*this, false)); Node::Delete(node); node = nullptr; } @@ -73606,38 +73956,38 @@ void ART::Erase(Node *&node, Key &key, idx_t depth, row_t row_id) { } //===--------------------------------------------------------------------===// -// Point Query +// Point Query (Equal) //===--------------------------------------------------------------------===// static Key CreateKey(ArenaAllocator &allocator, PhysicalType type, Value &value) { D_ASSERT(type == value.type().InternalType()); switch (type) { case PhysicalType::BOOL: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::INT8: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::INT16: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::INT32: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::INT64: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::UINT8: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::UINT16: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::UINT32: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::UINT64: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::INT128: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::FLOAT: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::DOUBLE: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); case PhysicalType::VARCHAR: - return Key::CreateKey(allocator, value); + return Key::CreateKey(allocator, value.type(), value); default: throw InternalException("Invalid type for index"); } @@ -73645,7 +73995,10 @@ static Key CreateKey(ArenaAllocator &allocator, PhysicalType type, Value &value) bool ART::SearchEqual(Key &key, idx_t max_count, vector &result_ids) { + auto old_memory_size = memory_size; auto leaf = (Leaf *)(Lookup(tree, key, 0)); + IncreaseAndVerifyMemorySize(old_memory_size); + if (!leaf) { return true; } @@ -73662,19 +74015,28 @@ bool ART::SearchEqual(Key &key, idx_t max_count, vector &result_ids) { void ART::SearchEqualJoinNoFetch(Key &key, idx_t &result_size) { // we need to look for a leaf + auto old_memory_size = memory_size; auto leaf = Lookup(tree, key, 0); + IncreaseAndVerifyMemorySize(old_memory_size); + if (!leaf) { return; } result_size = leaf->count; } +//===--------------------------------------------------------------------===// +// Lookup +//===--------------------------------------------------------------------===// + Leaf *ART::Lookup(Node *node, Key &key, idx_t depth) { + while (node) { if (node->type == NodeType::NLeaf) { auto leaf = (Leaf *)node; auto &leaf_prefix = leaf->prefix; - //! Check leaf + + // check if leaf contains key for (idx_t i = 0; i < leaf->prefix.Size(); i++) { if (leaf_prefix[i] != key[i + depth]) { return nullptr; @@ -73682,22 +74044,29 @@ Leaf *ART::Lookup(Node *node, Key &key, idx_t depth) { } return (Leaf *)node; } + if (node->prefix.Size()) { for (idx_t pos = 0; pos < node->prefix.Size(); pos++) { if (key[depth + pos] != node->prefix[pos]) { + // prefix mismatch, does not contain key return nullptr; } } depth += node->prefix.Size(); } + + // prefix matches key, but no child at byte, does not contain key idx_t pos = node->GetChildPos(key[depth]); if (pos == DConstants::INVALID_INDEX) { return nullptr; } + + // recurse into child node = node->GetChild(*this, pos); D_ASSERT(node); depth++; } + return nullptr; } @@ -73710,6 +74079,7 @@ Leaf *ART::Lookup(Node *node, Key &key, idx_t depth) { bool ART::SearchGreater(ARTIndexScanState *state, Key &key, bool inclusive, idx_t max_count, vector &result_ids) { + auto old_memory_size = memory_size; Iterator *it = &state->iterator; // greater than scan: first set the iterator to the node at which we will start our scan by finding the lowest node @@ -73718,13 +74088,16 @@ bool ART::SearchGreater(ARTIndexScanState *state, Key &key, bool inclusive, idx_ it->art = this; bool found = it->LowerBound(tree, key, inclusive); if (!found) { + IncreaseAndVerifyMemorySize(old_memory_size); return true; } } // after that we continue the scan; we don't need to check the bounds as any value following this value is // automatically bigger and hence satisfies our predicate Key empty_key = Key(); - return it->Scan(empty_key, max_count, result_ids, false); + auto success = it->Scan(empty_key, max_count, result_ids, false); + IncreaseAndVerifyMemorySize(old_memory_size); + return success; } //===--------------------------------------------------------------------===// @@ -73738,6 +74111,7 @@ bool ART::SearchLess(ARTIndexScanState *state, Key &upper_bound, bool inclusive, return true; } + auto old_memory_size = memory_size; Iterator *it = &state->iterator; if (!it->art) { @@ -73746,11 +74120,14 @@ bool ART::SearchLess(ARTIndexScanState *state, Key &upper_bound, bool inclusive, it->FindMinimum(*tree); // early out min value higher than upper bound query if (it->cur_key > upper_bound) { + IncreaseAndVerifyMemorySize(old_memory_size); return true; } } // now continue the scan until we reach the upper bound - return it->Scan(upper_bound, max_count, result_ids, inclusive); + auto success = it->Scan(upper_bound, max_count, result_ids, inclusive); + IncreaseAndVerifyMemorySize(old_memory_size); + return success; } //===--------------------------------------------------------------------===// @@ -73760,6 +74137,7 @@ bool ART::SearchLess(ARTIndexScanState *state, Key &upper_bound, bool inclusive, bool ART::SearchCloseRange(ARTIndexScanState *state, Key &lower_bound, Key &upper_bound, bool left_inclusive, bool right_inclusive, idx_t max_count, vector &result_ids) { + auto old_memory_size = memory_size; Iterator *it = &state->iterator; // first find the first node that satisfies the left predicate @@ -73767,11 +74145,14 @@ bool ART::SearchCloseRange(ARTIndexScanState *state, Key &lower_bound, Key &uppe it->art = this; bool found = it->LowerBound(tree, lower_bound, left_inclusive); if (!found) { + IncreaseAndVerifyMemorySize(old_memory_size); return true; } } // now continue the scan until we reach the upper bound - return it->Scan(upper_bound, max_count, result_ids, right_inclusive); + auto success = it->Scan(upper_bound, max_count, result_ids, right_inclusive); + IncreaseAndVerifyMemorySize(old_memory_size); + return success; } bool ART::Scan(Transaction &transaction, DataTable &table, IndexScanState &table_state, idx_t max_count, @@ -73844,8 +74225,15 @@ bool ART::Scan(Transaction &transaction, DataTable &table, IndexScanState &table return true; } +//===--------------------------------------------------------------------===// +// More Verification / Constraint Checking +//===--------------------------------------------------------------------===// + string ART::GenerateErrorKeyName(DataChunk &input, idx_t row) { - // re-executing the expressions is not very fast, but we're going to throw anyways, so we don't care + + // FIXME: why exactly can we not pass the expression_chunk as an argument to this + // FIXME: function instead of re-executing? + // re-executing the expressions is not very fast, but we're going to throw, so we don't care DataChunk expression_chunk; expression_chunk.Initialize(Allocator::DefaultAllocator(), logical_types); ExecuteExpressions(input, expression_chunk); @@ -73883,11 +74271,13 @@ string ART::GenerateConstraintErrorMessage(VerifyExistenceType verify_type, cons } } -void ART::LookupValues(DataChunk &input, ConflictManager &conflict_manager) { +void ART::CheckConstraintsForChunk(DataChunk &input, ConflictManager &conflict_manager) { // don't alter the index during constraint checking lock_guard l(lock); + auto old_memory_size = memory_size; + // first resolve the expressions for the index DataChunk expression_chunk; expression_chunk.Initialize(Allocator::DefaultAllocator(), logical_types); @@ -73900,12 +74290,14 @@ void ART::LookupValues(DataChunk &input, ConflictManager &conflict_manager) { idx_t found_conflict = DConstants::INVALID_INDEX; for (idx_t i = 0; found_conflict == DConstants::INVALID_INDEX && i < input.size(); i++) { + if (keys[i].Empty()) { if (conflict_manager.AddNull(i)) { found_conflict = i; } continue; } + Leaf *leaf_ptr = Lookup(tree, keys[i], 0); if (leaf_ptr == nullptr) { if (conflict_manager.AddMiss(i)) { @@ -73913,6 +74305,7 @@ void ART::LookupValues(DataChunk &input, ConflictManager &conflict_manager) { } continue; } + // When we find a node, we need to update the 'matches' and 'row_ids' // NOTE: Leafs can have more than one row_id, but for UNIQUE/PRIMARY KEY they will only have one D_ASSERT(leaf_ptr->count == 1); @@ -73921,11 +74314,15 @@ void ART::LookupValues(DataChunk &input, ConflictManager &conflict_manager) { found_conflict = i; } } + conflict_manager.FinishLookup(); + IncreaseAndVerifyMemorySize(old_memory_size); + if (found_conflict == DConstants::INVALID_INDEX) { // No conflicts detected return; } + auto key_name = GenerateErrorKeyName(input, found_conflict); auto exception_msg = GenerateConstraintErrorMessage(conflict_manager.LookupType(), key_name); throw ConstraintException(exception_msg); @@ -73935,13 +74332,15 @@ void ART::LookupValues(DataChunk &input, ConflictManager &conflict_manager) { // Serialization //===--------------------------------------------------------------------===// -BlockPointer ART::Serialize(duckdb::MetaBlockWriter &writer) { +BlockPointer ART::Serialize(MetaBlockWriter &writer) { lock_guard l(lock); + auto old_memory_size = memory_size; if (tree) { serialized_data_pointer = tree->Serialize(*this, writer); } else { serialized_data_pointer = {(block_id_t)DConstants::INVALID_INDEX, (uint32_t)DConstants::INVALID_INDEX}; } + IncreaseAndVerifyMemorySize(old_memory_size); return serialized_data_pointer; } @@ -73954,8 +74353,8 @@ bool ART::MergeIndexes(IndexLock &state, Index *other_index) { auto other_art = (ART *)other_index; if (!this->tree) { - this->memory_size += other_art->memory_size; - this->tree = other_art->tree; + IncreaseMemorySize(other_art->memory_size); + tree = other_art->tree; other_art->tree = nullptr; return true; } @@ -73987,6 +74386,16 @@ void ART::Verify() { #endif } +void ART::IncreaseAndVerifyMemorySize(idx_t old_memory_size) { + // since we lazily deserialize ART nodes, it is possible that its in-memory size + // increased during lookups + Verify(); + D_ASSERT(memory_size >= old_memory_size); + if (track_memory) { + buffer_manager.IncreaseUsedMemory(memory_size - old_memory_size); + } +} + } // namespace duckdb @@ -74005,40 +74414,52 @@ Key::Key(ArenaAllocator &allocator, idx_t len) : len(len) { } template <> -Key Key::CreateKey(ArenaAllocator &allocator, string_t value) { +Key Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, string_t value) { idx_t len = value.GetSize() + 1; auto data = allocator.Allocate(len); memcpy(data, value.GetDataUnsafe(), len - 1); - if (len > 1 && data[len - 2] == '\0') { - // FIXME: rethink this - throw NotImplementedException("Indexes cannot have contain null-terminated decoded BLOBs."); + // FIXME: rethink this + if (type == LogicalType::BLOB || type == LogicalType::VARCHAR) { + // indexes cannot contain BLOBs (or BLOBs cast to VARCHARs) that contain null-terminated bytes + for (idx_t i = 0; i < len - 1; i++) { + if (data[i] == '\0') { + throw NotImplementedException("Indexes cannot contain BLOBs that contain null-terminated bytes."); + } + } } + data[len - 1] = '\0'; return Key(data, len); } template <> -Key Key::CreateKey(ArenaAllocator &allocator, const char *value) { - return Key::CreateKey(allocator, string_t(value, strlen(value))); +Key Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, const char *value) { + return Key::CreateKey(allocator, type, string_t(value, strlen(value))); } template <> -void Key::CreateKey(ArenaAllocator &allocator, Key &key, string_t value) { +void Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, Key &key, string_t value) { key.len = value.GetSize() + 1; key.data = allocator.Allocate(key.len); memcpy(key.data, value.GetDataUnsafe(), key.len - 1); - if (key.len > 1 && key.data[key.len - 2] == '\0') { - // FIXME: rethink this - throw NotImplementedException("Indexes cannot have contain null-terminated decoded BLOBs."); + // FIXME: rethink this + if (type == LogicalType::BLOB || type == LogicalType::VARCHAR) { + // indexes cannot contain BLOBs (or BLOBs cast to VARCHARs) that contain null-terminated bytes + for (idx_t i = 0; i < key.len - 1; i++) { + if (key.data[i] == '\0') { + throw NotImplementedException("Indexes cannot contain BLOBs that contain null-terminated bytes."); + } + } } + key.data[key.len - 1] = '\0'; } template <> -void Key::CreateKey(ArenaAllocator &allocator, Key &key, const char *value) { - Key::CreateKey(allocator, key, string_t(value, strlen(value))); +void Key::CreateKey(ArenaAllocator &allocator, const LogicalType &type, Key &key, const char *value) { + Key::CreateKey(allocator, type, key, string_t(value, strlen(value))); } bool Key::operator>(const Key &k) const { @@ -74496,9 +74917,9 @@ void Leaf::Insert(ART &art, row_t row_id) { if (count == capacity) { // grow array if (IsInlined()) { - art.memory_size += (capacity + 1) * sizeof(row_t); + art.IncreaseMemorySize((capacity + 1) * sizeof(row_t)); } else { - art.memory_size += capacity * sizeof(row_t); + art.IncreaseMemorySize(capacity * sizeof(row_t)); } row_ids = Resize(row_ids, count, capacity * 2); } @@ -74530,6 +74951,7 @@ void Leaf::Remove(ART &art, row_t row_id) { return; } + auto capacity = GetCapacity(); count--; if (count == 1) { // after erasing we can now inline the leaf @@ -74537,18 +74959,16 @@ void Leaf::Remove(ART &art, row_t row_id) { auto remaining_row_id = row_ids[0] == row_id ? row_ids[1] : row_ids[0]; DeleteArray(rowids.ptr, rowids.ptr[0] + 1); rowids.inlined = remaining_row_id; - D_ASSERT(art.memory_size >= sizeof(row_t)); - art.memory_size -= 2 * sizeof(row_t); + art.DecreaseMemorySize(capacity * sizeof(row_t)); return; } // shrink array, if less than half full - auto capacity = GetCapacity(); + capacity = GetCapacity(); if (capacity > 2 && count < capacity / 2) { auto new_capacity = capacity / 2; - D_ASSERT(art.memory_size >= (capacity - new_capacity) * sizeof(row_t)); - art.memory_size -= (capacity - new_capacity) * sizeof(row_t); + art.DecreaseMemorySize((capacity - new_capacity) * sizeof(row_t)); auto new_allocation = AllocateArray(new_capacity + 1); new_allocation[0] = new_capacity; @@ -74587,7 +75007,7 @@ void Leaf::Merge(ART &art, Node *&l_node, Node *&r_node) { if (l_n->count + r_n->count > l_capacity) { auto capacity = l_n->GetCapacity(); auto new_capacity = NextPowerOfTwo(l_n->count + r_n->count); - art.memory_size += sizeof(row_t) * (new_capacity - capacity); + art.IncreaseMemorySize(sizeof(row_t) * (new_capacity - capacity)); l_row_ids = l_n->Resize(l_row_ids, l_n->count, new_capacity); } @@ -74947,16 +75367,11 @@ Node *Node::Deserialize(ART &art, idx_t block_id, idx_t offset) { NodeType node_type((NodeType)(n)); Node *deserialized_node = nullptr; - auto old_memory_size = art.memory_size; switch (node_type) { case NodeType::NLeaf: { auto leaf = Leaf::New(); leaf->Deserialize(art, reader); - art.memory_size += leaf->MemorySize(art, false); - D_ASSERT(art.memory_size >= old_memory_size); - if (art.track_memory) { - art.buffer_manager.IncreaseUsedMemory(art.memory_size - old_memory_size); - } + art.IncreaseMemorySize(leaf->MemorySize(art, false)); return leaf; } case NodeType::N4: { @@ -74979,11 +75394,7 @@ Node *Node::Deserialize(ART &art, idx_t block_id, idx_t offset) { throw InternalException("Unrecognized node type"); } deserialized_node->DeserializeInternal(art, reader); - art.memory_size += deserialized_node->MemorySize(art, false); - D_ASSERT(art.memory_size >= old_memory_size); - if (art.track_memory) { - art.buffer_manager.IncreaseUsedMemory(art.memory_size - old_memory_size); - } + art.IncreaseMemorySize(deserialized_node->MemorySize(art, false)); return deserialized_node; } @@ -75004,12 +75415,10 @@ void SwapNodes(MergeInfo &info, ParentsOfNodes &parents) { auto l_node_memory_size = info.l_node->MemorySize(*info.l_art, true); auto r_node_memory_size = info.r_node->MemorySize(*info.r_art, true); - D_ASSERT(info.root_l_art->memory_size >= l_node_memory_size); - D_ASSERT(info.root_r_art->memory_size >= r_node_memory_size); - info.root_l_art->memory_size -= l_node_memory_size; - info.root_r_art->memory_size -= r_node_memory_size; - info.root_l_art->memory_size += r_node_memory_size; - info.root_r_art->memory_size += l_node_memory_size; + info.root_l_art->DecreaseMemorySize(l_node_memory_size); + info.root_r_art->DecreaseMemorySize(r_node_memory_size); + info.root_l_art->IncreaseMemorySize(r_node_memory_size); + info.root_r_art->IncreaseMemorySize(l_node_memory_size); // actual swap swap(info.l_art, info.r_art); @@ -75057,9 +75466,8 @@ bool Merge(MergeInfo &info, ParentsOfNodes &parents) { auto r_memory_size = r_child->MemorySize(*info.r_art, true); Node::InsertChild(*info.root_l_art, info.l_node, key_byte, r_child); - info.root_l_art->memory_size += r_memory_size; - D_ASSERT(info.root_r_art->memory_size >= r_memory_size); - info.root_r_art->memory_size -= r_memory_size; + info.root_l_art->IncreaseMemorySize(r_memory_size); + info.root_r_art->DecreaseMemorySize(r_memory_size); if (parents.l_parent) { parents.l_parent->ReplaceChildPointer(parents.l_pos, info.l_node); } @@ -75121,9 +75529,8 @@ bool ResolvePrefixesAndMerge(MergeInfo &info, ParentsOfNodes &parents) { auto r_memory_size = r_node->MemorySize(*info.r_art, true); Node::InsertChild(*info.root_l_art, l_node, mismatch_byte, r_node); - info.root_l_art->memory_size += r_memory_size; - D_ASSERT(info.root_r_art->memory_size >= r_memory_size); - info.root_r_art->memory_size -= r_memory_size; + info.root_l_art->IncreaseMemorySize(r_memory_size); + info.root_r_art->DecreaseMemorySize(r_memory_size); UpdateParentsOfNodes(l_node, null_parent, parents); r_node = nullptr; return true; @@ -75141,7 +75548,7 @@ bool ResolvePrefixesAndMerge(MergeInfo &info, ParentsOfNodes &parents) { // create new node Node *new_node = Node4::New(); new_node->prefix = Prefix(l_node->prefix, mismatch_pos); - info.root_l_art->memory_size += new_node->MemorySize(*info.l_art, false); + info.root_l_art->IncreaseMemorySize(new_node->MemorySize(*info.l_art, false)); // insert l_node, break up prefix of l_node auto key_byte = l_node->prefix.Reduce(*info.root_l_art, mismatch_pos); @@ -75152,9 +75559,8 @@ bool ResolvePrefixesAndMerge(MergeInfo &info, ParentsOfNodes &parents) { auto r_memory_size = r_node->MemorySize(*info.r_art, true); Node4::InsertChild(*info.root_l_art, new_node, key_byte, r_node); - info.root_l_art->memory_size += r_memory_size; - D_ASSERT(info.root_r_art->memory_size >= r_memory_size); - info.root_r_art->memory_size -= r_memory_size; + info.root_l_art->IncreaseMemorySize(r_memory_size); + info.root_r_art->DecreaseMemorySize(r_memory_size); l_node = new_node; UpdateParentsOfNodes(l_node, null_parent, parents); @@ -75294,7 +75700,7 @@ void Node16::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_chil } else { // node is full, grow to Node48 auto new_node = Node48::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->count = node->count; new_node->prefix = std::move(n->prefix); @@ -75304,8 +75710,7 @@ void Node16::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_chil n->children[i] = nullptr; } - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; Node48::InsertChild(art, node, key_byte, new_child); @@ -75320,8 +75725,7 @@ void Node16::EraseChild(ART &art, Node *&node, idx_t pos) { // adjust the ART size if (n->ChildIsInMemory(pos)) { auto child = n->GetChild(art, pos); - D_ASSERT(art.memory_size >= child->MemorySize(art, true)); - art.memory_size -= child->MemorySize(art, true); + art.DecreaseMemorySize(child->MemorySize(art, true)); } // erase the child and decrease the count @@ -75345,7 +75749,7 @@ void Node16::EraseChild(ART &art, Node *&node, idx_t pos) { if (node->count < Node4::GetSize()) { auto new_node = Node4::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->prefix = std::move(n->prefix); for (idx_t i = 0; i < n->count; i++) { @@ -75354,8 +75758,7 @@ void Node16::EraseChild(ART &art, Node *&node, idx_t pos) { n->children[i] = nullptr; } - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; } @@ -75455,8 +75858,7 @@ void Node256::EraseChild(ART &art, Node *&node, idx_t pos) { // adjust the ART size if (n->ChildIsInMemory(pos)) { auto child = n->GetChild(art, pos); - D_ASSERT(art.memory_size >= child->MemorySize(art, true)); - art.memory_size -= child->MemorySize(art, true); + art.DecreaseMemorySize(child->MemorySize(art, true)); } // erase the child and decrease the count @@ -75467,7 +75869,7 @@ void Node256::EraseChild(ART &art, Node *&node, idx_t pos) { if (node->count <= NODE_256_SHRINK_THRESHOLD) { auto new_node = Node48::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->prefix = std::move(n->prefix); for (idx_t i = 0; i < Node256::GetSize(); i++) { @@ -75478,8 +75880,7 @@ void Node256::EraseChild(ART &art, Node *&node, idx_t pos) { } } - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; } @@ -75588,7 +75989,7 @@ void Node4::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child } else { // node is full, grow to Node16 auto new_node = Node16::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->count = n->count; new_node->prefix = std::move(node->prefix); @@ -75599,8 +76000,7 @@ void Node4::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child } n->count = 0; - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; Node16::InsertChild(art, node, key_byte, new_child); @@ -75616,8 +76016,7 @@ void Node4::EraseChild(ART &art, Node *&node, idx_t pos) { // adjust the ART size if (n->ChildIsInMemory(pos)) { auto child = n->GetChild(art, pos); - D_ASSERT(art.memory_size >= child->MemorySize(art, true)); - art.memory_size -= child->MemorySize(art, true); + art.DecreaseMemorySize(child->MemorySize(art, true)); } // erase the child and decrease the count @@ -75645,8 +76044,7 @@ void Node4::EraseChild(ART &art, Node *&node, idx_t pos) { // ensure that when deleting the node, we do not delete the child (because we move it) n->children[0] = nullptr; - D_ASSERT(art.memory_size >= n->MemorySize(art, false)); - art.memory_size -= n->MemorySize(art, false); + art.DecreaseMemorySize(n->MemorySize(art, false)); Node::Delete(node); node = child_ref; } @@ -75759,7 +76157,7 @@ void Node48::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_chil } else { // node is full, grow to Node256 auto new_node = Node256::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->count = n->count; new_node->prefix = std::move(n->prefix); @@ -75770,8 +76168,7 @@ void Node48::InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_chil } } - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; Node256::InsertChild(art, node, key_byte, new_child); @@ -75784,8 +76181,7 @@ void Node48::EraseChild(ART &art, Node *&node, idx_t pos) { // adjust the ART size if (n->ChildIsInMemory(pos)) { auto child = n->GetChild(art, pos); - D_ASSERT(art.memory_size >= child->MemorySize(art, true)); - art.memory_size -= child->MemorySize(art, true); + art.DecreaseMemorySize(child->MemorySize(art, true)); } // erase the child and decrease the count @@ -75797,7 +76193,7 @@ void Node48::EraseChild(ART &art, Node *&node, idx_t pos) { if (node->count < NODE_48_SHRINK_THRESHOLD) { auto new_node = Node16::New(); - art.memory_size += new_node->MemorySize(art, false); + art.IncreaseMemorySize(new_node->MemorySize(art, false)); new_node->prefix = std::move(n->prefix); for (idx_t i = 0; i < Node256::GetSize(); i++) { @@ -75808,8 +76204,7 @@ void Node48::EraseChild(ART &art, Node *&node, idx_t pos) { } } - D_ASSERT(art.memory_size >= node->MemorySize(art, false)); - art.memory_size -= node->MemorySize(art, false); + art.DecreaseMemorySize(node->MemorySize(art, false)); Node::Delete(node); node = new_node; } @@ -75930,7 +76325,7 @@ void Prefix::Overwrite(uint32_t new_size, uint8_t *data) { void Prefix::Concatenate(ART &art, uint8_t key, Prefix &other) { auto new_size = size + 1 + other.size; - art.memory_size += (new_size - size) * sizeof(uint8_t); + art.IncreaseMemorySize((new_size - size) * sizeof(uint8_t)); // have to allocate space in our prefix array auto new_prefix = AllocateArray(new_size); idx_t new_prefix_idx = 0; @@ -75953,8 +76348,7 @@ void Prefix::Concatenate(ART &art, uint8_t key, Prefix &other) { uint8_t Prefix::Reduce(ART &art, uint32_t n) { auto new_size = size - n - 1; - D_ASSERT(art.memory_size >= (size - new_size) * sizeof(uint8_t)); - art.memory_size -= (size - new_size) * sizeof(uint8_t); + art.DecreaseMemorySize((size - new_size) * sizeof(uint8_t)); auto prefix = GetPrefixData(); auto partial_key = prefix[n]; @@ -81219,6 +81613,10 @@ class WindowGlobalSinkState : public GlobalSinkState { }; void WindowGlobalSinkState::ResizeGroupingData(idx_t cardinality) { + // Have we started to combine? Then just live with it. + if (grouping_data && !grouping_data->GetPartitions().empty()) { + return; + } // Is the average partition size too large? const idx_t partition_size = STANDARD_ROW_GROUPS_SIZE; const auto bits = grouping_data ? grouping_data->GetRadixBits() : 0; @@ -81230,31 +81628,7 @@ void WindowGlobalSinkState::ResizeGroupingData(idx_t cardinality) { // Repartition the grouping data if (new_bits != bits) { const auto hash_col_idx = payload_types.size(); - auto new_grouping_data = - make_unique(context, grouping_types, new_bits, hash_col_idx); - - // We have to append to a shared copy for some reason - if (grouping_data) { - auto new_shared = new_grouping_data->CreateShared(); - PartitionedColumnDataAppendState shared_append; - new_shared->InitializeAppendState(shared_append); - - auto &partitions = grouping_data->GetPartitions(); - for (auto &partition : partitions) { - ColumnDataScanState scanner; - partition->InitializeScan(scanner); - - DataChunk scan_chunk; - partition->InitializeScanChunk(scan_chunk); - for (scan_chunk.Reset(); partition->Scan(scanner, scan_chunk); scan_chunk.Reset()) { - new_shared->Append(shared_append, scan_chunk); - } - } - new_shared->FlushAppendState(shared_append); - new_grouping_data->Combine(*new_shared); - } - - grouping_data = std::move(new_grouping_data); + grouping_data = make_unique(context, grouping_types, new_bits, hash_col_idx); } } @@ -81482,8 +81856,6 @@ void WindowLocalSinkState::Sink(DataChunk &input_chunk, WindowGlobalSinkState &g } // OVER(...) - gstate.UpdateLocalPartition(local_partition, local_append); - payload_chunk.Reset(); auto &hash_vector = payload_chunk.data.back(); Hash(input_chunk, hash_vector); @@ -81492,6 +81864,7 @@ void WindowLocalSinkState::Sink(DataChunk &input_chunk, WindowGlobalSinkState &g } payload_chunk.SetCardinality(input_chunk); + gstate.UpdateLocalPartition(local_partition, local_append); local_partition->Append(*local_append, payload_chunk); } @@ -84214,85 +84587,6 @@ class PhysicalLoad : public PhysicalOperator { } // namespace duckdb -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/main/extension_helper.hpp -// -// -//===----------------------------------------------------------------------===// - - - -#include - - -namespace duckdb { -class DuckDB; - -enum class ExtensionLoadResult : uint8_t { LOADED_EXTENSION = 0, EXTENSION_UNKNOWN = 1, NOT_LOADED = 2 }; - -struct DefaultExtension { - const char *name; - const char *description; - bool statically_loaded; -}; - -struct ExtensionAlias { - const char *alias; - const char *extension; -}; - -struct ExtensionInitResult { - string filename; - string basename; - - void *lib_hdl; -}; - -class ExtensionHelper { -public: - static void LoadAllExtensions(DuckDB &db); - - static ExtensionLoadResult LoadExtension(DuckDB &db, const std::string &extension); - - static void InstallExtension(ClientContext &context, const string &extension, bool force_install); - static void LoadExternalExtension(ClientContext &context, const string &extension); - static void LoadExternalExtension(DatabaseInstance &db, FileOpener *opener, const string &extension); - - static string ExtensionDirectory(ClientContext &context); - - static idx_t DefaultExtensionCount(); - static DefaultExtension GetDefaultExtension(idx_t index); - - static idx_t ExtensionAliasCount(); - static ExtensionAlias GetExtensionAlias(idx_t index); - - static const vector GetPublicKeys(); - - static void StorageInit(string &extension, DBConfig &config); - - // Returns extension name, or empty string if not a replacement open path - static string ExtractExtensionPrefixFromPath(const string &path); - - //! Apply any known extension aliases - static string ApplyExtensionAlias(string extension_name); - -private: - static const vector PathComponents(); - static ExtensionInitResult InitialLoad(DBConfig &context, FileOpener *opener, const string &extension); - //! For tagged releases we use the tag, else we use the git commit hash - static const string GetVersionDirectoryName(); - //! Version tags occur with and without 'v', tag in extension path is always with 'v' - static const string NormalizeVersionTag(const string &version_tag); - static bool IsRelease(const string &version_tag); - static bool CreateSuggestions(const string &extension_name, string &message); - -private: - static ExtensionLoadResult LoadExtensionInternal(DuckDB &db, const std::string &extension, bool initial_load); -}; - -} // namespace duckdb namespace duckdb { @@ -84929,15 +85223,7 @@ void PhysicalReset::GetData(ExecutionContext &context, DataChunk &chunk, GlobalS auto &config = DBConfig::GetConfig(context.client); auto entry = config.extension_parameters.find(name); if (entry == config.extension_parameters.end()) { - // it is not! - // get a list of all options - vector potential_names = DBConfig::GetOptionNames(); - for (auto &entry : config.extension_parameters) { - potential_names.push_back(entry.first); - } - - throw CatalogException("unrecognized configuration parameter \"%s\"\n%s", name, - StringUtil::CandidatesErrorMessage(potential_names, name, "Did you mean")); + throw Catalog::UnrecognizedConfigurationError(context.client, name); } ResetExtensionVariable(context, config, entry->second); return; @@ -85109,15 +85395,7 @@ void PhysicalSet::GetData(ExecutionContext &context, DataChunk &chunk, GlobalSou auto &config = DBConfig::GetConfig(context.client); auto entry = config.extension_parameters.find(name); if (entry == config.extension_parameters.end()) { - // it is not! - // get a list of all options - vector potential_names = DBConfig::GetOptionNames(); - for (auto &entry : config.extension_parameters) { - potential_names.push_back(entry.first); - } - - throw CatalogException("unrecognized configuration parameter \"%s\"\n%s", name, - StringUtil::CandidatesErrorMessage(potential_names, name, "Did you mean")); + throw Catalog::UnrecognizedConfigurationError(context.client, name); } SetExtensionVariable(context.client, entry->second, name, scope, value); return; @@ -89132,6 +89410,7 @@ class IEJoinLocalSourceState : public LocalSourceState { if (!matches[outer_idx]) { true_sel.set_index(count++, outer_idx); if (count >= STANDARD_VECTOR_SIZE) { + outer_idx++; break; } } @@ -89315,8 +89594,6 @@ class IEJoinGlobalSourceState : public GlobalSourceState { lstate.joiner = make_unique(client, op, left_table, b1, right_table, b2); return; - } else { - --next_pair; } // Outer joins @@ -89332,6 +89609,7 @@ class IEJoinGlobalSourceState : public GlobalSourceState { // Left outer blocks const auto l = next_left++; if (l < left_outers) { + lstate.joiner = nullptr; lstate.left_block_index = l; lstate.left_base = left_bases[l]; @@ -89341,12 +89619,12 @@ class IEJoinGlobalSourceState : public GlobalSourceState { return; } else { lstate.left_matches = nullptr; - --next_left; } // Right outer block const auto r = next_right++; if (r < right_outers) { + lstate.joiner = nullptr; lstate.right_block_index = r; lstate.right_base = right_bases[r]; @@ -89356,7 +89634,6 @@ class IEJoinGlobalSourceState : public GlobalSourceState { return; } else { lstate.right_matches = nullptr; - --next_right; } } @@ -89404,7 +89681,7 @@ void PhysicalIEJoin::GetData(ExecutionContext &context, DataChunk &result, Globa ie_gstate.Initialize(ie_sink); - if (!ie_lstate.joiner) { + if (!ie_lstate.joiner && !ie_lstate.left_matches && !ie_lstate.right_matches) { ie_gstate.GetNextPair(context.client, ie_sink, ie_lstate); } @@ -89427,8 +89704,7 @@ void PhysicalIEJoin::GetData(ExecutionContext &context, DataChunk &result, Globa ie_gstate.GetNextPair(context.client, ie_sink, ie_lstate); continue; } - - SliceSortedPayload(result, ie_sink.tables[0]->global_sort_state, ie_lstate.left_base, ie_lstate.true_sel, + SliceSortedPayload(result, ie_sink.tables[0]->global_sort_state, ie_lstate.left_block_index, ie_lstate.true_sel, count); // Fill in NULLs to the right @@ -89451,8 +89727,8 @@ void PhysicalIEJoin::GetData(ExecutionContext &context, DataChunk &result, Globa continue; } - SliceSortedPayload(result, ie_sink.tables[1]->global_sort_state, ie_lstate.right_base, ie_lstate.true_sel, - count, left_cols); + SliceSortedPayload(result, ie_sink.tables[1]->global_sort_state, ie_lstate.right_block_index, + ie_lstate.true_sel, count, left_cols); // Fill in NULLs to the left for (idx_t col_idx = 0; col_idx < left_cols; ++col_idx) { @@ -93338,6 +93614,8 @@ struct BufferedCSVReaderOptions { case_insensitive_map_t sql_types_per_column; //! User-defined SQL type list vector sql_type_list; + //! User-defined name list + vector name_list; //===--------------------------------------------------------------------===// // ReadCSVOptions //===--------------------------------------------------------------------===// @@ -93433,11 +93711,9 @@ class BaseCSVReader { public: BaseCSVReader(ClientContext &context, BufferedCSVReaderOptions options, const vector &requested_types = vector()); - - BaseCSVReader(FileSystem &fs, Allocator &allocator, FileOpener *opener, BufferedCSVReaderOptions options, - const vector &requested_types = vector()); ~BaseCSVReader(); + ClientContext &context; FileSystem &fs; Allocator &allocator; FileOpener *opener; @@ -93538,15 +93814,10 @@ string BaseCSVReader::GetLineNumberStr(idx_t linenr, bool linenr_estimated) { return to_string(linenr + 1) + estimated; } -BaseCSVReader::BaseCSVReader(FileSystem &fs_p, Allocator &allocator, FileOpener *opener_p, - BufferedCSVReaderOptions options_p, const vector &requested_types) - : fs(fs_p), allocator(allocator), opener(opener_p), options(std::move(options_p)) { -} - -BaseCSVReader::BaseCSVReader(ClientContext &context, BufferedCSVReaderOptions options_p, +BaseCSVReader::BaseCSVReader(ClientContext &context_p, BufferedCSVReaderOptions options_p, const vector &requested_types) - : BaseCSVReader(FileSystem::GetFileSystem(context), Allocator::Get(context), FileSystem::GetFileOpener(context), - std::move(options_p), requested_types) { + : context(context_p), fs(FileSystem::GetFileSystem(context)), allocator(Allocator::Get(context)), + opener(FileSystem::GetFileOpener(context)), options(std::move(options_p)) { } BaseCSVReader::~BaseCSVReader() { @@ -93652,7 +93923,7 @@ bool BaseCSVReader::TryCastValue(const Value &value, const LogicalType &sql_type } else { Value new_value; string error_message; - return value.DefaultTryCastAs(sql_type, new_value, &error_message, true); + return value.TryCastAs(context, sql_type, new_value, &error_message, true); } } @@ -93989,8 +94260,8 @@ bool BaseCSVReader::Flush(DataChunk &insert_chunk, bool try_add_line) { error_message, return_types[col_idx]); } else { // target type is not varchar: perform a cast - success = VectorOperations::DefaultTryCast(parse_chunk.data[col_idx], insert_chunk.data[insert_idx], - parse_chunk.size(), &error_message); + success = VectorOperations::TryCast(context, parse_chunk.data[col_idx], insert_chunk.data[insert_idx], + parse_chunk.size(), &error_message); } if (success) { continue; @@ -94145,8 +94416,6 @@ class BufferedCSVReader : public BaseCSVReader { public: BufferedCSVReader(ClientContext &context, BufferedCSVReaderOptions options, const vector &requested_types = vector()); - BufferedCSVReader(FileSystem &fs, Allocator &allocator, FileOpener *opener, BufferedCSVReaderOptions options, - const vector &requested_types = vector()); BufferedCSVReader(ClientContext &context, string filename, BufferedCSVReaderOptions options, const vector &requested_types = vector()); ~BufferedCSVReader(); @@ -94244,25 +94513,16 @@ class BufferedCSVReader : public BaseCSVReader { namespace duckdb { -BufferedCSVReader::BufferedCSVReader(FileSystem &fs_p, Allocator &allocator, FileOpener *opener_p, - BufferedCSVReaderOptions options_p, const vector &requested_types) - : BaseCSVReader(fs_p, allocator, opener_p, std::move(options_p), requested_types), buffer_size(0), position(0), - start(0) { - file_handle = OpenCSV(options); - Initialize(requested_types); -} - BufferedCSVReader::BufferedCSVReader(ClientContext &context, BufferedCSVReaderOptions options_p, const vector &requested_types) - : BufferedCSVReader(FileSystem::GetFileSystem(context), Allocator::Get(context), FileSystem::GetFileOpener(context), - std::move(options_p), requested_types) { + : BaseCSVReader(context, std::move(options_p), requested_types), buffer_size(0), position(0), start(0) { + file_handle = OpenCSV(options); + Initialize(requested_types); } BufferedCSVReader::BufferedCSVReader(ClientContext &context, string filename, BufferedCSVReaderOptions options_p, const vector &requested_types) - : BaseCSVReader(FileSystem::GetFileSystem(context), Allocator::Get(context), FileSystem::GetFileOpener(context), - std::move(options_p), requested_types), - buffer_size(0), position(0), start(0) { + : BaseCSVReader(context, std::move(options_p), requested_types), buffer_size(0), position(0), start(0) { options.file_path = std::move(filename); file_handle = OpenCSV(options); Initialize(requested_types); @@ -94951,6 +95211,9 @@ void BufferedCSVReader::DetectHeader(const vector> &best_sql names.push_back(column_name); } } + for (idx_t i = 0; i < MinValue(names.size(), options.name_list.size()); i++) { + names[i] = options.name_list[i]; + } } vector BufferedCSVReader::RefineTypeDetection(const vector &type_candidates, @@ -95120,6 +95383,12 @@ vector BufferedCSVReader::SniffCSV(const vector &reque DetectCandidateTypes(type_candidates, format_template_candidates, info_candidates, original_options, best_num_cols, best_sql_types_candidates, best_format_candidates, best_header_row); + if (best_format_candidates.empty() || best_header_row.size() == 0) { + throw InvalidInputException( + "Error in file \"%s\": CSV options could not be auto-detected. Consider setting parser options manually.", + original_options.file_path); + } + // ####### // ### header detection // ####### @@ -96308,7 +96577,7 @@ bool ParallelCSVReader::SetPosition(DataChunk &insert_chunk) { verification_positions.end_of_last_line = position_buffer; // First buffer doesn't need any setting // Unless we have a header - if (options.header && options.auto_detect) { + if (options.header) { for (; position_buffer < end_buffer; position_buffer++) { if (StringUtil::CharacterIsNewline((*buffer)[position_buffer])) { bool carrier_return = (*buffer)[position_buffer] == '\r'; @@ -100301,6 +100570,51 @@ class PhysicalAttach : public PhysicalOperator { +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/parser/tableref/table_function_ref.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + + + + + +namespace duckdb { +//! Represents a Table producing function +class TableFunctionRef : public TableRef { +public: + DUCKDB_API TableFunctionRef(); + + unique_ptr function; + vector column_name_alias; + + // if the function takes a subquery as argument its in here + unique_ptr subquery; + + // External dependencies of this table function + unique_ptr external_dependency; + +public: + string ToString() const override; + + bool Equals(const TableRef *other_p) const override; + + unique_ptr Copy() override; + + //! Serializes a blob into a BaseTableRef + void Serialize(FieldWriter &serializer) const override; + //! Deserializes a blob back into a BaseTableRef + static unique_ptr Deserialize(FieldReader &source); +}; +} // namespace duckdb + namespace duckdb { class AttachedDatabase; @@ -100318,11 +100632,17 @@ typedef unique_ptr (*attach_function_t)(StorageExtensionInfo *storage_i const string &name, AttachInfo &info, AccessMode access_mode); typedef unique_ptr (*create_transaction_manager_t)(StorageExtensionInfo *storage_info, AttachedDatabase &db, Catalog &catalog); +typedef unique_ptr (*create_database_t)(StorageExtensionInfo *info, ClientContext &context, + const string &database_name, const string &source_path); +typedef unique_ptr (*drop_database_t)(StorageExtensionInfo *storage_info, ClientContext &context, + const string &database_name); class StorageExtension { public: attach_function_t attach; create_transaction_manager_t create_transaction_manager; + create_database_t create_database; + drop_database_t drop_database; //! Additional info passed to the various storage functions shared_ptr storage_info; @@ -101152,6 +101472,107 @@ void PhysicalCreateView::GetData(ExecutionContext &context, DataChunk &chunk, Gl state.finished = true; } +} // namespace duckdb +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/execution/operator/schema/physical_detach.hpp +// +// +//===----------------------------------------------------------------------===// + + + + +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/parser/parsed_data/detach_info.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + +namespace duckdb { + +struct DetachInfo : public ParseInfo { + DetachInfo() { + } + + //! The alias of the attached database + string name; + //! Whether to throw an exception if alias is not found + bool if_exists; + +public: + unique_ptr Copy() const { + auto result = make_unique(); + result->name = name; + result->if_exists = if_exists; + return result; + } +}; +} // namespace duckdb + + +namespace duckdb { + +class PhysicalDetach : public PhysicalOperator { +public: + explicit PhysicalDetach(unique_ptr info, idx_t estimated_cardinality) + : PhysicalOperator(PhysicalOperatorType::DETACH, {LogicalType::BOOLEAN}, estimated_cardinality), + info(std::move(info)) { + } + + unique_ptr info; + +public: + // Source interface + unique_ptr GetGlobalSourceState(ClientContext &context) const override; + void GetData(ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate, + LocalSourceState &lstate) const override; +}; + +} // namespace duckdb + + + + + + + + +namespace duckdb { + +//===--------------------------------------------------------------------===// +// Source +//===--------------------------------------------------------------------===// +class DetachSourceState : public GlobalSourceState { +public: + DetachSourceState() : finished(false) { + } + + bool finished; +}; + +unique_ptr PhysicalDetach::GetGlobalSourceState(ClientContext &context) const { + return make_unique(); +} + +void PhysicalDetach::GetData(ExecutionContext &context, DataChunk &chunk, GlobalSourceState &gstate, + LocalSourceState &lstate) const { + auto &state = (DetachSourceState &)gstate; + if (state.finished) { + return; + } + auto &db_manager = DatabaseManager::Get(context.client); + db_manager.DetachDatabase(context.client, info->name, info->if_exists); + state.finished = true; +} + } // namespace duckdb //===----------------------------------------------------------------------===// // DuckDB @@ -101410,6 +101831,15 @@ struct ExplainOutputSetting { static Value GetSetting(ClientContext &context); }; +struct ExtensionDirectorySetting { + static constexpr const char *Name = "extension_directory"; + static constexpr const char *Description = "Set the directory to store extensions in"; + static constexpr const LogicalTypeId InputType = LogicalTypeId::VARCHAR; + static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value ¶meter); + static void ResetGlobal(DatabaseInstance *db, DBConfig &config); + static Value GetSetting(ClientContext &context); +}; + struct ExternalThreadsSetting { static constexpr const char *Name = "external_threads"; static constexpr const char *Description = "The number of external threads that work on DuckDB tasks."; @@ -101654,11 +102084,6 @@ void PhysicalDrop::GetData(ExecutionContext &context, DataChunk &chunk, GlobalSo } break; } - case CatalogType::DATABASE_ENTRY: { - auto &db_manager = DatabaseManager::Get(context.client); - db_manager.DetachDatabase(context.client, info->name, info->if_exists); - break; - } case CatalogType::SCHEMA_ENTRY: { auto &catalog = Catalog::GetCatalog(context.client, info->catalog); catalog.DropEntry(context.client, info.get()); @@ -102693,15 +103118,15 @@ OperatorResultType CachingPhysicalOperator::Execute(ExecutionContext &context, D if (!state.initialized) { state.initialized = true; state.can_cache_chunk = true; + if (!context.pipeline || !caching_supported) { state.can_cache_chunk = false; - } - - if (context.pipeline->GetSink() && context.pipeline->GetSink()->RequiresBatchIndex()) { + } else if (!context.pipeline->GetSink()) { + // Disabling for pipelines without Sink, i.e. when pulling state.can_cache_chunk = false; - } - - if (context.pipeline->IsOrderDependent()) { + } else if (context.pipeline->GetSink()->RequiresBatchIndex()) { + state.can_cache_chunk = false; + } else if (context.pipeline->IsOrderDependent()) { state.can_cache_chunk = false; } } @@ -104324,11 +104749,7 @@ class LogicalExecute : public LogicalOperator { // already resolved } vector GetColumnBindings() override { - vector bindings; - for (idx_t i = 0; i < types.size(); i++) { - bindings.push_back(ColumnBinding(0, i)); - } - return bindings; + return GenerateColumnBindings(0, types.size()); } }; } // namespace duckdb @@ -106256,8 +106677,7 @@ class LogicalShow : public LogicalOperator { LogicalType::VARCHAR, LogicalType::VARCHAR, LogicalType::VARCHAR}; } vector GetColumnBindings() override { - return {ColumnBinding(0, 0), ColumnBinding(0, 1), ColumnBinding(0, 2), - ColumnBinding(0, 3), ColumnBinding(0, 4), ColumnBinding(0, 5)}; + return GenerateColumnBindings(0, types.size()); } }; } // namespace duckdb @@ -106318,6 +106738,7 @@ unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalShow &op) + //===----------------------------------------------------------------------===// // DuckDB // @@ -106383,6 +106804,9 @@ unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalSimple &op case LogicalOperatorType::LOGICAL_ATTACH: return make_unique(unique_ptr_cast(std::move(op.info)), op.estimated_cardinality); + case LogicalOperatorType::LOGICAL_DETACH: + return make_unique(unique_ptr_cast(std::move(op.info)), + op.estimated_cardinality); default: throw NotImplementedException("Unimplemented type for logical simple operator"); } @@ -106941,6 +107365,7 @@ unique_ptr PhysicalPlanGenerator::CreatePlan(LogicalOperator & case LogicalOperatorType::LOGICAL_VACUUM: case LogicalOperatorType::LOGICAL_LOAD: case LogicalOperatorType::LOGICAL_ATTACH: + case LogicalOperatorType::LOGICAL_DETACH: plan = CreatePlan((LogicalSimple &)op); break; case LogicalOperatorType::LOGICAL_RECURSIVE_CTE: @@ -121353,6 +121778,11 @@ void PragmaFunctions::RegisterFunction(BuiltinFunctions &set) { + + + + + //===----------------------------------------------------------------------===// // DuckDB // @@ -121386,9 +121816,6 @@ class ExportStatement : public SQLStatement { } // namespace duckdb - - - namespace duckdb { string PragmaTableInfo(ClientContext &context, const FunctionParameters ¶meters) { @@ -121403,8 +121830,8 @@ string PragmaShowTablesExpanded(ClientContext &context, const FunctionParameters return R"( SELECT t.table_name, - LIST(c.column_name order by c.column_name) AS column_names, - LIST(c.data_type order by c.column_name) AS column_types, + LIST(c.column_name order by c.column_index) AS column_names, + LIST(c.data_type order by c.column_index) AS column_types, FIRST(t.temporary) AS temporary FROM duckdb_tables t JOIN duckdb_columns c @@ -121441,10 +121868,35 @@ string PragmaFunctionsQuery(ClientContext &context, const FunctionParameters &pa string PragmaShow(ClientContext &context, const FunctionParameters ¶meters) { // PRAGMA table_info but with some aliases - return StringUtil::Format( - "SELECT name AS \"column_name\", type as \"column_type\", CASE WHEN \"notnull\" THEN 'NO' ELSE 'YES' " - "END AS \"null\", NULL AS \"key\", dflt_value AS \"default\", NULL AS \"extra\" FROM pragma_table_info('%s');", - parameters.values[0].ToString()); + auto table = QualifiedName::Parse(parameters.values[0].ToString()); + + // clang-format off + string sql = R"( + SELECT + name AS "column_name", + type as "column_type", + CASE WHEN "notnull" THEN 'NO' ELSE 'YES' END AS "null", + (SELECT + MIN(CASE + WHEN constraint_type='PRIMARY KEY' THEN 'PRI' + WHEN constraint_type='UNIQUE' THEN 'UNI' + ELSE NULL END) + FROM duckdb_constraints() c + WHERE c.table_oid=cols.table_oid + AND list_contains(constraint_column_names, cols.column_name)) AS "key", + dflt_value AS "default", + NULL AS "extra" + FROM pragma_table_info('%func_param_table%') + LEFT JOIN duckdb_columns cols + ON cols.column_name = pragma_table_info.name + AND cols.table_name='%table_name%' + AND cols.schema_name='%table_schema%';)"; + // clang-format on + + sql = StringUtil::Replace(sql, "%func_param_table%", parameters.values[0].ToString()); + sql = StringUtil::Replace(sql, "%table_name%", table.name); + sql = StringUtil::Replace(sql, "%table_schema%", table.schema.empty() ? DEFAULT_SCHEMA : table.schema); + return sql; } string PragmaVersion(ClientContext &context, const FunctionParameters ¶meters) { @@ -127686,7 +128138,7 @@ unique_ptr CurrentSettingBind(ClientContext &context, ScalarFuncti auto key = StringUtil::Lower(key_str); Value val; if (!context.TryGetCurrentSetting(key, val)) { - throw InvalidInputException("unrecognized configuration parameter \"%s\"", key_str); + throw Catalog::UnrecognizedConfigurationError(context, key); } bound_function.return_type = val.type(); @@ -127998,6 +128450,7 @@ template static bool ClampSlice(const INPUT_TYPE &value, INDEX_TYPE &begin, INDEX_TYPE &end, bool begin_valid, bool end_valid) { // Clamp offsets begin = begin_valid ? begin : 0; + begin = (begin > 0) ? begin - 1 : begin; end = end_valid ? end : ValueLength(value); if (!ClampIndex(begin, value) || !ClampIndex(end, value)) { return false; @@ -128034,7 +128487,7 @@ static void ExecuteSlice(Vector &result, Vector &s, Vector &b, Vector &e, const auto edata = ConstantVector::GetData(e); auto sliced = sdata[0]; - auto begin = (bdata[0] > 0) ? bdata[0] - 1 : bdata[0]; + auto begin = bdata[0]; auto end = edata[0]; auto svalid = !ConstantVector::IsNull(s); @@ -128066,8 +128519,6 @@ static void ExecuteSlice(Vector &result, Vector &s, Vector &b, Vector &e, const auto begin = ((INDEX_TYPE *)bdata.data)[bidx]; auto end = ((INDEX_TYPE *)edata.data)[eidx]; - begin = (begin > 0) ? begin - 1 : begin; - auto svalid = sdata.validity.RowIsValid(sidx); auto bvalid = bdata.validity.RowIsValid(bidx); auto evalid = edata.validity.RowIsValid(eidx); @@ -130737,46 +131188,94 @@ void MapConversionVerify(Vector &vector, idx_t count) { } } -static void MapFunction(DataChunk &args, ExpressionState &state, Vector &result) { - D_ASSERT(result.GetType().id() == LogicalTypeId::MAP); +// Example: +// source: [1,2,3], expansion_factor: 4 +// target (result): [1,2,3,1,2,3,1,2,3,1,2,3] +static void CreateExpandedVector(const Vector &source, Vector &target, idx_t expansion_factor) { + idx_t count = ListVector::GetListSize(source); + auto &entry = ListVector::GetEntry(source); - //! Otherwise if its not a constant vector, this breaks the optimizer - result.SetVectorType(VectorType::CONSTANT_VECTOR); - for (idx_t i = 0; i < args.ColumnCount(); i++) { - if (args.data[i].GetVectorType() != VectorType::CONSTANT_VECTOR) { - result.SetVectorType(VectorType::FLAT_VECTOR); + idx_t target_idx = 0; + for (idx_t copy = 0; copy < expansion_factor; copy++) { + for (idx_t key_idx = 0; key_idx < count; key_idx++) { + target.SetValue(target_idx, entry.GetValue(key_idx)); + target_idx++; } } + D_ASSERT(target_idx == count * expansion_factor); +} + +static void AlignVectorToReference(const Vector &original, const Vector &reference, idx_t tuple_count, Vector &result) { + auto original_length = ListVector::GetListSize(original); + auto new_length = ListVector::GetListSize(reference); + + Vector expanded_const(ListType::GetChildType(original.GetType()), new_length); + + auto expansion_factor = new_length / original_length; + if (expansion_factor != tuple_count) { + throw InvalidInputException("Error in MAP creation: key list and value list do not align. i.e. different " + "size or incompatible structure"); + } + CreateExpandedVector(original, expanded_const, expansion_factor); + result.Reference(expanded_const); +} + +static void MapFunction(DataChunk &args, ExpressionState &state, Vector &result) { + D_ASSERT(result.GetType().id() == LogicalTypeId::MAP); auto &key_vector = MapVector::GetKeys(result); auto &value_vector = MapVector::GetValues(result); - auto list_data = ListVector::GetData(result); + auto result_data = ListVector::GetData(result); + result.SetVectorType(VectorType::CONSTANT_VECTOR); if (args.data.empty()) { ListVector::SetListSize(result, 0); - list_data->offset = 0; - list_data->length = 0; + result_data->offset = 0; + result_data->length = 0; result.Verify(args.size()); return; } - auto args_data = ListVector::GetData(args.data[0]); + bool keys_are_const = args.data[0].GetVectorType() == VectorType::CONSTANT_VECTOR; + bool values_are_const = args.data[1].GetVectorType() == VectorType::CONSTANT_VECTOR; + if (!keys_are_const || !values_are_const) { + result.SetVectorType(VectorType::FLAT_VECTOR); + } + auto key_count = ListVector::GetListSize(args.data[0]); auto value_count = ListVector::GetListSize(args.data[1]); - if (key_count != value_count) { - throw InvalidInputException( - "Error in MAP creation: key list has a different size from value list (%lld keys, %lld values)", key_count, - value_count); + auto key_data = ListVector::GetData(args.data[0]); + auto value_data = ListVector::GetData(args.data[1]); + auto src_data = key_data; + + if (keys_are_const && !values_are_const) { + AlignVectorToReference(args.data[0], args.data[1], args.size(), key_vector); + src_data = value_data; + } else if (values_are_const && !keys_are_const) { + AlignVectorToReference(args.data[1], args.data[0], args.size(), value_vector); + } else { + if (key_count != value_count || memcmp(key_data, value_data, args.size() * sizeof(list_entry_t)) != 0) { + throw InvalidInputException("Error in MAP creation: key list and value list do not align. i.e. different " + "size or incompatible structure"); + } } - ListVector::Reserve(result, key_count); - ListVector::SetListSize(result, key_count); + ListVector::SetListSize(result, MaxValue(key_count, value_count)); + + result_data = ListVector::GetData(result); for (idx_t i = 0; i < args.size(); i++) { - list_data[i] = args_data[i]; + result_data[i] = src_data[i]; + } + + // check whether one of the vectors has already been referenced to an expanded vector in the case of const/non-const + // combination. If not, then referencing is still necessary + if (!(keys_are_const && !values_are_const)) { + key_vector.Reference(ListVector::GetEntry(args.data[0])); + } + if (!(values_are_const && !keys_are_const)) { + value_vector.Reference(ListVector::GetEntry(args.data[1])); } - key_vector.Reference(ListVector::GetEntry(args.data[0])); - value_vector.Reference(ListVector::GetEntry(args.data[1])); MapConversionVerify(result, args.size()); result.Verify(args.size()); } @@ -137950,7 +138449,7 @@ bool LikeOperatorFunction(string_t &s, string_t &pat, char escape) { return LikeOperatorFunction(s.GetDataUnsafe(), s.GetSize(), pat.GetDataUnsafe(), pat.GetSize(), escape); } -bool LikeFun::Glob(const char *string, idx_t slen, const char *pattern, idx_t plen) { +bool LikeFun::Glob(const char *string, idx_t slen, const char *pattern, idx_t plen, bool allow_question_mark) { idx_t sidx = 0; idx_t pidx = 0; main_loop : { @@ -137979,8 +138478,11 @@ main_loop : { return false; } case '?': - // wildcard: matches anything but null - break; + // when enabled: matches anything but null + if (allow_question_mark) { + break; + } + DUCKDB_EXPLICIT_FALLTHROUGH; case '[': pidx++; goto parse_bracket; @@ -143744,6 +144246,10 @@ struct DuckDBTablesFun { static void RegisterFunction(BuiltinFunctions &set); }; +struct DuckDBTemporaryFilesFun { + static void RegisterFunction(BuiltinFunctions &set); +}; + struct DuckDBTypesFun { static void RegisterFunction(BuiltinFunctions &set); }; @@ -144449,53 +144955,10 @@ class UnionByName { -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/parser/tableref/table_function_ref.hpp -// -// -//===----------------------------------------------------------------------===// - - - - - -namespace duckdb { -//! Represents a Table producing function -class TableFunctionRef : public TableRef { -public: - DUCKDB_API TableFunctionRef(); - - unique_ptr function; - vector column_name_alias; - - // if the function takes a subquery as argument its in here - unique_ptr subquery; - - // External dependencies of this table function - unique_ptr external_dependency; - -public: - string ToString() const override; - - bool Equals(const TableRef *other_p) const override; - - unique_ptr Copy() override; - - //! Serializes a blob into a BaseTableRef - void Serialize(FieldWriter &serializer) const override; - //! Deserializes a blob back into a BaseTableRef - static unique_ptr Deserialize(FieldReader &source); -}; -} // namespace duckdb - - - #include namespace duckdb { @@ -144512,10 +144975,7 @@ unique_ptr ReadCSV::OpenCSV(const string &file_path, FileCompress void ReadCSVData::InitializeFiles(ClientContext &context, const vector &patterns) { auto &fs = FileSystem::GetFileSystem(context); for (auto &file_pattern : patterns) { - auto found_files = fs.Glob(file_pattern, context); - if (found_files.empty()) { - throw IOException("No files found that match the pattern \"%s\"", file_pattern); - } + auto found_files = fs.GlobFiles(file_pattern, context); files.insert(files.end(), found_files.begin(), found_files.end()); } } @@ -144583,6 +145043,17 @@ static unique_ptr ReadCSVBind(ClientContext &context, TableFunctio if (names.empty()) { throw BinderException("read_csv requires at least a single column as input!"); } + } else if (loption == "column_names" || loption == "names") { + if (!options.name_list.empty()) { + throw BinderException("read_csv_auto column_names/names can only be supplied once"); + } + if (kv.second.IsNull()) { + throw BinderException("read_csv_auto %s cannot be NULL", kv.first); + } + auto &children = ListValue::GetChildren(kv.second); + for (auto &child : children) { + options.name_list.push_back(StringValue::Get(child)); + } } else if (loption == "column_types" || loption == "types" || loption == "dtypes") { auto &child_type = kv.second.type(); if (child_type.id() != LogicalTypeId::STRUCT && child_type.id() != LogicalTypeId::LIST) { @@ -144736,9 +145207,6 @@ struct ParallelCSVGlobalState : public GlobalTableFunctionState { : file_handle(std::move(file_handle_p)), system_threads(system_threads_p), buffer_size(buffer_size_p), force_parallelism(force_parallelism_p) { current_file_path = files_path_p[0]; - for (idx_t i = 0; i < rows_to_skip; i++) { - file_handle->ReadLine(); - } estimated_linenr = rows_to_skip; file_size = file_handle->FileSize(); first_file_size = file_size; @@ -144788,7 +145256,7 @@ struct ParallelCSVGlobalState : public GlobalTableFunctionState { progress = double(bytes_read) / double(file_size); } // now get the total percentage of files read - double percentage = double(file_index) / total_files; + double percentage = double(file_index - 1) / total_files; percentage += (double(1) / double(total_files)) * progress; return percentage * 100; } @@ -145060,6 +145528,7 @@ struct SingleThreadedCSVState : public GlobalTableFunctionState { { lock_guard l(csv_lock); if (initial_reader) { + total_size = initial_reader->file_handle ? initial_reader->file_handle->FileSize() : 0; return std::move(initial_reader); } if (next_file >= total_files) { @@ -145448,6 +145917,8 @@ TableFunction ReadCSVTableFunction::GetAutoFunction(bool list_parameter) { read_csv_auto.named_parameters["column_types"] = LogicalType::ANY; read_csv_auto.named_parameters["dtypes"] = LogicalType::ANY; read_csv_auto.named_parameters["types"] = LogicalType::ANY; + read_csv_auto.named_parameters["names"] = LogicalType::LIST(LogicalType::VARCHAR); + read_csv_auto.named_parameters["column_names"] = LogicalType::LIST(LogicalType::VARCHAR); return read_csv_auto; } @@ -147841,6 +148312,65 @@ void DuckDBTablesFun::RegisterFunction(BuiltinFunctions &set) { +namespace duckdb { + +struct DuckDBTemporaryFilesData : public GlobalTableFunctionState { + DuckDBTemporaryFilesData() : offset(0) { + } + + vector entries; + idx_t offset; +}; + +static unique_ptr DuckDBTemporaryFilesBind(ClientContext &context, TableFunctionBindInput &input, + vector &return_types, vector &names) { + names.emplace_back("path"); + return_types.emplace_back(LogicalType::VARCHAR); + + names.emplace_back("size"); + return_types.emplace_back(LogicalType::BIGINT); + + return nullptr; +} + +unique_ptr DuckDBTemporaryFilesInit(ClientContext &context, TableFunctionInitInput &input) { + auto result = make_unique(); + + result->entries = BufferManager::GetBufferManager(context).GetTemporaryFiles(); + return std::move(result); +} + +void DuckDBTemporaryFilesFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) { + auto &data = (DuckDBTemporaryFilesData &)*data_p.global_state; + if (data.offset >= data.entries.size()) { + // finished returning values + return; + } + // start returning values + // either fill up the chunk or return all the remaining columns + idx_t count = 0; + while (data.offset < data.entries.size() && count < STANDARD_VECTOR_SIZE) { + auto &entry = data.entries[data.offset++]; + // return values: + idx_t col = 0; + // database_name, VARCHAR + output.SetValue(col++, count, entry.path); + // database_oid, BIGINT + output.SetValue(col++, count, Value::BIGINT(entry.size)); + count++; + } + output.SetCardinality(count); +} + +void DuckDBTemporaryFilesFun::RegisterFunction(BuiltinFunctions &set) { + set.AddFunction(TableFunction("duckdb_temporary_files", {}, DuckDBTemporaryFilesFunction, DuckDBTemporaryFilesBind, + DuckDBTemporaryFilesInit)); +} + +} // namespace duckdb + + + @@ -149171,7 +149701,7 @@ namespace duckdb { //! SelectNode represents a standard SELECT statement class SelectNode : public QueryNode { public: - SelectNode(); + DUCKDB_API SelectNode(); //! The projection list vector> select_list; @@ -149280,6 +149810,7 @@ void BuiltinFunctions::RegisterSQLiteFunctions() { DuckDBSequencesFun::RegisterFunction(*this); DuckDBSettingsFun::RegisterFunction(*this); DuckDBTablesFun::RegisterFunction(*this); + DuckDBTemporaryFilesFun::RegisterFunction(*this); DuckDBTypesFun::RegisterFunction(*this); DuckDBViewsFun::RegisterFunction(*this); TestAllTypesFun::RegisterFunction(*this); @@ -149576,9 +150107,12 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun // behold storage.info->indexes.Scan([&](Index &index) { // first rewrite the index expression so the ColumnBindings align with the column bindings of the current table + if (index.unbound_expressions.size() > 1) { + // NOTE: index scans are not (yet) supported for compound index keys return false; } + auto index_expression = index.unbound_expressions[0]->Copy(); bool rewrite_possible = true; RewriteIndexExpression(index, get, *index_expression, rewrite_possible); @@ -155402,6 +155936,7 @@ unique_ptr ClientContext::PendingStatementOrPreparedStatemen statement = std::move(copied_statement); break; } +#ifndef DUCKDB_ALTERNATIVE_VERIFY case StatementType::COPY_STATEMENT: case StatementType::INSERT_STATEMENT: case StatementType::DELETE_STATEMENT: @@ -155422,6 +155957,7 @@ unique_ptr ClientContext::PendingStatementOrPreparedStatemen statement = std::move(parser.statements[0]); break; } +#endif default: statement = std::move(copied_statement); break; @@ -156225,6 +156761,7 @@ static ConfigurationOption internal_options[] = {DUCKDB_GLOBAL(AccessModeSetting DUCKDB_LOCAL(EnableProgressBarPrintSetting), DUCKDB_GLOBAL(ExperimentalParallelCSVSetting), DUCKDB_LOCAL(ExplainOutputSetting), + DUCKDB_GLOBAL(ExtensionDirectorySetting), DUCKDB_GLOBAL(ExternalThreadsSetting), DUCKDB_LOCAL(FileSearchPathSetting), DUCKDB_GLOBAL(ForceCompressionSetting), @@ -157260,9 +157797,15 @@ unique_ptr DatabaseInstance::CreateAttachedDatabase(AttachInfo if (entry == config.storage_extensions.end()) { throw BinderException("Unrecognized storage type \"%s\"", type); } - // use storage extension to create the initial database - attached_database = make_unique(*this, Catalog::GetSystemCatalog(*this), *entry->second, - info.name, info, access_mode); + + if (entry->second->attach != nullptr && entry->second->create_transaction_manager != nullptr) { + // use storage extension to create the initial database + attached_database = make_unique(*this, Catalog::GetSystemCatalog(*this), *entry->second, + info.name, info, access_mode); + } else { + attached_database = make_unique(*this, Catalog::GetSystemCatalog(*this), info.name, + info.path, access_mode); + } } else { // check if this is an in-memory database or not attached_database = @@ -157316,6 +157859,7 @@ void DatabaseInstance::Initialize(const char *database_path, DBConfig *user_conf AttachInfo info; info.name = AttachedDatabase::ExtractDatabaseName(config.options.database_path); info.path = config.options.database_path; + auto attached_database = CreateAttachedDatabase(info, database_type, config.options.access_mode); auto initial_database = attached_database.get(); { @@ -157472,7 +158016,8 @@ idx_t DuckDB::NumberOfThreads() { } bool DatabaseInstance::ExtensionIsLoaded(const std::string &name) { - return loaded_extensions.find(name) != loaded_extensions.end(); + auto extension_name = ExtensionHelper::GetExtensionName(name); + return loaded_extensions.find(extension_name) != loaded_extensions.end(); } bool DuckDB::ExtensionIsLoaded(const std::string &name) { @@ -157480,7 +158025,8 @@ bool DuckDB::ExtensionIsLoaded(const std::string &name) { } void DatabaseInstance::SetExtensionLoaded(const std::string &name) { - loaded_extensions.insert(name); + auto extension_name = ExtensionHelper::GetExtensionName(name); + loaded_extensions.insert(extension_name); } bool DatabaseInstance::TryGetCurrentSetting(const std::string &key, Value &result) { @@ -157831,8 +158377,9 @@ ExtensionAlias ExtensionHelper::GetExtensionAlias(idx_t index) { } string ExtensionHelper::ApplyExtensionAlias(string extension_name) { + auto lname = StringUtil::Lower(extension_name); for (idx_t index = 0; internal_aliases[index].alias; index++) { - if (extension_name == internal_aliases[index].alias) { + if (lname == internal_aliases[index].alias) { return internal_aliases[index].extension; } } @@ -157957,6 +158504,21 @@ DefaultExtension ExtensionHelper::GetDefaultExtension(idx_t index) { return internal_extensions[index]; } +//===--------------------------------------------------------------------===// +// Allow Auto-Install Extensions +//===--------------------------------------------------------------------===// +static const char *auto_install[] = {"motherduck", "postgres_scanner", "sqlite_scanner", nullptr}; + +bool ExtensionHelper::AllowAutoInstall(const string &extension) { + auto lcase = StringUtil::Lower(extension); + for (idx_t i = 0; auto_install[i]; i++) { + if (lcase == auto_install[i]) { + return true; + } + } + return false; +} + //===--------------------------------------------------------------------===// // Load Statically Compiled Extension //===--------------------------------------------------------------------===// @@ -166561,22 +167123,57 @@ const vector ExtensionHelper::PathComponents() { return vector {".duckdb", "extensions", GetVersionDirectoryName(), DuckDB::Platform()}; } -string ExtensionHelper::ExtensionDirectory(ClientContext &context) { - auto &fs = FileSystem::GetFileSystem(context); - string local_path = fs.GetHomeDirectory(FileSystem::GetFileOpener(context)); - if (!fs.DirectoryExists(local_path)) { - throw IOException("Can't find the home directory at '%s'\nSpecify a home directory using the SET " - "home_directory='/path/to/dir' option.", - local_path); +string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs, FileOpener *opener) { + string extension_directory; + if (!config.options.extension_directory.empty()) { // create the extension directory if not present + extension_directory = config.options.extension_directory; + // TODO this should probably live in the FileSystem + // convert random separators to platform-canonic + extension_directory = fs.ConvertSeparators(extension_directory); + // expand ~ in extension directory + extension_directory = fs.ExpandPath(extension_directory, opener); + if (!fs.DirectoryExists(extension_directory)) { + auto sep = fs.PathSeparator(); + auto splits = StringUtil::Split(extension_directory, sep); + D_ASSERT(!splits.empty()); + string extension_directory_prefix; + if (StringUtil::StartsWith(extension_directory, sep)) { + extension_directory_prefix = sep; // this is swallowed by Split otherwise + } + for (auto &split : splits) { + extension_directory_prefix = extension_directory_prefix + split + sep; + if (!fs.DirectoryExists(extension_directory_prefix)) { + fs.CreateDirectory(extension_directory_prefix); + } + } + } + } else { // otherwise default to home + string home_directory = fs.GetHomeDirectory(opener); + // exception if the home directory does not exist, don't create whatever we think is home + if (!fs.DirectoryExists(home_directory)) { + throw IOException("Can't find the home directory at '%s'\nSpecify a home directory using the SET " + "home_directory='/path/to/dir' option.", + home_directory); + } + extension_directory = home_directory; } + D_ASSERT(fs.DirectoryExists(extension_directory)); + auto path_components = PathComponents(); for (auto &path_ele : path_components) { - local_path = fs.JoinPath(local_path, path_ele); - if (!fs.DirectoryExists(local_path)) { - fs.CreateDirectory(local_path); + extension_directory = fs.JoinPath(extension_directory, path_ele); + if (!fs.DirectoryExists(extension_directory)) { + fs.CreateDirectory(extension_directory); } } - return local_path; + return extension_directory; +} + +string ExtensionHelper::ExtensionDirectory(ClientContext &context) { + auto &config = DBConfig::GetConfig(context); + auto &fs = FileSystem::GetFileSystem(context); + auto opener = FileSystem::GetFileOpener(context); + return ExtensionDirectory(config, fs, opener); } bool ExtensionHelper::CreateSuggestions(const string &extension_name, string &message) { @@ -166598,15 +167195,24 @@ bool ExtensionHelper::CreateSuggestions(const string &extension_name, string &me return false; } +void ExtensionHelper::InstallExtension(DBConfig &config, FileSystem &fs, const string &extension, bool force_install) { + string local_path = ExtensionDirectory(config, fs, nullptr); + InstallExtensionInternal(config, nullptr, fs, local_path, extension, force_install); +} + void ExtensionHelper::InstallExtension(ClientContext &context, const string &extension, bool force_install) { auto &config = DBConfig::GetConfig(context); - if (!config.options.enable_external_access) { - throw PermissionException("Installing extensions is disabled through configuration"); - } auto &fs = FileSystem::GetFileSystem(context); - string local_path = ExtensionDirectory(context); + auto &client_config = ClientConfig::GetConfig(context); + InstallExtensionInternal(config, &client_config, fs, local_path, extension, force_install); +} +void ExtensionHelper::InstallExtensionInternal(DBConfig &config, ClientConfig *client_config, FileSystem &fs, + const string &local_path, const string &extension, bool force_install) { + if (!config.options.enable_external_access) { + throw PermissionException("Installing extensions is disabled through configuration"); + } auto extension_name = ApplyExtensionAlias(fs.ExtractBaseName(extension)); string local_extension_path = fs.JoinPath(local_path, extension_name + ".duckdb_extension"); @@ -166646,7 +167252,7 @@ void ExtensionHelper::InstallExtension(ClientContext &context, const string &ext string default_endpoint = "http://extensions.duckdb.org"; string versioned_path = "/${REVISION}/${PLATFORM}/${NAME}.duckdb_extension.gz"; - string &custom_endpoint = ClientConfig::GetConfig(context).custom_extension_repo; + string custom_endpoint = client_config ? client_config->custom_extension_repo : string(); string &endpoint = !custom_endpoint.empty() ? custom_endpoint : default_endpoint; string url_template = endpoint + versioned_path; @@ -166803,7 +167409,8 @@ static T LoadFunctionFromDLL(void *dll, const string &function_name, const strin return (T)function; } -ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileOpener *opener, const string &extension) { +bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileOpener *opener, const string &extension, + ExtensionInitResult &result, string &error) { if (!config.options.enable_external_access) { throw PermissionException("Loading external extensions is disabled through configuration"); } @@ -166812,8 +167419,14 @@ ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileOpener *o auto filename = fs.ConvertSeparators(extension); // shorthand case - if (!StringUtil::Contains(extension, ".") && !StringUtil::Contains(extension, fs.PathSeparator())) { - string local_path = fs.GetHomeDirectory(opener); + if (!ExtensionHelper::IsFullPath(extension)) { + string local_path = !config.options.extension_directory.empty() ? config.options.extension_directory + : fs.GetHomeDirectory(opener); + + // convert random separators to platform-canonic + local_path = fs.ConvertSeparators(local_path); + // expand ~ in extension directory + local_path = fs.ExpandPath(local_path, opener); auto path_components = PathComponents(); for (auto &path_ele : path_components) { local_path = fs.JoinPath(local_path, path_ele); @@ -166821,14 +167434,14 @@ ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileOpener *o string extension_name = ApplyExtensionAlias(extension); filename = fs.JoinPath(local_path, extension_name + ".duckdb_extension"); } - if (!fs.FileExists(filename)) { string message; bool exact_match = ExtensionHelper::CreateSuggestions(extension, message); if (exact_match) { message += "\nInstall it first using \"INSTALL " + extension + "\"."; } - throw IOException("Extension \"%s\" not found.\n%s", filename, message); + error = StringUtil::Format("Extension \"%s\" not found.\n%s", filename, message); + return false; } if (!config.options.allow_unsigned_extensions) { auto handle = fs.OpenFile(filename, FileFlags::FILE_FLAGS_READ); @@ -166895,16 +167508,43 @@ ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileOpener *o extension_version, engine_version); } - ExtensionInitResult res; - res.basename = basename; - res.filename = filename; - res.lib_hdl = lib_hdl; - return res; + result.basename = basename; + result.filename = filename; + result.lib_hdl = lib_hdl; + return true; +} + +ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileOpener *opener, const string &extension) { + string error; + ExtensionInitResult result; + if (!TryInitialLoad(config, opener, extension, result, error)) { + throw IOException(error); + } + return result; +} + +bool ExtensionHelper::IsFullPath(const string &extension) { + return StringUtil::Contains(extension, ".") || StringUtil::Contains(extension, "/") || + StringUtil::Contains(extension, "\\"); +} + +string ExtensionHelper::GetExtensionName(const string &extension) { + if (!IsFullPath(extension)) { + return extension; + } + auto splits = StringUtil::Split(StringUtil::Replace(extension, "\\", "/"), '/'); + if (splits.empty()) { + return extension; + } + splits = StringUtil::Split(splits.back(), '.'); + if (splits.empty()) { + return extension; + } + return StringUtil::Lower(splits.front()); } void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, FileOpener *opener, const string &extension) { - auto &loaded_extensions = db.LoadedExtensions(); - if (loaded_extensions.find(extension) != loaded_extensions.end()) { + if (db.ExtensionIsLoaded(extension)) { return; } @@ -166930,7 +167570,22 @@ void ExtensionHelper::LoadExternalExtension(ClientContext &context, const string void ExtensionHelper::StorageInit(string &extension, DBConfig &config) { extension = ExtensionHelper::ApplyExtensionAlias(extension); - auto res = InitialLoad(config, nullptr, extension); // TODO opener + ExtensionInitResult res; + string error; + if (!TryInitialLoad(config, nullptr, extension, res, error)) { + if (!ExtensionHelper::AllowAutoInstall(extension)) { + throw IOException(error); + } + // the extension load failed - try installing the extension + if (!config.file_system) { + throw InternalException("Attempting to install an extension without a file system"); + } + ExtensionHelper::InstallExtension(config, *config.file_system, extension, false); + // try loading again + if (!TryInitialLoad(config, nullptr, extension, res, error)) { + throw IOException(error); + } + } auto storage_fun_name = res.basename + "_storage_init"; ext_storage_init_t storage_init_fun; @@ -168265,7 +168920,7 @@ namespace duckdb { //! Represents a subquery class SubqueryRef : public TableRef { public: - explicit SubqueryRef(unique_ptr subquery, string alias = string()); + DUCKDB_API explicit SubqueryRef(unique_ptr subquery, string alias = string()); //! The subquery unique_ptr subquery; @@ -171441,6 +172096,22 @@ Value ExplainOutputSetting::GetSetting(ClientContext &context) { } } +//===--------------------------------------------------------------------===// +// Extension Directory Setting +//===--------------------------------------------------------------------===// +void ExtensionDirectorySetting::SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &input) { + auto new_directory = input.ToString(); + config.options.extension_directory = input.ToString(); +} + +void ExtensionDirectorySetting::ResetGlobal(DatabaseInstance *db, DBConfig &config) { + config.options.extension_directory = DBConfig().options.extension_directory; +} + +Value ExtensionDirectorySetting::GetSetting(ClientContext &context) { + return Value(DBConfig::GetConfig(context).options.extension_directory); +} + //===--------------------------------------------------------------------===// // External Threads Setting //===--------------------------------------------------------------------===// @@ -182812,12 +183483,8 @@ void StatisticsPropagator::PropagateStatistics(LogicalComparisonJoin &join, uniq *node_ptr = std::move(cross_product); return; } - case JoinType::INNER: - case JoinType::LEFT: - case JoinType::RIGHT: - case JoinType::OUTER: { - // inner/left/right/full outer join, replace with cross product - // since the condition is always true, left/right/outer join are equivalent to inner join here + case JoinType::INNER: { + // inner, replace with cross product auto cross_product = LogicalCrossProduct::Create(std::move(join.children[0]), std::move(join.children[1])); *node_ptr = std::move(cross_product); @@ -183851,13 +184518,6 @@ class PipelineExecutor { //! The final chunk used for moving data into the sink DataChunk final_chunk; - //! Indicates that the first non-finished operator in the pipeline with RequireFinalExecute has some pending result - bool pending_final_execute = false; - //! The OperatorFinalizeResultType corresponding to the currently pending final_execute result - OperatorFinalizeResultType cached_final_execute_result; - //! Source has been exhausted - bool source_empty = false; - //! The operators that are not yet finished executing and have data remaining //! If the stack of in_process_operators is empty, we fetch from the source instead stack in_process_operators; @@ -185125,52 +185785,6 @@ OperatorResultType PipelineExecutor::ExecutePushInternal(DataChunk &input, idx_t } } -// Pull a single DataChunk from the pipeline by flushing any operators holding cached output -void PipelineExecutor::FlushCachingOperatorsPull(DataChunk &result) { - idx_t start_idx = IsFinished() ? idx_t(finished_processing_idx) : 0; - idx_t op_idx = start_idx; - while (op_idx < pipeline.operators.size()) { - if (!pipeline.operators[op_idx]->RequiresFinalExecute()) { - op_idx++; - continue; - } - - OperatorFinalizeResultType finalize_result; - DataChunk &curr_chunk = - op_idx + 1 >= intermediate_chunks.size() ? final_chunk : *intermediate_chunks[op_idx + 1]; - - if (pending_final_execute) { - // Still have a cached chunk from a last pull, reuse chunk - finalize_result = cached_final_execute_result; - } else { - // Flush the current operator - auto current_operator = pipeline.operators[op_idx]; - StartOperator(current_operator); - finalize_result = current_operator->FinalExecute(context, curr_chunk, *current_operator->op_state, - *intermediate_states[op_idx]); - EndOperator(current_operator, &curr_chunk); - } - - auto execute_result = Execute(curr_chunk, result, op_idx + 1); - - if (execute_result == OperatorResultType::HAVE_MORE_OUTPUT) { - pending_final_execute = true; - cached_final_execute_result = finalize_result; - } else { - pending_final_execute = false; - if (finalize_result == OperatorFinalizeResultType::FINISHED) { - FinishProcessing(op_idx); - op_idx++; - } - } - - // Some non-empty result was pulled from some caching operator, we're done for this pull - if (result.size() > 0) { - break; - } - } -} - // Push all remaining cached operator output through the pipeline void PipelineExecutor::FlushCachingOperatorsPush() { idx_t start_idx = IsFinished() ? idx_t(finished_processing_idx) : 0; @@ -185234,21 +185848,13 @@ void PipelineExecutor::ExecutePull(DataChunk &result) { D_ASSERT(!pipeline.sink); auto &source_chunk = pipeline.operators.empty() ? result : *intermediate_chunks[0]; while (result.size() == 0) { - if (source_empty) { - FlushCachingOperatorsPull(result); - break; - } - if (in_process_operators.empty()) { source_chunk.Reset(); FetchFromSource(source_chunk); - if (source_chunk.size() == 0) { - source_empty = true; - continue; + break; } } - if (!pipeline.operators.empty()) { auto state = Execute(source_chunk, result); if (state == OperatorResultType::FINISHED) { @@ -192742,6 +193348,9 @@ unique_ptr CreateIndexInfo::Copy() const { for (auto &expr : expressions) { result->expressions.push_back(expr->Copy()); } + for (auto &expr : parsed_expressions) { + result->parsed_expressions.push_back(expr->Copy()); + } result->scan_types = scan_types; result->names = names; @@ -192811,9 +193420,6 @@ struct CreateDatabaseInfo : public CreateInfo { CreateDatabaseInfo() : CreateInfo(CatalogType::DATABASE_ENTRY) { } - //! Extension name which creates databases - string extension_name; - //! Name of the database string name; @@ -192824,7 +193430,6 @@ struct CreateDatabaseInfo : public CreateInfo { unique_ptr Copy() const override { auto result = make_unique(); CopyProperties(*result); - result->extension_name = extension_name; result->name = name; result->path = path; return unique_ptr(result.release()); @@ -194674,6 +195279,7 @@ typedef enum PGNodeTag { T_PGExportStmt, T_PGImportStmt, T_PGAttachStmt, + T_PGDetachStmt, T_PGCreateDatabaseStmt, T_PGUseStmt, @@ -198835,6 +199441,20 @@ typedef struct PGAttachStmt PGNode *query; } PGAttachStmt; +/* ---------------------- + * Dettach Statement + * ---------------------- + */ + +typedef struct PGDetachStmt +{ + PGNodeTag type; + char *db_name; /* list of names of attached databases */ + bool missing_ok; +} PGDetachStmt; + + + /* ---------------------- * CREATE DATABASE Statement * ---------------------- @@ -198999,6 +199619,7 @@ class Transformer { unique_ptr TransformShow(duckdb_libpgquery::PGNode *node); unique_ptr TransformShowSelect(duckdb_libpgquery::PGNode *node); unique_ptr TransformAttach(duckdb_libpgquery::PGNode *node); + unique_ptr TransformDetach(duckdb_libpgquery::PGNode *node); unique_ptr TransformUse(duckdb_libpgquery::PGNode *node); unique_ptr TransformPrepare(duckdb_libpgquery::PGNode *node); @@ -200777,16 +201398,6 @@ CopyStatement::CopyStatement(const CopyStatement &other) : SQLStatement(other), } } -string ConvertOptionValueToString(const Value &val) { - auto type = val.type().id(); - switch (type) { - case LogicalTypeId::VARCHAR: - return KeywordHelper::WriteOptionallyQuoted(val.ToString()); - default: - return val.ToString(); - } -} - string CopyStatement::CopyOptionsToString(const string &format, const case_insensitive_map_t> &options) const { if (format.empty() && options.empty()) { @@ -200811,15 +201422,14 @@ string CopyStatement::CopyOptionsToString(const string &format, // Options like HEADER don't need an explicit value // just providing the name already sets it to true } else if (values.size() == 1) { - result += ConvertOptionValueToString(values[0]); + result += values[0].ToSQLString(); } else { result += "( "; for (idx_t i = 0; i < values.size(); i++) { - auto &value = values[i]; if (i) { result += ", "; } - result += KeywordHelper::WriteOptionallyQuoted(value.ToString()); + result += values[i].ToSQLString(); } result += " )"; } @@ -200914,6 +201524,9 @@ DeleteStatement::DeleteStatement(const DeleteStatement &other) : SQLStatement(ot for (const auto &using_clause : other.using_clauses) { using_clauses.push_back(using_clause->Copy()); } + for (auto &expr : other.returning_list) { + returning_list.emplace_back(expr->Copy()); + } cte_map = other.cte_map.Copy(); } @@ -200951,6 +201564,50 @@ unique_ptr DeleteStatement::Copy() const { return unique_ptr(new DeleteStatement(*this)); } +} // namespace duckdb +//===----------------------------------------------------------------------===// +// DuckDB +// +// duckdb/parser/statement/detach_statement.hpp +// +// +//===----------------------------------------------------------------------===// + + + + + + +namespace duckdb { + +class DetachStatement : public SQLStatement { +public: + DetachStatement(); + + unique_ptr info; + +protected: + DetachStatement(const DetachStatement &other); + +public: + unique_ptr Copy() const override; +}; + +} // namespace duckdb + + +namespace duckdb { + +DetachStatement::DetachStatement() : SQLStatement(StatementType::DETACH_STATEMENT) { +} + +DetachStatement::DetachStatement(const DetachStatement &other) : SQLStatement(other), info(other.info->Copy()) { +} + +unique_ptr DetachStatement::Copy() const { + return unique_ptr(new DetachStatement(*this)); +} + } // namespace duckdb @@ -201047,6 +201704,9 @@ OnConflictInfo::OnConflictInfo(const OnConflictInfo &other) if (other.set_info) { set_info = other.set_info->Copy(); } + if (other.condition) { + condition = other.condition->Copy(); + } } unique_ptr OnConflictInfo::Copy() const { @@ -201062,6 +201722,12 @@ InsertStatement::InsertStatement(const InsertStatement &other) select_statement(unique_ptr_cast(other.select_statement->Copy())), columns(other.columns), table(other.table), schema(other.schema), catalog(other.catalog) { cte_map = other.cte_map.Copy(); + for (auto &expr : other.returning_list) { + returning_list.emplace_back(expr->Copy()); + } + if (other.table_ref) { + table_ref = other.table_ref->Copy(); + } if (other.on_conflict_info) { on_conflict_info = other.on_conflict_info->Copy(); } @@ -201548,6 +202214,9 @@ UpdateStatement::UpdateStatement(const UpdateStatement &other) if (other.from_table) { from_table = other.from_table->Copy(); } + for (auto &expr : other.returning_list) { + returning_list.emplace_back(expr->Copy()); + } cte_map = other.cte_map.Copy(); } @@ -202346,16 +203015,16 @@ unique_ptr Transformer::TransformCase(duckdb_libpgquery::PGCas D_ASSERT(root); auto case_node = make_unique(); + auto root_arg = TransformExpression(reinterpret_cast(root->arg)); for (auto cell = root->args->head; cell != nullptr; cell = cell->next) { CaseCheck case_check; auto w = reinterpret_cast(cell->data.ptr_value); auto test_raw = TransformExpression(reinterpret_cast(w->expr)); unique_ptr test; - auto arg = TransformExpression(reinterpret_cast(root->arg)); - if (arg) { + if (root_arg) { case_check.when_expr = - make_unique(ExpressionType::COMPARE_EQUAL, std::move(arg), std::move(test_raw)); + make_unique(ExpressionType::COMPARE_EQUAL, root_arg->Copy(), std::move(test_raw)); } else { case_check.when_expr = std::move(test_raw); } @@ -205419,7 +206088,6 @@ unique_ptr Transformer::TransformCreateDatabase(duckdb_libpgque auto result = make_unique(); auto info = make_unique(); - info->extension_name = stmt->extension ? stmt->extension : string(); info->path = stmt->path ? stmt->path : string(); auto qualified_name = TransformQualifiedName(stmt->name); @@ -206107,6 +206775,25 @@ unique_ptr Transformer::TransformDelete(duckdb_libpgquery::PGNo + + +namespace duckdb { + +unique_ptr Transformer::TransformDetach(duckdb_libpgquery::PGNode *node) { + auto stmt = reinterpret_cast(node); + auto result = make_unique(); + auto info = make_unique(); + info->name = stmt->db_name; + info->if_exists = stmt->missing_ok; + + result->info = std::move(info); + return result; +} + +} // namespace duckdb + + + namespace duckdb { unique_ptr Transformer::TransformDrop(duckdb_libpgquery::PGNode *node) { @@ -207397,6 +208084,7 @@ unique_ptr Transformer::TransformTableRefNode(duckdb_libpgquery::PGNod + //===----------------------------------------------------------------------===// // DuckDB // @@ -207580,6 +208268,8 @@ unique_ptr Transformer::TransformStatementInternal(duckdb_libpgque return TransformAlterSequence(stmt); case duckdb_libpgquery::T_PGAttachStmt: return TransformAttach(stmt); + case duckdb_libpgquery::T_PGDetachStmt: + return TransformDetach(stmt); case duckdb_libpgquery::T_PGUseStmt: return TransformUse(stmt); case duckdb_libpgquery::T_PGCreateDatabaseStmt: @@ -207637,7 +208327,7 @@ vector BindContext::GetSimilarBindings(const string &column_name) { for (auto &kv : bindings) { auto binding = kv.second.get(); for (auto &name : binding->names) { - idx_t distance = StringUtil::LevenshteinDistance(name, column_name); + idx_t distance = StringUtil::SimilarityScore(name, column_name); scores.emplace_back(binding->alias + "." + name, distance); } } @@ -208412,6 +209102,9 @@ static void NegatePercentileFractions(ClientContext &context, unique_ptr(Value::LIST(values)); } else { bound.expr = make_unique(NegatePercentileValue(value, desc)); @@ -212738,16 +213431,6 @@ BoundStatement Binder::Bind(CallStatement &stmt) { namespace duckdb { -static vector ColumnListToIndices(const vector &vec) { - vector ret; - for (idx_t i = 0; i < vec.size(); i++) { - if (vec[i]) { - ret.push_back(i); - } - } - return ret; -} - vector GetUniqueNames(const vector &original_names) { unordered_set name_set; vector unique_names; @@ -212812,22 +213495,25 @@ BoundStatement Binder::BindCopyTo(CopyStatement &stmt) { for (auto &option : original_options) { auto loption = StringUtil::Lower(option.first); if (loption == "use_tmp_file") { - use_tmp_file = option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); + use_tmp_file = + option.second.empty() || option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); user_set_use_tmp_file = true; continue; } if (loption == "allow_overwrite") { - allow_overwrite = option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); + allow_overwrite = + option.second.empty() || option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); continue; } if (loption == "per_thread_output") { - per_thread_output = option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); + per_thread_output = + option.second.empty() || option.second[0].CastAs(context, LogicalType::BOOLEAN).GetValue(); continue; } if (loption == "partition_by") { auto converted = ConvertVectorToValue(std::move(option.second)); - partition_cols = ColumnListToIndices(ParseColumnList(converted, select_node.names, loption)); + partition_cols = ParseColumnsOrdered(converted, select_node.names, loption); continue; } stmt.info->options[option.first] = option.second; @@ -212980,8 +213666,6 @@ BoundStatement Binder::Bind(CopyStatement &stmt) { - - //===----------------------------------------------------------------------===// // DuckDB @@ -212996,19 +213680,26 @@ BoundStatement Binder::Bind(CopyStatement &stmt) { + + namespace duckdb { class BoundColumnRefExpression; -//! The INDEX binder is responsible for binding an expression within an Index statement +//! The IndexBinder is responsible for binding an expression within an index statement class IndexBinder : public ExpressionBinder { public: - IndexBinder(Binder &binder, ClientContext &context); + IndexBinder(Binder &binder, ClientContext &context, TableCatalogEntry *table = nullptr, + CreateIndexInfo *info = nullptr); protected: BindResult BindExpression(unique_ptr *expr_ptr, idx_t depth, bool root_expression = false) override; - string UnsupportedAggregateMessage() override; + +private: + // only for WAL replay + TableCatalogEntry *table; + CreateIndexInfo *info; }; } // namespace duckdb @@ -213019,36 +213710,6 @@ class IndexBinder : public ExpressionBinder { -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/planner/parsed_data/bound_create_function_info.hpp -// -// -//===----------------------------------------------------------------------===// - - - - - -namespace duckdb { -class CatalogEntry; - -struct BoundCreateFunctionInfo { - explicit BoundCreateFunctionInfo(unique_ptr base) : base(std::move(base)) { - } - - //! The schema to create the table in - SchemaCatalogEntry *schema; - //! The base CreateInfo object - unique_ptr base; - - CreateMacroInfo &Base() { - return (CreateMacroInfo &)*base; - } -}; - -} // namespace duckdb @@ -213674,23 +214335,27 @@ BoundStatement Binder::Bind(CreateStatement &stmt) { case CatalogType::DATABASE_ENTRY: { // not supported in DuckDB yet but allow extensions to intercept and implement this functionality auto &base = (CreateDatabaseInfo &)*stmt.info; - string extension_name = base.extension_name; string database_name = base.name; string source_path = base.path; auto &config = DBConfig::GetConfig(context); - for (auto &extension : config.create_database_extensions) { - auto create_database_function_ref = - extension.function(context, extension_name, database_name, source_path, extension.data.get()); - if (create_database_function_ref) { - auto bound_create_database_func = Bind(*create_database_function_ref); - result.plan = CreatePlan(*bound_create_database_func); - break; - } - } - if (!result.plan) { + + if (config.storage_extensions.empty()) { throw NotImplementedException("CREATE DATABASE not supported in DuckDB yet"); } + // for now assume only one storage extension provides the custom create_database impl + for (auto &extension_entry : config.storage_extensions) { + if (extension_entry.second->create_database != nullptr) { + auto &storage_extension = extension_entry.second; + auto create_database_function_ref = storage_extension->create_database( + storage_extension->storage_info.get(), context, database_name, source_path); + if (create_database_function_ref) { + auto bound_create_database_func = Bind(*create_database_function_ref); + result.plan = CreatePlan(*bound_create_database_func); + break; + } + } + } break; } default: @@ -213760,6 +214425,8 @@ class CheckBinder : public ExpressionBinder { + + #include namespace duckdb { @@ -214043,6 +214710,17 @@ unique_ptr Binder::BindCreateTableInfo(unique_ptr> Binder::BindCreateIndexExpressions(TableCatalogEntry *table, CreateIndexInfo *info) { + vector> expressions; + + auto index_binder = IndexBinder(*this, this->context, table, info); + for (auto &expr : info->expressions) { + expressions.push_back(index_binder.Bind(expr)); + } + + return expressions; +} + } // namespace duckdb @@ -214172,6 +214850,29 @@ BoundStatement Binder::Bind(DeleteStatement &stmt) { +namespace duckdb { + +BoundStatement Binder::Bind(DetachStatement &stmt) { + BoundStatement result; + + result.plan = make_unique(LogicalOperatorType::LOGICAL_DETACH, std::move(stmt.info)); + result.names = {"Success"}; + result.types = {LogicalType::BOOLEAN}; + properties.allow_stream_result = false; + properties.return_type = StatementReturnType::NOTHING; + return result; +} + +} // namespace duckdb + + + + + + + + + namespace duckdb { @@ -214212,10 +214913,31 @@ BoundStatement Binder::Bind(DropStatement &stmt) { stmt.info->schema = entry->schema->name; break; } - case CatalogType::DATABASE_ENTRY: - // attaching and detaching is read-only - stmt.info->catalog = SYSTEM_CATALOG; - break; + case CatalogType::DATABASE_ENTRY: { + auto &base = (DropInfo &)*stmt.info; + string database_name = base.name; + + auto &config = DBConfig::GetConfig(context); + // for now assume only one storage extension provides the custom drop_database impl + for (auto &extension_entry : config.storage_extensions) { + if (extension_entry.second->drop_database == nullptr) { + continue; + } + auto &storage_extension = extension_entry.second; + auto drop_database_function_ref = + storage_extension->drop_database(storage_extension->storage_info.get(), context, database_name); + if (drop_database_function_ref) { + auto bound_drop_database_func = Bind(*drop_database_function_ref); + result.plan = CreatePlan(*bound_drop_database_func); + result.names = {"Success"}; + result.types = {LogicalType::BIGINT}; + properties.allow_stream_result = false; + properties.return_type = StatementReturnType::NOTHING; + return result; + } + } + throw BinderException("Drop is not supported for this database!"); + } default: throw BinderException("Unknown catalog type for drop statement!"); } @@ -214949,7 +215671,28 @@ void Binder::BindOnConflictClause(LogicalInsert &insert, TableCatalogEntry &tabl insert.on_conflict_condition = std::move(condition); } - auto projection_index = insert.children[0]->GetTableIndex()[0]; + auto bindings = insert.children[0]->GetColumnBindings(); + idx_t projection_index = DConstants::INVALID_INDEX; + std::vector> *insert_child_operators; + insert_child_operators = &insert.children; + while (projection_index == DConstants::INVALID_INDEX) { + if (insert_child_operators->empty()) { + // No further children to visit + break; + } + D_ASSERT(insert_child_operators->size() >= 1); + auto ¤t_child = (*insert_child_operators)[0]; + auto table_indices = current_child->GetTableIndex(); + if (table_indices.empty()) { + // This operator does not have a table index to refer to, we have to visit its children + insert_child_operators = ¤t_child->children; + continue; + } + projection_index = table_indices[0]; + } + if (projection_index == DConstants::INVALID_INDEX) { + throw InternalException("Could not locate a table_index from the children of the insert"); + } string unused; auto original_binding = bind_context.GetBinding(table_alias, unused); @@ -216458,6 +217201,8 @@ unique_ptr Binder::Bind(JoinRef &ref) { { LateralBinder binder(left_binder, context); result->right = right_binder.Bind(*ref.right); + result->correlated_columns = binder.ExtractCorrelatedColumns(right_binder); + result->lateral = binder.HasCorrelatedColumns(); if (result->lateral) { // lateral join: can only be an INNER or LEFT join @@ -216465,7 +217210,6 @@ unique_ptr Binder::Bind(JoinRef &ref) { throw BinderException("The combining JOIN type must be INNER or LEFT for a LATERAL reference"); } } - result->correlated_columns = binder.ExtractCorrelatedColumns(right_binder); } vector> extra_conditions; @@ -217421,6 +218165,8 @@ BoundStatement Binder::Bind(SQLStatement &statement) { return Bind((LogicalPlanStatement &)statement); case StatementType::ATTACH_STATEMENT: return Bind((AttachStatement &)statement); + case StatementType::DETACH_STATEMENT: + return Bind((DetachStatement &)statement); default: // LCOV_EXCL_START throw NotImplementedException("Unimplemented statement type \"%s\" for Bind", StatementTypeToString(statement.type)); @@ -219973,9 +220719,15 @@ BindResult HavingBinder::BindExpression(unique_ptr *expr_ptr, } // namespace duckdb + + + + + namespace duckdb { -IndexBinder::IndexBinder(Binder &binder, ClientContext &context) : ExpressionBinder(binder, context) { +IndexBinder::IndexBinder(Binder &binder, ClientContext &context, TableCatalogEntry *table, CreateIndexInfo *info) + : ExpressionBinder(binder, context), table(table), info(info) { } BindResult IndexBinder::BindExpression(unique_ptr *expr_ptr, idx_t depth, bool root_expression) { @@ -219985,6 +220737,31 @@ BindResult IndexBinder::BindExpression(unique_ptr *expr_ptr, i return BindResult("window functions are not allowed in index expressions"); case ExpressionClass::SUBQUERY: return BindResult("cannot use subquery in index expressions"); + case ExpressionClass::COLUMN_REF: { + if (table) { + // WAL replay + // we assume that the parsed expressions have qualified column names + // and that the columns exist in the table + auto &col_ref = (ColumnRefExpression &)expr; + auto col_idx = table->GetColumnIndex(col_ref.column_names.back()); + auto col_type = table->GetColumn(col_idx).GetType(); + + // find the col_idx in the index.column_ids + auto col_id_idx = DConstants::INVALID_INDEX; + for (idx_t i = 0; i < info->column_ids.size(); i++) { + if (col_idx.index == info->column_ids[i]) { + col_id_idx = i; + } + } + + if (col_id_idx == DConstants::INVALID_INDEX) { + throw InternalException("failed to replay CREATE INDEX statement - column id not found"); + } + return BindResult( + make_unique(col_ref.alias, col_type, ColumnBinding(0, col_id_idx))); + } + return ExpressionBinder::BindExpression(expr_ptr, depth); + } default: return ExpressionBinder::BindExpression(expr_ptr, depth); } @@ -220062,14 +220839,30 @@ BindResult LateralBinder::BindColumnRef(unique_ptr *expr_ptr, } vector LateralBinder::ExtractCorrelatedColumns(Binder &binder) { + + if (correlated_columns.empty()) { + return binder.correlated_columns; + } + + // clear outer + correlated_columns.clear(); auto all_correlated_columns = binder.correlated_columns; - for (auto &correlated : correlated_columns) { - auto entry = std::find(binder.correlated_columns.begin(), binder.correlated_columns.end(), correlated); - if (entry == binder.correlated_columns.end()) { - throw InternalException("Lateral Binder: could not find correlated column in binder"); + + // remove outer from inner + for (auto &corr_column : correlated_columns) { + auto entry = std::find(binder.correlated_columns.begin(), binder.correlated_columns.end(), corr_column); + if (entry != binder.correlated_columns.end()) { + binder.correlated_columns.erase(entry); } - binder.correlated_columns.erase(entry); } + + // add inner to outer + for (auto &corr_column : binder.correlated_columns) { + correlated_columns.push_back(corr_column); + } + + // clear inner + binder.correlated_columns.clear(); return all_correlated_columns; } @@ -221593,6 +222386,7 @@ void LogicalOperator::ResolveOperatorTypes() { vector LogicalOperator::GenerateColumnBindings(idx_t table_idx, idx_t column_count) { vector result; + result.reserve(column_count); for (idx_t i = 0; i < column_count; i++) { result.emplace_back(table_idx, i); } @@ -221620,6 +222414,7 @@ vector LogicalOperator::MapBindings(const vector & vector result_bindings; result_bindings.reserve(projection_map.size()); for (auto index : projection_map) { + D_ASSERT(index < bindings.size()); result_bindings.push_back(bindings[index]); } return result_bindings; @@ -221701,7 +222496,8 @@ idx_t LogicalOperator::EstimateCardinality(ClientContext &context) { max_cardinality = MaxValue(child->EstimateCardinality(context), max_cardinality); } has_estimated_cardinality = true; - return max_cardinality; + estimated_cardinality = max_cardinality; + return estimated_cardinality; } void LogicalOperator::Print() { @@ -221874,6 +222670,8 @@ unique_ptr LogicalOperator::Deserialize(Deserializer &deseriali case LogicalOperatorType::LOGICAL_DROP: result = LogicalSimple::Deserialize(state, reader); break; + case LogicalOperatorType::LOGICAL_DETACH: + throw SerializationException("Logical Detach does not support serialization"); case LogicalOperatorType::LOGICAL_EXTENSION_OPERATOR: result = LogicalExtensionOperator::Deserialize(state, reader); break; @@ -224128,6 +224926,7 @@ void Planner::CreatePlan(unique_ptr statement) { case StatementType::EXECUTE_STATEMENT: case StatementType::LOGICAL_PLAN_STATEMENT: case StatementType::ATTACH_STATEMENT: + case StatementType::DETACH_STATEMENT: CreatePlan(*statement); break; default: @@ -225819,7 +226618,7 @@ BlockHandle::BlockHandle(BlockManager &block_manager, block_id_t block_id_p, uni memory_charge = std::move(reservation); } -BlockHandle::~BlockHandle() { +BlockHandle::~BlockHandle() { // NOLINT: allow internal exceptions // being destroyed, so any unswizzled pointers are just binary junk now. unswizzled = nullptr; auto &buffer_manager = block_manager.buffer_manager; @@ -225987,6 +226786,7 @@ class TemporaryDirectoryHandle { private: DatabaseInstance &db; string temp_directory; + bool created_directory = false; unique_ptr temp_file; }; @@ -226278,11 +227078,8 @@ void BufferManager::PurgeQueue() { void BlockManager::UnregisterBlock(block_id_t block_id, bool can_destroy) { if (block_id >= MAXIMUM_BLOCK) { - // in-memory buffer: destroy the buffer - if (!can_destroy) { - // buffer could have been offloaded to disk: remove the file - buffer_manager.DeleteTemporaryFile(block_id); - } + // in-memory buffer: buffer could have been offloaded to disk: remove the file + buffer_manager.DeleteTemporaryFile(block_id); } else { lock_guard lock(blocks_lock); // on-disk block: erase from list of blocks in manager @@ -226364,7 +227161,11 @@ struct BlockIndexManager { //! Returns true if the max_index has been altered bool RemoveIndex(idx_t index) { // remove this block from the set of blocks - indexes_in_use.erase(index); + auto entry = indexes_in_use.find(index); + if (entry == indexes_in_use.end()) { + throw InternalException("RemoveIndex - index %llu not found in indexes_in_use", index); + } + indexes_in_use.erase(entry); free_indexes.insert(index); // check if we can truncate the file @@ -226373,7 +227174,7 @@ struct BlockIndexManager { if (max_index_in_use < max_index) { // max index in use is lower than the max_index // reduce the max_index - max_index = max_index_in_use + 1; + max_index = indexes_in_use.empty() ? 0 : max_index_in_use + 1; // we can remove any free_indexes that are larger than the current max_index while (!free_indexes.empty()) { auto max_entry = *free_indexes.rbegin(); @@ -226449,16 +227250,15 @@ class TemporaryFileHandle { unique_ptr ReadTemporaryBuffer(block_id_t id, idx_t block_index, unique_ptr reusable_buffer) { - auto buffer = - ReadTemporaryBufferInternal(BufferManager::GetBufferManager(db), *handle, GetPositionInFile(block_index), - Storage::BLOCK_SIZE, id, std::move(reusable_buffer)); - { - // remove the block (and potentially truncate the temp file) - TemporaryFileLock lock(file_lock); - D_ASSERT(handle); - RemoveTempBlockIndex(lock, block_index); - } - return buffer; + return ReadTemporaryBufferInternal(BufferManager::GetBufferManager(db), *handle, GetPositionInFile(block_index), + Storage::BLOCK_SIZE, id, std::move(reusable_buffer)); + } + + void EraseBlockIndex(block_id_t block_index) { + // remove the block (and potentially truncate the temp file) + TemporaryFileLock lock(file_lock); + D_ASSERT(handle); + RemoveTempBlockIndex(lock, block_index); } bool DeleteIfEmpty() { @@ -226474,6 +227274,14 @@ class TemporaryFileHandle { return true; } + TemporaryFileInformation GetTemporaryFile() { + TemporaryFileLock lock(file_lock); + TemporaryFileInformation info; + info.path = path; + info.size = GetPositionInFile(index_manager.GetMaxIndex()); + return info; + } + private: void CreateFileIfNotExists(TemporaryFileLock &) { if (handle) { @@ -226574,7 +227382,7 @@ class TemporaryFileManager { { // remove the block (and potentially erase the temp file) TemporaryManagerLock lock(manager_lock); - EraseUsedBlock(lock, id, handle, index.file_index); + EraseUsedBlock(lock, id, handle, index); } return buffer; } @@ -226583,14 +227391,29 @@ class TemporaryFileManager { TemporaryManagerLock lock(manager_lock); auto index = GetTempBlockIndex(lock, id); auto handle = GetFileHandle(lock, index.file_index); - EraseUsedBlock(lock, id, handle, index.file_index); + EraseUsedBlock(lock, id, handle, index); + } + + vector GetTemporaryFiles() { + lock_guard lock(manager_lock); + vector result; + for (auto &file : files) { + result.push_back(file.second->GetTemporaryFile()); + } + return result; } private: - void EraseUsedBlock(TemporaryManagerLock &lock, block_id_t id, TemporaryFileHandle *handle, idx_t file_index) { - used_blocks.erase(id); + void EraseUsedBlock(TemporaryManagerLock &lock, block_id_t id, TemporaryFileHandle *handle, + TemporaryFileIndex index) { + auto entry = used_blocks.find(id); + if (entry == used_blocks.end()) { + throw InternalException("EraseUsedBlock - Block %llu not found in used blocks", id); + } + used_blocks.erase(entry); + handle->EraseBlockIndex(index.block_index); if (handle->DeleteIfEmpty()) { - EraseFileHandle(lock, file_index); + EraseFileHandle(lock, index.file_index); } } @@ -226625,7 +227448,10 @@ TemporaryDirectoryHandle::TemporaryDirectoryHandle(DatabaseInstance &db, string : db(db), temp_directory(std::move(path_p)), temp_file(make_unique(db, temp_directory)) { auto &fs = FileSystem::GetFileSystem(db); if (!temp_directory.empty()) { - fs.CreateDirectory(temp_directory); + if (!fs.DirectoryExists(temp_directory)) { + fs.CreateDirectory(temp_directory); + created_directory = true; + } } } TemporaryDirectoryHandle::~TemporaryDirectoryHandle() { @@ -226634,7 +227460,30 @@ TemporaryDirectoryHandle::~TemporaryDirectoryHandle() { // then delete the temporary file directory auto &fs = FileSystem::GetFileSystem(db); if (!temp_directory.empty()) { - fs.RemoveDirectory(temp_directory); + bool delete_directory = created_directory; + vector files_to_delete; + if (!created_directory) { + bool deleted_everything = true; + fs.ListFiles(temp_directory, [&](const string &path, bool isdir) { + if (isdir) { + deleted_everything = false; + return; + } + if (!StringUtil::StartsWith(path, "duckdb_temp_")) { + deleted_everything = false; + return; + } + files_to_delete.push_back(path); + }); + } + if (delete_directory) { + // we want to remove all files in the directory + fs.RemoveDirectory(temp_directory); + } else { + for (auto &file : files_to_delete) { + fs.RemoveFile(fs.JoinPath(temp_directory, file)); + } + } } } @@ -226644,7 +227493,7 @@ TemporaryFileManager &TemporaryDirectoryHandle::GetTempFile() { string BufferManager::GetTemporaryPath(block_id_t id) { auto &fs = FileSystem::GetFileSystem(db); - return fs.JoinPath(temp_directory, to_string(id) + ".block"); + return fs.JoinPath(temp_directory, "duckdb_temp_block-" + to_string(id) + ".block"); } void BufferManager::RequireTemporaryDirectory() { @@ -226722,6 +227571,35 @@ void BufferManager::DeleteTemporaryFile(block_id_t id) { } } +vector BufferManager::GetTemporaryFiles() { + vector result; + if (temp_directory.empty()) { + return result; + } + { + lock_guard temp_handle_guard(temp_handle_lock); + if (temp_directory_handle) { + result = temp_directory_handle->GetTempFile().GetTemporaryFiles(); + } + } + auto &fs = FileSystem::GetFileSystem(db); + fs.ListFiles(temp_directory, [&](const string &name, bool is_dir) { + if (is_dir) { + return; + } + if (!StringUtil::EndsWith(name, ".block")) { + return; + } + TemporaryFileInformation info; + info.path = name; + auto handle = fs.OpenFile(name, FileFlags::FILE_FLAGS_READ); + info.size = fs.GetFileSize(*handle); + handle.reset(); + result.push_back(info); + }); + return result; +} + string BufferManager::InMemoryWarning() { if (!temp_directory.empty()) { return ""; @@ -230044,8 +230922,8 @@ struct BitpackingCompressState : public CompressionState { static void ReserveSpace(BitpackingCompressState *state, idx_t data_bytes) { idx_t meta_bytes = sizeof(bitpacking_metadata_encoded_t); - state->FlushAndCreateSegmentIfFull(data_bytes + meta_bytes); - D_ASSERT(data_bytes + meta_bytes <= state->RemainingSize()); + state->FlushAndCreateSegmentIfFull(data_bytes, meta_bytes); + D_ASSERT(state->CanStore(data_bytes, meta_bytes)); } static void UpdateStats(BitpackingCompressState *state, idx_t count) { @@ -230058,9 +230936,12 @@ struct BitpackingCompressState : public CompressionState { } }; - // Space remaining between the metadata_ptr growing down and data ptr growing up - idx_t RemainingSize() { - return metadata_ptr - data_ptr; + bool CanStore(idx_t data_bytes, idx_t meta_bytes) { + auto required_data_bytes = AlignValue((data_ptr + data_bytes) - data_ptr); + auto required_meta_bytes = Storage::BLOCK_SIZE - (metadata_ptr - data_ptr) + meta_bytes; + + return required_data_bytes + required_meta_bytes <= + Storage::BLOCK_SIZE - BitpackingPrimitives::BITPACKING_HEADER_SIZE; } void CreateEmptySegment(idx_t row_start) { @@ -230086,8 +230967,8 @@ struct BitpackingCompressState : public CompressionState { } } - void FlushAndCreateSegmentIfFull(idx_t required_space) { - if (RemainingSize() < required_space) { + void FlushAndCreateSegmentIfFull(idx_t required_data_bytes, idx_t required_meta_bytes) { + if (!CanStore(required_data_bytes, required_meta_bytes)) { auto row_start = current_segment->start + current_segment->count; FlushSegment(); CreateEmptySegment(row_start); @@ -230102,6 +230983,12 @@ struct BitpackingCompressState : public CompressionState { idx_t metadata_offset = AlignValue(data_ptr - base_ptr); idx_t metadata_size = base_ptr + Storage::BLOCK_SIZE - metadata_ptr; idx_t total_segment_size = metadata_offset + metadata_size; + + // Asserting things are still sane here + if (!CanStore(0, 0)) { + throw InternalException("Error in bitpacking size calculation"); + } + memmove(base_ptr + metadata_offset, metadata_ptr, metadata_size); // Store the offset of the metadata of the first group (which is at the highest address). @@ -238244,15 +239131,78 @@ void DataTable::UpdateColumn(TableCatalogEntry &table, ClientContext &context, V } //===--------------------------------------------------------------------===// -// Create Index Scan +// Index Scan //===--------------------------------------------------------------------===// -void DataTable::InitializeCreateIndexScan(CreateIndexScanState &state, const vector &column_ids) { +void DataTable::InitializeWALCreateIndexScan(CreateIndexScanState &state, const vector &column_ids) { // we grab the append lock to make sure nothing is appended until AFTER we finish the index scan state.append_lock = std::unique_lock(append_lock); - row_groups->InitializeCreateIndexScan(state); InitializeScan(state, column_ids); } +void DataTable::WALAddIndex(ClientContext &context, unique_ptr index, + const vector> &expressions) { + + // if the data table is empty + if (row_groups->IsEmpty()) { + info->indexes.AddIndex(std::move(index)); + return; + } + + auto &allocator = Allocator::Get(db); + + DataChunk result; + result.Initialize(allocator, index->logical_types); + + DataChunk intermediate; + vector intermediate_types; + auto column_ids = index->column_ids; + column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID); + for (auto &id : index->column_ids) { + auto &col = column_definitions[id]; + intermediate_types.push_back(col.Type()); + } + intermediate_types.emplace_back(LogicalType::ROW_TYPE); + intermediate.Initialize(allocator, intermediate_types); + + // initialize an index scan + CreateIndexScanState state; + InitializeWALCreateIndexScan(state, column_ids); + + if (!is_root) { + throw InternalException("Error during WAL replay. Cannot add an index to a table that has been altered."); + } + + // now start incrementally building the index + { + IndexLock lock; + index->InitializeLock(lock); + + while (true) { + intermediate.Reset(); + result.Reset(); + // scan a new chunk from the table to index + CreateIndexScan(state, intermediate, TableScanType::TABLE_SCAN_COMMITTED_ROWS_OMIT_PERMANENTLY_DELETED); + if (intermediate.size() == 0) { + // finished scanning for index creation + // release all locks + break; + } + // resolve the expressions for this chunk + index->ExecuteExpressions(intermediate, result); + + // insert into the index + if (!index->Insert(lock, result, intermediate.data[intermediate.ColumnCount() - 1])) { + throw InternalException("Error during WAL replay. Can't create unique index, table contains " + "duplicate data on indexed column(s)."); + } + } + } + info->indexes.AddIndex(std::move(index)); +} + +//===--------------------------------------------------------------------===// +// Statistics +//===--------------------------------------------------------------------===// unique_ptr DataTable::GetStatistics(ClientContext &context, column_t column_id) { if (column_id == COLUMN_IDENTIFIER_ROW_ID) { return nullptr; @@ -238395,7 +239345,7 @@ bool Index::IndexIsUpdated(const vector &column_ids) const { return false; } -BlockPointer Index::Serialize(duckdb::MetaBlockWriter &writer) { +BlockPointer Index::Serialize(MetaBlockWriter &writer) { throw NotImplementedException("The implementation of this index serialization does not exist."); } @@ -238529,7 +239479,7 @@ LocalTableStorage::LocalTableStorage(DataTable &table) unbound_expressions.push_back(expr->Copy()); } indexes.AddIndex(make_unique(art.column_ids, art.table_io_manager, std::move(unbound_expressions), - art.constraint_type, art.db, false)); + art.constraint_type, art.db, true)); } return false; }); @@ -241047,7 +241997,8 @@ struct StorageVersionInfo { idx_t storage_version; }; -static StorageVersionInfo storage_version_info[] = {{"v0.6.0 or v0.6.1", 39}, +static StorageVersionInfo storage_version_info[] = {{"v0.7.0", 43}, + {"v0.6.0 or v0.6.1", 39}, {"v0.5.0 or v0.5.1", 38}, {"v0.3.3, v0.3.4 or v0.4.0", 33}, {"v0.3.2", 31}, @@ -241994,6 +242945,8 @@ struct UpdateNode; class UpdateSegment { public: UpdateSegment(ColumnData &column_data); + // Construct a duplicate of 'other' with 'new_owner' as it's column data + UpdateSegment(UpdateSegment &other, ColumnData &new_owner); ~UpdateSegment(); ColumnData &column_data; @@ -242091,8 +243044,10 @@ ColumnData::ColumnData(BlockManager &block_manager, DataTableInfo &info, idx_t c ColumnData::ColumnData(ColumnData &other, idx_t start, ColumnData *parent) : block_manager(other.block_manager), info(other.info), column_index(other.column_index), start(start), - type(std::move(other.type)), parent(parent), updates(std::move(other.updates)), - version(parent ? parent->version + 1 : 0) { + type(std::move(other.type)), parent(parent), version(parent ? parent->version + 1 : 0) { + if (other.updates) { + updates = make_unique(*other.updates, *this); + } idx_t offset = 0; for (auto segment = other.data.GetRootSegment(); segment; segment = segment->Next()) { auto &other = (ColumnSegment &)*segment; @@ -246461,6 +247416,21 @@ UpdateSegment::UpdateSegment(ColumnData &column_data) this->statistics_update_function = GetStatisticsUpdateFunction(physical_type); } +UpdateSegment::UpdateSegment(UpdateSegment &other, ColumnData &owner) + : column_data(owner), root(std::move(other.root)), stats(std::move(other.stats)), type_size(other.type_size) { + + this->heap.Move(other.heap); + + initialize_update_function = other.initialize_update_function; + merge_update_function = other.merge_update_function; + fetch_update_function = other.fetch_update_function; + fetch_committed_function = other.fetch_committed_function; + fetch_committed_range = other.fetch_committed_range; + fetch_row_function = other.fetch_row_function; + rollback_update_function = other.rollback_update_function; + statistics_update_function = other.statistics_update_function; +} + UpdateSegment::~UpdateSegment() { } @@ -247730,8 +248700,7 @@ void TableIndexList::VerifyForeignKey(const vector &fk_keys, Data throw InternalException("Internal Foreign Key error: could not find index to verify..."); } conflict_manager.SetIndexCount(1); - - index->LookupValues(chunk, conflict_manager); + index->CheckConstraintsForChunk(chunk, conflict_manager); } vector TableIndexList::GetRequiredColumns() { @@ -247777,6 +248746,8 @@ vector TableIndexList::SerializeIndexes(duckdb::MetaBlockWriter &w + + @@ -247915,6 +248886,12 @@ void ReplayState::ReplayEntry(WALType entry_type) { case WALType::DROP_TABLE_MACRO: ReplayDropTableMacro(); break; + case WALType::CREATE_INDEX: + ReplayCreateIndex(); + break; + case WALType::DROP_INDEX: + ReplayDropIndex(); + break; case WALType::USE_TABLE: ReplayUseTable(); break; @@ -248140,6 +249117,66 @@ void ReplayState::ReplayDropTableMacro() { catalog.DropEntry(context, &info); } +//===--------------------------------------------------------------------===// +// Replay Index +//===--------------------------------------------------------------------===// +void ReplayState::ReplayCreateIndex() { + + auto info = IndexCatalogEntry::Deserialize(source, context); + if (deserialize_only) { + return; + } + + // get the physical table to which we'll add the index + auto table = catalog.GetEntry(context, info->schema, info->table->table_name); + auto &data_table = table->GetStorage(); + + // bind the parsed expressions + if (info->expressions.empty()) { + for (auto &parsed_expr : info->parsed_expressions) { + info->expressions.push_back(parsed_expr->Copy()); + } + } + auto binder = Binder::CreateBinder(context); + auto expressions = binder->BindCreateIndexExpressions(table, info.get()); + + // create the empty index + unique_ptr index; + switch (info->index_type) { + case IndexType::ART: { + index = make_unique(info->column_ids, TableIOManager::Get(data_table), expressions, info->constraint_type, + data_table.db, true); + break; + } + default: + throw InternalException("Unimplemented index type"); + } + + // add the index to the catalog + auto index_entry = (DuckIndexEntry *)catalog.CreateIndex(context, info.get()); + index_entry->index = index.get(); + index_entry->info = data_table.info; + for (auto &parsed_expr : info->parsed_expressions) { + index_entry->parsed_expressions.push_back(parsed_expr->Copy()); + } + + // physically add the index to the data table storage + data_table.WALAddIndex(context, std::move(index), expressions); +} + +void ReplayState::ReplayDropIndex() { + + DropInfo info; + info.type = CatalogType::INDEX_ENTRY; + info.schema = source.Read(); + info.name = source.Read(); + if (deserialize_only) { + return; + } + + catalog.DropEntry(context, &info); +} + //===--------------------------------------------------------------------===// // Replay Data //===--------------------------------------------------------------------===// @@ -248342,7 +249379,7 @@ void WriteAheadLog::WriteSequenceValue(SequenceCatalogEntry *entry, SequenceValu } //===--------------------------------------------------------------------===// -// MACRO'S +// MACROS //===--------------------------------------------------------------------===// void WriteAheadLog::WriteCreateMacro(ScalarMacroCatalogEntry *entry) { if (skip_writing) { @@ -248378,6 +249415,26 @@ void WriteAheadLog::WriteDropTableMacro(TableMacroCatalogEntry *entry) { writer->WriteString(entry->name); } +//===--------------------------------------------------------------------===// +// Indexes +//===--------------------------------------------------------------------===// +void WriteAheadLog::WriteCreateIndex(IndexCatalogEntry *entry) { + if (skip_writing) { + return; + } + writer->Write(WALType::CREATE_INDEX); + entry->Serialize(*writer); +} + +void WriteAheadLog::WriteDropIndex(IndexCatalogEntry *entry) { + if (skip_writing) { + return; + } + writer->Write(WALType::DROP_INDEX); + writer->WriteString(entry->schema->name); + writer->WriteString(entry->name); +} + //===--------------------------------------------------------------------===// // Custom Types //===--------------------------------------------------------------------===// @@ -248828,7 +249885,9 @@ void CommitState::WriteCatalogEntry(CatalogEntry *entry, data_ptr_t dataptr) { case CatalogType::TABLE_MACRO_ENTRY: log->WriteCreateTableMacro((TableMacroCatalogEntry *)parent); break; - + case CatalogType::INDEX_ENTRY: + log->WriteCreateIndex((IndexCatalogEntry *)parent); + break; case CatalogType::TYPE_ENTRY: log->WriteCreateType((TypeCatalogEntry *)parent); break; @@ -248860,6 +249919,8 @@ void CommitState::WriteCatalogEntry(CatalogEntry *entry, data_ptr_t dataptr) { log->WriteDropType((TypeCatalogEntry *)entry); break; case CatalogType::INDEX_ENTRY: + log->WriteDropIndex((IndexCatalogEntry *)entry); + break; case CatalogType::PREPARED_STATEMENT: case CatalogType::SCALAR_FUNCTION_ENTRY: // do nothing, indexes/prepared statements/functions aren't persisted to disk @@ -248868,7 +249929,6 @@ void CommitState::WriteCatalogEntry(CatalogEntry *entry, data_ptr_t dataptr) { throw InternalException("Don't know how to drop this type!"); } break; - case CatalogType::INDEX_ENTRY: case CatalogType::PREPARED_STATEMENT: case CatalogType::AGGREGATE_FUNCTION_ENTRY: case CatalogType::SCALAR_FUNCTION_ENTRY: @@ -305874,17 +306934,17 @@ PGValue *makeString(const char *str) { // The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #14 // See the end of this file for a list -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -305892,9 +306952,7 @@ PGValue *makeString(const char *str) { GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -305919,11 +306977,14 @@ PGValue *makeString(const char *str) { define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -305931,1007 +306992,21 @@ PGValue *makeString(const char *str) { /* Pure parsers. */ #define YYPURE 1 -/* Using locations. */ -#define YYLSP_NEEDED 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Substitute the variable and function names. */ -#define yyparse base_yyparse -#define yylex base_yylex -#define yyerror base_yyerror -#define yylval base_yylval -#define yychar base_yychar -#define yydebug base_yydebug -#define yynerrs base_yynerrs -#define yylloc base_yylloc - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - POWER_OF = 270, - LAMBDA_ARROW = 271, - DOUBLE_ARROW = 272, - LESS_EQUALS = 273, - GREATER_EQUALS = 274, - NOT_EQUALS = 275, - ABORT_P = 276, - ABSOLUTE_P = 277, - ACCESS = 278, - ACTION = 279, - ADD_P = 280, - ADMIN = 281, - AFTER = 282, - AGGREGATE = 283, - ALL = 284, - ALSO = 285, - ALTER = 286, - ALWAYS = 287, - ANALYSE = 288, - ANALYZE = 289, - AND = 290, - ANY = 291, - ARRAY = 292, - AS = 293, - ASC_P = 294, - ASSERTION = 295, - ASSIGNMENT = 296, - ASYMMETRIC = 297, - AT = 298, - ATTACH = 299, - ATTRIBUTE = 300, - AUTHORIZATION = 301, - BACKWARD = 302, - BEFORE = 303, - BEGIN_P = 304, - BETWEEN = 305, - BIGINT = 306, - BINARY = 307, - BIT = 308, - BOOLEAN_P = 309, - BOTH = 310, - BY = 311, - CACHE = 312, - CALL_P = 313, - CALLED = 314, - CASCADE = 315, - CASCADED = 316, - CASE = 317, - CAST = 318, - CATALOG_P = 319, - CHAIN = 320, - CHAR_P = 321, - CHARACTER = 322, - CHARACTERISTICS = 323, - CHECK_P = 324, - CHECKPOINT = 325, - CLASS = 326, - CLOSE = 327, - CLUSTER = 328, - COALESCE = 329, - COLLATE = 330, - COLLATION = 331, - COLUMN = 332, - COLUMNS = 333, - COMMENT = 334, - COMMENTS = 335, - COMMIT = 336, - COMMITTED = 337, - COMPRESSION = 338, - CONCURRENTLY = 339, - CONFIGURATION = 340, - CONFLICT = 341, - CONNECTION = 342, - CONSTRAINT = 343, - CONSTRAINTS = 344, - CONTENT_P = 345, - CONTINUE_P = 346, - CONVERSION_P = 347, - COPY = 348, - COST = 349, - CREATE_P = 350, - CROSS = 351, - CSV = 352, - CUBE = 353, - CURRENT_P = 354, - CURRENT_CATALOG = 355, - CURRENT_DATE = 356, - CURRENT_ROLE = 357, - CURRENT_SCHEMA = 358, - CURRENT_TIME = 359, - CURRENT_TIMESTAMP = 360, - CURRENT_USER = 361, - CURSOR = 362, - CYCLE = 363, - DATA_P = 364, - DATABASE = 365, - DAY_P = 366, - DAYS_P = 367, - DEALLOCATE = 368, - DEC = 369, - DECIMAL_P = 370, - DECLARE = 371, - DEFAULT = 372, - DEFAULTS = 373, - DEFERRABLE = 374, - DEFERRED = 375, - DEFINER = 376, - DELETE_P = 377, - DELIMITER = 378, - DELIMITERS = 379, - DEPENDS = 380, - DESC_P = 381, - DESCRIBE = 382, - DETACH = 383, - DICTIONARY = 384, - DISABLE_P = 385, - DISCARD = 386, - DISTINCT = 387, - DO = 388, - DOCUMENT_P = 389, - DOMAIN_P = 390, - DOUBLE_P = 391, - DROP = 392, - EACH = 393, - ELSE = 394, - ENABLE_P = 395, - ENCODING = 396, - ENCRYPTED = 397, - END_P = 398, - ENUM_P = 399, - ESCAPE = 400, - EVENT = 401, - EXCEPT = 402, - EXCLUDE = 403, - EXCLUDING = 404, - EXCLUSIVE = 405, - EXECUTE = 406, - EXISTS = 407, - EXPLAIN = 408, - EXPORT_P = 409, - EXPORT_STATE = 410, - EXTENSION = 411, - EXTERNAL = 412, - EXTRACT = 413, - FALSE_P = 414, - FAMILY = 415, - FETCH = 416, - FILTER = 417, - FIRST_P = 418, - FLOAT_P = 419, - FOLLOWING = 420, - FOR = 421, - FORCE = 422, - FOREIGN = 423, - FORWARD = 424, - FREEZE = 425, - FROM = 426, - FULL = 427, - FUNCTION = 428, - FUNCTIONS = 429, - GENERATED = 430, - GLOB = 431, - GLOBAL = 432, - GRANT = 433, - GRANTED = 434, - GROUP_P = 435, - GROUPING = 436, - GROUPING_ID = 437, - HANDLER = 438, - HAVING = 439, - HEADER_P = 440, - HOLD = 441, - HOUR_P = 442, - HOURS_P = 443, - IDENTITY_P = 444, - IF_P = 445, - IGNORE_P = 446, - ILIKE = 447, - IMMEDIATE = 448, - IMMUTABLE = 449, - IMPLICIT_P = 450, - IMPORT_P = 451, - IN_P = 452, - INCLUDING = 453, - INCREMENT = 454, - INDEX = 455, - INDEXES = 456, - INHERIT = 457, - INHERITS = 458, - INITIALLY = 459, - INLINE_P = 460, - INNER_P = 461, - INOUT = 462, - INPUT_P = 463, - INSENSITIVE = 464, - INSERT = 465, - INSTALL = 466, - INSTEAD = 467, - INT_P = 468, - INTEGER = 469, - INTERSECT = 470, - INTERVAL = 471, - INTO = 472, - INVOKER = 473, - IS = 474, - ISNULL = 475, - ISOLATION = 476, - JOIN = 477, - JSON = 478, - KEY = 479, - LABEL = 480, - LANGUAGE = 481, - LARGE_P = 482, - LAST_P = 483, - LATERAL_P = 484, - LEADING = 485, - LEAKPROOF = 486, - LEFT = 487, - LEVEL = 488, - LIKE = 489, - LIMIT = 490, - LISTEN = 491, - LOAD = 492, - LOCAL = 493, - LOCALTIME = 494, - LOCALTIMESTAMP = 495, - LOCATION = 496, - LOCK_P = 497, - LOCKED = 498, - LOGGED = 499, - MACRO = 500, - MAP = 501, - MAPPING = 502, - MATCH = 503, - MATERIALIZED = 504, - MAXVALUE = 505, - METHOD = 506, - MICROSECOND_P = 507, - MICROSECONDS_P = 508, - MILLISECOND_P = 509, - MILLISECONDS_P = 510, - MINUTE_P = 511, - MINUTES_P = 512, - MINVALUE = 513, - MODE = 514, - MONTH_P = 515, - MONTHS_P = 516, - MOVE = 517, - NAME_P = 518, - NAMES = 519, - NATIONAL = 520, - NATURAL = 521, - NCHAR = 522, - NEW = 523, - NEXT = 524, - NO = 525, - NONE = 526, - NOT = 527, - NOTHING = 528, - NOTIFY = 529, - NOTNULL = 530, - NOWAIT = 531, - NULL_P = 532, - NULLIF = 533, - NULLS_P = 534, - NUMERIC = 535, - OBJECT_P = 536, - OF = 537, - OFF = 538, - OFFSET = 539, - OIDS = 540, - OLD = 541, - ON = 542, - ONLY = 543, - OPERATOR = 544, - OPTION = 545, - OPTIONS = 546, - OR = 547, - ORDER = 548, - ORDINALITY = 549, - OUT_P = 550, - OUTER_P = 551, - OVER = 552, - OVERLAPS = 553, - OVERLAY = 554, - OVERRIDING = 555, - OWNED = 556, - OWNER = 557, - PARALLEL = 558, - PARSER = 559, - PARTIAL = 560, - PARTITION = 561, - PASSING = 562, - PASSWORD = 563, - PERCENT = 564, - PLACING = 565, - PLANS = 566, - POLICY = 567, - POSITION = 568, - POSITIONAL = 569, - PRAGMA_P = 570, - PRECEDING = 571, - PRECISION = 572, - PREPARE = 573, - PREPARED = 574, - PRESERVE = 575, - PRIMARY = 576, - PRIOR = 577, - PRIVILEGES = 578, - PROCEDURAL = 579, - PROCEDURE = 580, - PROGRAM = 581, - PUBLICATION = 582, - QUALIFY = 583, - QUOTE = 584, - RANGE = 585, - READ_P = 586, - REAL = 587, - REASSIGN = 588, - RECHECK = 589, - RECURSIVE = 590, - REF = 591, - REFERENCES = 592, - REFERENCING = 593, - REFRESH = 594, - REINDEX = 595, - RELATIVE_P = 596, - RELEASE = 597, - RENAME = 598, - REPEATABLE = 599, - REPLACE = 600, - REPLICA = 601, - RESET = 602, - RESPECT_P = 603, - RESTART = 604, - RESTRICT = 605, - RETURNING = 606, - RETURNS = 607, - REVOKE = 608, - RIGHT = 609, - ROLE = 610, - ROLLBACK = 611, - ROLLUP = 612, - ROW = 613, - ROWS = 614, - RULE = 615, - SAMPLE = 616, - SAVEPOINT = 617, - SCHEMA = 618, - SCHEMAS = 619, - SCROLL = 620, - SEARCH = 621, - SECOND_P = 622, - SECONDS_P = 623, - SECURITY = 624, - SELECT = 625, - SEQUENCE = 626, - SEQUENCES = 627, - SERIALIZABLE = 628, - SERVER = 629, - SESSION = 630, - SESSION_USER = 631, - SET = 632, - SETOF = 633, - SETS = 634, - SHARE = 635, - SHOW = 636, - SIMILAR = 637, - SIMPLE = 638, - SKIP = 639, - SMALLINT = 640, - SNAPSHOT = 641, - SOME = 642, - SQL_P = 643, - STABLE = 644, - STANDALONE_P = 645, - START = 646, - STATEMENT = 647, - STATISTICS = 648, - STDIN = 649, - STDOUT = 650, - STORAGE = 651, - STORED = 652, - STRICT_P = 653, - STRIP_P = 654, - STRUCT = 655, - SUBSCRIPTION = 656, - SUBSTRING = 657, - SUMMARIZE = 658, - SYMMETRIC = 659, - SYSID = 660, - SYSTEM_P = 661, - TABLE = 662, - TABLES = 663, - TABLESAMPLE = 664, - TABLESPACE = 665, - TEMP = 666, - TEMPLATE = 667, - TEMPORARY = 668, - TEXT_P = 669, - THEN = 670, - TIME = 671, - TIMESTAMP = 672, - TO = 673, - TRAILING = 674, - TRANSACTION = 675, - TRANSFORM = 676, - TREAT = 677, - TRIGGER = 678, - TRIM = 679, - TRUE_P = 680, - TRUNCATE = 681, - TRUSTED = 682, - TRY_CAST = 683, - TYPE_P = 684, - TYPES_P = 685, - UNBOUNDED = 686, - UNCOMMITTED = 687, - UNENCRYPTED = 688, - UNION = 689, - UNIQUE = 690, - UNKNOWN = 691, - UNLISTEN = 692, - UNLOGGED = 693, - UNTIL = 694, - UPDATE = 695, - USE_P = 696, - USER = 697, - USING = 698, - VACUUM = 699, - VALID = 700, - VALIDATE = 701, - VALIDATOR = 702, - VALUE_P = 703, - VALUES = 704, - VARCHAR = 705, - VARIADIC = 706, - VARYING = 707, - VERBOSE = 708, - VERSION_P = 709, - VIEW = 710, - VIEWS = 711, - VIRTUAL = 712, - VOLATILE = 713, - WHEN = 714, - WHERE = 715, - WHITESPACE_P = 716, - WINDOW = 717, - WITH = 718, - WITHIN = 719, - WITHOUT = 720, - WORK = 721, - WRAPPER = 722, - WRITE_P = 723, - XML_P = 724, - XMLATTRIBUTES = 725, - XMLCONCAT = 726, - XMLELEMENT = 727, - XMLEXISTS = 728, - XMLFOREST = 729, - XMLNAMESPACES = 730, - XMLPARSE = 731, - XMLPI = 732, - XMLROOT = 733, - XMLSERIALIZE = 734, - XMLTABLE = 735, - YEAR_P = 736, - YEARS_P = 737, - YES_P = 738, - ZONE = 739, - NOT_LA = 740, - NULLS_LA = 741, - WITH_LA = 742, - POSTFIXOP = 743, - UMINUS = 744 - }; -#endif -/* Tokens. */ -#define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define POWER_OF 270 -#define LAMBDA_ARROW 271 -#define DOUBLE_ARROW 272 -#define LESS_EQUALS 273 -#define GREATER_EQUALS 274 -#define NOT_EQUALS 275 -#define ABORT_P 276 -#define ABSOLUTE_P 277 -#define ACCESS 278 -#define ACTION 279 -#define ADD_P 280 -#define ADMIN 281 -#define AFTER 282 -#define AGGREGATE 283 -#define ALL 284 -#define ALSO 285 -#define ALTER 286 -#define ALWAYS 287 -#define ANALYSE 288 -#define ANALYZE 289 -#define AND 290 -#define ANY 291 -#define ARRAY 292 -#define AS 293 -#define ASC_P 294 -#define ASSERTION 295 -#define ASSIGNMENT 296 -#define ASYMMETRIC 297 -#define AT 298 -#define ATTACH 299 -#define ATTRIBUTE 300 -#define AUTHORIZATION 301 -#define BACKWARD 302 -#define BEFORE 303 -#define BEGIN_P 304 -#define BETWEEN 305 -#define BIGINT 306 -#define BINARY 307 -#define BIT 308 -#define BOOLEAN_P 309 -#define BOTH 310 -#define BY 311 -#define CACHE 312 -#define CALL_P 313 -#define CALLED 314 -#define CASCADE 315 -#define CASCADED 316 -#define CASE 317 -#define CAST 318 -#define CATALOG_P 319 -#define CHAIN 320 -#define CHAR_P 321 -#define CHARACTER 322 -#define CHARACTERISTICS 323 -#define CHECK_P 324 -#define CHECKPOINT 325 -#define CLASS 326 -#define CLOSE 327 -#define CLUSTER 328 -#define COALESCE 329 -#define COLLATE 330 -#define COLLATION 331 -#define COLUMN 332 -#define COLUMNS 333 -#define COMMENT 334 -#define COMMENTS 335 -#define COMMIT 336 -#define COMMITTED 337 -#define COMPRESSION 338 -#define CONCURRENTLY 339 -#define CONFIGURATION 340 -#define CONFLICT 341 -#define CONNECTION 342 -#define CONSTRAINT 343 -#define CONSTRAINTS 344 -#define CONTENT_P 345 -#define CONTINUE_P 346 -#define CONVERSION_P 347 -#define COPY 348 -#define COST 349 -#define CREATE_P 350 -#define CROSS 351 -#define CSV 352 -#define CUBE 353 -#define CURRENT_P 354 -#define CURRENT_CATALOG 355 -#define CURRENT_DATE 356 -#define CURRENT_ROLE 357 -#define CURRENT_SCHEMA 358 -#define CURRENT_TIME 359 -#define CURRENT_TIMESTAMP 360 -#define CURRENT_USER 361 -#define CURSOR 362 -#define CYCLE 363 -#define DATA_P 364 -#define DATABASE 365 -#define DAY_P 366 -#define DAYS_P 367 -#define DEALLOCATE 368 -#define DEC 369 -#define DECIMAL_P 370 -#define DECLARE 371 -#define DEFAULT 372 -#define DEFAULTS 373 -#define DEFERRABLE 374 -#define DEFERRED 375 -#define DEFINER 376 -#define DELETE_P 377 -#define DELIMITER 378 -#define DELIMITERS 379 -#define DEPENDS 380 -#define DESC_P 381 -#define DESCRIBE 382 -#define DETACH 383 -#define DICTIONARY 384 -#define DISABLE_P 385 -#define DISCARD 386 -#define DISTINCT 387 -#define DO 388 -#define DOCUMENT_P 389 -#define DOMAIN_P 390 -#define DOUBLE_P 391 -#define DROP 392 -#define EACH 393 -#define ELSE 394 -#define ENABLE_P 395 -#define ENCODING 396 -#define ENCRYPTED 397 -#define END_P 398 -#define ENUM_P 399 -#define ESCAPE 400 -#define EVENT 401 -#define EXCEPT 402 -#define EXCLUDE 403 -#define EXCLUDING 404 -#define EXCLUSIVE 405 -#define EXECUTE 406 -#define EXISTS 407 -#define EXPLAIN 408 -#define EXPORT_P 409 -#define EXPORT_STATE 410 -#define EXTENSION 411 -#define EXTERNAL 412 -#define EXTRACT 413 -#define FALSE_P 414 -#define FAMILY 415 -#define FETCH 416 -#define FILTER 417 -#define FIRST_P 418 -#define FLOAT_P 419 -#define FOLLOWING 420 -#define FOR 421 -#define FORCE 422 -#define FOREIGN 423 -#define FORWARD 424 -#define FREEZE 425 -#define FROM 426 -#define FULL 427 -#define FUNCTION 428 -#define FUNCTIONS 429 -#define GENERATED 430 -#define GLOB 431 -#define GLOBAL 432 -#define GRANT 433 -#define GRANTED 434 -#define GROUP_P 435 -#define GROUPING 436 -#define GROUPING_ID 437 -#define HANDLER 438 -#define HAVING 439 -#define HEADER_P 440 -#define HOLD 441 -#define HOUR_P 442 -#define HOURS_P 443 -#define IDENTITY_P 444 -#define IF_P 445 -#define IGNORE_P 446 -#define ILIKE 447 -#define IMMEDIATE 448 -#define IMMUTABLE 449 -#define IMPLICIT_P 450 -#define IMPORT_P 451 -#define IN_P 452 -#define INCLUDING 453 -#define INCREMENT 454 -#define INDEX 455 -#define INDEXES 456 -#define INHERIT 457 -#define INHERITS 458 -#define INITIALLY 459 -#define INLINE_P 460 -#define INNER_P 461 -#define INOUT 462 -#define INPUT_P 463 -#define INSENSITIVE 464 -#define INSERT 465 -#define INSTALL 466 -#define INSTEAD 467 -#define INT_P 468 -#define INTEGER 469 -#define INTERSECT 470 -#define INTERVAL 471 -#define INTO 472 -#define INVOKER 473 -#define IS 474 -#define ISNULL 475 -#define ISOLATION 476 -#define JOIN 477 -#define JSON 478 -#define KEY 479 -#define LABEL 480 -#define LANGUAGE 481 -#define LARGE_P 482 -#define LAST_P 483 -#define LATERAL_P 484 -#define LEADING 485 -#define LEAKPROOF 486 -#define LEFT 487 -#define LEVEL 488 -#define LIKE 489 -#define LIMIT 490 -#define LISTEN 491 -#define LOAD 492 -#define LOCAL 493 -#define LOCALTIME 494 -#define LOCALTIMESTAMP 495 -#define LOCATION 496 -#define LOCK_P 497 -#define LOCKED 498 -#define LOGGED 499 -#define MACRO 500 -#define MAP 501 -#define MAPPING 502 -#define MATCH 503 -#define MATERIALIZED 504 -#define MAXVALUE 505 -#define METHOD 506 -#define MICROSECOND_P 507 -#define MICROSECONDS_P 508 -#define MILLISECOND_P 509 -#define MILLISECONDS_P 510 -#define MINUTE_P 511 -#define MINUTES_P 512 -#define MINVALUE 513 -#define MODE 514 -#define MONTH_P 515 -#define MONTHS_P 516 -#define MOVE 517 -#define NAME_P 518 -#define NAMES 519 -#define NATIONAL 520 -#define NATURAL 521 -#define NCHAR 522 -#define NEW 523 -#define NEXT 524 -#define NO 525 -#define NONE 526 -#define NOT 527 -#define NOTHING 528 -#define NOTIFY 529 -#define NOTNULL 530 -#define NOWAIT 531 -#define NULL_P 532 -#define NULLIF 533 -#define NULLS_P 534 -#define NUMERIC 535 -#define OBJECT_P 536 -#define OF 537 -#define OFF 538 -#define OFFSET 539 -#define OIDS 540 -#define OLD 541 -#define ON 542 -#define ONLY 543 -#define OPERATOR 544 -#define OPTION 545 -#define OPTIONS 546 -#define OR 547 -#define ORDER 548 -#define ORDINALITY 549 -#define OUT_P 550 -#define OUTER_P 551 -#define OVER 552 -#define OVERLAPS 553 -#define OVERLAY 554 -#define OVERRIDING 555 -#define OWNED 556 -#define OWNER 557 -#define PARALLEL 558 -#define PARSER 559 -#define PARTIAL 560 -#define PARTITION 561 -#define PASSING 562 -#define PASSWORD 563 -#define PERCENT 564 -#define PLACING 565 -#define PLANS 566 -#define POLICY 567 -#define POSITION 568 -#define POSITIONAL 569 -#define PRAGMA_P 570 -#define PRECEDING 571 -#define PRECISION 572 -#define PREPARE 573 -#define PREPARED 574 -#define PRESERVE 575 -#define PRIMARY 576 -#define PRIOR 577 -#define PRIVILEGES 578 -#define PROCEDURAL 579 -#define PROCEDURE 580 -#define PROGRAM 581 -#define PUBLICATION 582 -#define QUALIFY 583 -#define QUOTE 584 -#define RANGE 585 -#define READ_P 586 -#define REAL 587 -#define REASSIGN 588 -#define RECHECK 589 -#define RECURSIVE 590 -#define REF 591 -#define REFERENCES 592 -#define REFERENCING 593 -#define REFRESH 594 -#define REINDEX 595 -#define RELATIVE_P 596 -#define RELEASE 597 -#define RENAME 598 -#define REPEATABLE 599 -#define REPLACE 600 -#define REPLICA 601 -#define RESET 602 -#define RESPECT_P 603 -#define RESTART 604 -#define RESTRICT 605 -#define RETURNING 606 -#define RETURNS 607 -#define REVOKE 608 -#define RIGHT 609 -#define ROLE 610 -#define ROLLBACK 611 -#define ROLLUP 612 -#define ROW 613 -#define ROWS 614 -#define RULE 615 -#define SAMPLE 616 -#define SAVEPOINT 617 -#define SCHEMA 618 -#define SCHEMAS 619 -#define SCROLL 620 -#define SEARCH 621 -#define SECOND_P 622 -#define SECONDS_P 623 -#define SECURITY 624 -#define SELECT 625 -#define SEQUENCE 626 -#define SEQUENCES 627 -#define SERIALIZABLE 628 -#define SERVER 629 -#define SESSION 630 -#define SESSION_USER 631 -#define SET 632 -#define SETOF 633 -#define SETS 634 -#define SHARE 635 -#define SHOW 636 -#define SIMILAR 637 -#define SIMPLE 638 -#define SKIP 639 -#define SMALLINT 640 -#define SNAPSHOT 641 -#define SOME 642 -#define SQL_P 643 -#define STABLE 644 -#define STANDALONE_P 645 -#define START 646 -#define STATEMENT 647 -#define STATISTICS 648 -#define STDIN 649 -#define STDOUT 650 -#define STORAGE 651 -#define STORED 652 -#define STRICT_P 653 -#define STRIP_P 654 -#define STRUCT 655 -#define SUBSCRIPTION 656 -#define SUBSTRING 657 -#define SUMMARIZE 658 -#define SYMMETRIC 659 -#define SYSID 660 -#define SYSTEM_P 661 -#define TABLE 662 -#define TABLES 663 -#define TABLESAMPLE 664 -#define TABLESPACE 665 -#define TEMP 666 -#define TEMPLATE 667 -#define TEMPORARY 668 -#define TEXT_P 669 -#define THEN 670 -#define TIME 671 -#define TIMESTAMP 672 -#define TO 673 -#define TRAILING 674 -#define TRANSACTION 675 -#define TRANSFORM 676 -#define TREAT 677 -#define TRIGGER 678 -#define TRIM 679 -#define TRUE_P 680 -#define TRUNCATE 681 -#define TRUSTED 682 -#define TRY_CAST 683 -#define TYPE_P 684 -#define TYPES_P 685 -#define UNBOUNDED 686 -#define UNCOMMITTED 687 -#define UNENCRYPTED 688 -#define UNION 689 -#define UNIQUE 690 -#define UNKNOWN 691 -#define UNLISTEN 692 -#define UNLOGGED 693 -#define UNTIL 694 -#define UPDATE 695 -#define USE_P 696 -#define USER 697 -#define USING 698 -#define VACUUM 699 -#define VALID 700 -#define VALIDATE 701 -#define VALIDATOR 702 -#define VALUE_P 703 -#define VALUES 704 -#define VARCHAR 705 -#define VARIADIC 706 -#define VARYING 707 -#define VERBOSE 708 -#define VERSION_P 709 -#define VIEW 710 -#define VIEWS 711 -#define VIRTUAL 712 -#define VOLATILE 713 -#define WHEN 714 -#define WHERE 715 -#define WHITESPACE_P 716 -#define WINDOW 717 -#define WITH 718 -#define WITHIN 719 -#define WITHOUT 720 -#define WORK 721 -#define WRAPPER 722 -#define WRITE_P 723 -#define XML_P 724 -#define XMLATTRIBUTES 725 -#define XMLCONCAT 726 -#define XMLELEMENT 727 -#define XMLEXISTS 728 -#define XMLFOREST 729 -#define XMLNAMESPACES 730 -#define XMLPARSE 731 -#define XMLPI 732 -#define XMLROOT 733 -#define XMLSERIALIZE 734 -#define XMLTABLE 735 -#define YEAR_P 736 -#define YEARS_P 737 -#define YES_P 738 -#define ZONE 739 -#define NOT_LA 740 -#define NULLS_LA 741 -#define WITH_LA 742 -#define POSTFIXOP 743 -#define UMINUS 744 - - - - -/* Copy the first part of user declarations. */ +#define yyparse base_yyparse +#define yylex base_yylex +#define yyerror base_yyerror +#define yydebug base_yydebug +#define yynerrs base_yynerrs + +/* First part of user prologue. */ #line 1 "third_party/libpg_query/grammar/grammar.y.tmp" #line 1 "third_party/libpg_query/grammar/grammar.hpp" @@ -307157,17 +307232,17 @@ namespace duckdb_libpgquery { // The following code up to LICENSE_CHANGE_END is subject to THIRD PARTY LICENSE #14 // See the end of this file for a list -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -307175,9 +307250,7 @@ namespace duckdb_libpgquery { GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -307192,997 +307265,520 @@ namespace duckdb_libpgquery { This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + +#ifndef YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +# define YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int base_yydebug; +#endif + +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - IDENT = 258, - FCONST = 259, - SCONST = 260, - BCONST = 261, - XCONST = 262, - Op = 263, - ICONST = 264, - PARAM = 265, - TYPECAST = 266, - DOT_DOT = 267, - COLON_EQUALS = 268, - EQUALS_GREATER = 269, - POWER_OF = 270, - LAMBDA_ARROW = 271, - DOUBLE_ARROW = 272, - LESS_EQUALS = 273, - GREATER_EQUALS = 274, - NOT_EQUALS = 275, - ABORT_P = 276, - ABSOLUTE_P = 277, - ACCESS = 278, - ACTION = 279, - ADD_P = 280, - ADMIN = 281, - AFTER = 282, - AGGREGATE = 283, - ALL = 284, - ALSO = 285, - ALTER = 286, - ALWAYS = 287, - ANALYSE = 288, - ANALYZE = 289, - AND = 290, - ANY = 291, - ARRAY = 292, - AS = 293, - ASC_P = 294, - ASSERTION = 295, - ASSIGNMENT = 296, - ASYMMETRIC = 297, - AT = 298, - ATTACH = 299, - ATTRIBUTE = 300, - AUTHORIZATION = 301, - BACKWARD = 302, - BEFORE = 303, - BEGIN_P = 304, - BETWEEN = 305, - BIGINT = 306, - BINARY = 307, - BIT = 308, - BOOLEAN_P = 309, - BOTH = 310, - BY = 311, - CACHE = 312, - CALL_P = 313, - CALLED = 314, - CASCADE = 315, - CASCADED = 316, - CASE = 317, - CAST = 318, - CATALOG_P = 319, - CHAIN = 320, - CHAR_P = 321, - CHARACTER = 322, - CHARACTERISTICS = 323, - CHECK_P = 324, - CHECKPOINT = 325, - CLASS = 326, - CLOSE = 327, - CLUSTER = 328, - COALESCE = 329, - COLLATE = 330, - COLLATION = 331, - COLUMN = 332, - COLUMNS = 333, - COMMENT = 334, - COMMENTS = 335, - COMMIT = 336, - COMMITTED = 337, - COMPRESSION = 338, - CONCURRENTLY = 339, - CONFIGURATION = 340, - CONFLICT = 341, - CONNECTION = 342, - CONSTRAINT = 343, - CONSTRAINTS = 344, - CONTENT_P = 345, - CONTINUE_P = 346, - CONVERSION_P = 347, - COPY = 348, - COST = 349, - CREATE_P = 350, - CROSS = 351, - CSV = 352, - CUBE = 353, - CURRENT_P = 354, - CURRENT_CATALOG = 355, - CURRENT_DATE = 356, - CURRENT_ROLE = 357, - CURRENT_SCHEMA = 358, - CURRENT_TIME = 359, - CURRENT_TIMESTAMP = 360, - CURRENT_USER = 361, - CURSOR = 362, - CYCLE = 363, - DATA_P = 364, - DATABASE = 365, - DAY_P = 366, - DAYS_P = 367, - DEALLOCATE = 368, - DEC = 369, - DECIMAL_P = 370, - DECLARE = 371, - DEFAULT = 372, - DEFAULTS = 373, - DEFERRABLE = 374, - DEFERRED = 375, - DEFINER = 376, - DELETE_P = 377, - DELIMITER = 378, - DELIMITERS = 379, - DEPENDS = 380, - DESC_P = 381, - DESCRIBE = 382, - DETACH = 383, - DICTIONARY = 384, - DISABLE_P = 385, - DISCARD = 386, - DISTINCT = 387, - DO = 388, - DOCUMENT_P = 389, - DOMAIN_P = 390, - DOUBLE_P = 391, - DROP = 392, - EACH = 393, - ELSE = 394, - ENABLE_P = 395, - ENCODING = 396, - ENCRYPTED = 397, - END_P = 398, - ENUM_P = 399, - ESCAPE = 400, - EVENT = 401, - EXCEPT = 402, - EXCLUDE = 403, - EXCLUDING = 404, - EXCLUSIVE = 405, - EXECUTE = 406, - EXISTS = 407, - EXPLAIN = 408, - EXPORT_P = 409, - EXPORT_STATE = 410, - EXTENSION = 411, - EXTERNAL = 412, - EXTRACT = 413, - FALSE_P = 414, - FAMILY = 415, - FETCH = 416, - FILTER = 417, - FIRST_P = 418, - FLOAT_P = 419, - FOLLOWING = 420, - FOR = 421, - FORCE = 422, - FOREIGN = 423, - FORWARD = 424, - FREEZE = 425, - FROM = 426, - FULL = 427, - FUNCTION = 428, - FUNCTIONS = 429, - GENERATED = 430, - GLOB = 431, - GLOBAL = 432, - GRANT = 433, - GRANTED = 434, - GROUP_P = 435, - GROUPING = 436, - GROUPING_ID = 437, - HANDLER = 438, - HAVING = 439, - HEADER_P = 440, - HOLD = 441, - HOUR_P = 442, - HOURS_P = 443, - IDENTITY_P = 444, - IF_P = 445, - IGNORE_P = 446, - ILIKE = 447, - IMMEDIATE = 448, - IMMUTABLE = 449, - IMPLICIT_P = 450, - IMPORT_P = 451, - IN_P = 452, - INCLUDING = 453, - INCREMENT = 454, - INDEX = 455, - INDEXES = 456, - INHERIT = 457, - INHERITS = 458, - INITIALLY = 459, - INLINE_P = 460, - INNER_P = 461, - INOUT = 462, - INPUT_P = 463, - INSENSITIVE = 464, - INSERT = 465, - INSTALL = 466, - INSTEAD = 467, - INT_P = 468, - INTEGER = 469, - INTERSECT = 470, - INTERVAL = 471, - INTO = 472, - INVOKER = 473, - IS = 474, - ISNULL = 475, - ISOLATION = 476, - JOIN = 477, - JSON = 478, - KEY = 479, - LABEL = 480, - LANGUAGE = 481, - LARGE_P = 482, - LAST_P = 483, - LATERAL_P = 484, - LEADING = 485, - LEAKPROOF = 486, - LEFT = 487, - LEVEL = 488, - LIKE = 489, - LIMIT = 490, - LISTEN = 491, - LOAD = 492, - LOCAL = 493, - LOCALTIME = 494, - LOCALTIMESTAMP = 495, - LOCATION = 496, - LOCK_P = 497, - LOCKED = 498, - LOGGED = 499, - MACRO = 500, - MAP = 501, - MAPPING = 502, - MATCH = 503, - MATERIALIZED = 504, - MAXVALUE = 505, - METHOD = 506, - MICROSECOND_P = 507, - MICROSECONDS_P = 508, - MILLISECOND_P = 509, - MILLISECONDS_P = 510, - MINUTE_P = 511, - MINUTES_P = 512, - MINVALUE = 513, - MODE = 514, - MONTH_P = 515, - MONTHS_P = 516, - MOVE = 517, - NAME_P = 518, - NAMES = 519, - NATIONAL = 520, - NATURAL = 521, - NCHAR = 522, - NEW = 523, - NEXT = 524, - NO = 525, - NONE = 526, - NOT = 527, - NOTHING = 528, - NOTIFY = 529, - NOTNULL = 530, - NOWAIT = 531, - NULL_P = 532, - NULLIF = 533, - NULLS_P = 534, - NUMERIC = 535, - OBJECT_P = 536, - OF = 537, - OFF = 538, - OFFSET = 539, - OIDS = 540, - OLD = 541, - ON = 542, - ONLY = 543, - OPERATOR = 544, - OPTION = 545, - OPTIONS = 546, - OR = 547, - ORDER = 548, - ORDINALITY = 549, - OUT_P = 550, - OUTER_P = 551, - OVER = 552, - OVERLAPS = 553, - OVERLAY = 554, - OVERRIDING = 555, - OWNED = 556, - OWNER = 557, - PARALLEL = 558, - PARSER = 559, - PARTIAL = 560, - PARTITION = 561, - PASSING = 562, - PASSWORD = 563, - PERCENT = 564, - PLACING = 565, - PLANS = 566, - POLICY = 567, - POSITION = 568, - POSITIONAL = 569, - PRAGMA_P = 570, - PRECEDING = 571, - PRECISION = 572, - PREPARE = 573, - PREPARED = 574, - PRESERVE = 575, - PRIMARY = 576, - PRIOR = 577, - PRIVILEGES = 578, - PROCEDURAL = 579, - PROCEDURE = 580, - PROGRAM = 581, - PUBLICATION = 582, - QUALIFY = 583, - QUOTE = 584, - RANGE = 585, - READ_P = 586, - REAL = 587, - REASSIGN = 588, - RECHECK = 589, - RECURSIVE = 590, - REF = 591, - REFERENCES = 592, - REFERENCING = 593, - REFRESH = 594, - REINDEX = 595, - RELATIVE_P = 596, - RELEASE = 597, - RENAME = 598, - REPEATABLE = 599, - REPLACE = 600, - REPLICA = 601, - RESET = 602, - RESPECT_P = 603, - RESTART = 604, - RESTRICT = 605, - RETURNING = 606, - RETURNS = 607, - REVOKE = 608, - RIGHT = 609, - ROLE = 610, - ROLLBACK = 611, - ROLLUP = 612, - ROW = 613, - ROWS = 614, - RULE = 615, - SAMPLE = 616, - SAVEPOINT = 617, - SCHEMA = 618, - SCHEMAS = 619, - SCROLL = 620, - SEARCH = 621, - SECOND_P = 622, - SECONDS_P = 623, - SECURITY = 624, - SELECT = 625, - SEQUENCE = 626, - SEQUENCES = 627, - SERIALIZABLE = 628, - SERVER = 629, - SESSION = 630, - SESSION_USER = 631, - SET = 632, - SETOF = 633, - SETS = 634, - SHARE = 635, - SHOW = 636, - SIMILAR = 637, - SIMPLE = 638, - SKIP = 639, - SMALLINT = 640, - SNAPSHOT = 641, - SOME = 642, - SQL_P = 643, - STABLE = 644, - STANDALONE_P = 645, - START = 646, - STATEMENT = 647, - STATISTICS = 648, - STDIN = 649, - STDOUT = 650, - STORAGE = 651, - STORED = 652, - STRICT_P = 653, - STRIP_P = 654, - STRUCT = 655, - SUBSCRIPTION = 656, - SUBSTRING = 657, - SUMMARIZE = 658, - SYMMETRIC = 659, - SYSID = 660, - SYSTEM_P = 661, - TABLE = 662, - TABLES = 663, - TABLESAMPLE = 664, - TABLESPACE = 665, - TEMP = 666, - TEMPLATE = 667, - TEMPORARY = 668, - TEXT_P = 669, - THEN = 670, - TIME = 671, - TIMESTAMP = 672, - TO = 673, - TRAILING = 674, - TRANSACTION = 675, - TRANSFORM = 676, - TREAT = 677, - TRIGGER = 678, - TRIM = 679, - TRUE_P = 680, - TRUNCATE = 681, - TRUSTED = 682, - TRY_CAST = 683, - TYPE_P = 684, - TYPES_P = 685, - UNBOUNDED = 686, - UNCOMMITTED = 687, - UNENCRYPTED = 688, - UNION = 689, - UNIQUE = 690, - UNKNOWN = 691, - UNLISTEN = 692, - UNLOGGED = 693, - UNTIL = 694, - UPDATE = 695, - USE_P = 696, - USER = 697, - USING = 698, - VACUUM = 699, - VALID = 700, - VALIDATE = 701, - VALIDATOR = 702, - VALUE_P = 703, - VALUES = 704, - VARCHAR = 705, - VARIADIC = 706, - VARYING = 707, - VERBOSE = 708, - VERSION_P = 709, - VIEW = 710, - VIEWS = 711, - VIRTUAL = 712, - VOLATILE = 713, - WHEN = 714, - WHERE = 715, - WHITESPACE_P = 716, - WINDOW = 717, - WITH = 718, - WITHIN = 719, - WITHOUT = 720, - WORK = 721, - WRAPPER = 722, - WRITE_P = 723, - XML_P = 724, - XMLATTRIBUTES = 725, - XMLCONCAT = 726, - XMLELEMENT = 727, - XMLEXISTS = 728, - XMLFOREST = 729, - XMLNAMESPACES = 730, - XMLPARSE = 731, - XMLPI = 732, - XMLROOT = 733, - XMLSERIALIZE = 734, - XMLTABLE = 735, - YEAR_P = 736, - YEARS_P = 737, - YES_P = 738, - ZONE = 739, - NOT_LA = 740, - NULLS_LA = 741, - WITH_LA = 742, - POSTFIXOP = 743, - UMINUS = 744 - }; + enum yytokentype + { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + POWER_OF = 270, + LAMBDA_ARROW = 271, + DOUBLE_ARROW = 272, + LESS_EQUALS = 273, + GREATER_EQUALS = 274, + NOT_EQUALS = 275, + ABORT_P = 276, + ABSOLUTE_P = 277, + ACCESS = 278, + ACTION = 279, + ADD_P = 280, + ADMIN = 281, + AFTER = 282, + AGGREGATE = 283, + ALL = 284, + ALSO = 285, + ALTER = 286, + ALWAYS = 287, + ANALYSE = 288, + ANALYZE = 289, + AND = 290, + ANY = 291, + ARRAY = 292, + AS = 293, + ASC_P = 294, + ASSERTION = 295, + ASSIGNMENT = 296, + ASYMMETRIC = 297, + AT = 298, + ATTACH = 299, + ATTRIBUTE = 300, + AUTHORIZATION = 301, + BACKWARD = 302, + BEFORE = 303, + BEGIN_P = 304, + BETWEEN = 305, + BIGINT = 306, + BINARY = 307, + BIT = 308, + BOOLEAN_P = 309, + BOTH = 310, + BY = 311, + CACHE = 312, + CALL_P = 313, + CALLED = 314, + CASCADE = 315, + CASCADED = 316, + CASE = 317, + CAST = 318, + CATALOG_P = 319, + CHAIN = 320, + CHAR_P = 321, + CHARACTER = 322, + CHARACTERISTICS = 323, + CHECK_P = 324, + CHECKPOINT = 325, + CLASS = 326, + CLOSE = 327, + CLUSTER = 328, + COALESCE = 329, + COLLATE = 330, + COLLATION = 331, + COLUMN = 332, + COLUMNS = 333, + COMMENT = 334, + COMMENTS = 335, + COMMIT = 336, + COMMITTED = 337, + COMPRESSION = 338, + CONCURRENTLY = 339, + CONFIGURATION = 340, + CONFLICT = 341, + CONNECTION = 342, + CONSTRAINT = 343, + CONSTRAINTS = 344, + CONTENT_P = 345, + CONTINUE_P = 346, + CONVERSION_P = 347, + COPY = 348, + COST = 349, + CREATE_P = 350, + CROSS = 351, + CSV = 352, + CUBE = 353, + CURRENT_P = 354, + CURRENT_CATALOG = 355, + CURRENT_DATE = 356, + CURRENT_ROLE = 357, + CURRENT_SCHEMA = 358, + CURRENT_TIME = 359, + CURRENT_TIMESTAMP = 360, + CURRENT_USER = 361, + CURSOR = 362, + CYCLE = 363, + DATA_P = 364, + DATABASE = 365, + DAY_P = 366, + DAYS_P = 367, + DEALLOCATE = 368, + DEC = 369, + DECIMAL_P = 370, + DECLARE = 371, + DEFAULT = 372, + DEFAULTS = 373, + DEFERRABLE = 374, + DEFERRED = 375, + DEFINER = 376, + DELETE_P = 377, + DELIMITER = 378, + DELIMITERS = 379, + DEPENDS = 380, + DESC_P = 381, + DESCRIBE = 382, + DETACH = 383, + DICTIONARY = 384, + DISABLE_P = 385, + DISCARD = 386, + DISTINCT = 387, + DO = 388, + DOCUMENT_P = 389, + DOMAIN_P = 390, + DOUBLE_P = 391, + DROP = 392, + EACH = 393, + ELSE = 394, + ENABLE_P = 395, + ENCODING = 396, + ENCRYPTED = 397, + END_P = 398, + ENUM_P = 399, + ESCAPE = 400, + EVENT = 401, + EXCEPT = 402, + EXCLUDE = 403, + EXCLUDING = 404, + EXCLUSIVE = 405, + EXECUTE = 406, + EXISTS = 407, + EXPLAIN = 408, + EXPORT_P = 409, + EXPORT_STATE = 410, + EXTENSION = 411, + EXTERNAL = 412, + EXTRACT = 413, + FALSE_P = 414, + FAMILY = 415, + FETCH = 416, + FILTER = 417, + FIRST_P = 418, + FLOAT_P = 419, + FOLLOWING = 420, + FOR = 421, + FORCE = 422, + FOREIGN = 423, + FORWARD = 424, + FREEZE = 425, + FROM = 426, + FULL = 427, + FUNCTION = 428, + FUNCTIONS = 429, + GENERATED = 430, + GLOB = 431, + GLOBAL = 432, + GRANT = 433, + GRANTED = 434, + GROUP_P = 435, + GROUPING = 436, + GROUPING_ID = 437, + HANDLER = 438, + HAVING = 439, + HEADER_P = 440, + HOLD = 441, + HOUR_P = 442, + HOURS_P = 443, + IDENTITY_P = 444, + IF_P = 445, + IGNORE_P = 446, + ILIKE = 447, + IMMEDIATE = 448, + IMMUTABLE = 449, + IMPLICIT_P = 450, + IMPORT_P = 451, + IN_P = 452, + INCLUDING = 453, + INCREMENT = 454, + INDEX = 455, + INDEXES = 456, + INHERIT = 457, + INHERITS = 458, + INITIALLY = 459, + INLINE_P = 460, + INNER_P = 461, + INOUT = 462, + INPUT_P = 463, + INSENSITIVE = 464, + INSERT = 465, + INSTALL = 466, + INSTEAD = 467, + INT_P = 468, + INTEGER = 469, + INTERSECT = 470, + INTERVAL = 471, + INTO = 472, + INVOKER = 473, + IS = 474, + ISNULL = 475, + ISOLATION = 476, + JOIN = 477, + JSON = 478, + KEY = 479, + LABEL = 480, + LANGUAGE = 481, + LARGE_P = 482, + LAST_P = 483, + LATERAL_P = 484, + LEADING = 485, + LEAKPROOF = 486, + LEFT = 487, + LEVEL = 488, + LIKE = 489, + LIMIT = 490, + LISTEN = 491, + LOAD = 492, + LOCAL = 493, + LOCALTIME = 494, + LOCALTIMESTAMP = 495, + LOCATION = 496, + LOCK_P = 497, + LOCKED = 498, + LOGGED = 499, + MACRO = 500, + MAP = 501, + MAPPING = 502, + MATCH = 503, + MATERIALIZED = 504, + MAXVALUE = 505, + METHOD = 506, + MICROSECOND_P = 507, + MICROSECONDS_P = 508, + MILLISECOND_P = 509, + MILLISECONDS_P = 510, + MINUTE_P = 511, + MINUTES_P = 512, + MINVALUE = 513, + MODE = 514, + MONTH_P = 515, + MONTHS_P = 516, + MOVE = 517, + NAME_P = 518, + NAMES = 519, + NATIONAL = 520, + NATURAL = 521, + NCHAR = 522, + NEW = 523, + NEXT = 524, + NO = 525, + NONE = 526, + NOT = 527, + NOTHING = 528, + NOTIFY = 529, + NOTNULL = 530, + NOWAIT = 531, + NULL_P = 532, + NULLIF = 533, + NULLS_P = 534, + NUMERIC = 535, + OBJECT_P = 536, + OF = 537, + OFF = 538, + OFFSET = 539, + OIDS = 540, + OLD = 541, + ON = 542, + ONLY = 543, + OPERATOR = 544, + OPTION = 545, + OPTIONS = 546, + OR = 547, + ORDER = 548, + ORDINALITY = 549, + OUT_P = 550, + OUTER_P = 551, + OVER = 552, + OVERLAPS = 553, + OVERLAY = 554, + OVERRIDING = 555, + OWNED = 556, + OWNER = 557, + PARALLEL = 558, + PARSER = 559, + PARTIAL = 560, + PARTITION = 561, + PASSING = 562, + PASSWORD = 563, + PERCENT = 564, + PLACING = 565, + PLANS = 566, + POLICY = 567, + POSITION = 568, + POSITIONAL = 569, + PRAGMA_P = 570, + PRECEDING = 571, + PRECISION = 572, + PREPARE = 573, + PREPARED = 574, + PRESERVE = 575, + PRIMARY = 576, + PRIOR = 577, + PRIVILEGES = 578, + PROCEDURAL = 579, + PROCEDURE = 580, + PROGRAM = 581, + PUBLICATION = 582, + QUALIFY = 583, + QUOTE = 584, + RANGE = 585, + READ_P = 586, + REAL = 587, + REASSIGN = 588, + RECHECK = 589, + RECURSIVE = 590, + REF = 591, + REFERENCES = 592, + REFERENCING = 593, + REFRESH = 594, + REINDEX = 595, + RELATIVE_P = 596, + RELEASE = 597, + RENAME = 598, + REPEATABLE = 599, + REPLACE = 600, + REPLICA = 601, + RESET = 602, + RESPECT_P = 603, + RESTART = 604, + RESTRICT = 605, + RETURNING = 606, + RETURNS = 607, + REVOKE = 608, + RIGHT = 609, + ROLE = 610, + ROLLBACK = 611, + ROLLUP = 612, + ROW = 613, + ROWS = 614, + RULE = 615, + SAMPLE = 616, + SAVEPOINT = 617, + SCHEMA = 618, + SCHEMAS = 619, + SCROLL = 620, + SEARCH = 621, + SECOND_P = 622, + SECONDS_P = 623, + SECURITY = 624, + SELECT = 625, + SEQUENCE = 626, + SEQUENCES = 627, + SERIALIZABLE = 628, + SERVER = 629, + SESSION = 630, + SESSION_USER = 631, + SET = 632, + SETOF = 633, + SETS = 634, + SHARE = 635, + SHOW = 636, + SIMILAR = 637, + SIMPLE = 638, + SKIP = 639, + SMALLINT = 640, + SNAPSHOT = 641, + SOME = 642, + SQL_P = 643, + STABLE = 644, + STANDALONE_P = 645, + START = 646, + STATEMENT = 647, + STATISTICS = 648, + STDIN = 649, + STDOUT = 650, + STORAGE = 651, + STORED = 652, + STRICT_P = 653, + STRIP_P = 654, + STRUCT = 655, + SUBSCRIPTION = 656, + SUBSTRING = 657, + SUMMARIZE = 658, + SYMMETRIC = 659, + SYSID = 660, + SYSTEM_P = 661, + TABLE = 662, + TABLES = 663, + TABLESAMPLE = 664, + TABLESPACE = 665, + TEMP = 666, + TEMPLATE = 667, + TEMPORARY = 668, + TEXT_P = 669, + THEN = 670, + TIME = 671, + TIMESTAMP = 672, + TO = 673, + TRAILING = 674, + TRANSACTION = 675, + TRANSFORM = 676, + TREAT = 677, + TRIGGER = 678, + TRIM = 679, + TRUE_P = 680, + TRUNCATE = 681, + TRUSTED = 682, + TRY_CAST = 683, + TYPE_P = 684, + TYPES_P = 685, + UNBOUNDED = 686, + UNCOMMITTED = 687, + UNENCRYPTED = 688, + UNION = 689, + UNIQUE = 690, + UNKNOWN = 691, + UNLISTEN = 692, + UNLOGGED = 693, + UNTIL = 694, + UPDATE = 695, + USE_P = 696, + USER = 697, + USING = 698, + VACUUM = 699, + VALID = 700, + VALIDATE = 701, + VALIDATOR = 702, + VALUE_P = 703, + VALUES = 704, + VARCHAR = 705, + VARIADIC = 706, + VARYING = 707, + VERBOSE = 708, + VERSION_P = 709, + VIEW = 710, + VIEWS = 711, + VIRTUAL = 712, + VOLATILE = 713, + WHEN = 714, + WHERE = 715, + WHITESPACE_P = 716, + WINDOW = 717, + WITH = 718, + WITHIN = 719, + WITHOUT = 720, + WORK = 721, + WRAPPER = 722, + WRITE_P = 723, + XML_P = 724, + XMLATTRIBUTES = 725, + XMLCONCAT = 726, + XMLELEMENT = 727, + XMLEXISTS = 728, + XMLFOREST = 729, + XMLNAMESPACES = 730, + XMLPARSE = 731, + XMLPI = 732, + XMLROOT = 733, + XMLSERIALIZE = 734, + XMLTABLE = 735, + YEAR_P = 736, + YEARS_P = 737, + YES_P = 738, + ZONE = 739, + NOT_LA = 740, + NULLS_LA = 741, + WITH_LA = 742, + POSTFIXOP = 743, + UMINUS = 744 + }; #endif -/* Tokens. */ -#define IDENT 258 -#define FCONST 259 -#define SCONST 260 -#define BCONST 261 -#define XCONST 262 -#define Op 263 -#define ICONST 264 -#define PARAM 265 -#define TYPECAST 266 -#define DOT_DOT 267 -#define COLON_EQUALS 268 -#define EQUALS_GREATER 269 -#define POWER_OF 270 -#define LAMBDA_ARROW 271 -#define DOUBLE_ARROW 272 -#define LESS_EQUALS 273 -#define GREATER_EQUALS 274 -#define NOT_EQUALS 275 -#define ABORT_P 276 -#define ABSOLUTE_P 277 -#define ACCESS 278 -#define ACTION 279 -#define ADD_P 280 -#define ADMIN 281 -#define AFTER 282 -#define AGGREGATE 283 -#define ALL 284 -#define ALSO 285 -#define ALTER 286 -#define ALWAYS 287 -#define ANALYSE 288 -#define ANALYZE 289 -#define AND 290 -#define ANY 291 -#define ARRAY 292 -#define AS 293 -#define ASC_P 294 -#define ASSERTION 295 -#define ASSIGNMENT 296 -#define ASYMMETRIC 297 -#define AT 298 -#define ATTACH 299 -#define ATTRIBUTE 300 -#define AUTHORIZATION 301 -#define BACKWARD 302 -#define BEFORE 303 -#define BEGIN_P 304 -#define BETWEEN 305 -#define BIGINT 306 -#define BINARY 307 -#define BIT 308 -#define BOOLEAN_P 309 -#define BOTH 310 -#define BY 311 -#define CACHE 312 -#define CALL_P 313 -#define CALLED 314 -#define CASCADE 315 -#define CASCADED 316 -#define CASE 317 -#define CAST 318 -#define CATALOG_P 319 -#define CHAIN 320 -#define CHAR_P 321 -#define CHARACTER 322 -#define CHARACTERISTICS 323 -#define CHECK_P 324 -#define CHECKPOINT 325 -#define CLASS 326 -#define CLOSE 327 -#define CLUSTER 328 -#define COALESCE 329 -#define COLLATE 330 -#define COLLATION 331 -#define COLUMN 332 -#define COLUMNS 333 -#define COMMENT 334 -#define COMMENTS 335 -#define COMMIT 336 -#define COMMITTED 337 -#define COMPRESSION 338 -#define CONCURRENTLY 339 -#define CONFIGURATION 340 -#define CONFLICT 341 -#define CONNECTION 342 -#define CONSTRAINT 343 -#define CONSTRAINTS 344 -#define CONTENT_P 345 -#define CONTINUE_P 346 -#define CONVERSION_P 347 -#define COPY 348 -#define COST 349 -#define CREATE_P 350 -#define CROSS 351 -#define CSV 352 -#define CUBE 353 -#define CURRENT_P 354 -#define CURRENT_CATALOG 355 -#define CURRENT_DATE 356 -#define CURRENT_ROLE 357 -#define CURRENT_SCHEMA 358 -#define CURRENT_TIME 359 -#define CURRENT_TIMESTAMP 360 -#define CURRENT_USER 361 -#define CURSOR 362 -#define CYCLE 363 -#define DATA_P 364 -#define DATABASE 365 -#define DAY_P 366 -#define DAYS_P 367 -#define DEALLOCATE 368 -#define DEC 369 -#define DECIMAL_P 370 -#define DECLARE 371 -#define DEFAULT 372 -#define DEFAULTS 373 -#define DEFERRABLE 374 -#define DEFERRED 375 -#define DEFINER 376 -#define DELETE_P 377 -#define DELIMITER 378 -#define DELIMITERS 379 -#define DEPENDS 380 -#define DESC_P 381 -#define DESCRIBE 382 -#define DETACH 383 -#define DICTIONARY 384 -#define DISABLE_P 385 -#define DISCARD 386 -#define DISTINCT 387 -#define DO 388 -#define DOCUMENT_P 389 -#define DOMAIN_P 390 -#define DOUBLE_P 391 -#define DROP 392 -#define EACH 393 -#define ELSE 394 -#define ENABLE_P 395 -#define ENCODING 396 -#define ENCRYPTED 397 -#define END_P 398 -#define ENUM_P 399 -#define ESCAPE 400 -#define EVENT 401 -#define EXCEPT 402 -#define EXCLUDE 403 -#define EXCLUDING 404 -#define EXCLUSIVE 405 -#define EXECUTE 406 -#define EXISTS 407 -#define EXPLAIN 408 -#define EXPORT_P 409 -#define EXPORT_STATE 410 -#define EXTENSION 411 -#define EXTERNAL 412 -#define EXTRACT 413 -#define FALSE_P 414 -#define FAMILY 415 -#define FETCH 416 -#define FILTER 417 -#define FIRST_P 418 -#define FLOAT_P 419 -#define FOLLOWING 420 -#define FOR 421 -#define FORCE 422 -#define FOREIGN 423 -#define FORWARD 424 -#define FREEZE 425 -#define FROM 426 -#define FULL 427 -#define FUNCTION 428 -#define FUNCTIONS 429 -#define GENERATED 430 -#define GLOB 431 -#define GLOBAL 432 -#define GRANT 433 -#define GRANTED 434 -#define GROUP_P 435 -#define GROUPING 436 -#define GROUPING_ID 437 -#define HANDLER 438 -#define HAVING 439 -#define HEADER_P 440 -#define HOLD 441 -#define HOUR_P 442 -#define HOURS_P 443 -#define IDENTITY_P 444 -#define IF_P 445 -#define IGNORE_P 446 -#define ILIKE 447 -#define IMMEDIATE 448 -#define IMMUTABLE 449 -#define IMPLICIT_P 450 -#define IMPORT_P 451 -#define IN_P 452 -#define INCLUDING 453 -#define INCREMENT 454 -#define INDEX 455 -#define INDEXES 456 -#define INHERIT 457 -#define INHERITS 458 -#define INITIALLY 459 -#define INLINE_P 460 -#define INNER_P 461 -#define INOUT 462 -#define INPUT_P 463 -#define INSENSITIVE 464 -#define INSERT 465 -#define INSTALL 466 -#define INSTEAD 467 -#define INT_P 468 -#define INTEGER 469 -#define INTERSECT 470 -#define INTERVAL 471 -#define INTO 472 -#define INVOKER 473 -#define IS 474 -#define ISNULL 475 -#define ISOLATION 476 -#define JOIN 477 -#define JSON 478 -#define KEY 479 -#define LABEL 480 -#define LANGUAGE 481 -#define LARGE_P 482 -#define LAST_P 483 -#define LATERAL_P 484 -#define LEADING 485 -#define LEAKPROOF 486 -#define LEFT 487 -#define LEVEL 488 -#define LIKE 489 -#define LIMIT 490 -#define LISTEN 491 -#define LOAD 492 -#define LOCAL 493 -#define LOCALTIME 494 -#define LOCALTIMESTAMP 495 -#define LOCATION 496 -#define LOCK_P 497 -#define LOCKED 498 -#define LOGGED 499 -#define MACRO 500 -#define MAP 501 -#define MAPPING 502 -#define MATCH 503 -#define MATERIALIZED 504 -#define MAXVALUE 505 -#define METHOD 506 -#define MICROSECOND_P 507 -#define MICROSECONDS_P 508 -#define MILLISECOND_P 509 -#define MILLISECONDS_P 510 -#define MINUTE_P 511 -#define MINUTES_P 512 -#define MINVALUE 513 -#define MODE 514 -#define MONTH_P 515 -#define MONTHS_P 516 -#define MOVE 517 -#define NAME_P 518 -#define NAMES 519 -#define NATIONAL 520 -#define NATURAL 521 -#define NCHAR 522 -#define NEW 523 -#define NEXT 524 -#define NO 525 -#define NONE 526 -#define NOT 527 -#define NOTHING 528 -#define NOTIFY 529 -#define NOTNULL 530 -#define NOWAIT 531 -#define NULL_P 532 -#define NULLIF 533 -#define NULLS_P 534 -#define NUMERIC 535 -#define OBJECT_P 536 -#define OF 537 -#define OFF 538 -#define OFFSET 539 -#define OIDS 540 -#define OLD 541 -#define ON 542 -#define ONLY 543 -#define OPERATOR 544 -#define OPTION 545 -#define OPTIONS 546 -#define OR 547 -#define ORDER 548 -#define ORDINALITY 549 -#define OUT_P 550 -#define OUTER_P 551 -#define OVER 552 -#define OVERLAPS 553 -#define OVERLAY 554 -#define OVERRIDING 555 -#define OWNED 556 -#define OWNER 557 -#define PARALLEL 558 -#define PARSER 559 -#define PARTIAL 560 -#define PARTITION 561 -#define PASSING 562 -#define PASSWORD 563 -#define PERCENT 564 -#define PLACING 565 -#define PLANS 566 -#define POLICY 567 -#define POSITION 568 -#define POSITIONAL 569 -#define PRAGMA_P 570 -#define PRECEDING 571 -#define PRECISION 572 -#define PREPARE 573 -#define PREPARED 574 -#define PRESERVE 575 -#define PRIMARY 576 -#define PRIOR 577 -#define PRIVILEGES 578 -#define PROCEDURAL 579 -#define PROCEDURE 580 -#define PROGRAM 581 -#define PUBLICATION 582 -#define QUALIFY 583 -#define QUOTE 584 -#define RANGE 585 -#define READ_P 586 -#define REAL 587 -#define REASSIGN 588 -#define RECHECK 589 -#define RECURSIVE 590 -#define REF 591 -#define REFERENCES 592 -#define REFERENCING 593 -#define REFRESH 594 -#define REINDEX 595 -#define RELATIVE_P 596 -#define RELEASE 597 -#define RENAME 598 -#define REPEATABLE 599 -#define REPLACE 600 -#define REPLICA 601 -#define RESET 602 -#define RESPECT_P 603 -#define RESTART 604 -#define RESTRICT 605 -#define RETURNING 606 -#define RETURNS 607 -#define REVOKE 608 -#define RIGHT 609 -#define ROLE 610 -#define ROLLBACK 611 -#define ROLLUP 612 -#define ROW 613 -#define ROWS 614 -#define RULE 615 -#define SAMPLE 616 -#define SAVEPOINT 617 -#define SCHEMA 618 -#define SCHEMAS 619 -#define SCROLL 620 -#define SEARCH 621 -#define SECOND_P 622 -#define SECONDS_P 623 -#define SECURITY 624 -#define SELECT 625 -#define SEQUENCE 626 -#define SEQUENCES 627 -#define SERIALIZABLE 628 -#define SERVER 629 -#define SESSION 630 -#define SESSION_USER 631 -#define SET 632 -#define SETOF 633 -#define SETS 634 -#define SHARE 635 -#define SHOW 636 -#define SIMILAR 637 -#define SIMPLE 638 -#define SKIP 639 -#define SMALLINT 640 -#define SNAPSHOT 641 -#define SOME 642 -#define SQL_P 643 -#define STABLE 644 -#define STANDALONE_P 645 -#define START 646 -#define STATEMENT 647 -#define STATISTICS 648 -#define STDIN 649 -#define STDOUT 650 -#define STORAGE 651 -#define STORED 652 -#define STRICT_P 653 -#define STRIP_P 654 -#define STRUCT 655 -#define SUBSCRIPTION 656 -#define SUBSTRING 657 -#define SUMMARIZE 658 -#define SYMMETRIC 659 -#define SYSID 660 -#define SYSTEM_P 661 -#define TABLE 662 -#define TABLES 663 -#define TABLESAMPLE 664 -#define TABLESPACE 665 -#define TEMP 666 -#define TEMPLATE 667 -#define TEMPORARY 668 -#define TEXT_P 669 -#define THEN 670 -#define TIME 671 -#define TIMESTAMP 672 -#define TO 673 -#define TRAILING 674 -#define TRANSACTION 675 -#define TRANSFORM 676 -#define TREAT 677 -#define TRIGGER 678 -#define TRIM 679 -#define TRUE_P 680 -#define TRUNCATE 681 -#define TRUSTED 682 -#define TRY_CAST 683 -#define TYPE_P 684 -#define TYPES_P 685 -#define UNBOUNDED 686 -#define UNCOMMITTED 687 -#define UNENCRYPTED 688 -#define UNION 689 -#define UNIQUE 690 -#define UNKNOWN 691 -#define UNLISTEN 692 -#define UNLOGGED 693 -#define UNTIL 694 -#define UPDATE 695 -#define USE_P 696 -#define USER 697 -#define USING 698 -#define VACUUM 699 -#define VALID 700 -#define VALIDATE 701 -#define VALIDATOR 702 -#define VALUE_P 703 -#define VALUES 704 -#define VARCHAR 705 -#define VARIADIC 706 -#define VARYING 707 -#define VERBOSE 708 -#define VERSION_P 709 -#define VIEW 710 -#define VIEWS 711 -#define VIRTUAL 712 -#define VOLATILE 713 -#define WHEN 714 -#define WHERE 715 -#define WHITESPACE_P 716 -#define WINDOW 717 -#define WITH 718 -#define WITHIN 719 -#define WITHOUT 720 -#define WORK 721 -#define WRAPPER 722 -#define WRITE_P 723 -#define XML_P 724 -#define XMLATTRIBUTES 725 -#define XMLCONCAT 726 -#define XMLELEMENT 727 -#define XMLEXISTS 728 -#define XMLFOREST 729 -#define XMLNAMESPACES 730 -#define XMLPARSE 731 -#define XMLPI 732 -#define XMLROOT 733 -#define XMLSERIALIZE 734 -#define XMLTABLE 735 -#define YEAR_P 736 -#define YEARS_P 737 -#define YES_P 738 -#define ZONE 739 -#define NOT_LA 740 -#define NULLS_LA 741 -#define WITH_LA 742 -#define POSTFIXOP 743 -#define UMINUS 744 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 14 "third_party/libpg_query/grammar/grammar.y" +union YYSTYPE { +#line 14 "third_party/libpg_query/grammar/grammar.y" + core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -308226,32 +307822,35 @@ typedef union YYSTYPE PGLockWaitPolicy lockwaitpolicy; PGSubLinkType subquerytype; PGViewCheckOption viewcheckoption; -} -/* Line 1529 of yacc.c. */ -#line 1073 "third_party/libpg_query/grammar/grammar_out.hpp" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif +#line 593 "third_party/libpg_query/grammar/grammar_out.hpp" +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif +int base_yyparse (core_yyscan_t yyscanner); + +#endif /* !YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED */ + // LICENSE_CHANGE_END @@ -308672,11 +308271,28 @@ static PGNode *makeRecursiveViewSelect(char *relname, PGList *aliases, PGNode *q static PGNode *makeLimitPercent(PGNode *limit_percent); +#line 242 "third_party/libpg_query/grammar/grammar_out.cpp" -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -308686,15 +308302,519 @@ static PGNode *makeLimitPercent(PGNode *limit_percent); # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +# define YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int base_yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + IDENT = 258, + FCONST = 259, + SCONST = 260, + BCONST = 261, + XCONST = 262, + Op = 263, + ICONST = 264, + PARAM = 265, + TYPECAST = 266, + DOT_DOT = 267, + COLON_EQUALS = 268, + EQUALS_GREATER = 269, + POWER_OF = 270, + LAMBDA_ARROW = 271, + DOUBLE_ARROW = 272, + LESS_EQUALS = 273, + GREATER_EQUALS = 274, + NOT_EQUALS = 275, + ABORT_P = 276, + ABSOLUTE_P = 277, + ACCESS = 278, + ACTION = 279, + ADD_P = 280, + ADMIN = 281, + AFTER = 282, + AGGREGATE = 283, + ALL = 284, + ALSO = 285, + ALTER = 286, + ALWAYS = 287, + ANALYSE = 288, + ANALYZE = 289, + AND = 290, + ANY = 291, + ARRAY = 292, + AS = 293, + ASC_P = 294, + ASSERTION = 295, + ASSIGNMENT = 296, + ASYMMETRIC = 297, + AT = 298, + ATTACH = 299, + ATTRIBUTE = 300, + AUTHORIZATION = 301, + BACKWARD = 302, + BEFORE = 303, + BEGIN_P = 304, + BETWEEN = 305, + BIGINT = 306, + BINARY = 307, + BIT = 308, + BOOLEAN_P = 309, + BOTH = 310, + BY = 311, + CACHE = 312, + CALL_P = 313, + CALLED = 314, + CASCADE = 315, + CASCADED = 316, + CASE = 317, + CAST = 318, + CATALOG_P = 319, + CHAIN = 320, + CHAR_P = 321, + CHARACTER = 322, + CHARACTERISTICS = 323, + CHECK_P = 324, + CHECKPOINT = 325, + CLASS = 326, + CLOSE = 327, + CLUSTER = 328, + COALESCE = 329, + COLLATE = 330, + COLLATION = 331, + COLUMN = 332, + COLUMNS = 333, + COMMENT = 334, + COMMENTS = 335, + COMMIT = 336, + COMMITTED = 337, + COMPRESSION = 338, + CONCURRENTLY = 339, + CONFIGURATION = 340, + CONFLICT = 341, + CONNECTION = 342, + CONSTRAINT = 343, + CONSTRAINTS = 344, + CONTENT_P = 345, + CONTINUE_P = 346, + CONVERSION_P = 347, + COPY = 348, + COST = 349, + CREATE_P = 350, + CROSS = 351, + CSV = 352, + CUBE = 353, + CURRENT_P = 354, + CURRENT_CATALOG = 355, + CURRENT_DATE = 356, + CURRENT_ROLE = 357, + CURRENT_SCHEMA = 358, + CURRENT_TIME = 359, + CURRENT_TIMESTAMP = 360, + CURRENT_USER = 361, + CURSOR = 362, + CYCLE = 363, + DATA_P = 364, + DATABASE = 365, + DAY_P = 366, + DAYS_P = 367, + DEALLOCATE = 368, + DEC = 369, + DECIMAL_P = 370, + DECLARE = 371, + DEFAULT = 372, + DEFAULTS = 373, + DEFERRABLE = 374, + DEFERRED = 375, + DEFINER = 376, + DELETE_P = 377, + DELIMITER = 378, + DELIMITERS = 379, + DEPENDS = 380, + DESC_P = 381, + DESCRIBE = 382, + DETACH = 383, + DICTIONARY = 384, + DISABLE_P = 385, + DISCARD = 386, + DISTINCT = 387, + DO = 388, + DOCUMENT_P = 389, + DOMAIN_P = 390, + DOUBLE_P = 391, + DROP = 392, + EACH = 393, + ELSE = 394, + ENABLE_P = 395, + ENCODING = 396, + ENCRYPTED = 397, + END_P = 398, + ENUM_P = 399, + ESCAPE = 400, + EVENT = 401, + EXCEPT = 402, + EXCLUDE = 403, + EXCLUDING = 404, + EXCLUSIVE = 405, + EXECUTE = 406, + EXISTS = 407, + EXPLAIN = 408, + EXPORT_P = 409, + EXPORT_STATE = 410, + EXTENSION = 411, + EXTERNAL = 412, + EXTRACT = 413, + FALSE_P = 414, + FAMILY = 415, + FETCH = 416, + FILTER = 417, + FIRST_P = 418, + FLOAT_P = 419, + FOLLOWING = 420, + FOR = 421, + FORCE = 422, + FOREIGN = 423, + FORWARD = 424, + FREEZE = 425, + FROM = 426, + FULL = 427, + FUNCTION = 428, + FUNCTIONS = 429, + GENERATED = 430, + GLOB = 431, + GLOBAL = 432, + GRANT = 433, + GRANTED = 434, + GROUP_P = 435, + GROUPING = 436, + GROUPING_ID = 437, + HANDLER = 438, + HAVING = 439, + HEADER_P = 440, + HOLD = 441, + HOUR_P = 442, + HOURS_P = 443, + IDENTITY_P = 444, + IF_P = 445, + IGNORE_P = 446, + ILIKE = 447, + IMMEDIATE = 448, + IMMUTABLE = 449, + IMPLICIT_P = 450, + IMPORT_P = 451, + IN_P = 452, + INCLUDING = 453, + INCREMENT = 454, + INDEX = 455, + INDEXES = 456, + INHERIT = 457, + INHERITS = 458, + INITIALLY = 459, + INLINE_P = 460, + INNER_P = 461, + INOUT = 462, + INPUT_P = 463, + INSENSITIVE = 464, + INSERT = 465, + INSTALL = 466, + INSTEAD = 467, + INT_P = 468, + INTEGER = 469, + INTERSECT = 470, + INTERVAL = 471, + INTO = 472, + INVOKER = 473, + IS = 474, + ISNULL = 475, + ISOLATION = 476, + JOIN = 477, + JSON = 478, + KEY = 479, + LABEL = 480, + LANGUAGE = 481, + LARGE_P = 482, + LAST_P = 483, + LATERAL_P = 484, + LEADING = 485, + LEAKPROOF = 486, + LEFT = 487, + LEVEL = 488, + LIKE = 489, + LIMIT = 490, + LISTEN = 491, + LOAD = 492, + LOCAL = 493, + LOCALTIME = 494, + LOCALTIMESTAMP = 495, + LOCATION = 496, + LOCK_P = 497, + LOCKED = 498, + LOGGED = 499, + MACRO = 500, + MAP = 501, + MAPPING = 502, + MATCH = 503, + MATERIALIZED = 504, + MAXVALUE = 505, + METHOD = 506, + MICROSECOND_P = 507, + MICROSECONDS_P = 508, + MILLISECOND_P = 509, + MILLISECONDS_P = 510, + MINUTE_P = 511, + MINUTES_P = 512, + MINVALUE = 513, + MODE = 514, + MONTH_P = 515, + MONTHS_P = 516, + MOVE = 517, + NAME_P = 518, + NAMES = 519, + NATIONAL = 520, + NATURAL = 521, + NCHAR = 522, + NEW = 523, + NEXT = 524, + NO = 525, + NONE = 526, + NOT = 527, + NOTHING = 528, + NOTIFY = 529, + NOTNULL = 530, + NOWAIT = 531, + NULL_P = 532, + NULLIF = 533, + NULLS_P = 534, + NUMERIC = 535, + OBJECT_P = 536, + OF = 537, + OFF = 538, + OFFSET = 539, + OIDS = 540, + OLD = 541, + ON = 542, + ONLY = 543, + OPERATOR = 544, + OPTION = 545, + OPTIONS = 546, + OR = 547, + ORDER = 548, + ORDINALITY = 549, + OUT_P = 550, + OUTER_P = 551, + OVER = 552, + OVERLAPS = 553, + OVERLAY = 554, + OVERRIDING = 555, + OWNED = 556, + OWNER = 557, + PARALLEL = 558, + PARSER = 559, + PARTIAL = 560, + PARTITION = 561, + PASSING = 562, + PASSWORD = 563, + PERCENT = 564, + PLACING = 565, + PLANS = 566, + POLICY = 567, + POSITION = 568, + POSITIONAL = 569, + PRAGMA_P = 570, + PRECEDING = 571, + PRECISION = 572, + PREPARE = 573, + PREPARED = 574, + PRESERVE = 575, + PRIMARY = 576, + PRIOR = 577, + PRIVILEGES = 578, + PROCEDURAL = 579, + PROCEDURE = 580, + PROGRAM = 581, + PUBLICATION = 582, + QUALIFY = 583, + QUOTE = 584, + RANGE = 585, + READ_P = 586, + REAL = 587, + REASSIGN = 588, + RECHECK = 589, + RECURSIVE = 590, + REF = 591, + REFERENCES = 592, + REFERENCING = 593, + REFRESH = 594, + REINDEX = 595, + RELATIVE_P = 596, + RELEASE = 597, + RENAME = 598, + REPEATABLE = 599, + REPLACE = 600, + REPLICA = 601, + RESET = 602, + RESPECT_P = 603, + RESTART = 604, + RESTRICT = 605, + RETURNING = 606, + RETURNS = 607, + REVOKE = 608, + RIGHT = 609, + ROLE = 610, + ROLLBACK = 611, + ROLLUP = 612, + ROW = 613, + ROWS = 614, + RULE = 615, + SAMPLE = 616, + SAVEPOINT = 617, + SCHEMA = 618, + SCHEMAS = 619, + SCROLL = 620, + SEARCH = 621, + SECOND_P = 622, + SECONDS_P = 623, + SECURITY = 624, + SELECT = 625, + SEQUENCE = 626, + SEQUENCES = 627, + SERIALIZABLE = 628, + SERVER = 629, + SESSION = 630, + SESSION_USER = 631, + SET = 632, + SETOF = 633, + SETS = 634, + SHARE = 635, + SHOW = 636, + SIMILAR = 637, + SIMPLE = 638, + SKIP = 639, + SMALLINT = 640, + SNAPSHOT = 641, + SOME = 642, + SQL_P = 643, + STABLE = 644, + STANDALONE_P = 645, + START = 646, + STATEMENT = 647, + STATISTICS = 648, + STDIN = 649, + STDOUT = 650, + STORAGE = 651, + STORED = 652, + STRICT_P = 653, + STRIP_P = 654, + STRUCT = 655, + SUBSCRIPTION = 656, + SUBSTRING = 657, + SUMMARIZE = 658, + SYMMETRIC = 659, + SYSID = 660, + SYSTEM_P = 661, + TABLE = 662, + TABLES = 663, + TABLESAMPLE = 664, + TABLESPACE = 665, + TEMP = 666, + TEMPLATE = 667, + TEMPORARY = 668, + TEXT_P = 669, + THEN = 670, + TIME = 671, + TIMESTAMP = 672, + TO = 673, + TRAILING = 674, + TRANSACTION = 675, + TRANSFORM = 676, + TREAT = 677, + TRIGGER = 678, + TRIM = 679, + TRUE_P = 680, + TRUNCATE = 681, + TRUSTED = 682, + TRY_CAST = 683, + TYPE_P = 684, + TYPES_P = 685, + UNBOUNDED = 686, + UNCOMMITTED = 687, + UNENCRYPTED = 688, + UNION = 689, + UNIQUE = 690, + UNKNOWN = 691, + UNLISTEN = 692, + UNLOGGED = 693, + UNTIL = 694, + UPDATE = 695, + USE_P = 696, + USER = 697, + USING = 698, + VACUUM = 699, + VALID = 700, + VALIDATE = 701, + VALIDATOR = 702, + VALUE_P = 703, + VALUES = 704, + VARCHAR = 705, + VARIADIC = 706, + VARYING = 707, + VERBOSE = 708, + VERSION_P = 709, + VIEW = 710, + VIEWS = 711, + VIRTUAL = 712, + VOLATILE = 713, + WHEN = 714, + WHERE = 715, + WHITESPACE_P = 716, + WINDOW = 717, + WITH = 718, + WITHIN = 719, + WITHOUT = 720, + WORK = 721, + WRAPPER = 722, + WRITE_P = 723, + XML_P = 724, + XMLATTRIBUTES = 725, + XMLCONCAT = 726, + XMLELEMENT = 727, + XMLEXISTS = 728, + XMLFOREST = 729, + XMLNAMESPACES = 730, + XMLPARSE = 731, + XMLPI = 732, + XMLROOT = 733, + XMLSERIALIZE = 734, + XMLTABLE = 735, + YEAR_P = 736, + YEARS_P = 737, + YES_P = 738, + ZONE = 739, + NOT_LA = 740, + NULLS_LA = 741, + WITH_LA = 742, + POSTFIXOP = 743, + UMINUS = 744 + }; #endif +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 14 "third_party/libpg_query/grammar/grammar.y" +union YYSTYPE { +#line 14 "third_party/libpg_query/grammar/grammar.y" + core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; @@ -308738,64 +308858,110 @@ typedef union YYSTYPE PGLockWaitPolicy lockwaitpolicy; PGSubLinkType subquerytype; PGViewCheckOption viewcheckoption; -} -/* Line 193 of yacc.c. */ -#line 1295 "third_party/libpg_query/grammar/grammar_out.cpp" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 + +#line 830 "third_party/libpg_query/grammar/grammar_out.cpp" + +}; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -/* Copy the second part of user declarations. */ + +int base_yyparse (core_yyscan_t yyscanner); + +#endif /* !YY_BASE_YY_THIRD_PARTY_LIBPG_QUERY_GRAMMAR_GRAMMAR_OUT_HPP_INCLUDED */ -/* Line 216 of yacc.c. */ -#line 1320 "third_party/libpg_query/grammar/grammar_out.cpp" #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef short int yytype_int8; +typedef short yytype_int16; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_uint8; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; #else -typedef short int yytype_int16; +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -308803,54 +308969,97 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -308868,11 +309077,11 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -308880,8 +309089,8 @@ YYID (i) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -308895,25 +309104,23 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -308923,85 +309130,93 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - YYLTYPE yyls; + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; + YYLTYPE yyls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \ + + YYSIZEOF (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 694 +#define YYFINAL 692 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 61781 +#define YYLAST 61782 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 512 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 414 +#define YYNNTS 412 /* YYNRULES -- Number of rules. */ -#define YYNRULES 1987 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 3267 +#define YYNRULES 1983 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 3263 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 744 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint16 yytranslate[] = +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -309081,1014 +309296,212 @@ static const yytype_uint16 yytranslate[] = }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, - 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, - 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, - 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, - 81, 83, 85, 87, 88, 93, 100, 105, 112, 117, - 124, 129, 136, 138, 141, 145, 148, 150, 154, 157, - 161, 163, 167, 170, 176, 180, 187, 192, 199, 206, - 213, 219, 225, 232, 242, 247, 253, 261, 268, 273, - 282, 287, 290, 295, 299, 306, 311, 314, 317, 320, - 323, 325, 328, 329, 331, 334, 337, 340, 342, 346, - 351, 354, 356, 357, 360, 364, 367, 371, 378, 385, - 394, 401, 410, 417, 426, 433, 442, 451, 462, 471, - 482, 484, 485, 494, 496, 501, 506, 514, 517, 519, - 523, 528, 532, 533, 535, 536, 539, 543, 549, 552, - 555, 556, 565, 571, 572, 578, 584, 592, 595, 596, - 598, 600, 602, 606, 609, 610, 612, 613, 615, 619, - 621, 625, 627, 630, 632, 636, 639, 646, 655, 661, - 663, 664, 666, 670, 673, 678, 684, 688, 693, 700, - 706, 712, 721, 729, 731, 737, 746, 748, 749, 753, - 763, 776, 780, 781, 786, 793, 795, 798, 800, 802, - 803, 805, 808, 811, 813, 816, 819, 821, 824, 828, - 831, 834, 837, 840, 844, 848, 852, 854, 858, 860, - 861, 863, 866, 869, 872, 875, 878, 881, 884, 887, - 889, 891, 892, 895, 905, 918, 930, 931, 934, 936, - 938, 940, 942, 944, 946, 950, 951, 953, 956, 958, - 960, 963, 966, 970, 972, 974, 977, 980, 982, 985, - 989, 995, 999, 1002, 1008, 1010, 1012, 1014, 1015, 1021, - 1029, 1035, 1038, 1042, 1044, 1046, 1049, 1052, 1053, 1057, - 1062, 1067, 1068, 1072, 1075, 1076, 1080, 1082, 1084, 1086, - 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1104, 1108, 1110, - 1113, 1116, 1119, 1122, 1125, 1128, 1129, 1133, 1137, 1141, - 1142, 1144, 1147, 1149, 1152, 1155, 1158, 1161, 1165, 1170, - 1172, 1176, 1178, 1180, 1182, 1184, 1188, 1190, 1193, 1194, - 1196, 1199, 1200, 1202, 1206, 1207, 1210, 1211, 1215, 1219, - 1221, 1227, 1231, 1233, 1237, 1239, 1242, 1244, 1249, 1255, - 1261, 1268, 1272, 1280, 1285, 1297, 1299, 1303, 1306, 1309, - 1312, 1313, 1317, 1319, 1321, 1324, 1327, 1330, 1333, 1335, - 1336, 1338, 1341, 1348, 1353, 1360, 1365, 1372, 1381, 1386, - 1393, 1395, 1397, 1399, 1401, 1403, 1406, 1408, 1411, 1413, - 1416, 1418, 1420, 1422, 1424, 1428, 1432, 1436, 1440, 1443, - 1446, 1448, 1452, 1454, 1456, 1458, 1462, 1464, 1466, 1467, - 1469, 1471, 1473, 1475, 1479, 1488, 1500, 1511, 1519, 1530, - 1540, 1542, 1544, 1547, 1551, 1560, 1572, 1582, 1584, 1586, - 1590, 1591, 1593, 1597, 1599, 1600, 1602, 1603, 1605, 1606, - 1608, 1612, 1614, 1616, 1618, 1622, 1623, 1626, 1629, 1630, - 1633, 1634, 1636, 1637, 1639, 1641, 1643, 1647, 1651, 1653, - 1655, 1659, 1663, 1667, 1671, 1675, 1679, 1684, 1688, 1691, - 1693, 1695, 1697, 1699, 1701, 1705, 1707, 1709, 1713, 1717, - 1719, 1722, 1727, 1732, 1735, 1739, 1745, 1751, 1753, 1755, - 1759, 1760, 1772, 1784, 1795, 1808, 1810, 1813, 1819, 1824, - 1829, 1834, 1837, 1840, 1844, 1846, 1850, 1857, 1860, 1861, - 1865, 1869, 1874, 1879, 1884, 1889, 1893, 1896, 1898, 1900, - 1901, 1903, 1905, 1906, 1909, 1911, 1917, 1919, 1920, 1923, - 1926, 1927, 1929, 1930, 1934, 1940, 1946, 1948, 1952, 1957, - 1961, 1963, 1965, 1966, 1969, 1972, 1973, 1976, 1979, 1981, - 1983, 1985, 1986, 1989, 1994, 2000, 2005, 2008, 2012, 2015, - 2018, 2021, 2024, 2026, 2029, 2033, 2034, 2036, 2037, 2043, - 2045, 2050, 2057, 2060, 2062, 2063, 2068, 2069, 2071, 2073, - 2076, 2079, 2082, 2084, 2086, 2089, 2092, 2094, 2096, 2098, - 2100, 2102, 2104, 2108, 2112, 2116, 2117, 2119, 2123, 2125, - 2128, 2130, 2132, 2134, 2136, 2138, 2141, 2146, 2151, 2157, - 2159, 2161, 2164, 2165, 2168, 2169, 2171, 2175, 2177, 2178, - 2180, 2183, 2187, 2190, 2195, 2198, 2202, 2205, 2206, 2208, - 2211, 2212, 2217, 2223, 2225, 2228, 2231, 2232, 2234, 2238, - 2240, 2243, 2247, 2251, 2255, 2259, 2263, 2267, 2269, 2274, - 2278, 2283, 2289, 2294, 2300, 2305, 2310, 2316, 2319, 2324, - 2326, 2328, 2329, 2331, 2336, 2342, 2347, 2348, 2351, 2354, - 2357, 2359, 2361, 2362, 2367, 2370, 2372, 2375, 2378, 2383, - 2386, 2393, 2396, 2398, 2402, 2407, 2408, 2411, 2412, 2415, - 2416, 2418, 2422, 2426, 2429, 2430, 2433, 2438, 2440, 2442, - 2444, 2445, 2448, 2452, 2458, 2465, 2468, 2472, 2478, 2484, - 2490, 2494, 2499, 2500, 2502, 2504, 2506, 2508, 2510, 2513, - 2518, 2520, 2522, 2524, 2526, 2529, 2533, 2534, 2536, 2538, - 2540, 2542, 2544, 2547, 2550, 2553, 2556, 2559, 2561, 2565, - 2566, 2568, 2570, 2572, 2574, 2580, 2583, 2585, 2587, 2589, - 2591, 2596, 2598, 2601, 2604, 2606, 2610, 2614, 2617, 2619, - 2620, 2626, 2629, 2635, 2638, 2640, 2644, 2648, 2649, 2651, - 2653, 2655, 2657, 2659, 2661, 2663, 2665, 2667, 2669, 2671, - 2673, 2675, 2677, 2679, 2681, 2683, 2685, 2687, 2689, 2691, - 2693, 2695, 2697, 2701, 2705, 2709, 2713, 2717, 2721, 2725, - 2726, 2728, 2732, 2736, 2742, 2745, 2748, 2752, 2756, 2760, - 2764, 2768, 2772, 2776, 2780, 2784, 2788, 2792, 2796, 2800, - 2804, 2807, 2810, 2814, 2818, 2821, 2824, 2828, 2832, 2838, - 2843, 2850, 2854, 2860, 2865, 2872, 2877, 2884, 2890, 2898, - 2902, 2905, 2910, 2914, 2917, 2921, 2925, 2929, 2933, 2938, - 2942, 2947, 2951, 2956, 2962, 2969, 2976, 2984, 2991, 2999, - 3006, 3014, 3018, 3023, 3028, 3035, 3037, 3044, 3049, 3051, - 3055, 3058, 3061, 3065, 3069, 3073, 3077, 3081, 3085, 3089, - 3093, 3097, 3101, 3105, 3109, 3113, 3117, 3120, 3123, 3129, - 3136, 3143, 3151, 3153, 3155, 3158, 3161, 3164, 3166, 3170, - 3172, 3175, 3180, 3182, 3184, 3187, 3190, 3195, 3197, 3199, - 3203, 3207, 3209, 3213, 3220, 3228, 3238, 3246, 3254, 3259, - 3265, 3267, 3269, 3271, 3277, 3279, 3281, 3286, 3288, 3293, - 3295, 3300, 3302, 3307, 3309, 3311, 3313, 3315, 3317, 3319, - 3326, 3333, 3338, 3343, 3348, 3353, 3360, 3366, 3372, 3378, - 3383, 3390, 3395, 3403, 3413, 3419, 3420, 3426, 3431, 3432, - 3434, 3435, 3438, 3439, 3441, 3445, 3449, 3452, 3455, 3456, - 3463, 3465, 3466, 3470, 3471, 3474, 3477, 3478, 3480, 3485, - 3488, 3491, 3494, 3497, 3500, 3505, 3509, 3511, 3517, 3521, - 3523, 3527, 3529, 3532, 3534, 3536, 3538, 3540, 3542, 3544, - 3546, 3548, 3550, 3552, 3554, 3556, 3558, 3560, 3562, 3564, - 3566, 3568, 3570, 3575, 3577, 3582, 3584, 3589, 3591, 3594, - 3596, 3599, 3601, 3604, 3606, 3610, 3612, 3616, 3618, 3621, - 3623, 3624, 3626, 3630, 3632, 3636, 3640, 3642, 3646, 3650, - 3651, 3653, 3655, 3657, 3659, 3661, 3663, 3665, 3667, 3669, - 3671, 3676, 3680, 3683, 3687, 3688, 3692, 3696, 3699, 3702, - 3704, 3705, 3708, 3711, 3715, 3718, 3720, 3722, 3726, 3732, - 3734, 3737, 3742, 3745, 3746, 3748, 3749, 3751, 3754, 3757, - 3761, 3767, 3769, 3770, 3772, 3775, 3776, 3779, 3781, 3782, - 3784, 3785, 3787, 3791, 3793, 3796, 3800, 3803, 3805, 3809, - 3815, 3820, 3823, 3825, 3826, 3830, 3832, 3836, 3838, 3841, - 3846, 3849, 3850, 3852, 3856, 3858, 3861, 3863, 3867, 3869, - 3872, 3874, 3876, 3878, 3881, 3883, 3885, 3888, 3890, 3892, - 3895, 3903, 3906, 3912, 3916, 3920, 3922, 3924, 3926, 3928, - 3930, 3932, 3934, 3936, 3938, 3940, 3942, 3944, 3946, 3948, - 3950, 3952, 3954, 3956, 3958, 3960, 3963, 3966, 3970, 3974, - 3975, 3977, 3979, 3981, 3983, 3985, 3987, 3989, 3991, 3997, - 4001, 4002, 4004, 4006, 4008, 4010, 4015, 4023, 4026, 4027, - 4029, 4031, 4033, 4035, 4049, 4066, 4068, 4071, 4072, 4074, - 4075, 4077, 4078, 4081, 4082, 4084, 4085, 4092, 4101, 4108, - 4117, 4124, 4133, 4137, 4140, 4142, 4143, 4148, 4155, 4159, - 4162, 4167, 4171, 4177, 4179, 4180, 4182, 4184, 4185, 4187, - 4189, 4191, 4193, 4195, 4197, 4199, 4201, 4203, 4205, 4207, - 4209, 4211, 4213, 4215, 4217, 4219, 4221, 4223, 4225, 4227, - 4229, 4231, 4233, 4235, 4237, 4239, 4241, 4243, 4245, 4247, - 4249, 4251, 4253, 4255, 4257, 4261, 4263, 4265, 4267, 4269, - 4271, 4273, 4276, 4278, 4280, 4283, 4287, 4291, 4295, 4297, - 4301, 4305, 4308, 4312, 4316, 4320, 4324, 4326, 4328, 4330, - 4332, 4336, 4342, 4344, 4346, 4348, 4350, 4354, 4357, 4360, - 4364, 4366, 4368, 4373, 4379, 4385, 4390, 4397, 4399, 4401, - 4403, 4405, 4407, 4409, 4410, 4412, 4416, 4418, 4419, 4427, - 4431, 4433, 4436, 4440, 4443, 4444, 4447, 4448, 4451, 4456, - 4462, 4466, 4469, 4475, 4477, 4478, 4481, 4482, 4484, 4486, - 4490, 4493, 4495, 4497, 4499, 4502, 4506, 4509, 4512, 4515, - 4518, 4522, 4527, 4530, 4532, 4534, 4536, 4538, 4542, 4544, - 4548, 4551, 4561, 4574, 4586, 4599, 4614, 4618, 4623, 4628, - 4629, 4637, 4648, 4658, 4661, 4665, 4666, 4671, 4673, 4675, - 4677, 4679, 4681, 4683, 4685, 4687, 4689, 4691, 4693, 4695, - 4697, 4699, 4701, 4703, 4705, 4707, 4709, 4711, 4713, 4715, - 4717, 4719, 4721, 4723, 4725, 4727, 4729, 4731, 4733, 4735, - 4737, 4739, 4741, 4743, 4745, 4747, 4749, 4751, 4753, 4755, - 4757, 4759, 4761, 4763, 4765, 4767, 4769, 4771, 4773, 4775, - 4777, 4779, 4781, 4783, 4785, 4787, 4789, 4791, 4793, 4795, - 4797, 4799, 4801, 4803, 4805, 4807, 4809, 4811, 4813, 4815, - 4817, 4819, 4821, 4823, 4825, 4827, 4829, 4831, 4833, 4835, - 4837, 4839, 4841, 4843, 4845, 4847, 4849, 4851, 4853, 4855, - 4857, 4859, 4861, 4863, 4865, 4867, 4869, 4871, 4873, 4875, - 4877, 4879, 4881, 4883, 4885, 4887, 4889, 4891, 4893, 4895, - 4897, 4899, 4901, 4903, 4905, 4907, 4909, 4911, 4913, 4915, - 4917, 4919, 4921, 4923, 4925, 4927, 4929, 4931, 4933, 4935, - 4937, 4939, 4941, 4943, 4945, 4947, 4949, 4951, 4953, 4955, - 4957, 4959, 4961, 4963, 4965, 4967, 4969, 4971, 4973, 4975, - 4977, 4979, 4981, 4983, 4985, 4987, 4989, 4991, 4993, 4995, - 4997, 4999, 5001, 5003, 5005, 5007, 5009, 5011, 5013, 5015, - 5017, 5019, 5021, 5023, 5025, 5027, 5029, 5031, 5033, 5035, - 5037, 5039, 5041, 5043, 5045, 5047, 5049, 5051, 5053, 5055, - 5057, 5059, 5061, 5063, 5065, 5067, 5069, 5071, 5073, 5075, - 5077, 5079, 5081, 5083, 5085, 5087, 5089, 5091, 5093, 5095, - 5097, 5099, 5101, 5103, 5105, 5107, 5109, 5111, 5113, 5115, - 5117, 5119, 5121, 5123, 5125, 5127, 5129, 5131, 5133, 5135, - 5137, 5139, 5141, 5143, 5145, 5147, 5149, 5151, 5153, 5155, - 5157, 5159, 5161, 5163, 5165, 5167, 5169, 5171, 5173, 5175, - 5177, 5179, 5181, 5183, 5185, 5187, 5189, 5191, 5193, 5195, - 5197, 5199, 5201, 5203, 5205, 5207, 5209, 5211, 5213, 5215, - 5217, 5219, 5221, 5223, 5225, 5227, 5229, 5231, 5233, 5235, - 5237, 5239, 5241, 5243, 5245, 5247, 5249, 5251, 5253, 5255, - 5257, 5259, 5261, 5263, 5265, 5267, 5269, 5271, 5273, 5275, - 5277, 5279, 5281, 5283, 5285, 5287, 5289, 5291, 5293, 5295, - 5297, 5299, 5301, 5303, 5305, 5307, 5309, 5311, 5313, 5315, - 5317, 5319, 5321, 5323, 5325, 5327, 5329, 5331, 5333, 5335, - 5337, 5339, 5341, 5343, 5345, 5347, 5349, 5351, 5353, 5355, - 5357, 5359, 5361, 5363, 5365, 5367, 5369, 5371, 5373, 5375, - 5377, 5379, 5381, 5383, 5385, 5387, 5389, 5391, 5393, 5395, - 5397, 5399, 5401, 5403, 5405, 5407, 5409, 5411, 5413, 5415, - 5417, 5419, 5421, 5423, 5425, 5427, 5429, 5431, 5433, 5435, - 5437, 5439, 5441, 5443, 5445, 5447, 5449, 5451, 5453, 5455, - 5457, 5459, 5461, 5463, 5465, 5467, 5469, 5471, 5473, 5475, - 5477, 5479, 5481, 5483, 5485, 5487, 5489, 5491, 5493, 5495, - 5497, 5499, 5501, 5503, 5505, 5507, 5509, 5511, 5513, 5515, - 5517, 5519, 5521, 5523, 5525, 5527, 5529, 5531, 5533, 5535, - 5537, 5539, 5541, 5543, 5545, 5547, 5549, 5551, 5553, 5555, - 5557, 5559, 5561, 5563, 5565, 5567, 5569, 5571, 5573, 5575, - 5577, 5579, 5581, 5583, 5585, 5587, 5589, 5591, 5593, 5595, - 5597, 5599, 5601, 5603, 5605, 5607, 5609, 5611, 5613, 5615, - 5617, 5619, 5621, 5623, 5625, 5627, 5629, 5631, 5633, 5635, - 5637, 5639, 5641, 5643, 5645, 5647, 5649, 5651, 5653, 5655, - 5657, 5659, 5661, 5663, 5665, 5667, 5669, 5671, 5673, 5675, - 5677, 5679, 5681, 5683, 5685, 5687, 5689, 5691, 5693, 5695, - 5697, 5699, 5701, 5703, 5705, 5707, 5709, 5711, 5713, 5715, - 5717, 5719, 5721, 5723, 5725, 5727, 5729, 5731, 5733, 5735, - 5737, 5739, 5741, 5743, 5745, 5747, 5749, 5751, 5753, 5755, - 5757, 5759, 5761, 5763, 5765, 5767, 5769, 5771, 5773, 5775, - 5777, 5779, 5781, 5783, 5785, 5787, 5789, 5791, 5793, 5795, - 5797, 5799, 5801, 5803, 5805, 5807, 5809, 5811, 5813, 5815, - 5817, 5819, 5821, 5823, 5825, 5827, 5829, 5831, 5833, 5835, - 5837, 5839, 5841, 5843, 5845, 5847, 5849, 5851, 5853, 5855, - 5857, 5859, 5861, 5863, 5865, 5867, 5869, 5871, 5873, 5875, - 5877, 5879, 5881, 5883, 5885, 5887, 5889, 5891, 5893, 5895, - 5897, 5899, 5901, 5903, 5905, 5907, 5909, 5911 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 513, 0, -1, 514, -1, 514, 504, 515, -1, 515, - -1, 866, -1, 560, -1, 516, -1, 899, -1, 900, - -1, 913, -1, 867, -1, 629, -1, 916, -1, 554, - -1, 625, -1, 856, -1, 556, -1, 570, -1, 550, - -1, 527, -1, 895, -1, 901, -1, 618, -1, 558, - -1, 871, -1, 869, -1, 870, -1, 859, -1, 530, - -1, 888, -1, 553, -1, 853, -1, 528, -1, 646, - -1, 567, -1, 628, -1, 569, -1, 890, -1, 906, - -1, 882, -1, 909, -1, 914, -1, -1, 31, 407, - 717, 524, -1, 31, 407, 190, 152, 717, 524, -1, - 31, 200, 832, 524, -1, 31, 200, 190, 152, 832, - 524, -1, 31, 371, 832, 524, -1, 31, 371, 190, - 152, 832, 524, -1, 31, 455, 832, 524, -1, 31, - 455, 190, 152, 832, 524, -1, 519, -1, 517, 519, - -1, 377, 117, 760, -1, 137, 117, -1, 349, -1, - 349, 562, 563, -1, 377, 564, -1, 377, 175, 617, - -1, 523, -1, 520, 505, 523, -1, 25, 597, -1, - 25, 190, 272, 152, 597, -1, 25, 77, 597, -1, - 25, 77, 190, 272, 152, 597, -1, 31, 529, 841, - 518, -1, 31, 529, 841, 137, 272, 277, -1, 31, - 529, 841, 377, 272, 277, -1, 31, 529, 841, 377, - 393, 566, -1, 31, 529, 841, 377, 585, -1, 31, - 529, 841, 347, 585, -1, 31, 529, 841, 377, 396, - 841, -1, 31, 529, 841, 25, 175, 617, 38, 189, - 573, -1, 31, 529, 841, 517, -1, 31, 529, 841, - 137, 189, -1, 31, 529, 841, 137, 189, 190, 152, - -1, 137, 529, 190, 152, 841, 622, -1, 137, 529, - 841, 622, -1, 31, 529, 841, 526, 429, 730, 726, - 522, -1, 31, 529, 841, 525, -1, 25, 587, -1, - 31, 88, 835, 571, -1, 446, 88, 835, -1, 137, - 88, 190, 152, 835, 622, -1, 137, 88, 835, 622, - -1, 377, 244, -1, 377, 438, -1, 377, 585, -1, - 347, 585, -1, 525, -1, 443, 760, -1, -1, 581, - -1, 377, 581, -1, 25, 581, -1, 137, 595, -1, - 521, -1, 524, 505, 521, -1, 291, 501, 520, 502, - -1, 377, 109, -1, 377, -1, -1, 113, 835, -1, - 113, 318, 835, -1, 113, 29, -1, 113, 318, 29, - -1, 31, 363, 835, 343, 418, 835, -1, 31, 407, - 717, 343, 418, 835, -1, 31, 407, 190, 152, 717, - 343, 418, 835, -1, 31, 371, 832, 343, 418, 835, - -1, 31, 371, 190, 152, 832, 343, 418, 835, -1, - 31, 455, 832, 343, 418, 835, -1, 31, 455, 190, - 152, 832, 343, 418, 835, -1, 31, 200, 832, 343, - 418, 835, -1, 31, 200, 190, 152, 832, 343, 418, - 835, -1, 31, 407, 717, 343, 529, 835, 418, 835, - -1, 31, 407, 190, 152, 717, 343, 529, 835, 418, - 835, -1, 31, 407, 717, 343, 88, 835, 418, 835, - -1, 31, 407, 190, 152, 717, 343, 88, 835, 418, - 835, -1, 77, -1, -1, 534, 210, 537, 217, 532, - 531, 538, 540, -1, 646, -1, 300, 541, 448, 646, - -1, 501, 545, 502, 646, -1, 501, 545, 502, 300, - 541, 448, 646, -1, 117, 449, -1, 832, -1, 832, - 38, 841, -1, 501, 548, 502, 723, -1, 287, 88, - 835, -1, -1, 652, -1, -1, 841, 819, -1, 549, - 490, 760, -1, 501, 542, 502, 490, 760, -1, 292, - 345, -1, 292, 191, -1, -1, 287, 86, 533, 133, - 440, 377, 547, 723, -1, 287, 86, 533, 133, 273, - -1, -1, 841, 543, 544, 667, 668, -1, 766, 543, - 544, 667, 668, -1, 501, 760, 502, 543, 544, 667, - 668, -1, 351, 822, -1, -1, 442, -1, 406, -1, - 549, -1, 542, 505, 549, -1, 75, 846, -1, -1, - 846, -1, -1, 535, -1, 545, 505, 535, -1, 536, - -1, 546, 505, 536, -1, 546, -1, 546, 505, -1, - 539, -1, 548, 505, 539, -1, 841, 819, -1, 95, - 429, 832, 38, 144, 647, -1, 95, 429, 832, 38, - 144, 501, 551, 502, -1, 95, 429, 832, 38, 730, - -1, 552, -1, -1, 840, -1, 552, 505, 840, -1, - 315, 841, -1, 315, 841, 490, 887, -1, 315, 841, - 501, 797, 502, -1, 95, 110, 832, -1, 95, 555, - 110, 832, -1, 95, 110, 190, 272, 152, 832, -1, - 95, 292, 345, 110, 832, -1, 95, 110, 832, 171, - 840, -1, 95, 110, 190, 272, 152, 832, 171, 840, - -1, 95, 292, 345, 110, 832, 171, 840, -1, 840, - -1, 95, 616, 371, 832, 557, -1, 95, 616, 371, - 190, 272, 152, 832, 557, -1, 561, -1, -1, 151, - 835, 559, -1, 95, 616, 407, 918, 38, 151, 835, - 559, 917, -1, 95, 616, 407, 190, 272, 152, 918, - 38, 151, 835, 559, 917, -1, 501, 795, 502, -1, - -1, 31, 371, 832, 561, -1, 31, 371, 190, 152, - 832, 561, -1, 564, -1, 561, 564, -1, 463, -1, - 487, -1, -1, 4, -1, 492, 4, -1, 493, 4, - -1, 566, -1, 38, 732, -1, 57, 563, -1, 108, - -1, 270, 108, -1, 199, 565, 563, -1, 250, 563, - -1, 258, 563, -1, 270, 250, -1, 270, 258, -1, - 301, 56, 846, -1, 371, 263, 846, -1, 391, 562, - 563, -1, 349, -1, 349, 562, 563, -1, 56, -1, - -1, 839, -1, 492, 839, -1, 493, 839, -1, 21, - 568, -1, 49, 568, -1, 391, 568, -1, 81, 568, - -1, 143, 568, -1, 356, 568, -1, 466, -1, 420, - -1, -1, 441, 832, -1, 95, 616, 407, 832, 501, - 603, 502, 592, 584, -1, 95, 616, 407, 190, 272, - 152, 832, 501, 603, 502, 592, 584, -1, 95, 292, - 345, 616, 407, 832, 501, 603, 502, 592, 584, -1, - -1, 571, 596, -1, 611, -1, 925, -1, 791, -1, - 563, -1, 840, -1, 271, -1, 501, 561, 502, -1, - -1, 840, -1, 270, 24, -1, 350, -1, 60, -1, - 377, 277, -1, 377, 117, -1, 88, 835, 577, -1, - 577, -1, 591, -1, 75, 846, -1, 272, 277, -1, - 277, -1, 435, 602, -1, 321, 224, 602, -1, 69, - 501, 760, 502, 586, -1, 443, 83, 835, -1, 117, - 761, -1, 337, 832, 605, 614, 583, -1, 457, -1, - 397, -1, 578, -1, -1, 175, 617, 38, 189, 573, - -1, 175, 617, 38, 501, 760, 502, 579, -1, 38, - 501, 760, 502, 579, -1, 595, 574, -1, 287, 440, - 575, -1, 582, -1, 607, -1, 582, 607, -1, 607, - 582, -1, -1, 287, 81, 137, -1, 287, 81, 122, - 359, -1, 287, 81, 320, 359, -1, -1, 501, 589, - 502, -1, 270, 202, -1, -1, 88, 835, 612, -1, - 612, -1, 80, -1, 89, -1, 118, -1, 189, -1, - 201, -1, 393, -1, 396, -1, 29, -1, 608, -1, - 589, 505, 608, -1, 443, 200, 599, -1, 119, -1, - 272, 119, -1, 204, 120, -1, 204, 193, -1, 463, - 585, -1, 463, 285, -1, 465, 285, -1, -1, 501, - 598, 502, -1, 594, 198, 588, -1, 594, 149, 588, - -1, -1, 850, -1, 272, 119, -1, 119, -1, 204, - 193, -1, 204, 120, -1, 272, 445, -1, 270, 202, - -1, 841, 730, 606, -1, 841, 729, 580, 606, -1, - 601, -1, 598, 505, 601, -1, 841, -1, 597, -1, - 615, -1, 587, -1, 850, 490, 572, -1, 850, -1, - 463, 593, -1, -1, 613, -1, 613, 505, -1, -1, - 841, -1, 501, 609, 502, -1, -1, 606, 576, -1, - -1, 287, 122, 575, -1, 850, 490, 572, -1, 850, - -1, 850, 503, 850, 490, 572, -1, 850, 503, 850, - -1, 604, -1, 609, 505, 604, -1, 609, -1, 609, - 505, -1, 730, -1, 843, 847, 496, 429, -1, 378, - 843, 847, 496, 429, -1, 69, 501, 760, 502, 571, - -1, 435, 501, 610, 502, 602, 571, -1, 435, 590, - 571, -1, 321, 224, 501, 610, 502, 602, 571, -1, - 321, 224, 590, 571, -1, 168, 224, 501, 610, 502, - 337, 832, 605, 614, 583, 571, -1, 600, -1, 613, - 505, 600, -1, 248, 172, -1, 248, 305, -1, 248, - 383, -1, -1, 234, 832, 594, -1, 413, -1, 411, - -1, 238, 413, -1, 238, 411, -1, 177, 413, -1, - 177, 411, -1, 438, -1, -1, 32, -1, 56, 117, - -1, 137, 619, 190, 152, 621, 622, -1, 137, 619, - 621, 622, -1, 137, 620, 190, 152, 833, 622, -1, - 137, 620, 833, 622, -1, 137, 623, 835, 287, 846, - 622, -1, 137, 623, 190, 152, 835, 287, 846, 622, - -1, 137, 429, 624, 622, -1, 137, 429, 190, 152, - 624, 622, -1, 407, -1, 110, -1, 371, -1, 173, - -1, 245, -1, 245, 407, -1, 455, -1, 249, 455, - -1, 200, -1, 168, 407, -1, 76, -1, 92, -1, - 363, -1, 393, -1, 414, 366, 304, -1, 414, 366, - 129, -1, 414, 366, 412, -1, 414, 366, 85, -1, - 23, 251, -1, 146, 423, -1, 156, -1, 168, 109, - 467, -1, 327, -1, 374, -1, 846, -1, 621, 505, - 846, -1, 60, -1, 350, -1, -1, 312, -1, 360, - -1, 423, -1, 730, -1, 624, 505, 730, -1, 95, - 616, 626, 832, 627, 38, 407, 646, -1, 95, 616, - 626, 190, 272, 152, 832, 627, 38, 407, 646, -1, - 95, 292, 345, 616, 626, 832, 627, 38, 407, 646, - -1, 95, 616, 626, 832, 627, 38, 760, -1, 95, - 616, 626, 190, 272, 152, 832, 627, 38, 760, -1, - 95, 292, 345, 616, 626, 832, 627, 38, 760, -1, - 173, -1, 245, -1, 501, 502, -1, 501, 797, 502, - -1, 534, 440, 896, 377, 547, 706, 897, 540, -1, - 93, 641, 832, 605, 639, 630, 635, 644, 631, 562, - 636, -1, 93, 501, 646, 502, 418, 635, 644, 562, - 636, -1, 171, -1, 418, -1, 633, 124, 840, -1, - -1, 643, -1, 632, 505, 643, -1, 443, -1, -1, - 38, -1, -1, 326, -1, -1, 640, -1, 501, 645, - 502, -1, 879, -1, 563, -1, 494, -1, 501, 632, - 502, -1, -1, 850, 637, -1, 463, 285, -1, -1, - 640, 642, -1, -1, 52, -1, -1, 52, -1, 285, - -1, 170, -1, 123, 634, 840, -1, 277, 634, 840, - -1, 97, -1, 185, -1, 329, 634, 840, -1, 145, - 634, 840, -1, 167, 329, 609, -1, 167, 329, 494, - -1, 306, 56, 609, -1, 306, 56, 494, -1, 167, - 272, 277, 609, -1, 167, 277, 609, -1, 141, 840, - -1, 879, -1, 840, -1, 394, -1, 395, -1, 638, - -1, 645, 505, 638, -1, 648, -1, 647, -1, 501, - 648, 502, -1, 501, 647, 502, -1, 651, -1, 649, - 664, -1, 649, 663, 697, 670, -1, 649, 663, 669, - 698, -1, 652, 649, -1, 652, 649, 664, -1, 652, - 649, 663, 697, 670, -1, 652, 649, 663, 669, 698, - -1, 651, -1, 647, -1, 370, 661, 821, -1, -1, - 370, 661, 821, 655, 706, 723, 686, 695, 772, 696, - 674, -1, 370, 660, 823, 655, 706, 723, 686, 695, - 772, 696, 674, -1, 171, 707, 650, 655, 723, 686, - 695, 772, 696, 674, -1, 171, 707, 370, 660, 823, - 655, 723, 686, 695, 772, 696, 674, -1, 705, -1, - 407, 717, -1, 649, 434, 658, 659, 649, -1, 649, - 434, 658, 649, -1, 649, 215, 658, 649, -1, 649, - 147, 658, 649, -1, 463, 653, -1, 487, 653, -1, - 463, 335, 653, -1, 654, -1, 653, 505, 654, -1, - 835, 848, 38, 501, 855, 502, -1, 217, 656, -1, - -1, 413, 657, 832, -1, 411, 657, 832, -1, 238, - 413, 657, 832, -1, 238, 411, 657, 832, -1, 177, - 413, 657, 832, -1, 177, 411, 657, 832, -1, 438, - 657, 832, -1, 407, 832, -1, 832, -1, 407, -1, - -1, 29, -1, 132, -1, -1, 56, 263, -1, 132, - -1, 132, 287, 501, 795, 502, -1, 29, -1, -1, - 191, 279, -1, 348, 279, -1, -1, 664, -1, -1, - 293, 56, 665, -1, 293, 56, 29, 667, 668, -1, - 293, 56, 494, 667, 668, -1, 666, -1, 665, 505, - 666, -1, 760, 443, 791, 668, -1, 760, 667, 668, - -1, 39, -1, 126, -1, -1, 486, 163, -1, 486, - 228, -1, -1, 671, 672, -1, 672, 671, -1, 671, - -1, 672, -1, 669, -1, -1, 235, 680, -1, 235, - 680, 505, 681, -1, 161, 685, 682, 684, 288, -1, - 161, 685, 684, 288, -1, 284, 681, -1, 284, 682, - 684, -1, 4, 496, -1, 9, 496, -1, 4, 309, - -1, 9, 309, -1, 9, -1, 9, 359, -1, 443, - 361, 676, -1, -1, 841, -1, -1, 675, 501, 673, - 502, 679, -1, 673, -1, 673, 501, 841, 502, -1, - 673, 501, 841, 505, 9, 502, -1, 409, 676, -1, - 677, -1, -1, 344, 501, 9, 502, -1, -1, 760, - -1, 29, -1, 760, 496, -1, 4, 309, -1, 9, - 309, -1, 760, -1, 762, -1, 492, 683, -1, 493, - 683, -1, 839, -1, 4, -1, 358, -1, 359, -1, - 163, -1, 269, -1, 180, 56, 688, -1, 180, 56, - 29, -1, 180, 56, 494, -1, -1, 689, -1, 687, - 505, 689, -1, 687, -1, 687, 505, -1, 760, -1, - 690, -1, 692, -1, 691, -1, 693, -1, 501, 502, - -1, 357, 501, 795, 502, -1, 98, 501, 795, 502, - -1, 181, 379, 501, 688, 502, -1, 181, -1, 182, - -1, 184, 760, -1, -1, 328, 760, -1, -1, 699, - -1, 166, 331, 288, -1, 697, -1, -1, 700, -1, - 699, 700, -1, 701, 702, 703, -1, 166, 440, -1, - 166, 270, 224, 440, -1, 166, 380, -1, 166, 224, - 380, -1, 282, 831, -1, -1, 276, -1, 384, 243, - -1, -1, 449, 501, 795, 502, -1, 704, 505, 501, - 795, 502, -1, 704, -1, 704, 505, -1, 171, 708, - -1, -1, 709, -1, 707, 505, 709, -1, 707, -1, - 707, 505, -1, 717, 712, 678, -1, 718, 713, 678, - -1, 705, 711, 678, -1, 229, 718, 713, -1, 647, - 712, 678, -1, 229, 647, 712, -1, 710, -1, 501, - 710, 502, 711, -1, 501, 710, 502, -1, 709, 96, - 222, 709, -1, 709, 714, 222, 709, 716, -1, 709, - 222, 709, 716, -1, 709, 266, 714, 222, 709, -1, - 709, 266, 222, 709, -1, 709, 314, 222, 709, -1, - 38, 842, 501, 834, 502, -1, 38, 842, -1, 841, - 501, 834, 502, -1, 841, -1, 711, -1, -1, 711, - -1, 38, 501, 724, 502, -1, 38, 842, 501, 724, - 502, -1, 841, 501, 724, 502, -1, -1, 172, 715, - -1, 232, 715, -1, 354, 715, -1, 206, -1, 296, - -1, -1, 443, 501, 834, 502, -1, 287, 760, -1, - 832, -1, 832, 494, -1, 288, 832, -1, 288, 501, - 832, 502, -1, 766, 722, -1, 359, 171, 501, 720, - 502, 722, -1, 766, 721, -1, 719, -1, 720, 505, - 719, -1, 38, 501, 724, 502, -1, -1, 487, 294, - -1, -1, 460, 760, -1, -1, 725, -1, 724, 505, - 725, -1, 842, 730, 726, -1, 75, 846, -1, -1, - 841, 730, -1, 727, 505, 841, 730, -1, 358, -1, - 400, -1, 730, -1, -1, 732, 731, -1, 378, 732, - 731, -1, 732, 37, 499, 839, 500, -1, 378, 732, - 37, 499, 839, 500, -1, 732, 37, -1, 378, 732, - 37, -1, 728, 501, 727, 502, 731, -1, 246, 501, - 799, 502, 731, -1, 434, 501, 727, 502, 731, -1, - 731, 499, 500, -1, 731, 499, 839, 500, -1, -1, - 734, -1, 736, -1, 738, -1, 742, -1, 748, -1, - 749, 759, -1, 749, 501, 839, 502, -1, 736, -1, - 739, -1, 743, -1, 748, -1, 845, 735, -1, 501, - 796, 502, -1, -1, 213, -1, 214, -1, 385, -1, - 51, -1, 332, -1, 164, 737, -1, 136, 317, -1, - 115, 735, -1, 114, 735, -1, 280, 735, -1, 54, - -1, 501, 839, 502, -1, -1, 740, -1, 741, -1, - 740, -1, 741, -1, 53, 747, 501, 795, 502, -1, - 53, 747, -1, 744, -1, 745, -1, 744, -1, 745, - -1, 746, 501, 839, 502, -1, 746, -1, 67, 747, - -1, 66, 747, -1, 450, -1, 265, 67, 747, -1, - 265, 66, 747, -1, 267, 747, -1, 452, -1, -1, - 417, 501, 839, 502, 750, -1, 417, 750, -1, 416, - 501, 839, 502, 750, -1, 416, 750, -1, 216, -1, - 487, 416, 484, -1, 465, 416, 484, -1, -1, 481, - -1, 482, -1, 260, -1, 261, -1, 111, -1, 112, - -1, 187, -1, 188, -1, 256, -1, 257, -1, 367, - -1, 368, -1, 254, -1, 255, -1, 252, -1, 253, - -1, 751, -1, 752, -1, 753, -1, 754, -1, 755, - -1, 756, -1, 757, -1, 758, -1, 751, 418, 752, - -1, 753, 418, 754, -1, 753, 418, 755, -1, 753, - 418, 756, -1, 754, 418, 755, -1, 754, 418, 756, - -1, 755, 418, 756, -1, -1, 762, -1, 760, 11, - 730, -1, 760, 75, 846, -1, 760, 43, 416, 484, - 760, -1, 492, 760, -1, 493, 760, -1, 760, 492, - 760, -1, 760, 493, 760, -1, 760, 494, 760, -1, - 760, 495, 760, -1, 760, 496, 760, -1, 760, 497, - 760, -1, 760, 15, 760, -1, 760, 488, 760, -1, - 760, 489, 760, -1, 760, 490, 760, -1, 760, 18, - 760, -1, 760, 19, 760, -1, 760, 20, 760, -1, - 760, 790, 760, -1, 790, 760, -1, 760, 790, -1, - 760, 35, 760, -1, 760, 292, 760, -1, 272, 760, - -1, 485, 760, -1, 760, 176, 760, -1, 760, 234, - 760, -1, 760, 234, 760, 145, 760, -1, 760, 485, - 234, 760, -1, 760, 485, 234, 760, 145, 760, -1, - 760, 192, 760, -1, 760, 192, 760, 145, 760, -1, - 760, 485, 192, 760, -1, 760, 485, 192, 760, 145, - 760, -1, 760, 382, 418, 760, -1, 760, 382, 418, - 760, 145, 760, -1, 760, 485, 382, 418, 760, -1, - 760, 485, 382, 418, 760, 145, 760, -1, 760, 219, - 277, -1, 760, 220, -1, 760, 219, 272, 277, -1, - 760, 272, 277, -1, 760, 275, -1, 760, 16, 760, - -1, 760, 17, 760, -1, 783, 298, 783, -1, 760, - 219, 425, -1, 760, 219, 272, 425, -1, 760, 219, - 159, -1, 760, 219, 272, 159, -1, 760, 219, 436, - -1, 760, 219, 272, 436, -1, 760, 219, 132, 171, - 760, -1, 760, 219, 272, 132, 171, 760, -1, 760, - 219, 282, 501, 799, 502, -1, 760, 219, 272, 282, - 501, 799, 502, -1, 760, 50, 820, 761, 35, 760, - -1, 760, 485, 50, 820, 761, 35, 760, -1, 760, - 50, 404, 761, 35, 760, -1, 760, 485, 50, 404, - 761, 35, 760, -1, 760, 197, 809, -1, 760, 485, - 197, 809, -1, 760, 792, 787, 647, -1, 760, 792, - 787, 501, 760, 502, -1, 117, -1, 78, 501, 494, - 826, 830, 502, -1, 78, 501, 840, 502, -1, 762, - -1, 761, 11, 730, -1, 492, 761, -1, 493, 761, - -1, 761, 492, 761, -1, 761, 493, 761, -1, 761, - 494, 761, -1, 761, 495, 761, -1, 761, 496, 761, - -1, 761, 497, 761, -1, 761, 15, 761, -1, 761, - 488, 761, -1, 761, 489, 761, -1, 761, 490, 761, - -1, 761, 18, 761, -1, 761, 19, 761, -1, 761, - 20, 761, -1, 761, 790, 761, -1, 790, 761, -1, - 761, 790, -1, 761, 219, 132, 171, 761, -1, 761, - 219, 272, 132, 171, 761, -1, 761, 219, 282, 501, - 799, 502, -1, 761, 219, 272, 282, 501, 799, 502, - -1, 815, -1, 838, -1, 506, 9, -1, 763, 819, - -1, 507, 852, -1, 783, -1, 499, 796, 500, -1, - 768, -1, 37, 647, -1, 37, 499, 796, 500, -1, - 810, -1, 647, -1, 647, 818, -1, 152, 647, -1, - 694, 501, 795, 502, -1, 508, -1, 10, -1, 501, - 760, 502, -1, 509, 786, 510, -1, 765, -1, 837, - 501, 502, -1, 837, 501, 797, 663, 662, 502, -1, - 837, 501, 451, 798, 663, 662, 502, -1, 837, 501, - 797, 505, 451, 798, 663, 662, 502, -1, 837, 501, - 29, 797, 663, 662, 502, -1, 837, 501, 132, 797, - 663, 662, 502, -1, 837, 501, 494, 502, -1, 764, - 769, 770, 771, 775, -1, 767, -1, 764, -1, 767, - -1, 76, 166, 501, 760, 502, -1, 101, -1, 104, - -1, 104, 501, 839, 502, -1, 105, -1, 105, 501, - 839, 502, -1, 239, -1, 239, 501, 839, 502, -1, - 240, -1, 240, 501, 839, 502, -1, 102, -1, 106, - -1, 376, -1, 442, -1, 100, -1, 103, -1, 63, - 501, 760, 38, 730, 502, -1, 428, 501, 760, 38, - 730, 502, -1, 158, 501, 800, 502, -1, 299, 501, - 802, 502, -1, 313, 501, 804, 502, -1, 402, 501, - 805, 502, -1, 422, 501, 760, 38, 730, 502, -1, - 424, 501, 55, 808, 502, -1, 424, 501, 230, 808, - 502, -1, 424, 501, 419, 808, 502, -1, 424, 501, - 808, 502, -1, 278, 501, 760, 505, 760, 502, -1, - 74, 501, 795, 502, -1, 499, 760, 166, 841, 197, - 760, 500, -1, 499, 760, 166, 841, 197, 762, 190, - 760, 500, -1, 464, 180, 501, 664, 502, -1, -1, - 162, 501, 460, 760, 502, -1, 162, 501, 760, 502, - -1, -1, 155, -1, -1, 462, 773, -1, -1, 774, - -1, 773, 505, 774, -1, 841, 38, 776, -1, 297, - 776, -1, 297, 841, -1, -1, 501, 777, 778, 663, - 779, 502, -1, 841, -1, -1, 306, 56, 794, -1, - -1, 330, 780, -1, 359, 780, -1, -1, 781, -1, - 50, 781, 35, 781, -1, 431, 316, -1, 431, 165, - -1, 99, 358, -1, 760, 316, -1, 760, 165, -1, - 358, 501, 795, 502, -1, 358, 501, 502, -1, 782, - -1, 501, 794, 505, 760, 502, -1, 842, 511, 760, - -1, 784, -1, 785, 505, 784, -1, 785, -1, 785, - 505, -1, 36, -1, 387, -1, 29, -1, 8, -1, - 789, -1, 492, -1, 493, -1, 494, -1, 495, -1, - 496, -1, 497, -1, 15, -1, 488, -1, 489, -1, - 490, -1, 18, -1, 19, -1, 20, -1, 8, -1, - 289, 501, 793, 502, -1, 788, -1, 289, 501, 793, - 502, -1, 788, -1, 289, 501, 793, 502, -1, 234, - -1, 485, 234, -1, 176, -1, 485, 176, -1, 192, - -1, 485, 192, -1, 788, -1, 841, 503, 793, -1, - 760, -1, 794, 505, 760, -1, 794, -1, 794, 505, - -1, 795, -1, -1, 798, -1, 797, 505, 798, -1, - 760, -1, 849, 13, 760, -1, 849, 14, 760, -1, - 730, -1, 799, 505, 730, -1, 801, 171, 760, -1, - -1, 3, -1, 751, -1, 752, -1, 753, -1, 754, - -1, 755, -1, 756, -1, 757, -1, 758, -1, 840, - -1, 760, 803, 806, 807, -1, 760, 803, 806, -1, - 310, 760, -1, 761, 197, 761, -1, -1, 760, 806, - 807, -1, 760, 807, 806, -1, 760, 806, -1, 760, - 807, -1, 794, -1, -1, 171, 760, -1, 166, 760, - -1, 760, 171, 795, -1, 171, 795, -1, 795, -1, - 647, -1, 501, 795, 502, -1, 62, 814, 811, 813, - 143, -1, 812, -1, 811, 812, -1, 459, 760, 415, - 760, -1, 139, 760, -1, -1, 760, -1, -1, 841, - -1, 841, 818, -1, 503, 836, -1, 499, 760, 500, - -1, 499, 817, 511, 817, 500, -1, 760, -1, -1, - 816, -1, 818, 816, -1, -1, 819, 816, -1, 42, - -1, -1, 823, -1, -1, 824, -1, 822, 505, 824, - -1, 822, -1, 822, 505, -1, 760, 38, 851, -1, - 760, 3, -1, 760, -1, 494, 826, 830, -1, 841, - 503, 494, 826, 830, -1, 148, 501, 834, 502, -1, - 148, 841, -1, 825, -1, -1, 760, 38, 841, -1, - 827, -1, 828, 505, 827, -1, 828, -1, 828, 505, - -1, 345, 501, 829, 502, -1, 345, 827, -1, -1, - 832, -1, 831, 505, 832, -1, 842, -1, 841, 818, - -1, 835, -1, 833, 505, 835, -1, 833, -1, 833, - 505, -1, 842, -1, 850, -1, 844, -1, 841, 818, - -1, 839, -1, 4, -1, 840, 819, -1, 6, -1, - 7, -1, 837, 840, -1, 837, 501, 797, 663, 662, - 502, 840, -1, 733, 840, -1, 749, 501, 760, 502, - 759, -1, 749, 839, 759, -1, 749, 840, 759, -1, - 425, -1, 159, -1, 277, -1, 9, -1, 5, -1, - 3, -1, 919, -1, 920, -1, 841, -1, 5, -1, - 3, -1, 919, -1, 924, -1, 3, -1, 919, -1, - 921, -1, 3, -1, 919, -1, 922, -1, 841, -1, - 841, 847, -1, 503, 836, -1, 847, 503, 836, -1, - 501, 834, 502, -1, -1, 843, -1, 3, -1, 923, - -1, 919, -1, 925, -1, 850, -1, 5, -1, 3, - -1, 318, 835, 854, 38, 855, -1, 501, 799, 502, - -1, -1, 646, -1, 530, -1, 628, -1, 895, -1, - 95, 363, 832, 857, -1, 95, 363, 190, 272, 152, - 832, 857, -1, 857, 858, -1, -1, 570, -1, 859, - -1, 556, -1, 914, -1, 95, 865, 200, 862, 863, - 287, 832, 861, 501, 548, 502, 864, 723, -1, 95, - 865, 200, 862, 190, 272, 152, 599, 287, 832, 861, - 501, 548, 502, 864, 723, -1, 841, -1, 443, 860, - -1, -1, 84, -1, -1, 599, -1, -1, 463, 585, - -1, -1, 435, -1, -1, 31, 407, 717, 377, 363, - 835, -1, 31, 407, 190, 152, 717, 377, 363, 835, - -1, 31, 371, 832, 377, 363, 835, -1, 31, 371, - 190, 152, 832, 377, 363, 835, -1, 31, 455, 832, - 377, 363, 835, -1, 31, 455, 190, 152, 832, 377, - 363, 835, -1, 167, 70, 868, -1, 70, 868, -1, - 841, -1, -1, 154, 110, 840, 636, -1, 154, 110, - 841, 418, 840, 636, -1, 196, 110, 840, -1, 153, - 874, -1, 153, 878, 872, 874, -1, 153, 453, 874, - -1, 153, 501, 877, 502, 874, -1, 453, -1, -1, - 879, -1, 563, -1, -1, 866, -1, 560, -1, 516, - -1, 913, -1, 867, -1, 629, -1, 916, -1, 625, - -1, 856, -1, 556, -1, 570, -1, 550, -1, 527, - -1, 895, -1, 618, -1, 558, -1, 859, -1, 530, - -1, 888, -1, 553, -1, 853, -1, 528, -1, 646, - -1, 567, -1, 628, -1, 890, -1, 906, -1, 882, - -1, 909, -1, 914, -1, 3, -1, 919, -1, 923, - -1, 875, -1, 840, -1, 880, -1, 877, 505, 880, - -1, 34, -1, 33, -1, 425, -1, 159, -1, 287, - -1, 876, -1, 881, 873, -1, 875, -1, 878, -1, - 377, 883, -1, 377, 238, 883, -1, 377, 375, 883, - -1, 377, 177, 883, -1, 884, -1, 911, 171, 99, - -1, 416, 484, 886, -1, 363, 840, -1, 911, 418, - 887, -1, 911, 490, 887, -1, 911, 418, 117, -1, - 911, 490, 117, -1, 879, -1, 563, -1, 840, -1, - 3, -1, 749, 840, 759, -1, 749, 501, 839, 502, - 840, -1, 563, -1, 117, -1, 238, -1, 885, -1, - 887, 505, 885, -1, 237, 889, -1, 211, 889, -1, - 167, 211, 889, -1, 840, -1, 841, -1, 444, 892, - 894, 872, -1, 444, 892, 894, 872, 832, -1, 444, - 892, 894, 872, 899, -1, 444, 501, 893, 502, -1, - 444, 501, 893, 502, 832, 848, -1, 878, -1, 453, - -1, 170, -1, 172, -1, 3, -1, 172, -1, -1, - 891, -1, 893, 505, 891, -1, 170, -1, -1, 534, - 122, 171, 896, 898, 897, 540, -1, 426, 657, 896, - -1, 717, -1, 717, 841, -1, 717, 38, 841, -1, - 460, 760, -1, -1, 443, 708, -1, -1, 878, 872, - -1, 878, 872, 832, 848, -1, 44, 902, 840, 903, - 636, -1, 128, 110, 621, -1, 128, 905, -1, 128, - 110, 190, 152, 621, -1, 110, -1, -1, 38, 841, - -1, -1, 3, -1, 904, -1, 905, 505, 904, -1, - 347, 908, -1, 911, -1, 29, -1, 907, -1, 416, - 484, -1, 420, 221, 233, -1, 910, 646, -1, 403, - 646, -1, 403, 912, -1, 910, 912, -1, 910, 416, - 484, -1, 910, 420, 221, 233, -1, 910, 29, -1, - 910, -1, 381, -1, 127, -1, 841, -1, 911, 503, - 841, -1, 841, -1, 912, 503, 841, -1, 58, 764, - -1, 95, 616, 455, 832, 605, 864, 38, 646, 915, - -1, 95, 616, 455, 190, 272, 152, 832, 605, 864, - 38, 646, 915, -1, 95, 292, 345, 616, 455, 832, - 605, 864, 38, 646, 915, -1, 95, 616, 335, 455, - 832, 501, 609, 502, 864, 38, 646, 915, -1, 95, - 292, 345, 616, 335, 455, 832, 501, 609, 502, 864, - 38, 646, 915, -1, 463, 69, 290, -1, 463, 61, - 69, 290, -1, 463, 238, 69, 290, -1, -1, 95, - 616, 407, 918, 38, 646, 917, -1, 95, 616, 407, - 190, 272, 152, 918, 38, 646, 917, -1, 95, 292, - 345, 616, 407, 918, 38, 646, 917, -1, 463, 109, - -1, 463, 270, 109, -1, -1, 832, 605, 592, 584, - -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, - -1, 26, -1, 27, -1, 28, -1, 30, -1, 31, - -1, 32, -1, 40, -1, 41, -1, 43, -1, 44, - -1, 45, -1, 47, -1, 48, -1, 49, -1, 56, - -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, - -1, 64, -1, 65, -1, 68, -1, 70, -1, 71, - -1, 72, -1, 73, -1, 79, -1, 80, -1, 81, - -1, 82, -1, 83, -1, 85, -1, 86, -1, 87, - -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, - -1, 94, -1, 97, -1, 98, -1, 99, -1, 107, - -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, - -1, 113, -1, 116, -1, 118, -1, 120, -1, 121, - -1, 122, -1, 123, -1, 124, -1, 125, -1, 127, - -1, 128, -1, 129, -1, 130, -1, 131, -1, 134, - -1, 135, -1, 136, -1, 137, -1, 138, -1, 140, - -1, 141, -1, 142, -1, 144, -1, 145, -1, 146, - -1, 148, -1, 149, -1, 150, -1, 151, -1, 153, - -1, 154, -1, 155, -1, 156, -1, 157, -1, 160, - -1, 162, -1, 163, -1, 165, -1, 167, -1, 169, - -1, 173, -1, 174, -1, 177, -1, 179, -1, 183, - -1, 185, -1, 186, -1, 187, -1, 188, -1, 189, - -1, 190, -1, 191, -1, 193, -1, 194, -1, 195, - -1, 196, -1, 198, -1, 199, -1, 200, -1, 201, - -1, 202, -1, 203, -1, 205, -1, 208, -1, 209, - -1, 210, -1, 211, -1, 212, -1, 218, -1, 221, - -1, 223, -1, 224, -1, 225, -1, 226, -1, 227, - -1, 228, -1, 231, -1, 233, -1, 236, -1, 237, - -1, 238, -1, 241, -1, 242, -1, 243, -1, 244, - -1, 245, -1, 247, -1, 248, -1, 249, -1, 250, - -1, 251, -1, 252, -1, 253, -1, 254, -1, 255, - -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, - -1, 261, -1, 262, -1, 263, -1, 264, -1, 268, - -1, 269, -1, 270, -1, 273, -1, 274, -1, 276, - -1, 279, -1, 281, -1, 282, -1, 283, -1, 285, - -1, 286, -1, 289, -1, 290, -1, 291, -1, 294, - -1, 297, -1, 300, -1, 301, -1, 302, -1, 303, - -1, 304, -1, 305, -1, 306, -1, 307, -1, 308, - -1, 309, -1, 311, -1, 312, -1, 315, -1, 316, - -1, 318, -1, 319, -1, 320, -1, 322, -1, 323, - -1, 324, -1, 325, -1, 326, -1, 327, -1, 329, - -1, 330, -1, 331, -1, 333, -1, 334, -1, 335, - -1, 336, -1, 338, -1, 339, -1, 340, -1, 341, - -1, 342, -1, 343, -1, 344, -1, 345, -1, 346, - -1, 347, -1, 348, -1, 349, -1, 350, -1, 352, - -1, 353, -1, 355, -1, 356, -1, 357, -1, 359, - -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, - -1, 365, -1, 366, -1, 367, -1, 368, -1, 369, - -1, 371, -1, 372, -1, 373, -1, 374, -1, 375, - -1, 377, -1, 379, -1, 380, -1, 381, -1, 383, - -1, 384, -1, 386, -1, 388, -1, 389, -1, 390, - -1, 391, -1, 392, -1, 393, -1, 394, -1, 395, - -1, 396, -1, 397, -1, 398, -1, 399, -1, 401, - -1, 403, -1, 405, -1, 406, -1, 408, -1, 410, - -1, 411, -1, 412, -1, 413, -1, 414, -1, 420, - -1, 421, -1, 423, -1, 426, -1, 427, -1, 429, - -1, 430, -1, 431, -1, 432, -1, 433, -1, 436, - -1, 437, -1, 438, -1, 439, -1, 440, -1, 441, - -1, 444, -1, 445, -1, 446, -1, 447, -1, 448, - -1, 452, -1, 454, -1, 455, -1, 456, -1, 457, - -1, 458, -1, 461, -1, 464, -1, 465, -1, 466, - -1, 467, -1, 468, -1, 469, -1, 481, -1, 482, - -1, 483, -1, 484, -1, 50, -1, 51, -1, 53, - -1, 54, -1, 66, -1, 67, -1, 74, -1, 78, - -1, 114, -1, 115, -1, 152, -1, 158, -1, 164, - -1, 175, -1, 181, -1, 182, -1, 207, -1, 213, - -1, 214, -1, 216, -1, 246, -1, 265, -1, 267, - -1, 271, -1, 278, -1, 280, -1, 295, -1, 299, - -1, 313, -1, 317, -1, 332, -1, 358, -1, 378, - -1, 385, -1, 400, -1, 402, -1, 416, -1, 417, - -1, 422, -1, 424, -1, 428, -1, 449, -1, 450, - -1, 470, -1, 471, -1, 472, -1, 473, -1, 474, - -1, 475, -1, 476, -1, 477, -1, 478, -1, 479, - -1, 480, -1, 46, -1, 52, -1, 76, -1, 84, - -1, 96, -1, 100, -1, 101, -1, 102, -1, 103, - -1, 106, -1, 170, -1, 172, -1, 175, -1, 176, - -1, 192, -1, 206, -1, 219, -1, 220, -1, 222, - -1, 232, -1, 234, -1, 246, -1, 266, -1, 275, - -1, 296, -1, 298, -1, 314, -1, 354, -1, 376, - -1, 382, -1, 400, -1, 409, -1, 442, -1, 453, - -1, 46, -1, 52, -1, 76, -1, 78, -1, 84, - -1, 96, -1, 100, -1, 101, -1, 102, -1, 103, - -1, 106, -1, 170, -1, 172, -1, 176, -1, 192, - -1, 206, -1, 219, -1, 220, -1, 222, -1, 232, - -1, 234, -1, 266, -1, 275, -1, 296, -1, 298, - -1, 314, -1, 354, -1, 376, -1, 382, -1, 409, - -1, 428, -1, 442, -1, 453, -1, 46, -1, 50, - -1, 51, -1, 52, -1, 53, -1, 54, -1, 67, - -1, 66, -1, 74, -1, 76, -1, 78, -1, 84, - -1, 96, -1, 100, -1, 101, -1, 102, -1, 103, - -1, 106, -1, 114, -1, 115, -1, 152, -1, 158, - -1, 164, -1, 170, -1, 172, -1, 175, -1, 176, - -1, 181, -1, 182, -1, 192, -1, 206, -1, 207, - -1, 214, -1, 216, -1, 213, -1, 219, -1, 220, - -1, 222, -1, 232, -1, 234, -1, 246, -1, 265, - -1, 266, -1, 267, -1, 271, -1, 275, -1, 278, - -1, 280, -1, 296, -1, 295, -1, 298, -1, 299, - -1, 313, -1, 314, -1, 317, -1, 332, -1, 354, - -1, 358, -1, 376, -1, 378, -1, 382, -1, 385, - -1, 400, -1, 402, -1, 409, -1, 416, -1, 417, - -1, 422, -1, 424, -1, 428, -1, 442, -1, 449, - -1, 450, -1, 453, -1, 470, -1, 471, -1, 472, - -1, 473, -1, 474, -1, 475, -1, 476, -1, 477, - -1, 478, -1, 479, -1, 480, -1, 46, -1, 52, - -1, 76, -1, 78, -1, 84, -1, 96, -1, 100, - -1, 101, -1, 102, -1, 103, -1, 106, -1, 170, - -1, 172, -1, 175, -1, 176, -1, 192, -1, 206, - -1, 219, -1, 220, -1, 222, -1, 232, -1, 234, - -1, 246, -1, 266, -1, 275, -1, 296, -1, 298, - -1, 314, -1, 354, -1, 376, -1, 382, -1, 400, - -1, 409, -1, 428, -1, 442, -1, 453, -1, 29, - -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, - -1, 38, -1, 39, -1, 42, -1, 55, -1, 62, - -1, 63, -1, 69, -1, 75, -1, 77, -1, 88, - -1, 95, -1, 104, -1, 105, -1, 117, -1, 119, - -1, 126, -1, 132, -1, 133, -1, 139, -1, 143, - -1, 147, -1, 159, -1, 161, -1, 166, -1, 168, - -1, 171, -1, 178, -1, 180, -1, 184, -1, 197, - -1, 204, -1, 215, -1, 217, -1, 229, -1, 230, - -1, 235, -1, 239, -1, 240, -1, 272, -1, 277, - -1, 284, -1, 287, -1, 288, -1, 292, -1, 293, - -1, 310, -1, 321, -1, 328, -1, 337, -1, 351, - -1, 370, -1, 387, -1, 404, -1, 407, -1, 415, - -1, 418, -1, 419, -1, 425, -1, 434, -1, 435, - -1, 443, -1, 451, -1, 459, -1, 460, -1, 462, - -1, 463, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = { 0, 483, 483, 499, 511, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 559, 9, 18, 27, 36, 45, 54, - 63, 72, 85, 87, 93, 94, 99, 103, 107, 118, - 126, 130, 139, 148, 157, 166, 175, 184, 192, 200, - 209, 218, 227, 236, 253, 262, 271, 280, 290, 303, - 318, 327, 335, 350, 358, 368, 378, 385, 392, 400, - 407, 418, 419, 424, 428, 433, 438, 446, 447, 452, - 456, 457, 458, 7, 13, 19, 25, 6, 15, 25, - 35, 45, 55, 65, 75, 85, 95, 106, 117, 127, - 140, 141, 9, 23, 29, 36, 42, 49, 59, 63, - 72, 81, 90, 97, 98, 103, 115, 120, 145, 150, - 155, 161, 171, 181, 187, 198, 209, 224, 225, 231, - 232, 237, 238, 244, 245, 249, 250, 255, 257, 263, - 264, 268, 269, 272, 273, 278, 7, 16, 25, 46, - 47, 50, 54, 7, 14, 22, 9, 15, 22, 28, - 34, 41, 48, 59, 9, 19, 32, 33, 7, 14, - 31, 51, 52, 9, 17, 29, 30, 34, 35, 36, - 41, 42, 43, 48, 52, 56, 60, 64, 68, 72, - 76, 80, 84, 88, 92, 97, 101, 105, 112, 113, - 117, 118, 119, 2, 9, 15, 21, 28, 35, 45, - 46, 47, 2, 7, 21, 36, 56, 57, 84, 85, - 86, 87, 88, 89, 93, 94, 99, 104, 105, 106, - 107, 108, 113, 120, 121, 122, 139, 146, 153, 163, - 173, 185, 193, 202, 220, 221, 225, 226, 230, 239, - 262, 276, 283, 288, 290, 292, 294, 297, 300, 301, - 302, 303, 308, 312, 313, 318, 325, 330, 331, 332, - 333, 334, 335, 336, 337, 343, 344, 348, 353, 360, - 367, 374, 386, 387, 388, 389, 393, 398, 399, 400, - 405, 410, 411, 412, 413, 414, 415, 420, 440, 469, - 470, 474, 478, 479, 480, 484, 488, 496, 497, 502, - 503, 504, 508, 516, 517, 522, 523, 527, 532, 536, - 540, 545, 553, 554, 558, 559, 563, 564, 570, 581, - 594, 608, 622, 636, 650, 673, 677, 684, 688, 696, - 701, 708, 718, 719, 720, 721, 722, 729, 736, 737, - 742, 743, 9, 19, 29, 39, 49, 59, 69, 79, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 115, 116, - 117, 118, 119, 120, 125, 126, 131, 132, 133, 138, - 139, 140, 143, 144, 8, 20, 33, 46, 58, 70, - 86, 87, 91, 95, 7, 1, 30, 53, 54, 59, - 63, 68, 72, 80, 81, 85, 86, 91, 92, 96, - 97, 102, 103, 104, 105, 106, 111, 119, 123, 128, - 129, 134, 138, 143, 147, 151, 155, 159, 163, 167, - 171, 175, 179, 183, 187, 191, 195, 199, 203, 211, - 217, 218, 219, 224, 228, 47, 48, 52, 53, 68, - 69, 76, 84, 92, 100, 108, 116, 127, 128, 155, - 160, 168, 184, 201, 218, 235, 236, 255, 259, 263, - 267, 284, 291, 298, 308, 309, 312, 324, 335, 343, - 348, 353, 358, 363, 371, 379, 384, 389, 396, 397, - 401, 402, 403, 407, 414, 415, 419, 420, 424, 425, - 426, 430, 431, 435, 436, 446, 459, 460, 463, 472, - 483, 484, 485, 488, 489, 490, 494, 495, 496, 497, - 501, 502, 506, 508, 524, 526, 531, 534, 542, 546, - 550, 554, 558, 562, 569, 574, 581, 582, 586, 591, - 595, 599, 607, 614, 615, 620, 621, 625, 626, 631, - 633, 635, 640, 660, 661, 663, 668, 669, 673, 674, - 677, 678, 703, 704, 709, 714, 718, 719, 723, 724, - 728, 729, 730, 731, 732, 736, 749, 756, 763, 770, - 771, 775, 776, 780, 781, 785, 786, 790, 791, 795, - 796, 800, 811, 812, 813, 814, 818, 819, 824, 825, - 826, 835, 841, 850, 851, 864, 865, 869, 870, 874, - 875, 881, 887, 895, 904, 912, 921, 930, 934, 961, - 965, 978, 992, 1007, 1019, 1032, 1048, 1054, 1059, 1065, - 1072, 1073, 1081, 1085, 1089, 1095, 1102, 1107, 1108, 1109, - 1110, 1114, 1115, 1127, 1128, 1133, 1140, 1147, 1154, 1186, - 1197, 1210, 1215, 1216, 1219, 1220, 1223, 1224, 1229, 1230, - 1235, 1239, 1245, 1266, 1274, 1287, 1290, 1294, 1294, 1297, - 1298, 1300, 1305, 1312, 1317, 1323, 1328, 1334, 1340, 1346, - 1355, 1357, 1360, 1364, 1365, 1366, 1367, 1368, 1369, 1374, - 1394, 1395, 1396, 1397, 1408, 1422, 1423, 1429, 1434, 1439, - 1444, 1449, 1454, 1459, 1464, 1470, 1476, 1482, 1489, 1511, - 1520, 1524, 1532, 1536, 1544, 1556, 1577, 1581, 1587, 1591, - 1604, 1612, 1622, 1624, 1626, 1628, 1630, 1632, 1637, 1638, - 1645, 1654, 1662, 1671, 1682, 1690, 1691, 1692, 1696, 1696, - 1699, 1699, 1702, 1702, 1705, 1705, 1708, 1708, 1711, 1711, - 1714, 1714, 1717, 1717, 1720, 1722, 1724, 1726, 1728, 1730, - 1732, 1734, 1736, 1741, 1746, 1752, 1759, 1764, 1770, 1776, - 1807, 1809, 1811, 1819, 1834, 1836, 1838, 1840, 1842, 1844, - 1846, 1848, 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1865, - 1867, 1869, 1872, 1874, 1876, 1878, 1880, 1885, 1890, 1897, - 1902, 1909, 1914, 1921, 1926, 1934, 1942, 1950, 1958, 1976, - 1984, 1992, 2000, 2008, 2016, 2024, 2028, 2044, 2052, 2060, - 2068, 2076, 2084, 2092, 2096, 2100, 2104, 2108, 2116, 2124, - 2132, 2140, 2160, 2182, 2193, 2200, 2214, 2223, 2242, 2244, - 2246, 2248, 2250, 2252, 2254, 2256, 2258, 2260, 2262, 2264, - 2266, 2268, 2270, 2272, 2274, 2276, 2278, 2280, 2282, 2286, - 2290, 2294, 2308, 2309, 2310, 2317, 2329, 2333, 2337, 2341, - 2344, 2355, 2360, 2362, 2373, 2397, 2408, 2419, 2423, 2430, - 2434, 2439, 2444, 2448, 2455, 2463, 2471, 2482, 2490, 2518, - 2554, 2565, 2566, 2573, 2579, 2583, 2587, 2591, 2595, 2599, - 2603, 2607, 2611, 2615, 2619, 2623, 2627, 2631, 2635, 2639, - 2641, 2643, 2647, 2656, 2661, 2668, 2683, 2690, 2694, 2698, - 2702, 2706, 2716, 2725, 2747, 2748, 2752, 2753, 2754, 2758, - 2759, 2766, 2767, 2771, 2772, 2777, 2785, 2787, 2801, 2804, - 2831, 2832, 2835, 2836, 2847, 2853, 2860, 2869, 2886, 2931, - 2939, 2947, 2955, 2963, 2984, 2985, 2988, 2989, 2993, 3003, - 3004, 3008, 3009, 3013, 3014, 3015, 3018, 3019, 3022, 3023, - 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, - 3034, 3037, 3039, 3044, 3046, 3051, 3053, 3055, 3057, 3059, - 3061, 3063, 3065, 3079, 3081, 3085, 3089, 3096, 3101, 3108, - 3113, 3121, 3125, 3131, 3135, 3144, 3155, 3156, 3160, 3164, - 3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, - 3190, 3194, 3201, 3208, 3209, 3225, 3229, 3234, 3238, 3253, - 3258, 3262, 3265, 3268, 3269, 3270, 3273, 3280, 3290, 3304, - 3305, 3309, 3320, 3321, 3324, 3325, 3328, 3332, 3339, 3343, - 3351, 3362, 3363, 3367, 3368, 3372, 3373, 3376, 3377, 3387, - 3388, 3392, 3393, 3397, 3398, 3401, 3417, 3425, 3433, 3448, - 3466, 3467, 3470, 3471, 3474, 3478, 3479, 3483, 3484, 3487, - 3488, 3489, 3499, 3500, 3511, 3515, 3543, 3545, 3551, 3552, - 3555, 3557, 3567, 3570, 3581, 3585, 3589, 3601, 3605, 3614, - 3621, 3659, 3663, 3667, 3671, 3675, 3679, 3683, 3689, 3690, - 3706, 3707, 3708, 3711, 3712, 3718, 3719, 3720, 3723, 3724, - 3725, 3728, 3729, 3730, 3733, 3734, 3737, 3739, 3744, 3745, - 3748, 3756, 3757, 3758, 3759, 3762, 3763, 3766, 7, 18, - 19, 23, 24, 25, 26, 7, 26, 54, 61, 66, - 67, 68, 69, 8, 33, 62, 66, 67, 72, 73, - 78, 79, 83, 84, 89, 90, 7, 16, 25, 34, - 43, 52, 5, 12, 22, 23, 7, 19, 33, 9, - 16, 26, 33, 44, 45, 50, 51, 52, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 90, 91, - 92, 97, 98, 103, 107, 115, 116, 121, 122, 123, - 129, 134, 142, 143, 10, 16, 22, 28, 38, 39, - 47, 58, 70, 78, 86, 93, 103, 105, 111, 115, - 119, 134, 141, 142, 143, 147, 148, 7, 14, 20, - 28, 29, 8, 22, 36, 48, 56, 70, 71, 72, - 73, 74, 87, 88, 93, 94, 98, 99, 7, 18, - 31, 35, 42, 53, 54, 60, 61, 9, 19, 7, - 18, 28, 38, 50, 51, 55, 56, 59, 62, 63, - 2, 7, 15, 26, 27, 34, 3, 10, 17, 24, - 31, 38, 45, 52, 61, 61, 63, 64, 68, 69, - 6, 8, 21, 34, 47, 65, 87, 88, 89, 90, - 11, 24, 37, 54, 55, 56, 61, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE + 555, 556, 557, 559, 1, 30, 53, 54, 59, 63, + 68, 72, 80, 81, 85, 86, 91, 92, 96, 97, + 102, 103, 104, 105, 106, 111, 119, 123, 128, 129, + 134, 138, 143, 147, 151, 155, 159, 163, 167, 171, + 175, 179, 183, 187, 191, 195, 199, 203, 211, 217, + 218, 219, 224, 228, 2, 7, 15, 26, 27, 34, + 6, 47, 48, 52, 53, 68, 69, 76, 84, 92, + 100, 108, 116, 127, 128, 155, 160, 168, 184, 201, + 218, 235, 236, 255, 259, 263, 267, 284, 291, 298, + 308, 309, 312, 324, 335, 343, 348, 353, 358, 363, + 371, 379, 384, 389, 396, 397, 401, 402, 403, 407, + 414, 415, 419, 420, 424, 425, 426, 430, 431, 435, + 436, 446, 459, 460, 463, 472, 483, 484, 485, 488, + 489, 490, 494, 495, 496, 497, 501, 502, 506, 508, + 524, 526, 531, 534, 542, 546, 550, 554, 558, 562, + 569, 574, 581, 582, 586, 591, 595, 599, 607, 614, + 615, 620, 621, 625, 626, 631, 633, 635, 640, 660, + 661, 663, 668, 669, 673, 674, 677, 678, 703, 704, + 709, 714, 718, 719, 723, 724, 728, 729, 730, 731, + 732, 736, 749, 756, 763, 770, 771, 775, 776, 780, + 781, 785, 786, 790, 791, 795, 796, 800, 811, 812, + 813, 814, 818, 819, 824, 825, 826, 835, 841, 850, + 851, 864, 865, 869, 870, 874, 875, 881, 887, 895, + 904, 912, 921, 930, 934, 961, 965, 978, 992, 1007, + 1019, 1032, 1048, 1054, 1059, 1065, 1072, 1073, 1081, 1085, + 1089, 1095, 1102, 1107, 1108, 1109, 1110, 1114, 1115, 1127, + 1128, 1133, 1140, 1147, 1154, 1186, 1197, 1210, 1215, 1216, + 1219, 1220, 1223, 1224, 1229, 1230, 1235, 1239, 1245, 1266, + 1274, 1287, 1290, 1294, 1294, 1297, 1298, 1300, 1305, 1312, + 1317, 1323, 1328, 1334, 1340, 1346, 1355, 1357, 1360, 1364, + 1365, 1366, 1367, 1368, 1369, 1374, 1394, 1395, 1396, 1397, + 1408, 1422, 1423, 1429, 1434, 1439, 1444, 1449, 1454, 1459, + 1464, 1470, 1476, 1482, 1489, 1511, 1520, 1524, 1532, 1536, + 1544, 1556, 1577, 1581, 1587, 1591, 1604, 1612, 1622, 1624, + 1626, 1628, 1630, 1632, 1637, 1638, 1645, 1654, 1662, 1671, + 1682, 1690, 1691, 1692, 1696, 1696, 1699, 1699, 1702, 1702, + 1705, 1705, 1708, 1708, 1711, 1711, 1714, 1714, 1717, 1717, + 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736, 1741, + 1746, 1752, 1759, 1764, 1770, 1776, 1807, 1809, 1811, 1819, + 1834, 1836, 1838, 1840, 1842, 1844, 1846, 1848, 1850, 1852, + 1854, 1856, 1858, 1860, 1862, 1865, 1867, 1869, 1872, 1874, + 1876, 1878, 1880, 1885, 1890, 1897, 1902, 1909, 1914, 1921, + 1926, 1934, 1942, 1950, 1958, 1976, 1984, 1992, 2000, 2008, + 2016, 2024, 2028, 2044, 2052, 2060, 2068, 2076, 2084, 2092, + 2096, 2100, 2104, 2108, 2116, 2124, 2132, 2140, 2160, 2182, + 2193, 2200, 2214, 2223, 2242, 2244, 2246, 2248, 2250, 2252, + 2254, 2256, 2258, 2260, 2262, 2264, 2266, 2268, 2270, 2272, + 2274, 2276, 2278, 2280, 2282, 2286, 2290, 2294, 2308, 2309, + 2310, 2317, 2329, 2333, 2337, 2341, 2344, 2355, 2360, 2362, + 2373, 2397, 2408, 2419, 2423, 2430, 2434, 2439, 2444, 2448, + 2455, 2463, 2471, 2482, 2490, 2518, 2554, 2565, 2566, 2573, + 2579, 2583, 2587, 2591, 2595, 2599, 2603, 2607, 2611, 2615, + 2619, 2623, 2627, 2631, 2635, 2639, 2641, 2643, 2647, 2656, + 2661, 2668, 2683, 2690, 2694, 2698, 2702, 2706, 2716, 2725, + 2747, 2748, 2752, 2753, 2754, 2758, 2759, 2766, 2767, 2771, + 2772, 2777, 2785, 2787, 2801, 2804, 2831, 2832, 2835, 2836, + 2847, 2853, 2860, 2869, 2886, 2931, 2939, 2947, 2955, 2963, + 2984, 2985, 2988, 2989, 2993, 3003, 3004, 3008, 3009, 3013, + 3014, 3015, 3018, 3019, 3022, 3023, 3024, 3025, 3026, 3027, + 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3037, 3039, 3044, + 3046, 3051, 3053, 3055, 3057, 3059, 3061, 3063, 3065, 3079, + 3081, 3085, 3089, 3096, 3101, 3108, 3113, 3121, 3125, 3131, + 3135, 3144, 3155, 3156, 3160, 3164, 3171, 3172, 3173, 3174, + 3175, 3176, 3177, 3178, 3179, 3180, 3190, 3194, 3201, 3208, + 3209, 3225, 3229, 3234, 3238, 3253, 3258, 3262, 3265, 3268, + 3269, 3270, 3273, 3280, 3290, 3304, 3305, 3309, 3320, 3321, + 3324, 3325, 3328, 3332, 3339, 3343, 3351, 3362, 3363, 3367, + 3368, 3372, 3373, 3376, 3377, 3387, 3388, 3392, 3393, 3397, + 3398, 3401, 3417, 3425, 3433, 3448, 3466, 3467, 3470, 3471, + 3474, 3478, 3479, 3483, 3484, 3487, 3488, 3489, 3499, 3500, + 3511, 3515, 3543, 3545, 3551, 3552, 3555, 3557, 3567, 3570, + 3581, 3585, 3589, 3601, 3605, 3614, 3621, 3659, 3663, 3667, + 3671, 3675, 3679, 3683, 3689, 3690, 3706, 3707, 3708, 3711, + 3712, 3718, 3719, 3720, 3723, 3724, 3725, 3728, 3729, 3730, + 3733, 3734, 3737, 3739, 3744, 3745, 3748, 3756, 3757, 3758, + 3759, 3762, 3763, 3766, 7, 14, 22, 11, 24, 37, + 54, 55, 56, 61, 3, 10, 17, 24, 31, 38, + 45, 52, 61, 61, 63, 64, 68, 69, 9, 17, + 29, 30, 34, 35, 36, 41, 42, 43, 48, 52, + 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, + 97, 101, 105, 112, 113, 117, 118, 119, 7, 13, + 19, 25, 7, 21, 36, 56, 57, 84, 85, 86, + 87, 88, 89, 93, 94, 99, 104, 105, 106, 107, + 108, 113, 120, 121, 122, 139, 146, 153, 163, 173, + 185, 193, 202, 220, 221, 225, 226, 230, 239, 262, + 276, 283, 288, 290, 292, 294, 297, 300, 301, 302, + 303, 308, 312, 313, 318, 325, 330, 331, 332, 333, + 334, 335, 336, 337, 343, 344, 348, 353, 360, 367, + 374, 386, 387, 388, 389, 393, 398, 399, 400, 405, + 410, 411, 412, 413, 414, 415, 420, 440, 469, 470, + 474, 478, 479, 480, 484, 488, 496, 497, 502, 503, + 504, 508, 516, 517, 522, 523, 527, 532, 536, 540, + 545, 553, 554, 558, 559, 563, 564, 570, 581, 594, + 608, 622, 636, 650, 673, 677, 684, 688, 696, 701, + 708, 718, 719, 720, 721, 722, 729, 736, 737, 742, + 743, 7, 18, 25, 34, 35, 39, 40, 7, 14, + 31, 51, 52, 7, 26, 54, 61, 66, 67, 68, + 69, 9, 16, 26, 33, 44, 45, 50, 51, 52, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 90, 91, 92, 97, 98, 103, 107, 115, 116, 121, + 122, 123, 129, 134, 142, 143, 9, 19, 29, 39, + 49, 59, 69, 79, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 115, 116, 117, 118, 119, 120, 125, 126, + 131, 132, 133, 138, 139, 140, 143, 144, 7, 16, + 25, 46, 47, 50, 54, 9, 15, 22, 28, 34, + 41, 48, 59, 9, 18, 27, 36, 45, 54, 63, + 72, 85, 87, 93, 94, 99, 103, 107, 118, 126, + 130, 139, 148, 157, 166, 175, 184, 192, 200, 209, + 218, 227, 236, 253, 262, 271, 280, 290, 303, 318, + 327, 335, 350, 358, 368, 378, 385, 392, 400, 407, + 418, 419, 424, 428, 433, 438, 446, 447, 452, 456, + 457, 458, 2, 9, 15, 21, 28, 35, 45, 46, + 47, 6, 15, 25, 35, 45, 55, 65, 75, 85, + 95, 106, 117, 127, 140, 141, 7, 18, 19, 23, + 24, 25, 26, 8, 22, 36, 48, 56, 70, 71, + 72, 73, 74, 87, 88, 93, 94, 98, 99, 8, + 33, 62, 66, 67, 72, 73, 78, 79, 83, 84, + 89, 90, 7, 19, 33, 7, 18, 31, 35, 42, + 53, 54, 60, 61, 8, 21, 34, 47, 65, 87, + 88, 89, 90, 10, 16, 22, 28, 38, 39, 47, + 58, 70, 78, 86, 93, 103, 105, 111, 115, 119, + 134, 141, 142, 143, 147, 148, 5, 12, 22, 23, + 7, 14, 20, 28, 29, 9, 19, 32, 33, 8, + 20, 33, 46, 58, 70, 86, 87, 91, 95, 2, + 7, 16, 25, 34, 43, 52, 7, 9, 23, 29, + 36, 42, 49, 59, 63, 72, 81, 90, 97, 98, + 103, 115, 120, 145, 150, 155, 161, 171, 181, 187, + 198, 209, 224, 225, 231, 232, 237, 238, 244, 245, + 249, 250, 255, 257, 263, 264, 268, 269, 272, 273, + 278, 9, 19, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -310174,43 +309587,13 @@ static const char *const yytname[] = "'>'", "'='", "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'#'", "'$'", "'?'", "'{'", "'}'", "':'", "$accept", "stmtblock", "stmtmulti", "stmt", - "AlterTableStmt", "alter_identity_column_option_list", - "alter_column_default", "alter_identity_column_option", - "alter_generic_option_list", "alter_table_cmd", "alter_using", - "alter_generic_option_elem", "alter_table_cmds", "alter_generic_options", - "opt_set_data", "DeallocateStmt", "RenameStmt", "opt_column", - "InsertStmt", "insert_rest", "insert_target", "opt_conf_expr", - "opt_with_clause", "insert_column_item", "set_clause", "opt_or_action", - "opt_on_conflict", "index_elem", "returning_clause", "override_kind", - "set_target_list", "opt_collate", "opt_class", "insert_column_list", - "set_clause_list", "set_clause_list_opt_comma", "index_params", - "set_target", "CreateTypeStmt", "opt_enum_val_list", "enum_val_list", - "PragmaStmt", "CreateDatabaseStmt", "opt_extension_name", - "CreateSeqStmt", "OptSeqOptList", "ExecuteStmt", "execute_param_clause", - "AlterSeqStmt", "SeqOptList", "opt_with", "NumericOnly", "SeqOptElem", - "opt_by", "SignedIconst", "TransactionStmt", "opt_transaction", - "UseStmt", "CreateStmt", "ConstraintAttributeSpec", "def_arg", - "OptParenthesizedSeqOptList", "generic_option_arg", "key_action", - "ColConstraint", "ColConstraintElem", "GeneratedColumnType", - "opt_GeneratedColumnType", "GeneratedConstraintElem", - "generic_option_elem", "key_update", "key_actions", "OnCommitOption", - "reloptions", "opt_no_inherit", "TableConstraint", "TableLikeOption", - "reloption_list", "ExistingIndex", "ConstraintAttr", "OptWith", - "definition", "TableLikeOptionList", "generic_option_name", - "ConstraintAttributeElem", "columnDef", "def_list", "index_name", - "TableElement", "def_elem", "opt_definition", "OptTableElementList", - "columnElem", "opt_column_list", "ColQualList", "key_delete", - "reloption_elem", "columnList", "columnList_opt_comma", "func_type", - "ConstraintElem", "TableElementList", "key_match", "TableLikeClause", - "OptTemp", "generated_when", "DropStmt", "drop_type_any_name", - "drop_type_name", "any_name_list", "opt_drop_behavior", - "drop_type_name_on_any_name", "type_name_list", "CreateFunctionStmt", - "macro_alias", "param_list", "UpdateStmt", "CopyStmt", "copy_from", - "copy_delimiter", "copy_generic_opt_arg_list", "opt_using", "opt_as", - "opt_program", "copy_options", "copy_generic_opt_arg", - "copy_generic_opt_elem", "opt_oids", "copy_opt_list", "opt_binary", - "copy_opt_item", "copy_generic_opt_arg_list_item", "copy_file_name", - "copy_generic_opt_list", "SelectStmt", "select_with_parens", + "CopyStmt", "copy_from", "copy_delimiter", "copy_generic_opt_arg_list", + "opt_using", "opt_as", "opt_program", "copy_options", + "copy_generic_opt_arg", "copy_generic_opt_elem", "opt_oids", + "copy_opt_list", "opt_binary", "copy_opt_item", + "copy_generic_opt_arg_list_item", "copy_file_name", + "copy_generic_opt_list", "VariableResetStmt", "generic_reset", + "reset_rest", "CallStmt", "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", "opt_select", "simple_select", "with_clause", "cte_list", "common_table_expr", "into_clause", "OptTempTableName", "opt_table", "all_or_distinct", "by_name", @@ -310265,34 +309648,65 @@ static const char *const yytname[] = "attr_name", "func_name", "AexprConst", "Iconst", "Sconst", "ColId", "ColIdOrString", "type_function_name", "function_name_token", "type_name_token", "any_name", "attrs", "opt_name_list", "param_name", - "ColLabel", "ColLabelOrString", "named_param", "PrepareStmt", - "prep_type_clause", "PreparableStmt", "CreateSchemaStmt", - "OptSchemaEltList", "schema_stmt", "IndexStmt", "access_method", - "access_method_clause", "opt_concurrently", "opt_index_name", - "opt_reloptions", "opt_unique", "AlterObjectSchemaStmt", - "CheckPointStmt", "opt_col_id", "ExportStmt", "ImportStmt", - "ExplainStmt", "opt_verbose", "explain_option_arg", "ExplainableStmt", + "ColLabel", "ColLabelOrString", "named_param", "PragmaStmt", + "CreateAsStmt", "opt_with_data", "create_as_target", "VariableShowStmt", + "show_or_describe", "var_name", "table_id", "AlterSeqStmt", "SeqOptList", + "opt_with", "NumericOnly", "SeqOptElem", "opt_by", "SignedIconst", + "DeallocateStmt", "CreateStmt", "ConstraintAttributeSpec", "def_arg", + "OptParenthesizedSeqOptList", "generic_option_arg", "key_action", + "ColConstraint", "ColConstraintElem", "GeneratedColumnType", + "opt_GeneratedColumnType", "GeneratedConstraintElem", + "generic_option_elem", "key_update", "key_actions", "OnCommitOption", + "reloptions", "opt_no_inherit", "TableConstraint", "TableLikeOption", + "reloption_list", "ExistingIndex", "ConstraintAttr", "OptWith", + "definition", "TableLikeOptionList", "generic_option_name", + "ConstraintAttributeElem", "columnDef", "def_list", "index_name", + "TableElement", "def_elem", "opt_definition", "OptTableElementList", + "columnElem", "opt_column_list", "ColQualList", "key_delete", + "reloption_elem", "columnList", "columnList_opt_comma", "func_type", + "ConstraintElem", "TableElementList", "key_match", "TableLikeClause", + "OptTemp", "generated_when", "AttachStmt", "DetachStmt", "opt_database", + "opt_database_alias", "ExecuteStmt", "execute_param_clause", + "CreateSchemaStmt", "OptSchemaEltList", "schema_stmt", "ExplainStmt", + "opt_verbose", "explain_option_arg", "ExplainableStmt", "NonReservedWord", "NonReservedWord_or_Sconst", "explain_option_list", "analyze_keyword", "opt_boolean_or_string", "explain_option_elem", - "explain_option_name", "VariableSetStmt", "set_rest", "generic_set", - "var_value", "zone_value", "var_list", "LoadStmt", "file_name", - "VacuumStmt", "vacuum_option_elem", "opt_full", "vacuum_option_list", - "opt_freeze", "DeleteStmt", "relation_expr_opt_alias", - "where_or_current_clause", "using_clause", "AnalyzeStmt", "AttachStmt", - "DetachStmt", "opt_database", "opt_database_alias", "ident_name", - "ident_list", "VariableResetStmt", "generic_reset", "reset_rest", - "VariableShowStmt", "show_or_describe", "var_name", "table_id", - "CallStmt", "ViewStmt", "opt_check_option", "CreateAsStmt", - "opt_with_data", "create_as_target", "unreserved_keyword", - "col_name_keyword", "func_name_keyword", "type_name_keyword", - "other_keyword", "type_func_name_keyword", "reserved_keyword", 0 + "explain_option_name", "DropStmt", "drop_type_any_name", + "drop_type_name", "any_name_list", "opt_drop_behavior", + "drop_type_name_on_any_name", "type_name_list", "CreateTypeStmt", + "opt_enum_val_list", "enum_val_list", "CreateDatabaseStmt", + "opt_extension_name", "AlterTableStmt", + "alter_identity_column_option_list", "alter_column_default", + "alter_identity_column_option", "alter_generic_option_list", + "alter_table_cmd", "alter_using", "alter_generic_option_elem", + "alter_table_cmds", "alter_generic_options", "opt_set_data", + "TransactionStmt", "opt_transaction", "RenameStmt", "opt_column", + "PrepareStmt", "prep_type_clause", "PreparableStmt", "VacuumStmt", + "vacuum_option_elem", "opt_full", "vacuum_option_list", "opt_freeze", + "IndexStmt", "access_method", "access_method_clause", "opt_concurrently", + "opt_index_name", "opt_reloptions", "opt_unique", "ExportStmt", + "ImportStmt", "DeleteStmt", "relation_expr_opt_alias", + "where_or_current_clause", "using_clause", "ViewStmt", + "opt_check_option", "VariableSetStmt", "set_rest", "generic_set", + "var_value", "zone_value", "var_list", "CheckPointStmt", "opt_col_id", + "LoadStmt", "file_name", "CreateSeqStmt", "OptSeqOptList", + "CreateFunctionStmt", "macro_alias", "param_list", "UseStmt", + "AlterObjectSchemaStmt", "UpdateStmt", "InsertStmt", "insert_rest", + "insert_target", "opt_conf_expr", "opt_with_clause", + "insert_column_item", "set_clause", "opt_or_action", "opt_on_conflict", + "index_elem", "returning_clause", "override_kind", "set_target_list", + "opt_collate", "opt_class", "insert_column_list", "set_clause_list", + "set_clause_list_opt_comma", "index_params", "set_target", "AnalyzeStmt", + "unreserved_keyword", "col_name_keyword", "func_name_keyword", + "type_name_keyword", "other_keyword", "type_func_name_keyword", + "reserved_keyword", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -310349,3633 +309763,3407 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 512, 513, 514, 514, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 516, 516, 516, 516, 516, 516, - 516, 516, 517, 517, 518, 518, 519, 519, 519, 519, - 520, 520, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 522, 522, 523, 523, 523, 523, 524, 524, 525, - 526, 526, 526, 527, 527, 527, 527, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 529, 529, 530, 531, 531, 531, 531, 531, 532, 532, - 533, 533, 533, 534, 534, 535, 536, 536, 537, 537, - 537, 538, 538, 538, 539, 539, 539, 540, 540, 541, - 541, 542, 542, 543, 543, 544, 544, 545, 545, 546, - 546, 547, 547, 548, 548, 549, 550, 550, 550, 551, - 551, 552, 552, 553, 553, 553, 554, 554, 554, 554, - 554, 554, 554, 555, 556, 556, 557, 557, 558, 558, - 558, 559, 559, 560, 560, 561, 561, 562, 562, 562, - 563, 563, 563, 563, 564, 564, 564, 564, 564, 564, - 564, 564, 564, 564, 564, 564, 564, 564, 565, 565, - 566, 566, 566, 567, 567, 567, 567, 567, 567, 568, - 568, 568, 569, 570, 570, 570, 571, 571, 572, 572, - 572, 572, 572, 572, 573, 573, 574, 575, 575, 575, - 575, 575, 576, 576, 576, 576, 577, 577, 577, 577, - 577, 577, 577, 577, 578, 578, 579, 579, 580, 580, - 580, 581, 582, 583, 583, 583, 583, 583, 584, 584, - 584, 584, 585, 586, 586, 587, 587, 588, 588, 588, - 588, 588, 588, 588, 588, 589, 589, 590, 591, 591, - 591, 591, 592, 592, 592, 592, 593, 594, 594, 594, - 595, 596, 596, 596, 596, 596, 596, 597, 597, 598, - 598, 599, 600, 600, 600, 601, 601, 602, 602, 603, - 603, 603, 604, 605, 605, 606, 606, 607, 608, 608, - 608, 608, 609, 609, 610, 610, 611, 611, 611, 612, - 612, 612, 612, 612, 612, 613, 613, 614, 614, 614, - 614, 615, 616, 616, 616, 616, 616, 616, 616, 616, - 617, 617, 618, 618, 618, 618, 618, 618, 618, 618, - 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, - 619, 619, 619, 619, 619, 619, 619, 619, 620, 620, - 620, 620, 620, 620, 621, 621, 622, 622, 622, 623, - 623, 623, 624, 624, 625, 625, 625, 625, 625, 625, - 626, 626, 627, 627, 628, 629, 629, 630, 630, 631, - 631, 632, 632, 633, 633, 634, 634, 635, 635, 636, - 636, 637, 637, 637, 637, 637, 638, 639, 639, 640, - 640, 641, 641, 642, 642, 642, 642, 642, 642, 642, - 642, 642, 642, 642, 642, 642, 642, 642, 642, 643, - 644, 644, 644, 645, 645, 646, 646, 647, 647, 648, - 648, 648, 648, 648, 648, 648, 648, 649, 649, 650, - 650, 651, 651, 651, 651, 651, 651, 651, 651, 651, - 651, 652, 652, 652, 653, 653, 654, 655, 655, 656, - 656, 656, 656, 656, 656, 656, 656, 656, 657, 657, - 658, 658, 658, 659, 660, 660, 661, 661, 662, 662, - 662, 663, 663, 664, 664, 664, 665, 665, 666, 666, - 667, 667, 667, 668, 668, 668, 669, 669, 669, 669, - 670, 670, 671, 671, 671, 671, 672, 672, 673, 673, - 673, 673, 673, 673, 674, 674, 675, 675, 676, 676, - 676, 676, 677, 678, 678, 679, 679, 680, 680, 680, - 680, 680, 681, 682, 682, 682, 683, 683, 684, 684, - 685, 685, 686, 686, 686, 686, 687, 687, 688, 688, - 689, 689, 689, 689, 689, 690, 691, 692, 693, 694, - 694, 695, 695, 696, 696, 697, 697, 698, 698, 699, - 699, 700, 701, 701, 701, 701, 702, 702, 703, 703, - 703, 704, 704, 705, 705, 706, 706, 707, 707, 708, - 708, 709, 709, 709, 709, 709, 709, 709, 709, 710, - 710, 710, 710, 710, 710, 710, 711, 711, 711, 711, - 712, 712, 713, 713, 713, 713, 713, 714, 714, 714, - 714, 715, 715, 716, 716, 717, 717, 717, 717, 718, - 718, 719, 720, 720, 721, 721, 722, 722, 723, 723, - 724, 724, 725, 726, 726, 727, 727, 728, 728, 729, - 729, 730, 730, 730, 730, 730, 730, 730, 730, 730, - 731, 731, 731, 732, 732, 732, 732, 732, 732, 732, - 733, 733, 733, 733, 734, 735, 735, 736, 736, 736, - 736, 736, 736, 736, 736, 736, 736, 736, 737, 737, - 738, 738, 739, 739, 740, 741, 742, 742, 743, 743, - 744, 745, 746, 746, 746, 746, 746, 746, 747, 747, - 748, 748, 748, 748, 749, 750, 750, 750, 751, 751, - 752, 752, 753, 753, 754, 754, 755, 755, 756, 756, - 757, 757, 758, 758, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 762, 762, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 762, 762, 762, 763, 763, 763, - 763, 763, 764, 764, 764, 764, 764, 764, 764, 765, - 765, 766, 766, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 768, 768, 769, 769, 770, 770, 770, 771, - 771, 772, 772, 773, 773, 774, 775, 775, 775, 776, - 777, 777, 778, 778, 779, 779, 779, 780, 780, 781, - 781, 781, 781, 781, 782, 782, 783, 783, 784, 785, - 785, 786, 786, 787, 787, 787, 788, 788, 789, 789, - 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, - 789, 790, 790, 791, 791, 792, 792, 792, 792, 792, - 792, 792, 792, 793, 793, 794, 794, 795, 795, 796, - 796, 797, 797, 798, 798, 798, 799, 799, 800, 800, - 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, - 802, 802, 803, 804, 804, 805, 805, 805, 805, 805, - 805, 806, 807, 808, 808, 808, 809, 809, 810, 811, - 811, 812, 813, 813, 814, 814, 815, 815, 816, 816, - 816, 817, 817, 818, 818, 819, 819, 820, 820, 821, - 821, 822, 822, 823, 823, 824, 824, 824, 824, 824, - 825, 825, 826, 826, 827, 828, 828, 829, 829, 830, - 830, 830, 831, 831, 832, 832, 833, 833, 834, 834, - 835, 836, 837, 837, 838, 838, 838, 838, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 839, 840, - 841, 841, 841, 842, 842, 843, 843, 843, 844, 844, - 844, 845, 845, 845, 846, 846, 847, 847, 848, 848, - 849, 850, 850, 850, 850, 851, 851, 852, 853, 854, - 854, 855, 855, 855, 855, 856, 856, 857, 857, 858, - 858, 858, 858, 859, 859, 860, 861, 861, 862, 862, - 863, 863, 864, 864, 865, 865, 866, 866, 866, 866, - 866, 866, 867, 867, 868, 868, 869, 869, 870, 871, - 871, 871, 871, 872, 872, 873, 873, 873, 874, 874, - 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 874, 874, 874, 874, 874, 874, 875, 875, - 875, 876, 876, 877, 877, 878, 878, 879, 879, 879, - 879, 880, 881, 881, 882, 882, 882, 882, 883, 883, - 883, 883, 884, 884, 884, 884, 885, 885, 886, 886, - 886, 886, 886, 886, 886, 887, 887, 888, 888, 888, - 889, 889, 890, 890, 890, 890, 890, 891, 891, 891, - 891, 891, 892, 892, 893, 893, 894, 894, 895, 895, - 896, 896, 896, 897, 897, 898, 898, 899, 899, 900, - 901, 901, 901, 902, 902, 903, 903, 904, 905, 905, - 906, 907, 907, 908, 908, 908, 909, 909, 909, 909, - 909, 909, 909, 909, 910, 910, 911, 911, 912, 912, - 913, 914, 914, 914, 914, 914, 915, 915, 915, 915, - 916, 916, 916, 917, 917, 917, 918, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 919, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 920, 920, 920, 920, 920, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 922, 922, 922, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 924, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 925 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 6, 4, 6, 4, 6, - 4, 6, 1, 2, 3, 2, 1, 3, 2, 3, - 1, 3, 2, 5, 3, 6, 4, 6, 6, 6, - 5, 5, 6, 9, 4, 5, 7, 6, 4, 8, - 4, 2, 4, 3, 6, 4, 2, 2, 2, 2, - 1, 2, 0, 1, 2, 2, 2, 1, 3, 4, - 2, 1, 0, 2, 3, 2, 3, 6, 6, 8, - 6, 8, 6, 8, 6, 8, 8, 10, 8, 10, - 1, 0, 8, 1, 4, 4, 7, 2, 1, 3, - 4, 3, 0, 1, 0, 2, 3, 5, 2, 2, - 0, 8, 5, 0, 5, 5, 7, 2, 0, 1, - 1, 1, 3, 2, 0, 1, 0, 1, 3, 1, - 3, 1, 2, 1, 3, 2, 6, 8, 5, 1, - 0, 1, 3, 2, 4, 5, 3, 4, 6, 5, - 5, 8, 7, 1, 5, 8, 1, 0, 3, 9, - 12, 3, 0, 4, 6, 1, 2, 1, 1, 0, - 1, 2, 2, 1, 2, 2, 1, 2, 3, 2, - 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 1, 0, 2, 9, 12, 11, 0, 2, 1, 1, - 1, 1, 1, 1, 3, 0, 1, 2, 1, 1, - 2, 2, 3, 1, 1, 2, 2, 1, 2, 3, - 5, 3, 2, 5, 1, 1, 1, 0, 5, 7, - 5, 2, 3, 1, 1, 2, 2, 0, 3, 4, - 4, 0, 3, 2, 0, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 1, 2, - 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, - 1, 2, 1, 2, 2, 2, 2, 3, 4, 1, - 3, 1, 1, 1, 1, 3, 1, 2, 0, 1, - 2, 0, 1, 3, 0, 2, 0, 3, 3, 1, - 5, 3, 1, 3, 1, 2, 1, 4, 5, 5, - 6, 3, 7, 4, 11, 1, 3, 2, 2, 2, - 0, 3, 1, 1, 2, 2, 2, 2, 1, 0, - 1, 2, 6, 4, 6, 4, 6, 8, 4, 6, - 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, - 1, 1, 1, 1, 3, 3, 3, 3, 2, 2, - 1, 3, 1, 1, 1, 3, 1, 1, 0, 1, - 1, 1, 1, 3, 8, 11, 10, 7, 10, 9, - 1, 1, 2, 3, 8, 11, 9, 1, 1, 3, - 0, 1, 3, 1, 0, 1, 0, 1, 0, 1, - 3, 1, 1, 1, 3, 0, 2, 2, 0, 2, - 0, 1, 0, 1, 1, 1, 3, 3, 1, 1, - 3, 3, 3, 3, 3, 3, 4, 3, 2, 1, - 1, 1, 1, 1, 3, 1, 1, 3, 3, 1, - 2, 4, 4, 2, 3, 5, 5, 1, 1, 3, - 0, 11, 11, 10, 12, 1, 2, 5, 4, 4, - 4, 2, 2, 3, 1, 3, 6, 2, 0, 3, - 3, 4, 4, 4, 4, 3, 2, 1, 1, 0, - 1, 1, 0, 2, 1, 5, 1, 0, 2, 2, - 0, 1, 0, 3, 5, 5, 1, 3, 4, 3, - 1, 1, 0, 2, 2, 0, 2, 2, 1, 1, - 1, 0, 2, 4, 5, 4, 2, 3, 2, 2, - 2, 2, 1, 2, 3, 0, 1, 0, 5, 1, - 4, 6, 2, 1, 0, 4, 0, 1, 1, 2, - 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 0, 1, 3, 1, 2, - 1, 1, 1, 1, 1, 2, 4, 4, 5, 1, - 1, 2, 0, 2, 0, 1, 3, 1, 0, 1, - 2, 3, 2, 4, 2, 3, 2, 0, 1, 2, - 0, 4, 5, 1, 2, 2, 0, 1, 3, 1, - 2, 3, 3, 3, 3, 3, 3, 1, 4, 3, - 4, 5, 4, 5, 4, 4, 5, 2, 4, 1, - 1, 0, 1, 4, 5, 4, 0, 2, 2, 2, - 1, 1, 0, 4, 2, 1, 2, 2, 4, 2, - 6, 2, 1, 3, 4, 0, 2, 0, 2, 0, - 1, 3, 3, 2, 0, 2, 4, 1, 1, 1, - 0, 2, 3, 5, 6, 2, 3, 5, 5, 5, - 3, 4, 0, 1, 1, 1, 1, 1, 2, 4, - 1, 1, 1, 1, 2, 3, 0, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 3, 0, - 1, 1, 1, 1, 5, 2, 1, 1, 1, 1, - 4, 1, 2, 2, 1, 3, 3, 2, 1, 0, - 5, 2, 5, 2, 1, 3, 3, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 0, - 1, 3, 3, 5, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 3, 3, 2, 2, 3, 3, 5, 4, - 6, 3, 5, 4, 6, 4, 6, 5, 7, 3, - 2, 4, 3, 2, 3, 3, 3, 3, 4, 3, - 4, 3, 4, 5, 6, 6, 7, 6, 7, 6, - 7, 3, 4, 4, 6, 1, 6, 4, 1, 3, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 5, 6, - 6, 7, 1, 1, 2, 2, 2, 1, 3, 1, - 2, 4, 1, 1, 2, 2, 4, 1, 1, 3, - 3, 1, 3, 6, 7, 9, 7, 7, 4, 5, - 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, - 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, - 6, 4, 4, 4, 4, 6, 5, 5, 5, 4, - 6, 4, 7, 9, 5, 0, 5, 4, 0, 1, - 0, 2, 0, 1, 3, 3, 2, 2, 0, 6, - 1, 0, 3, 0, 2, 2, 0, 1, 4, 2, - 2, 2, 2, 2, 4, 3, 1, 5, 3, 1, - 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 1, 4, 1, 4, 1, 2, 1, - 2, 1, 2, 1, 3, 1, 3, 1, 2, 1, - 0, 1, 3, 1, 3, 3, 1, 3, 3, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 3, 2, 3, 0, 3, 3, 2, 2, 1, - 0, 2, 2, 3, 2, 1, 1, 3, 5, 1, - 2, 4, 2, 0, 1, 0, 1, 2, 2, 3, - 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, - 0, 1, 3, 1, 2, 3, 2, 1, 3, 5, - 4, 2, 1, 0, 3, 1, 3, 1, 2, 4, - 2, 0, 1, 3, 1, 2, 1, 3, 1, 2, - 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, - 7, 2, 5, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 3, 3, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 5, 3, - 0, 1, 1, 1, 1, 4, 7, 2, 0, 1, - 1, 1, 1, 13, 16, 1, 2, 0, 1, 0, - 1, 0, 2, 0, 1, 0, 6, 8, 6, 8, - 6, 8, 3, 2, 1, 0, 4, 6, 3, 2, - 4, 3, 5, 1, 0, 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 2, 3, 3, 3, 1, 3, - 3, 2, 3, 3, 3, 3, 1, 1, 1, 1, - 3, 5, 1, 1, 1, 1, 3, 2, 2, 3, - 1, 1, 4, 5, 5, 4, 6, 1, 1, 1, - 1, 1, 1, 0, 1, 3, 1, 0, 7, 3, - 1, 2, 3, 2, 0, 2, 0, 2, 4, 5, - 3, 2, 5, 1, 0, 2, 0, 1, 1, 3, - 2, 1, 1, 1, 2, 3, 2, 2, 2, 2, - 3, 4, 2, 1, 1, 1, 1, 3, 1, 3, - 2, 9, 12, 11, 12, 14, 3, 4, 4, 0, - 7, 10, 9, 2, 3, 0, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1 -}; +#define YYPACT_NINF (-2803) -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 134, 231, 0, 1256, 1255, 1324, 231, 0, 1205, 231, - 452, 369, 0, 1345, 0, 0, 231, 0, 134, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 231, 527, - 0, 1344, 231, 0, 0, 519, 0, 1303, 0, 0, - 0, 0, 0, 2, 4, 7, 20, 33, 29, 0, - 19, 31, 14, 17, 24, 6, 35, 37, 18, 23, - 15, 36, 12, 34, 488, 475, 532, 487, 133, 633, - 495, 32, 16, 28, 5, 11, 26, 27, 25, 1214, - 40, 30, 38, 21, 8, 9, 22, 39, 41, 1343, - 10, 42, 13, 230, 229, 223, 0, 0, 0, 0, - 0, 1323, 0, 224, 1140, 1367, 1368, 1369, 1370, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, - 1382, 1728, 1383, 1384, 1385, 1674, 1675, 1729, 1676, 1677, - 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1678, 1679, - 1394, 1395, 1396, 1397, 1398, 1680, 1730, 1681, 1399, 1400, - 1401, 1402, 1403, 1731, 1404, 1405, 1406, 1407, 1408, 1409, - 1410, 1411, 1412, 1732, 1413, 1414, 1415, 1733, 1734, 1735, - 1736, 1737, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1682, - 1683, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, - 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, - 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1684, - 1451, 1452, 1453, 1454, 1455, 1685, 1456, 1457, 1458, 1686, - 1459, 1460, 1461, 1738, 1739, 1462, 1463, 1687, 1741, 1464, - 1465, 1688, 1689, 1466, 1467, 1468, 1469, 1470, 1471, 1472, - 1473, 1742, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, - 1482, 1483, 1484, 1743, 1690, 1485, 1486, 1487, 1488, 1489, - 1691, 1692, 1693, 1490, 1744, 1745, 1491, 1746, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1747, 1499, 1748, 1500, 1501, - 1502, 1503, 1504, 1505, 1506, 1507, 1694, 1508, 1509, 1510, - 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1695, 1750, 1696, 1526, 1527, - 1528, 1697, 1529, 1530, 1751, 1531, 1698, 1532, 1699, 1533, - 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1700, 1752, - 1542, 1753, 1701, 1543, 1544, 1545, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1702, 1754, 1555, 1556, 1703, - 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, - 1567, 1568, 1704, 1569, 1570, 1571, 1572, 1573, 1574, 1575, - 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, - 1586, 1587, 1755, 1588, 1589, 1590, 1705, 1591, 1592, 1593, - 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, - 1604, 1605, 1606, 1756, 1607, 1706, 1608, 1609, 1610, 1757, - 1611, 1612, 1707, 1613, 1614, 1615, 1616, 1617, 1618, 1619, - 1620, 1621, 1622, 1623, 1624, 1625, 1708, 1626, 1709, 1627, - 1628, 1629, 1630, 1759, 1631, 1632, 1633, 1634, 1635, 1710, - 1711, 1636, 1637, 1712, 1638, 1713, 1639, 1640, 1714, 1641, - 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, - 1760, 1652, 1653, 1654, 1655, 1656, 1715, 1716, 1657, 1761, - 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, - 1668, 1669, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, - 1725, 1726, 1727, 1670, 1671, 1672, 1673, 1350, 0, 0, - 1122, 1141, 1142, 1150, 1140, 1687, 1694, 1708, 1204, 1203, - 1141, 226, 451, 0, 0, 1139, 0, 0, 0, 0, - 0, 363, 362, 0, 1194, 368, 0, 0, 183, 0, - 1144, 105, 1557, 103, 1143, 1120, 1327, 0, 1328, 1321, - 0, 390, 391, 381, 0, 400, 0, 383, 388, 384, - 0, 409, 402, 410, 392, 382, 403, 393, 380, 0, - 411, 0, 386, 0, 0, 0, 227, 192, 369, 134, - 0, 1220, 1230, 1239, 1235, 1229, 1237, 1227, 1233, 1219, - 1241, 1228, 1232, 1225, 1242, 1223, 1240, 1238, 1226, 1234, - 1218, 1222, 1209, 1214, 1245, 1236, 1243, 1231, 1244, 1246, - 1221, 1247, 1224, 0, 1205, 0, 0, 1680, 1730, 937, - 924, 933, 938, 925, 927, 934, 1685, 0, 929, 931, - 1698, 0, 1701, 1702, 1591, 935, 1709, 1712, 1713, 1714, - 936, 1715, 0, 661, 0, 490, 637, 647, 661, 666, - 921, 687, 922, 675, 1143, 1114, 0, 1290, 1291, 1288, - 1287, 173, 1170, 1332, 1710, 1636, 1346, 1333, 1330, 1331, - 228, 526, 524, 0, 1090, 1464, 1502, 1595, 1606, 1710, - 1264, 1268, 0, 225, 1337, 0, 1348, 1338, 496, 1143, - 518, 0, 232, 1302, 0, 1307, 0, 1571, 501, 504, - 1159, 502, 488, 0, 1, 134, 0, 140, 0, 522, - 522, 0, 522, 0, 480, 488, 483, 487, 634, 1213, - 1317, 1342, 1710, 1636, 1336, 1339, 1472, 0, 0, 1472, - 0, 1472, 0, 1472, 0, 1326, 0, 1082, 0, 1083, - 1123, 0, 334, 1472, 176, 367, 366, 365, 364, 369, - 1472, 1178, 0, 0, 420, 421, 0, 0, 0, 0, - 0, 1189, 106, 104, 1472, 1320, 1154, 404, 0, 398, - 399, 0, 389, 385, 387, 0, 1151, 1762, 730, 1763, - 759, 737, 759, 759, 1764, 1765, 1766, 1767, 1768, 1769, - 1770, 1771, 1772, 726, 726, 1438, 739, 1773, 1774, 1775, - 1472, 1776, 1777, 727, 728, 764, 1778, 1779, 1780, 1781, - 1782, 0, 0, 1783, 759, 1784, 726, 1785, 1786, 1787, - 731, 1788, 697, 1789, 0, 1790, 729, 698, 1791, 767, - 767, 1792, 0, 1793, 754, 1794, 408, 0, 412, 712, - 713, 714, 715, 740, 741, 716, 746, 747, 751, 717, - 799, 726, 1152, 1153, 1472, 408, 1472, 408, 1116, 1472, - 0, 0, 188, 0, 1211, 1248, 1795, 1796, 1797, 1798, - 1799, 1800, 1802, 1801, 1803, 1804, 1805, 1806, 1807, 1808, - 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, - 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1829, 1827, - 1828, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, - 1839, 1840, 1841, 1842, 1844, 1843, 1845, 1846, 1847, 1848, - 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, - 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, - 1879, 1262, 0, 1263, 1253, 1217, 1249, 1250, 134, 450, - 0, 1202, 1289, 0, 0, 0, 0, 0, 1039, 661, - 666, 0, 0, 0, 0, 677, 0, 1054, 0, 1060, - 0, 0, 0, 661, 495, 0, 647, 0, 660, 574, - 659, 574, 527, 0, 508, 0, 672, 670, 0, 672, - 0, 0, 672, 0, 574, 0, 662, 574, 659, 0, - 679, 676, 1115, 1208, 0, 0, 0, 0, 1334, 0, - 0, 0, 1125, 1127, 1128, 1011, 1138, 908, 0, 1675, - 1676, 1677, 1075, 1678, 1679, 1681, 1682, 1683, 865, 1684, - 1136, 1686, 1688, 1689, 1691, 1692, 1693, 1695, 1696, 0, - 1137, 1699, 1538, 1704, 1705, 1707, 1710, 1711, 1135, 1716, - 0, 0, 0, 1103, 1030, 0, 0, 0, 907, 0, - 903, 0, 0, 720, 721, 742, 743, 722, 748, 749, - 723, 0, 1097, 800, 1085, 955, 911, 920, 899, 986, - 897, 0, 902, 892, 1093, 508, 1091, 0, 893, 1124, - 1085, 1076, 508, 1089, 1267, 1265, 1271, 1266, 0, 0, - 0, 0, 0, 1115, 1310, 1309, 1301, 1299, 1300, 1298, - 1297, 1304, 0, 1306, 1214, 1025, 1027, 0, 1076, 503, - 0, 0, 0, 478, 477, 3, 0, 0, 0, 0, - 520, 521, 0, 0, 0, 0, 0, 0, 0, 0, - 618, 548, 549, 551, 615, 619, 627, 0, 484, 0, - 1159, 1340, 0, 0, 0, 121, 121, 0, 0, 0, - 0, 0, 97, 46, 90, 0, 0, 0, 0, 206, - 219, 0, 0, 0, 0, 0, 216, 0, 0, 199, - 48, 193, 195, 0, 121, 0, 44, 0, 0, 0, - 50, 0, 450, 1140, 0, 1728, 1729, 1730, 1681, 1731, - 1732, 937, 924, 933, 938, 934, 0, 1738, 1739, 1687, - 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1694, 1750, - 1751, 1752, 1753, 1754, 1755, 935, 1757, 1708, 1759, 1714, - 936, 0, 1761, 0, 912, 1033, 532, 1031, 1160, 0, - 1141, 1147, 1081, 0, 1161, 1916, 1917, 1918, 1919, 1920, - 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, - 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, - 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, - 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, - 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1866, 1983, 1984, 1985, 1986, 1987, 1078, 1121, - 1163, 1162, 1164, 1084, 0, 0, 448, 0, 0, 0, - 0, 0, 1175, 0, 177, 0, 1472, 187, 1472, 334, - 0, 1472, 334, 1472, 0, 1188, 1191, 0, 0, 0, - 1155, 1329, 401, 397, 395, 394, 396, 758, 745, 753, - 752, 1030, 735, 734, 733, 0, 732, 0, 0, 759, - 759, 757, 736, 712, 0, 0, 0, 763, 0, 761, - 0, 406, 407, 0, 378, 0, 705, 701, 0, 772, - 773, 774, 775, 782, 783, 780, 781, 776, 777, 770, - 771, 778, 779, 768, 769, 0, 784, 785, 786, 787, - 788, 789, 790, 791, 718, 724, 0, 373, 0, 0, - 375, 0, 0, 0, 369, 134, 0, 200, 1258, 1259, - 1257, 0, 0, 1216, 203, 220, 1252, 1261, 1251, 1260, - 1215, 1210, 0, 1206, 439, 0, 0, 0, 0, 0, - 0, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, - 0, 0, 1049, 646, 644, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 868, 897, 0, 0, 0, 1025, - 1059, 0, 0, 0, 0, 0, 0, 1025, 1065, 0, - 0, 649, 657, 567, 573, 645, 0, 643, 0, 1090, - 638, 0, 689, 0, 671, 667, 0, 668, 0, 0, - 0, 669, 0, 641, 0, 657, 642, 0, 686, 1277, - 1276, 1285, 174, 0, 1036, 0, 134, 1335, 1347, 0, - 1030, 900, 1074, 0, 0, 905, 824, 0, 0, 825, - 804, 805, 0, 1102, 1111, 1025, 1029, 0, 903, 1025, - 0, 894, 1167, 896, 989, 991, 0, 0, 904, 0, - 1131, 0, 799, 799, 1096, 1011, 0, 1004, 0, 0, - 1008, 1009, 1010, 0, 0, 0, 1088, 0, 1019, 1021, - 0, 0, 840, 1017, 0, 843, 0, 0, 0, 0, - 1005, 1006, 1007, 998, 999, 1000, 1001, 1002, 1003, 1015, - 997, 821, 0, 895, 0, 958, 0, 820, 1094, 636, - 0, 1129, 1126, 0, 1077, 636, 1279, 1283, 1284, 1282, - 0, 1278, 1270, 1269, 1274, 1272, 1275, 1273, 1349, 0, - 1311, 1295, 0, 1292, 1028, 631, 505, 1118, 0, 0, - 1316, 139, 138, 0, 0, 500, 499, 542, 542, 533, - 536, 542, 0, 498, 0, 590, 591, 0, 0, 0, - 0, 624, 622, 1125, 1138, 578, 552, 577, 0, 0, - 556, 0, 582, 800, 617, 482, 546, 547, 550, 481, - 0, 620, 0, 630, 618, 551, 0, 1318, 1341, 0, - 0, 0, 0, 0, 1472, 0, 0, 81, 62, 286, - 700, 120, 0, 0, 0, 0, 0, 0, 0, 89, - 86, 87, 88, 0, 0, 0, 0, 204, 205, 218, - 0, 209, 210, 207, 211, 212, 0, 0, 197, 198, - 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, - 0, 0, 0, 1325, 1319, 532, 532, 532, 918, 0, - 530, 531, 0, 0, 1079, 1082, 438, 342, 0, 332, - 0, 0, 0, 180, 179, 0, 0, 0, 0, 0, - 369, 1181, 1179, 1177, 1180, 1182, 1444, 168, 0, 0, - 184, 186, 0, 331, 305, 0, 0, 1193, 0, 0, - 0, 1472, 1190, 321, 0, 1322, 405, 1156, 0, 0, - 0, 0, 408, 0, 756, 755, 706, 702, 0, 0, - 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 408, 408, 1117, 0, 408, 191, - 1212, 1254, 201, 221, 202, 222, 473, 0, 445, 453, - 458, 436, 0, 436, 0, 455, 459, 436, 454, 0, - 436, 449, 450, 0, 951, 0, 926, 928, 941, 0, - 930, 932, 0, 678, 0, 0, 942, 870, 871, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 887, 886, 943, 682, - 0, 685, 0, 0, 1057, 1058, 0, 944, 0, 0, - 1064, 0, 0, 0, 949, 0, 648, 0, 0, 562, - 569, 0, 572, 566, 0, 508, 489, 1464, 1502, 0, - 519, 519, 519, 507, 517, 0, 595, 650, 0, 0, - 652, 654, 0, 655, 0, 0, 690, 0, 0, 0, - 1120, 0, 175, 0, 1169, 0, 1172, 1173, 1171, 1168, - 1174, 0, 0, 0, 1073, 1069, 1103, 0, 996, 1004, - 1008, 1009, 1010, 1005, 1006, 1007, 998, 999, 1000, 1001, - 1002, 1003, 1023, 0, 0, 985, 0, 0, 1101, 0, - 1098, 0, 898, 909, 0, 992, 910, 0, 0, 0, - 1133, 1134, 801, 812, 844, 845, 816, 817, 818, 822, - 1166, 1165, 1095, 0, 1087, 0, 0, 802, 826, 831, - 0, 1066, 861, 0, 849, 0, 839, 0, 847, 851, - 827, 842, 0, 823, 0, 1088, 1020, 1022, 0, 1018, - 0, 813, 814, 815, 806, 807, 808, 809, 810, 811, - 819, 995, 993, 994, 0, 1086, 0, 0, 960, 0, - 0, 846, 1092, 0, 689, 532, 1103, 689, 0, 799, - 1312, 1159, 1305, 1293, 1294, 1026, 1119, 1158, 134, 0, - 1314, 0, 128, 0, 159, 161, 636, 0, 1085, 540, - 541, 545, 545, 0, 0, 545, 523, 497, 1705, 1591, - 0, 0, 0, 0, 583, 625, 0, 616, 580, 581, - 0, 579, 1125, 584, 1124, 585, 588, 589, 557, 626, - 1112, 628, 0, 621, 486, 485, 632, 0, 47, 0, - 1472, 64, 0, 0, 0, 0, 0, 0, 236, 0, - 336, 236, 102, 1472, 408, 1472, 408, 1371, 1439, 1607, - 0, 60, 93, 0, 310, 114, 0, 295, 339, 83, - 98, 107, 0, 0, 49, 194, 208, 213, 110, 217, - 214, 1198, 215, 121, 0, 45, 0, 108, 0, 1196, - 0, 0, 51, 112, 1200, 530, 530, 530, 0, 1032, - 0, 0, 0, 1034, 1035, 1081, 0, 437, 0, 333, - 0, 447, 427, 428, 438, 178, 0, 0, 334, 0, - 334, 0, 1178, 0, 0, 170, 166, 0, 0, 0, - 0, 324, 322, 355, 0, 329, 323, 332, 0, 0, - 281, 0, 1365, 0, 0, 0, 0, 422, 0, 0, - 0, 0, 1157, 0, 725, 738, 379, 712, 0, 766, - 765, 767, 767, 712, 0, 695, 712, 0, 710, 0, - 750, 719, 792, 793, 794, 795, 796, 797, 798, 372, - 374, 0, 376, 440, 0, 443, 0, 442, 446, 441, - 435, 0, 468, 0, 0, 0, 0, 0, 0, 0, - 1207, 0, 923, 1038, 0, 1052, 1051, 869, 878, 882, - 883, 884, 1053, 0, 0, 0, 879, 880, 881, 872, - 873, 874, 875, 876, 877, 885, 687, 0, 0, 681, - 1062, 1061, 1055, 1056, 0, 946, 947, 948, 1063, 0, - 0, 560, 558, 561, 563, 559, 0, 0, 658, 689, - 519, 519, 519, 519, 516, 0, 0, 0, 688, 0, - 612, 674, 0, 653, 651, 663, 0, 694, 0, 665, - 1286, 1037, 525, 901, 0, 0, 1070, 0, 1111, 867, - 1012, 0, 984, 0, 0, 0, 1110, 0, 1026, 990, - 988, 906, 799, 0, 0, 0, 0, 0, 0, 0, - 850, 841, 0, 848, 852, 0, 0, 0, 835, 0, - 0, 833, 862, 829, 0, 0, 863, 0, 0, 959, - 968, 639, 635, 595, 530, 1111, 595, 0, 1280, 1296, - 0, 1315, 0, 148, 0, 0, 0, 143, 123, 0, - 0, 151, 162, 1314, 0, 165, 0, 534, 535, 537, - 0, 1013, 545, 539, 587, 586, 0, 555, 623, 553, - 0, 629, 0, 0, 0, 285, 0, 0, 0, 236, - 0, 344, 0, 351, 0, 0, 336, 317, 82, 0, - 0, 0, 56, 101, 74, 66, 52, 80, 0, 0, - 85, 0, 78, 95, 96, 94, 99, 0, 271, 246, - 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 532, 528, 529, - 913, 1080, 471, 472, 199, 470, 343, 0, 0, 182, - 0, 331, 0, 1193, 0, 1176, 369, 0, 0, 169, - 171, 0, 187, 334, 0, 309, 305, 330, 303, 302, - 304, 0, 1366, 192, 0, 1360, 334, 1192, 0, 0, - 423, 0, 417, 0, 1187, 744, 708, 0, 762, 760, - 709, 0, 707, 703, 711, 408, 474, 0, 431, 469, - 456, 461, 0, 467, 463, 462, 457, 465, 464, 460, - 939, 950, 1050, 0, 0, 0, 0, 680, 683, 0, - 945, 940, 656, 0, 0, 595, 0, 0, 0, 0, - 510, 509, 515, 0, 0, 962, 0, 691, 0, 692, - 664, 0, 1072, 1068, 0, 1024, 1100, 1025, 1105, 1107, - 0, 0, 0, 987, 1132, 803, 0, 0, 832, 1067, - 853, 0, 0, 0, 828, 1012, 0, 0, 0, 0, - 0, 837, 0, 0, 0, 0, 0, 919, 640, 612, - 0, 1099, 612, 0, 506, 1313, 0, 1308, 127, 150, - 149, 0, 157, 0, 1085, 0, 148, 129, 0, 0, - 160, 148, 136, 543, 544, 0, 538, 554, 1113, 115, - 236, 0, 0, 63, 0, 353, 297, 345, 328, 312, - 0, 0, 0, 237, 0, 370, 0, 0, 318, 0, - 0, 0, 0, 298, 0, 0, 257, 0, 0, 328, - 0, 335, 253, 254, 0, 55, 75, 0, 71, 0, - 100, 0, 0, 0, 0, 0, 58, 70, 0, 53, - 0, 408, 408, 61, 296, 1151, 1762, 1763, 1764, 1765, - 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1893, - 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1902, 1783, - 243, 1784, 1538, 1785, 1786, 1787, 1788, 1789, 0, 1790, - 698, 1791, 1792, 1980, 1793, 1794, 998, 999, 241, 338, - 238, 346, 240, 242, 0, 1152, 239, 341, 111, 1199, - 0, 109, 0, 1197, 118, 116, 113, 1201, 916, 917, - 914, 530, 450, 430, 181, 0, 0, 1365, 0, 0, - 0, 1472, 0, 167, 0, 1193, 185, 331, 0, 361, - 281, 356, 0, 1365, 1363, 0, 1193, 1359, 0, 414, - 0, 0, 0, 704, 696, 377, 444, 0, 466, 888, - 0, 0, 0, 0, 570, 0, 576, 612, 514, 513, - 512, 511, 593, 1414, 1688, 1590, 594, 0, 598, 592, - 596, 601, 603, 602, 604, 600, 611, 0, 614, 673, - 693, 1071, 866, 1108, 1109, 1104, 0, 800, 859, 857, - 854, 0, 855, 836, 0, 0, 834, 830, 0, 864, - 954, 0, 957, 971, 966, 967, 962, 913, 962, 1281, - 147, 0, 0, 0, 135, 132, 122, 0, 152, 424, - 0, 349, 65, 0, 328, 0, 236, 314, 313, 316, - 311, 315, 0, 371, 0, 0, 255, 0, 262, 300, - 301, 299, 256, 328, 334, 258, 0, 0, 0, 67, - 57, 54, 59, 68, 0, 0, 69, 72, 694, 84, - 77, 1902, 1911, 0, 0, 0, 0, 0, 0, 426, - 433, 199, 0, 0, 305, 1362, 0, 0, 419, 0, - 0, 331, 172, 0, 0, 0, 1365, 0, 0, 233, - 0, 278, 0, 189, 1364, 0, 0, 1351, 0, 0, - 1185, 1186, 0, 432, 889, 0, 890, 684, 0, 0, - 568, 962, 0, 0, 0, 605, 599, 961, 963, 0, - 0, 565, 1106, 952, 0, 856, 860, 858, 838, 956, - 973, 970, 614, 1130, 614, 0, 124, 0, 125, 158, - 0, 0, 0, 137, 1014, 0, 236, 0, 327, 350, - 267, 245, 0, 0, 0, 252, 259, 360, 261, 0, - 76, 92, 0, 0, 340, 119, 117, 915, 450, 0, - 1193, 281, 1359, 416, 0, 0, 0, 305, 192, 1361, - 294, 287, 288, 289, 290, 291, 292, 293, 308, 307, - 279, 280, 0, 0, 0, 0, 0, 418, 1187, 0, - 163, 0, 154, 154, 891, 571, 0, 614, 0, 0, - 0, 597, 0, 0, 613, 0, 493, 0, 0, 532, - 565, 565, 0, 0, 0, 0, 334, 352, 0, 319, - 326, 265, 264, 266, 270, 0, 268, 0, 284, 0, - 277, 245, 0, 79, 0, 347, 425, 429, 0, 235, - 1353, 331, 0, 1359, 281, 1365, 1359, 0, 1356, 0, - 415, 0, 0, 1193, 0, 0, 156, 156, 0, 565, - 607, 0, 606, 964, 965, 567, 953, 0, 976, 492, - 491, 0, 131, 689, 142, 0, 360, 306, 0, 0, - 0, 267, 0, 260, 357, 358, 359, 0, 273, 263, - 274, 73, 91, 348, 0, 331, 1354, 234, 190, 1352, - 1357, 1358, 0, 154, 689, 164, 153, 542, 155, 542, - 575, 494, 608, 564, 972, 0, 0, 0, 126, 130, - 0, 277, 320, 325, 244, 269, 283, 0, 0, 0, - 275, 0, 276, 1359, 0, 156, 1183, 545, 545, 1674, - 1415, 1643, 0, 974, 977, 975, 969, 689, 236, 249, - 0, 248, 0, 337, 272, 1355, 1193, 542, 145, 144, - 0, 981, 980, 979, 983, 982, 141, 354, 247, 251, - 250, 689, 545, 0, 1184, 146, 978 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 42, 43, 44, 571, 2464, 2465, 2466, 2140, 1162, - 3123, 2141, 1163, 1164, 2468, 572, 573, 1703, 574, 2417, - 2071, 3022, 49, 2652, 2074, 1128, 2656, 3080, 2647, 2651, - 2420, 3146, 3197, 2653, 2075, 2076, 3081, 2077, 575, 2518, - 2519, 576, 52, 526, 577, 1780, 578, 852, 579, 1781, - 1730, 1519, 1182, 1720, 1434, 580, 95, 57, 581, 2453, - 2769, 3116, 2478, 3243, 2701, 2702, 3113, 3114, 2456, 2142, - 3178, 3179, 2532, 1712, 3173, 2211, 3068, 2146, 2128, 2703, - 2220, 3028, 2809, 2143, 2683, 2212, 3108, 1792, 2213, 3109, - 2906, 2214, 1757, 1784, 2457, 3180, 2147, 1758, 2452, 2770, - 1699, 2215, 3120, 2216, 527, 2687, 582, 563, 564, 755, - 1384, 565, 826, 583, 750, 1790, 584, 585, 2194, 2951, - 2557, 2952, 2271, 2188, 1443, 2268, 1836, 1761, 1444, 514, - 1851, 2558, 2504, 1837, 586, 1060, 65, 66, 984, 67, - 675, 688, 689, 1502, 1923, 681, 1132, 1654, 663, 664, - 2182, 703, 1751, 1649, 1650, 2081, 2427, 1678, 1679, 1141, - 1142, 1910, 3096, 1911, 1912, 1494, 1495, 2990, 1666, 1670, - 1671, 2103, 2093, 1657, 2340, 2848, 2849, 2850, 2851, 2852, - 2853, 2854, 1061, 2595, 3001, 1674, 1675, 1144, 1145, 1146, - 1683, 2113, 69, 70, 2054, 2401, 2402, 636, 637, 978, - 979, 997, 993, 1505, 1930, 638, 639, 1889, 1890, 2309, - 1000, 1926, 1935, 1936, 2599, 1812, 827, 2129, 1524, 1387, - 829, 1062, 830, 1362, 1063, 1366, 832, 1064, 1065, 1066, - 835, 1067, 1068, 1069, 838, 1358, 1070, 1071, 1377, 1406, - 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1115, 1473, - 1073, 1074, 1075, 1076, 641, 1077, 1078, 1605, 2048, 2400, - 2858, 2997, 2998, 2637, 2884, 3010, 3099, 3207, 3233, 3234, - 1079, 1080, 1554, 1555, 1556, 2044, 1599, 1600, 1081, 2772, - 1602, 1973, 1116, 1488, 1547, 1236, 1237, 1525, 1460, 1461, - 1470, 1865, 1477, 1481, 1894, 1895, 1489, 2012, 1082, 1954, - 1955, 2357, 1533, 1083, 729, 1243, 730, 1603, 2006, 1092, - 1084, 1093, 1086, 1543, 1544, 2366, 2609, 2610, 1980, 2109, - 643, 1637, 1914, 848, 1318, 1087, 1088, 1089, 1090, 1118, - 645, 1238, 500, 841, 757, 1350, 1122, 1239, 2144, 2002, - 1553, 587, 1007, 1949, 588, 1332, 1773, 589, 2981, 2822, - 1346, 1794, 2225, 529, 590, 591, 509, 76, 77, 78, - 710, 1437, 592, 1438, 1439, 942, 79, 1520, 944, 945, - 594, 670, 671, 1521, 1622, 1522, 595, 649, 596, 1111, - 685, 1112, 1114, 597, 1105, 2413, 2070, 84, 85, 86, - 102, 1192, 538, 539, 598, 657, 658, 599, 89, 672, - 677, 600, 601, 2977, 602, 2535, 1340, 510, 502, 503, - 843, 1321, 1241, 1322 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -2784 +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-1912) + +#define yytable_value_is_error(Yyn) \ + ((Yyn) == YYTABLE_NINF) + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const int yypact[] = { - 5571, 375, 773, -2784, -2784, 267, 375, 39697, 56010, 375, - 103, 1661, 43493, -2784, 335, 3579, 375, 46385, 61279, 285, - 255, 24341, 304, 46867, 46867, 56010, 46385, 47349, 375, 421, - 56492, -2784, 375, 26751, 43975, 13, 46385, 80, -62, 47831, - 46385, 797, 453, 30, -2784, -2784, -2784, -2784, -2784, 251, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, 128, -2784, 720, 138, 106, 39, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 114, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 26269, - -2784, -2784, -2784, -2784, -2784, -2784, 48313, 46385, 48795, 44457, - 49277, -2784, 743, -2784, 157, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, 160, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, 163, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, 179, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 277, 534, - -2784, 187, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 797, 46385, -2784, 49759, 377, 609, 515, - 50241, -2784, -2784, 46385, -2784, -2784, 886, 961, -2784, 754, - -2784, -2784, 44939, -2784, -2784, -2784, -2784, 56974, -2784, 504, - 779, -2784, -2784, -2784, 598, -2784, 131, -2784, -2784, 629, - 594, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 698, - -2784, 41610, -2784, 57456, 50723, 51205, -2784, 567, 1405, 61280, - 24823, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 114, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 46867, 56010, 46867, 576, 582, 921, 208, - 210, 216, 222, 599, 613, 223, 624, 25305, 657, 683, - 691, 27234, 707, 713, 1049, 226, 737, 741, 766, 782, - 227, -62, 23374, 51687, 51687, 42, 2101, -2784, 51687, 52169, - -2784, 738, -2784, 740, 534, -2784, 743, -2784, -2784, -2784, - -2784, 281, 802, -2784, 788, 1099, -2784, -2784, -2784, 830, - -2784, -2784, 1025, 11247, 11247, 57938, 57938, 743, 57938, 856, - -2784, -2784, 75, -2784, -2784, 106, -2784, 848, -2784, 534, - -2784, 43975, -2784, -2784, 265, 1193, 16317, 46385, 865, -2784, - 877, 865, 891, 896, -2784, 5571, 1217, 1112, 43975, 666, - 666, 1355, 666, 947, 1013, -2784, 1494, -2784, 917, -2784, - 46385, -2784, 954, 1223, -2784, 848, 1297, 1053, 1109, 1330, - 3988, 1336, 1074, 1363, 1169, 1489, 8205, 16317, 37287, -2784, - 534, 1068, 1077, 1326, 1438, -2784, -2784, -2784, -2784, 857, - 1358, -2784, 1594, 46385, -2784, -2784, 1198, 52651, 53133, 53615, - 54097, 1564, -2784, -2784, 1504, 1159, 1189, -2784, 1691, -2784, - -2784, 1229, -2784, -2784, -2784, 257, -2784, -2784, -2784, -2784, - 1246, -2784, 1246, 1246, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 1199, 1199, 1387, 1205, -2784, -2784, -2784, - 1561, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, 1232, 510, -2784, 1246, -2784, 1199, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, 60348, -2784, -2784, -2784, -2784, 701, - 894, -2784, 1237, -2784, -2784, -2784, 166, 1248, -2784, 1716, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 1254, -2784, - 4176, 1199, -2784, -2784, 1578, 170, 1595, 224, -2784, 1617, - 1473, 16317, -2784, 1427, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -62, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, 670, -2784, -2784, 34541, -2784, -2784, 61280, 1273, - 1357, -2784, -2784, 16317, 16317, 1275, 1779, 1779, 2891, 51687, - 52169, 1779, 1779, 16317, 46385, -2784, 16317, 20373, 1289, 16317, - 16317, 9219, 16317, 22892, 51687, 2101, 1287, 46385, -2784, 1384, - 1308, 1384, 421, 24341, 1593, 1573, 1515, -2784, 24341, 1515, - 225, 1590, 1515, 1592, 1384, 27716, -2784, 1384, 1314, 1523, - -2784, -2784, 690, -2784, 34541, 16824, 42077, 1781, -2784, 1587, - 56010, 1323, -2784, -2784, -2784, -2784, -2784, -2784, 644, 1821, - 161, 1822, 16317, 161, 161, 1327, 229, 229, -2784, 1328, - -2784, 230, 1329, 1331, 1828, 1830, 158, 510, 161, 16317, - -2784, 229, 1335, 1832, 1338, 1837, 147, 149, -2784, 231, - 16317, 16317, 16317, 1697, 16317, 8712, 1838, 1845, -2784, 46385, - 534, 1349, 743, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, 213, 6179, -2784, -2784, 1385, -2784, -2784, -2784, -2784, - 1555, 16317, -2784, -2784, 1351, 1593, -2784, 232, -2784, -2784, - -2784, 552, 1593, -2784, -2784, -2784, -2784, -2784, 246, 1755, - 33577, 34059, 56010, 534, 58420, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, 711, -2784, 114, 36004, 1353, 1367, 534, 865, - 46385, 46385, 1842, -2784, -2784, -2784, 43975, 125, 1642, 1506, - -2784, -2784, 106, 106, 10233, 88, 258, 85, 11754, 17331, - 1728, 1576, 198, 176, 1731, -2784, 1618, 947, 1013, 16317, - 877, -2784, 1670, 46385, 40179, 901, 903, 1404, 1488, 1408, - 454, 1823, -2784, 1407, -2784, 1492, 46385, 60348, 220, -2784, - 1857, 220, 220, 291, 1858, 1497, 330, 1653, 31, 388, - 1407, 2246, -2784, 43975, 247, 50, 1407, 46385, 1499, 637, - 1407, 56010, 1273, 137, 16824, 811, 1294, 396, 146, 1444, - 1461, 159, 165, 169, 172, 175, 16824, 1480, 1528, 182, - 1537, 1600, 1623, 1638, 1654, 1656, 1658, 1660, 186, 1662, - 1664, 1666, 1669, 1671, 1673, 189, 1676, 196, 1689, 192, - 203, 16824, 1698, 1417, -2784, 36004, -22, -2784, -2784, 1710, - 206, -2784, 31586, 1411, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, 1511, 56010, 1468, 1772, 743, 46385, - 992, 1780, 1840, 42544, -2784, 46385, 1667, 2246, 1668, 1440, - 1906, 1675, 1077, 1677, 1447, -2784, 58902, 56010, 56010, 37287, - 1442, -2784, -2784, -2784, -2784, -2784, -2784, -2784, 1449, -2784, - -2784, 16317, -2784, -2784, -2784, 1779, -2784, 42077, 42077, 1246, - 1246, -2784, -2784, 1915, 1539, 1542, 1779, -2784, 1779, -2784, - 56010, -2784, -2784, 42077, -2784, 56010, 1460, 1465, 1779, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, 1779, 1547, -2784, 1548, 1550, - 1556, -2784, -2784, -2784, -2784, -2784, 56010, -2784, 46385, 46385, - -2784, 46385, 56010, 1458, 994, 61280, 39215, -2784, -2784, -2784, - -2784, 907, 1003, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, 37287, -2784, 1983, 743, 35082, 1471, 16317, 1477, - 1481, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - 1482, 1805, -2784, -2784, -2784, 1484, 1487, 5885, 1495, 35118, - 1500, 20373, 20373, 338, -2784, -2784, 20373, 1503, 38251, 35033, - 1485, 1507, 35163, 12261, 16317, 12261, 12261, 35574, -2784, 1512, - 35653, 51687, 1505, 45421, -2784, -2784, 46385, -2784, 11247, 11247, - 2101, 45903, 1522, 24341, -2784, -2784, 1043, -2784, 24341, 1796, - 24341, -2784, 24341, -2784, 46385, 1518, -2784, 46385, -2784, -2784, - -2784, -2784, 1516, 724, -2784, 748, 1749, -2784, -2784, 16317, - 16317, -2784, 36004, 1566, 143, -2784, 36328, 30129, 12768, 36328, - 2012, 2012, 28198, -2784, 1681, 35698, -2784, 1530, 1493, 6734, - 1526, -2784, -2784, -2784, -2784, 1529, 1527, 1525, 534, 16317, - -2784, 16317, 4193, 4193, -2784, 212, 42077, 16317, 16317, 16317, - 16317, 16317, 16317, 16317, 36805, 1622, 183, 56010, 16317, 16317, - 1532, 697, -2784, 16317, 1762, -2784, 1544, 16317, 1630, 685, - 16317, 16317, 16317, 16317, 16317, 16317, 16317, 16317, 16317, -2784, - -2784, 22401, 218, 534, 1869, 1888, -37, 853, 11247, 1880, - 8205, -2784, 534, 32131, 152, 1880, -2784, -2784, -2784, -2784, - 233, -2784, -2784, -2784, -2784, 1516, -2784, 1516, -2784, 56010, - -2784, 46385, 265, 43011, 16317, -2784, -2784, 1553, 1551, 1554, - 1609, -2784, -2784, 46385, 28680, 1844, -2784, 733, 733, 1560, - -2784, 35020, 1797, 1844, 106, -2784, -2784, 20880, 1686, 1846, - 1773, -2784, -2784, 1769, 1774, -2784, 1581, 36192, 17838, 17838, - -2784, 1368, 36004, 1377, -2784, -2784, -2784, -2784, -2784, -2784, - 56, -2784, 46385, 46, 1728, 176, 1585, -2784, -2784, 1192, - 1588, 59384, 46385, 1873, 1829, 1878, -83, -2784, -2784, -2784, - 42077, -2784, 46385, 56010, 54579, 59866, 37769, 46385, 37287, -2784, - -2784, -2784, -2784, 46385, 1288, 46385, 5809, -2784, -2784, -2784, - 220, -2784, -2784, -2784, -2784, -2784, 56010, 46385, -2784, -2784, - 220, 56010, 46385, 220, -2784, 1286, 46385, 46385, 46385, 46385, - 1348, 46385, 46385, -2784, -2784, 2, 2, 1810, -2784, 13275, - 124, -2784, 16317, 16317, -2784, 16317, 1782, -2784, 753, -2784, - 1820, 112, 46385, -2784, 1936, 1655, 46385, 46385, 46385, 46385, - 2102, -2784, -2784, -2784, -2784, -2784, 1610, -2784, 1612, 1968, - -2784, 2246, 1969, 40661, 906, 1474, 1970, 1663, 1973, 13782, - 2091, 1861, -2784, -2784, 1848, 1159, -2784, -2784, 37287, 16317, - 1635, 1636, 166, 757, -2784, -2784, 1640, 1465, 1657, 1659, - 1643, 1644, 759, 42077, -2784, 761, 1779, 181, 1645, 1646, - 1483, 1700, 784, 1373, 170, 224, -2784, 1853, 214, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, 771, 23859, -2784, - -2784, 2104, 743, 2104, 729, -2784, -2784, 2104, -2784, 2093, - 2104, -2784, 1273, 42077, -2784, 6797, -2784, -2784, -2784, 16317, - -2784, -2784, 16317, -2784, 16317, 1980, -2784, 2143, 2143, 42077, - 20373, 20373, 20373, 20373, 20373, 274, 1335, 20373, 20373, 20373, - 20373, 20373, 20373, 20373, 20373, 20373, 21387, 456, -2784, -2784, - 826, 2117, 16317, 16317, 1991, 1980, 16317, -2784, 42077, 1665, - -2784, 1672, 1678, 16317, -2784, 42077, -2784, 46385, 1, -42, - 1680, 1682, -2784, -2784, 1683, 1593, -2784, 981, 1011, 46385, - 3330, 3596, 5352, -2784, -2784, 16317, 1978, -2784, 16317, 1685, - -2784, -2784, 24341, -2784, 1043, 862, -2784, 42077, 46385, 881, - 42077, 34541, -2784, 16824, -2784, 42077, -2784, -2784, -2784, -2784, - -2784, 1688, 1703, 16317, 133, -2784, 1697, 1702, -2784, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 1705, 1679, -2784, 1706, 46385, -2784, 18345, - -2784, 56010, -2784, -2784, 16317, 46385, -2784, 16317, 1707, 6968, - -2784, -2784, -2784, 1014, 36310, 853, 3360, 3360, 3360, 36328, - -2784, -2784, -2784, 1715, -2784, 20373, 20373, -2784, 3711, 4077, - 8712, -2784, -2784, 1988, -2784, 879, -2784, 1713, -2784, -2784, - 4265, -2784, 30129, 4728, 16317, 202, -2784, 16317, 1532, 16317, - 1742, 3360, 3360, 3360, 448, 448, 254, 254, 254, 1014, - 853, -2784, -2784, -2784, 1725, -2784, 1730, 1736, 2008, 1338, - 16317, -2784, -2784, 24341, 1522, -22, 1697, 1522, 1779, 4193, - -2784, 877, -2784, -2784, -2784, 36004, 46385, -2784, 1749, 24341, - 1704, 770, 2127, 56010, -2784, 1695, 1880, 1726, -2784, -2784, - -2784, 1684, 1684, 16317, 1992, 1684, -2784, 1844, 14, 1881, - 1153, 1153, 1368, 1884, -2784, -2784, 1733, -2784, -2784, -2784, - 16317, 9726, 1393, -2784, 1399, -2784, -2784, -2784, -2784, 1724, - -2784, -2784, 1989, -2784, -2784, -2784, -2784, 1825, 1407, 16317, - 1967, -2784, 249, 1740, 2092, -74, 2046, 56010, -2784, 328, - 358, -2784, 821, 2095, 214, 2096, 214, 37287, 37287, 37287, - 885, -2784, -2784, 743, -2784, -2784, 904, -2784, 433, -2784, - -2784, -2784, 1831, 717, 1407, 2246, -2784, -2784, -2784, -2784, - -2784, -2784, -2784, 256, 876, 1407, 1833, -2784, 1834, -2784, - 1836, 884, 1407, -2784, -2784, 124, 124, 124, 16824, -2784, - 1977, 1979, 1759, 36004, 36004, 36004, 1764, -2784, 363, -2784, - 56010, -2784, -2784, -2784, 1782, 2094, 743, 46385, 1761, 2229, - 1077, 1447, -2784, 1926, 934, 122, -2784, 56010, 46385, 46385, - 46385, -2784, -2784, -2784, 1770, 1777, -2784, 41143, -19, 1990, - 1987, 46385, 1814, 46385, 1408, 2240, 46385, -2784, 924, 14289, - 2134, 46385, -2784, 1785, -2784, -2784, -2784, -2784, 1779, -2784, - -2784, 447, 447, -2784, 56010, -2784, -2784, 1788, -2784, 1798, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, 56010, -2784, -2784, 37287, -2784, 38733, -2784, -2784, -2784, - -2784, 743, -2784, 743, 2019, 56010, 32613, 743, 33095, 743, - -2784, 1795, -2784, 36004, 30619, 36004, 1991, -2784, 2143, 1699, - 1699, 1699, 4704, 2133, 240, 1804, 1699, 1699, 1699, 489, - 489, 132, 132, 132, 2143, 456, 738, 38251, 1807, -2784, - 36004, 36004, -2784, -2784, 1808, -2784, -2784, -2784, -2784, 1812, - 1813, -2784, -2784, -2784, -2784, -2784, 56010, 1160, -2784, 1522, - 13, 13, 13, 13, -2784, 46385, 46385, 46385, 36004, 2250, - 2135, 36004, 46385, -2784, -2784, -2784, 46385, 2242, 926, -2784, - -2784, -2784, -2784, -2784, 35817, 16317, -2784, 2177, 1681, -2784, - -2784, 30129, -2784, 1819, 8712, 35942, -2784, 2125, 30648, -2784, - 36004, -2784, 4193, 16317, 271, 2438, 16317, 1824, 16317, 2156, - -2784, -2784, 1827, -2784, -2784, 42077, 16317, 1835, 4902, 20373, - 20373, 5085, -2784, 7072, 16317, 8712, -2784, 1810, 14796, -2784, - 2034, 1839, -2784, 1978, 124, 1681, 1978, 1843, -2784, -2784, - 1847, -2784, 16317, 1981, 1886, -23, 26751, 2051, -2784, 56010, - 951, -2784, 28680, 1704, 16317, 534, 612, -2784, -2784, -2784, - 1850, -2784, 1684, -2784, -2784, -2784, 2053, -2784, -2784, -2784, - 46385, -2784, 46385, 30684, 2187, -2784, 56010, 56010, 56010, -2784, - 56010, 1841, 1856, 718, 1851, 844, -2784, 2255, 718, 2172, - 234, 1408, 330, 4861, 508, -2784, -2784, -2784, 1930, 46385, - -2784, 56010, -2784, -2784, -2784, -2784, -2784, 37769, -2784, -2784, - -2784, 37287, 29646, 37287, 46385, 46385, 46385, 46385, 46385, 46385, - 46385, 46385, 46385, 46385, 1860, 1862, 1863, 1810, -2784, -2784, - -2784, -2784, -2784, -2784, 388, -2784, -2784, 363, 743, -2784, - 1854, 40661, 797, 1663, 2322, 1840, 994, 55061, 1866, 1865, - -2784, 968, 2246, 1872, 2325, -2784, 906, 40661, -2784, -2784, - -2784, 2294, -2784, 567, 238, -2784, 1077, -2784, 797, 1447, - -2784, 797, 36004, 56010, 1933, -2784, 1465, 1885, -2784, -2784, - 1465, 42077, 1465, -2784, -2784, 214, -2784, 979, -2784, -2784, - -2784, -2784, 56010, 1875, -2784, 1875, -2784, -2784, 1875, -2784, - -2784, -2784, -2784, 20373, 2210, 1883, 42077, -2784, -2784, 46385, - -2784, -2784, -2784, 985, 1887, 1978, 46385, 46385, 46385, 46385, - -2784, -2784, -2784, 10740, 16317, 1924, 1890, -2784, 56010, -2784, - -2784, 16317, 36004, -2784, 1891, -2784, -2784, 6116, -2784, 1892, - 1894, 56010, 16317, -2784, -2784, 365, 16317, 16317, 3711, -2784, - 6715, 16317, 42077, 993, 3711, 276, 16317, 3648, 4104, 16317, - 16317, 7087, 30713, 1897, 16317, 30963, 29162, -2784, 24341, 2135, - 1898, -2784, 2135, 743, -2784, 36004, 11247, -2784, -2784, -2784, - -2784, 1942, -2784, 1005, -2784, 2315, 1981, -2784, 1912, 56010, - -2784, 1981, 36004, -2784, -2784, 30129, -2784, -2784, -2784, -2784, - -2784, 56010, 1902, -2784, 1905, 718, -2784, 56010, 1945, -2784, - 627, 2207, 139, -2784, 16317, -2784, 2293, 2373, 2255, 1911, - 56010, 46385, 20373, -2784, 654, 235, -2784, 2189, 46385, 1945, - 2331, -2784, -2784, -2784, 844, -2784, 2226, 2141, -2784, 220, - -2784, 16317, 844, 2144, 261, 56010, -2784, -2784, 1693, -2784, - 42077, 214, 214, -2784, -2784, 1917, 1919, 1920, 1921, 1922, - 1929, 1940, 1944, 1948, 1951, 1957, 1958, 1959, 1960, -2784, - 1961, 1962, 1963, 1966, 1974, 1975, 1976, 1994, 1232, 1995, - -2784, 1996, 1850, 1997, 1998, 1999, 2002, 2003, 55543, 2004, - 2006, 2007, 2009, 1237, 2011, 2014, 907, 1003, -2784, -2784, - -2784, -2784, -2784, -2784, 1189, 2015, -2784, 1993, -2784, -2784, - 2073, -2784, 2074, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, 124, 1273, 177, -2784, 56010, 2023, 1814, 2433, 15303, - -3, 2221, 2010, -2784, 743, 1663, -2784, 40661, 1608, 547, - 1987, -2784, 174, 1814, -2784, 2385, 1663, 2032, 2488, -2784, - 2241, 56010, 2028, -2784, -2784, -2784, -2784, 38733, 1875, 4778, - 20373, 42077, 1006, 1016, -2784, 2521, 2190, 2135, -2784, -2784, - -2784, -2784, -2784, 2030, -52, 2035, -2784, 7698, 2033, -2784, - -2784, -2784, -2784, -2784, -2784, 36004, 36004, 56010, 2211, -2784, - -2784, 36004, -2784, 16317, -2784, -2784, 31615, 2345, 3711, 3711, - 6715, 1024, -2784, 3711, 16317, 16317, 3711, 3711, 16317, -2784, - -2784, 30992, -2784, 60815, -2784, -2784, 1924, 743, 1924, -2784, - 2036, 797, 672, 56010, 534, -24, -2784, 16317, -2784, -2784, - 2040, 718, -2784, 2206, 1945, 2044, -2784, -2784, -2784, -2784, - -2784, -2784, 31028, -2784, 67, 16317, -2784, 809, 4704, -2784, - -2784, -2784, -2784, 1945, 1077, -2784, 46385, 2508, 2396, -2784, - -2784, 36004, -2784, -2784, 1779, 1779, -2784, -2784, 2242, -2784, - -2784, -2784, -2784, 1189, 410, 29646, 46385, 46385, 2048, -2784, - -2784, 388, 2427, 1091, 906, -2784, 797, 797, 36004, 46385, - 2401, 40661, -2784, 2516, 2054, 46385, 1814, 928, 928, -2784, - 2196, -2784, 2198, -2784, -2784, 2520, 279, -2784, 15810, 46385, - -2784, -2784, 25787, -2784, 4778, 1095, -2784, -2784, 2057, 2059, - -2784, 1924, 16317, 2062, 16317, -2784, 18852, 2060, -2784, 2526, - 16317, 2124, -2784, -2784, 16317, -2784, 3711, 3711, 3711, -2784, - 2262, -2784, 2211, -2784, 2211, 11247, -2784, -23, -2784, -2784, - 2482, 25787, 2439, 36004, -2784, 46385, -2784, 37287, -2784, 718, - 382, 2070, 16317, 31271, 2296, -2784, -2784, 2326, -2784, 2386, - -2784, 2136, 528, 2148, -2784, -2784, -2784, -2784, 1273, 743, - 1663, 1987, 2032, -2784, 2077, 46385, 797, 906, 567, -2784, - -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, -2784, - -2784, -2784, 797, 2511, 2291, 2513, 797, 36004, 1933, 16317, - -2784, 1097, 2509, 270, -2784, -2784, 2574, 2211, 2083, 18852, - 2087, -2784, 56010, 2089, 36004, 2230, -2784, 31651, 2537, 1810, - 2124, 2124, 2149, 46385, 1102, 34, 1077, 718, 1142, -2784, - 2106, -2784, -2784, -2784, -2784, 2246, -2784, 31307, 2328, 136, - 2312, 2070, 16317, -2784, 2174, -2784, -2784, -2784, 2563, -2784, - -2784, 40661, 2103, 2032, 1987, 1814, 2032, 2316, -2784, 2317, - -2784, 2107, 31336, 1663, 25787, 56010, 56010, 56010, 2109, 2124, - -2784, 2110, -2784, -2784, -2784, 45421, -2784, 16317, 636, -2784, - -2784, 797, -2784, 1522, -2784, 2236, 2326, -2784, 37287, 29646, - 1743, 382, 2414, -2784, -2784, -2784, -2784, 135, 2334, -2784, - 2337, -2784, 36004, -2784, 797, 40661, -2784, -2784, -2784, -2784, - -2784, -2784, 25787, 2509, 1522, -2784, -2784, 733, -2784, 733, - -2784, -2784, -2784, -2784, 1485, 19359, 19359, 2116, -2784, -2784, - 28680, 2312, -2784, -2784, -2784, -2784, -2784, 492, 492, 2503, - -2784, 2188, -2784, 2032, 1144, 56010, -2784, 1684, 1684, 21894, - 2271, 185, 35069, -2784, -2784, -2784, -2784, 1522, -2784, -2784, - 2606, -2784, 244, -2784, -2784, -2784, 1663, 733, -2784, -2784, - 2598, -2784, -2784, -2784, -2784, -2784, -2784, 718, -2784, -2784, - -2784, 1522, 1684, 19866, -2784, -2784, -2784 -}; - -/* YYPGOTO[NTERM-NUM]. */ + 5202, 397, 691, -2803, -2803, 266, 397, 40648, 56494, 397, + 75, 855, 43977, -2803, 295, 7226, 397, 46869, 61281, 328, + 315, 25127, 422, 47351, 47351, 56494, 46869, 47833, 397, 294, + 56976, -2803, 397, 27537, 44459, -76, 46869, 65, -131, 48315, + 46869, 1201, 382, 133, -2803, -2803, -2803, -2803, -2803, 136, + -2803, 123, 141, 52, 70, -2803, -2803, -2803, -2803, 27055, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 252, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, 169, -2803, -2803, -2803, -2803, 48797, 46869, 49279, 44941, + 49761, -2803, 625, -2803, 152, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, 178, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, 192, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, 195, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 237, -137, + -2803, 207, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, 1201, 46869, -2803, 50243, 742, 765, 477, + 50725, -2803, -2803, 46869, -2803, -2803, -2803, 950, 650, 673, + -2803, -2803, 45423, -2803, -2803, -2803, 704, 961, 749, -2803, + -2803, -2803, 601, -2803, 155, -2803, -2803, 628, 615, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, 715, -2803, 42094, + -2803, 57458, 51207, 51689, -2803, 587, 1652, 32323, 25609, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, 252, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, 47351, 56494, 47351, 604, 631, 960, 209, 210, 213, + 220, 647, 671, 221, 685, 26091, 693, 719, 736, 28020, + 751, 757, 1092, 224, 768, 786, 806, 811, 235, -131, + 24160, 52171, 52171, 32, 1769, -2803, 52171, 52653, -2803, 837, + -2803, 854, -137, -2803, 625, -2803, -2803, -2803, -2803, 525, + 851, -2803, 872, 1142, -2803, -2803, -2803, 866, -2803, -2803, + 1133, 11565, 11565, 57940, 57940, 625, 57940, 926, 57, -2803, + -2803, -2803, -2803, 52, -2803, 883, -2803, -137, -2803, 44459, + -2803, -2803, 274, 1255, 16635, 46869, 930, -2803, 944, 930, + 953, 977, -2803, 5202, 362, 362, 1407, 362, 720, 867, + -2803, 753, -2803, 980, -2803, 1002, 1273, -2803, 883, -2803, + 46869, 1325, 1216, 44459, 1361, 955, 1187, 1380, 5371, 1382, + 962, 1391, 1034, 1509, 8523, 16635, 38238, -2803, -137, 1068, + 1053, 1302, 1418, -2803, -2803, -2803, -2803, 770, 1306, -2803, + 1555, -2803, -2803, 1141, 53135, 53617, 54099, 54581, 46869, 1530, + -2803, -2803, 1469, -2803, -2803, -2803, 1157, -2803, -2803, -2803, + 263, -2803, -2803, -2803, -2803, 1174, -2803, 1174, 1174, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 1131, 1131, + 1318, 1139, -2803, -2803, -2803, 1492, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, 1145, 981, -2803, 1174, + -2803, 1131, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 60350, + -2803, -2803, -2803, -2803, 505, 574, -2803, 1156, -2803, -2803, + -2803, 1160, -2803, 1628, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, 1180, -2803, 3095, 1131, 164, -2803, -2803, 1532, + 1184, -2803, 198, 1542, 199, -2803, 1544, 1411, 16635, -2803, + 1354, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -131, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 276, + -2803, -2803, 35262, -2803, -2803, 32323, 1199, 1285, -2803, -2803, + 16635, 16635, 1206, 1699, 1699, 4043, 52171, 52653, 1699, 1699, + 16635, 46869, -2803, 16635, 20691, 1208, 16635, 16635, 9537, 16635, + 23678, 52171, 1769, 1210, 46869, -2803, 1314, 1223, 1314, 294, + 25127, 1512, 1504, 1435, -2803, 25127, 1435, 205, 1511, 1435, + 1513, 1314, 28502, -2803, 1314, 1235, 1440, -2803, -2803, 756, + -2803, 35262, 17142, 42561, 1702, -2803, 1516, 56494, 1236, -2803, + -2803, -2803, -2803, -2803, -2803, 780, 1741, 149, 1749, 16635, + 149, 149, 1257, 241, 241, -2803, 1258, -2803, 243, 1259, + 1261, 1751, 1759, 159, 981, 149, 16635, -2803, 241, 1266, + 1764, 1270, 1767, 127, 135, -2803, 244, 16635, 16635, 16635, + 1626, 16635, 9030, 1770, 1773, -2803, 46869, -137, 1272, 625, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 162, 5607, + -2803, -2803, 1316, -2803, -2803, -2803, -2803, 1483, 16635, -2803, + -2803, 1277, 1512, -2803, 245, -2803, -2803, -2803, 455, 1512, + -2803, -2803, -2803, -2803, -2803, 280, 1684, 34298, 34780, 56494, + -137, 58422, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 516, + -2803, 252, 36725, 1284, 1289, -137, 930, 46869, 46869, 1748, + -2803, -2803, -2803, -2803, -2803, 52, 52, 10551, 86, 568, + 50, 12072, 17649, 1631, 1508, 658, 717, 1634, -2803, 1519, + 720, 867, 16635, -2803, 1561, 944, 44459, 234, 1578, 1429, + 46869, 41130, 939, 942, 1310, 1389, 1313, 447, 1725, -2803, + 1319, -2803, 1397, 46869, 60350, 258, -2803, 1762, 258, 258, + 190, 1766, 1402, 126, 1560, 533, -103, 1739, -2803, 1319, + 44459, 202, 579, 1319, 46869, 1408, 706, 1319, 56494, 1199, + 145, 17142, 1099, 1198, 344, 124, 1281, 1323, 148, 165, + 175, 177, 179, 17142, 1427, 1464, 181, 1470, 1476, 1498, + 1526, 1528, 1552, 1587, 1591, 191, 1593, 1596, 1617, 1625, + 1629, 1635, 194, 1641, 196, 1646, 189, 206, 17142, 1653, + 1326, -2803, 36725, -5, -2803, -2803, 1657, 208, -2803, 2039, + 1320, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, 1412, 56494, 1362, 1685, 625, 46869, 983, 1686, 1745, + 43028, 46869, 1564, 1739, 1569, 1342, 1806, 1573, 1053, 1574, + 1348, -2803, -2803, 58904, 1847, -2803, -2803, -2803, -2803, -2803, + -2803, 1353, -2803, -2803, 16635, -2803, -2803, -2803, 1699, -2803, + 42561, 42561, 1174, 1174, -2803, -2803, 1818, 1441, 1448, 1699, + -2803, 1699, -2803, 56494, 56494, 1357, 1377, 1699, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, 1699, 1459, -2803, 1460, 1461, 1462, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, 42561, -2803, 56494, + 38238, 1381, 56494, -2803, 46869, 46869, -2803, 46869, 56494, 1384, + 78, 32323, 40166, -2803, -2803, -2803, -2803, 970, 1063, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 38238, -2803, + 2703, 625, 35803, 1387, 16635, 1394, 1396, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, 1399, 1722, -2803, -2803, + -2803, 1401, 1403, 4500, 1405, 35839, 1410, 20691, 20691, 1123, + -2803, -2803, 20691, 1413, 39202, 35754, 1415, 1414, 35884, 12579, + 16635, 12579, 12579, 36295, -2803, 1416, 36374, 52171, 1398, 45905, + -2803, -2803, 46869, -2803, 11565, 11565, 1769, 46387, 1444, 25127, + -2803, -2803, 1479, -2803, 25127, 1691, 25127, -2803, 25127, -2803, + 46869, 1422, -2803, 46869, -2803, -2803, -2803, -2803, 1420, 605, + -2803, 616, 812, -2803, -2803, 16635, 16635, -2803, 36725, 1468, + 147, -2803, 37154, 30915, 13086, 37154, 1917, 1917, 28984, -2803, + 1586, 36419, -2803, 1436, 1604, 6439, 1430, -2803, -2803, -2803, + -2803, 1434, 1433, 1437, -137, 16635, -2803, 16635, 2224, 2224, + -2803, 265, 42561, 16635, 16635, 16635, 16635, 16635, 16635, 16635, + 37756, 1524, 174, 56494, 16635, 16635, 1446, 1233, -2803, 16635, + 1672, -2803, 1450, 16635, 1534, 682, 16635, 16635, 16635, 16635, + 16635, 16635, 16635, 16635, 16635, -2803, -2803, 22719, 277, -137, + 1775, 1788, -40, 260, 11565, 1785, 8523, -2803, -137, 32852, + 171, 1785, -2803, -2803, -2803, 247, -2803, -2803, -2803, -2803, + -2803, 1420, -2803, 1420, -2803, 56494, -2803, 46869, 274, 43495, + 16635, -2803, -2803, 1453, 1457, 1463, 1746, -2803, 329, 329, + 1455, -2803, 35741, 1700, 1746, 52, -2803, -2803, 21198, 1585, + 1753, 1681, -2803, -2803, 1663, 1669, -2803, 1474, 36913, 18156, + 18156, -2803, 1315, 36725, 1317, -2803, -2803, -2803, -2803, -2803, + -2803, 72, -2803, 46869, 166, 1631, 717, 1478, -2803, -2803, + 1538, -2803, -2803, 46869, 29466, 1052, 1481, 59386, 46869, 1760, + 1711, 1761, -93, 42561, -2803, -2803, -2803, -2803, 46869, 56494, + 55063, 59868, 38720, 46869, 38238, -2803, -2803, -2803, -2803, 46869, + 478, 46869, 6624, -2803, -2803, -2803, 258, -2803, -2803, -2803, + -2803, -2803, 56494, 46869, -2803, -2803, 258, 56494, 46869, 258, + -2803, 1245, 46869, 46869, 46869, 46869, 1286, 46869, 46869, -2803, + -2803, 16, 16, 1693, -2803, 13593, 226, -2803, 16635, 16635, + -2803, 16635, 1662, -2803, -2803, 635, 1705, 90, 46869, -2803, + 1822, 1541, 46869, 46869, 46869, 46869, 1733, -2803, -2803, -2803, + -2803, -2803, 1497, -2803, 1501, 1851, 1739, -2803, 1854, 41612, + 823, 840, 1855, 1547, 1860, 14100, 1976, 1747, -2803, -2803, + 1735, -2803, 16635, 1521, 1529, 164, 657, -2803, -2803, 1527, + 1377, 1546, 1548, 1531, 1551, 683, 42561, 697, 1699, 139, + 1558, 1559, 1417, 1449, 98, 1312, -2803, 198, -2803, 38238, + -2803, 199, -2803, 1756, 183, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, 699, 24645, -2803, -2803, 1996, 625, 1996, + 577, -2803, -2803, 1996, -2803, 1988, 1996, -2803, 1199, 42561, + -2803, 6946, -2803, -2803, -2803, 16635, -2803, -2803, 16635, -2803, + 16635, 1875, -2803, 2037, 2037, 42561, 20691, 20691, 20691, 20691, + 20691, 182, 1266, 20691, 20691, 20691, 20691, 20691, 20691, 20691, + 20691, 20691, 21705, 271, -2803, -2803, 729, 2011, 16635, 16635, + 1898, 1875, 16635, -2803, 42561, 1566, -2803, 1568, 1570, 16635, + -2803, 42561, -2803, 46869, 35, 10, 1572, 1575, -2803, -2803, + 1582, 1512, -2803, 895, 1036, 46869, 3784, 4673, 5580, -2803, + -2803, 16635, 1895, -2803, 16635, 1576, -2803, -2803, 25127, -2803, + 1479, 760, -2803, 42561, 46869, 769, 42561, 35262, -2803, 17142, + -2803, 42561, -2803, -2803, -2803, -2803, -2803, 1583, 1592, 16635, + 212, -2803, 1626, 1595, -2803, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 1598, + 1590, -2803, 1599, 46869, -2803, 18663, -2803, 56494, -2803, -2803, + 16635, 46869, -2803, 16635, 1600, 7177, -2803, -2803, -2803, 846, + 37031, 260, 6099, 6099, 6099, 37154, -2803, -2803, -2803, 1614, + -2803, 20691, 20691, -2803, 3545, 3022, 9030, -2803, -2803, 1933, + -2803, 1466, -2803, 1608, -2803, -2803, 3835, -2803, 30915, 37049, + 16635, 203, -2803, 16635, 1446, 16635, 1687, 6099, 6099, 6099, + 332, 332, 261, 261, 261, 846, 260, -2803, -2803, -2803, + 1610, -2803, 1611, 1615, 1960, 1270, 16635, -2803, -2803, 25127, + 1444, -5, 1626, 1444, 1699, 2224, -2803, 944, -2803, -2803, + -2803, 36725, 46869, -2803, 812, -2803, -2803, 1632, 1632, 16635, + 2447, 1632, -2803, 1746, 12, 1829, 1085, 1085, 1315, 1831, + -2803, -2803, 1682, -2803, -2803, -2803, 16635, 10044, 1324, -2803, + 1331, -2803, -2803, -2803, -2803, 1619, -2803, -2803, 1882, -2803, + -2803, -2803, -2803, 25127, 1671, 2091, 828, 56494, -2803, -2803, + 1630, 1785, 1644, 1718, 1319, 16635, 1867, -2803, 129, 1639, + 1989, 97, 1943, 56494, -2803, 283, 292, -2803, 901, 1997, + 183, 2000, 183, 38238, 38238, 38238, -2803, -2803, 625, 778, + -2803, -2803, 415, 799, -2803, -2803, -2803, -2803, 1730, 722, + 1739, 1319, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 240, + 723, 1319, 1743, -2803, 1754, -2803, 1755, 741, 1319, -2803, + -2803, 226, 226, 226, 17142, -2803, 1880, 1886, 1673, 36725, + 36725, 36725, 1674, -2803, 222, -2803, 56494, -2803, -2803, -2803, + 1662, 2005, 625, 46869, 1677, 2141, 1053, 1348, -2803, 1835, + 842, 134, -2803, 56494, 46869, 46869, 46869, 23210, -2803, -2803, + -2803, 1679, 1678, -2803, 14, 1899, 1900, 46869, 1723, 46869, + 1313, 2147, 46869, -2803, 817, 14607, 2036, 46869, 1688, -2803, + -2803, -2803, -2803, 1699, -2803, -2803, 272, 272, -2803, 56494, + -2803, -2803, 1692, -2803, 1695, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, 56494, -2803, -2803, + 38238, -2803, 39684, -2803, -2803, -2803, -2803, 625, -2803, 625, + 1914, 56494, 33334, 625, 33816, 625, -2803, 1694, -2803, 36725, + 7502, 36725, 1898, -2803, 2037, 2009, 2009, 2009, 2289, 2022, + 262, 1696, 2009, 2009, 2009, 338, 338, 170, 170, 170, + 2037, 271, 837, 39202, 1697, -2803, 36725, 36725, -2803, -2803, + 1701, -2803, -2803, -2803, -2803, 1703, 1706, -2803, -2803, -2803, + -2803, -2803, 56494, 1091, -2803, 1444, -76, -76, -76, -76, + -2803, 46869, 46869, 46869, 36725, 2143, 2017, 36725, 46869, -2803, + -2803, -2803, 46869, 2127, 844, -2803, -2803, -2803, -2803, -2803, + 36538, 16635, -2803, 2064, 1586, -2803, -2803, 30915, -2803, 1709, + 9030, 36663, -2803, 2015, 31405, -2803, 36725, -2803, 2224, 16635, + 1225, 2229, 16635, 1712, 16635, 2042, -2803, -2803, 1716, -2803, + -2803, 42561, 16635, 1714, 4432, 20691, 20691, 4937, -2803, 6063, + 16635, 9030, -2803, 1693, 15114, -2803, 1922, 1717, -2803, 1895, + 226, 1586, 1895, 1719, -2803, -2803, 1721, 375, -2803, -2803, + -2803, 1724, -2803, 1632, -2803, -2803, -2803, 1932, -2803, -2803, + -2803, 46869, -2803, -2803, 16635, 1873, 56494, 1783, 471, 27537, + -2803, 1947, 862, -2803, -137, 29466, 1671, 16635, 46869, 31434, + 2083, -2803, 56494, 56494, 56494, -2803, 56494, 1734, 1736, 227, + 1740, 834, -2803, 1715, 227, 2067, 250, 1313, 126, 3301, + 357, -2803, -2803, -2803, 1814, 46869, -2803, 56494, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, 38720, 30432, 38238, -2803, 38238, + 46869, 46869, 46869, 46869, 46869, 46869, 46869, 46869, 46869, 46869, + 1744, 1750, 1752, 1693, -2803, -2803, -2803, -2803, -2803, -2803, + -103, -2803, -2803, 222, 625, -2803, 1765, 41612, 1201, 1547, + 2212, 1745, 78, 55545, -2803, 1758, 1757, 868, 1739, 1768, + 2213, -2803, 823, 41612, -2803, -2803, -2803, 2175, -2803, 587, + 154, -2803, 1053, -2803, 1201, 1348, -2803, 1201, 36725, 56494, + 1820, -2803, 1377, 1772, -2803, -2803, 1377, 42561, 1377, -2803, + -2803, 183, -2803, 869, -2803, -2803, -2803, -2803, 56494, 1763, + -2803, 1763, -2803, -2803, 1763, -2803, -2803, -2803, -2803, 20691, + 2086, 1774, 42561, -2803, -2803, 46869, -2803, -2803, -2803, 873, + 1776, 1895, 46869, 46869, 46869, 46869, -2803, -2803, -2803, 11058, + 16635, 1799, 1777, -2803, 56494, -2803, -2803, 16635, 36725, -2803, + 1778, -2803, -2803, 6195, -2803, 1779, 1781, 56494, 16635, -2803, + -2803, 809, 16635, 16635, 3545, -2803, 37279, 16635, 42561, 874, + 3545, 286, 16635, 2418, 3680, 16635, 16635, 6320, 31470, 1786, + 16635, 31499, 29948, -2803, 25127, 2017, 1790, -2803, 2017, 625, + -2803, -2803, -2803, 30915, -2803, -2803, -2803, 36725, 11565, -2803, + -2803, -2803, -2803, -2803, 1817, -2803, -2803, 878, 2181, 1873, + 1784, 56494, -2803, 1873, 36725, -2803, -2803, 56494, 1791, -2803, + 1792, 227, -2803, 56494, 1827, -2803, 569, 2075, 111, -2803, + 16635, -2803, 2164, 2247, 1715, 1794, 56494, 46869, 20691, -2803, + 581, 176, -2803, 2078, 46869, 1827, 2220, -2803, -2803, -2803, + 834, -2803, 2116, 2033, -2803, 258, -2803, 16635, 834, 2035, + 278, 56494, -2803, -2803, 2311, -2803, 42561, 183, 183, -2803, + 1810, 1815, 1816, 1819, 1823, 1824, 1826, 1837, 1838, 1839, + 1840, 1842, 1843, 1844, -2803, 1845, 1848, 1853, 1857, 1858, + 1861, 1863, 1866, 1145, 1868, -2803, 1869, 1724, 1870, 1874, + 1877, 1878, 1879, 56027, 1883, 1885, 1889, 1890, 1156, 1892, + 1893, 970, 1063, -2803, -2803, -2803, 1184, -2803, -2803, -2803, + 1894, -2803, 1833, -2803, -2803, -2803, 1907, -2803, 1912, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, 226, 1199, 108, + -2803, 56494, 1832, 1723, 2300, 15621, 444, 2082, 1849, -2803, + 625, 1547, -2803, 41612, 1019, 387, 1900, -2803, 204, 1723, + -2803, 2249, 1547, 1913, 2325, -2803, 2098, 56494, 1888, -2803, + -2803, -2803, -2803, 39684, 1763, 2938, 20691, 42561, 882, 886, + -2803, 2361, 2056, 2017, -2803, -2803, -2803, -2803, -2803, 1902, + 370, 1908, -2803, 8016, 1903, -2803, -2803, -2803, -2803, -2803, + -2803, 36725, 36725, 56494, 2085, -2803, -2803, 36725, -2803, 16635, + -2803, -2803, 32122, 2225, 3545, 3545, 37279, 891, -2803, 3545, + 16635, 16635, 3545, 3545, 16635, -2803, -2803, 31749, -2803, 60817, + -2803, -2803, 1799, 625, 1799, -2803, 1916, 1905, 1201, -137, + 1044, 56494, -33, -2803, 16635, -2803, -2803, 227, -2803, 2077, + 1827, 1915, -2803, -2803, -2803, -2803, -2803, -2803, 31778, -2803, + 71, 16635, -2803, 829, 2289, -2803, -2803, -2803, -2803, 1827, + 1053, -2803, 46869, 2382, 2270, -2803, -2803, 36725, -2803, -2803, + 1699, 1699, -2803, -2803, 2127, -2803, -2803, -2803, -2803, 1184, + 481, 30432, 46869, 46869, 1921, -2803, -2803, -103, 2301, 902, + 823, -2803, 1201, 1201, 36725, 46869, 2272, 41612, -2803, 2389, + 1929, 46869, 1723, 1050, 1050, -2803, 2073, -2803, 2076, -2803, + -2803, 2396, 264, -2803, 16128, 46869, -2803, -2803, 26573, -2803, + 2938, 916, -2803, -2803, 1937, 1939, -2803, 1799, 16635, 1940, + 16635, -2803, 19170, 1941, -2803, 2404, 16635, 2001, -2803, -2803, + 16635, -2803, 3545, 3545, 3545, -2803, 2139, -2803, 2085, -2803, + 2085, -2803, 11565, -2803, 471, -2803, -2803, 2359, 26573, 2316, + 36725, 46869, -2803, 38238, -2803, 227, -86, 1950, 16635, 31814, + 2177, -2803, -2803, 2204, -2803, 2267, -2803, 2014, 540, 2029, + -2803, -2803, -2803, -2803, 1199, 625, 1547, 1900, 1913, -2803, + 1958, 46869, 1201, 823, 587, -2803, -2803, -2803, -2803, -2803, + -2803, -2803, -2803, -2803, -2803, -2803, -2803, -2803, 1201, 2392, + 2173, 2395, 1201, 36725, 1820, 16635, 2398, 74, -2803, 917, + -2803, -2803, 2462, 2085, 1972, 19170, 1973, -2803, 56494, 1981, + 36725, 2122, -2803, 32372, 2431, 1693, 2001, 2001, 2040, 46869, + 922, -8, 1053, 227, 1999, 931, -2803, -2803, -2803, -2803, + -2803, 1739, -2803, 32057, 2221, 140, 2203, 1950, 16635, -2803, + 2063, -2803, -2803, -2803, 2456, -2803, -2803, 41612, 1994, 1913, + 1900, 1723, 1913, 2206, -2803, 2217, -2803, 2010, 32093, 56494, + 56494, 56494, 1547, 26573, 2012, 2001, -2803, 2020, -2803, -2803, + -2803, 45905, -2803, 16635, 42, -2803, -2803, 1201, -2803, 1444, + -2803, 2136, 2204, 30432, -2803, 38238, 826, -86, 2317, -2803, + -2803, -2803, -2803, 125, 2236, -2803, 2238, -2803, 36725, -2803, + 1201, 41612, -2803, -2803, -2803, -2803, -2803, -2803, 26573, 2398, + -2803, -2803, 329, 329, 1444, -2803, -2803, -2803, -2803, -2803, + 1415, 19677, 19677, 2024, -2803, -2803, 29466, 2203, -2803, -2803, + -2803, -2803, -2803, 193, 193, 2408, -2803, 2097, -2803, 1913, + 937, 56494, 1632, 1632, -2803, 22212, 2184, 238, 35790, -2803, + -2803, -2803, -2803, 1444, -2803, -2803, 2519, -2803, 185, -2803, + -2803, -2803, 1547, 329, -2803, -2803, 2511, -2803, -2803, -2803, + -2803, -2803, -2803, 227, -2803, -2803, -2803, 1444, 1632, 20184, + -2803, -2803, -2803 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int16 yydefact[] = +{ + 1329, 1190, 0, 1058, 1057, 995, 1190, 0, 1289, 1190, + 71, 988, 0, 813, 995, 0, 1190, 0, 1329, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1190, 153, + 0, 812, 1190, 0, 0, 145, 0, 1224, 0, 0, + 0, 0, 0, 2, 4, 12, 39, 10, 34, 114, + 101, 158, 113, 1328, 259, 121, 31, 13, 41, 811, + 6, 20, 18, 9, 22, 24, 16, 25, 1016, 23, + 19, 14, 7, 35, 33, 32, 38, 28, 26, 27, + 21, 42, 40, 11, 30, 17, 15, 37, 5, 36, + 29, 0, 8, 1189, 1188, 1182, 0, 0, 0, 0, + 0, 994, 0, 1183, 766, 1363, 1364, 1365, 1366, 1367, + 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, + 1378, 1724, 1379, 1380, 1381, 1670, 1671, 1725, 1672, 1673, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1674, 1675, + 1390, 1391, 1392, 1393, 1394, 1676, 1726, 1677, 1395, 1396, + 1397, 1398, 1399, 1727, 1400, 1401, 1402, 1403, 1404, 1405, + 1406, 1407, 1408, 1728, 1409, 1410, 1411, 1729, 1730, 1731, + 1732, 1733, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1678, + 1679, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, + 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, + 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1680, + 1447, 1448, 1449, 1450, 1451, 1681, 1452, 1453, 1454, 1682, + 1455, 1456, 1457, 1734, 1735, 1458, 1459, 1683, 1737, 1460, + 1461, 1684, 1685, 1462, 1463, 1464, 1465, 1466, 1467, 1468, + 1469, 1738, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, + 1478, 1479, 1480, 1739, 1686, 1481, 1482, 1483, 1484, 1485, + 1687, 1688, 1689, 1486, 1740, 1741, 1487, 1742, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1743, 1495, 1744, 1496, 1497, + 1498, 1499, 1500, 1501, 1502, 1503, 1690, 1504, 1505, 1506, + 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, + 1517, 1518, 1519, 1520, 1521, 1691, 1746, 1692, 1522, 1523, + 1524, 1693, 1525, 1526, 1747, 1527, 1694, 1528, 1695, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1696, 1748, + 1538, 1749, 1697, 1539, 1540, 1541, 1542, 1543, 1544, 1545, + 1546, 1547, 1548, 1549, 1550, 1698, 1750, 1551, 1552, 1699, + 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, + 1563, 1564, 1700, 1565, 1566, 1567, 1568, 1569, 1570, 1571, + 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, + 1582, 1583, 1751, 1584, 1585, 1586, 1701, 1587, 1588, 1589, + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, + 1600, 1601, 1602, 1752, 1603, 1702, 1604, 1605, 1606, 1753, + 1607, 1608, 1703, 1609, 1610, 1611, 1612, 1613, 1614, 1615, + 1616, 1617, 1618, 1619, 1620, 1621, 1704, 1622, 1705, 1623, + 1624, 1625, 1626, 1755, 1627, 1628, 1629, 1630, 1631, 1706, + 1707, 1632, 1633, 1708, 1634, 1709, 1635, 1636, 1710, 1637, + 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, + 1756, 1648, 1649, 1650, 1651, 1652, 1711, 1712, 1653, 1757, + 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, + 1664, 1665, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, + 1721, 1722, 1723, 1666, 1667, 1668, 1669, 100, 0, 0, + 748, 767, 768, 776, 766, 1683, 1690, 1704, 1288, 1287, + 767, 1185, 70, 0, 0, 765, 0, 0, 0, 0, + 0, 982, 981, 0, 1240, 987, 1122, 0, 0, 0, + 770, 850, 1553, 848, 769, 746, 994, 0, 0, 1084, + 1085, 1075, 0, 1094, 0, 1077, 1082, 1078, 0, 1103, + 1096, 1104, 1086, 1076, 1097, 1087, 1074, 0, 1105, 0, + 1080, 0, 0, 0, 1186, 1002, 988, 1329, 0, 1025, + 1046, 1023, 1042, 1039, 1026, 1048, 1021, 1032, 1030, 1035, + 1028, 1011, 1016, 1034, 1031, 1022, 1043, 1041, 1040, 1045, + 1036, 1033, 1049, 1047, 1024, 1038, 1029, 1027, 1020, 1044, + 1037, 0, 1289, 0, 0, 1676, 1726, 563, 550, 559, + 564, 551, 553, 560, 1681, 0, 555, 557, 1694, 0, + 1697, 1698, 1587, 561, 1705, 1708, 1709, 1710, 562, 1711, + 0, 287, 0, 116, 263, 273, 287, 292, 547, 313, + 548, 301, 769, 740, 0, 1293, 1294, 1291, 1290, 794, + 1208, 96, 1706, 1632, 97, 94, 814, 95, 1187, 152, + 150, 0, 716, 1460, 1498, 1591, 1602, 1706, 0, 1263, + 1267, 1184, 805, 0, 816, 806, 122, 769, 144, 0, + 1309, 1223, 0, 1228, 0, 1567, 127, 130, 785, 128, + 114, 0, 1, 1329, 148, 148, 0, 148, 0, 106, + 114, 109, 113, 260, 810, 1706, 1632, 804, 807, 1015, + 1361, 0, 1335, 0, 1468, 0, 0, 1468, 0, 1468, + 0, 1468, 0, 997, 0, 708, 0, 709, 749, 0, + 953, 1468, 1115, 986, 985, 984, 983, 988, 1468, 1006, + 0, 1305, 1306, 0, 0, 0, 0, 0, 0, 1235, + 851, 849, 0, 992, 1092, 1093, 0, 1083, 1079, 1081, + 0, 777, 1758, 356, 1759, 385, 363, 385, 385, 1760, + 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 352, 352, + 1434, 365, 1769, 1770, 1771, 1468, 1772, 1773, 353, 354, + 390, 1774, 1775, 1776, 1777, 1778, 0, 0, 1779, 385, + 1780, 352, 1781, 1782, 1783, 357, 1784, 323, 1785, 0, + 1786, 355, 324, 1787, 393, 393, 1788, 0, 1789, 380, + 1790, 0, 1106, 338, 339, 340, 341, 366, 367, 342, + 372, 373, 377, 343, 425, 352, 1102, 778, 779, 1468, + 780, 1098, 1102, 1468, 1102, 742, 1468, 0, 0, 998, + 0, 1013, 1050, 1791, 1792, 1793, 1794, 1795, 1796, 1798, + 1797, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, + 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, + 1818, 1819, 1820, 1821, 1822, 1825, 1823, 1824, 1826, 1827, + 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, + 1838, 1840, 1839, 1841, 1842, 1843, 1844, 1845, 1846, 1847, + 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, + 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, + 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1064, 0, + 1065, 1055, 1019, 1051, 1052, 1329, 69, 0, 1286, 1292, + 0, 0, 0, 0, 0, 665, 287, 292, 0, 0, + 0, 0, 303, 0, 680, 0, 686, 0, 0, 0, + 287, 121, 0, 273, 0, 286, 200, 285, 200, 153, + 0, 134, 0, 298, 296, 0, 298, 0, 0, 298, + 0, 200, 0, 288, 200, 285, 0, 305, 302, 741, + 1244, 0, 0, 0, 0, 98, 0, 0, 0, 751, + 753, 754, 637, 764, 534, 0, 1671, 1672, 1673, 701, + 1674, 1675, 1677, 1678, 1679, 491, 1680, 762, 1682, 1684, + 1685, 1687, 1688, 1689, 1691, 1692, 0, 763, 1695, 1534, + 1700, 1701, 1703, 1706, 1707, 761, 1712, 0, 0, 0, + 729, 656, 0, 0, 0, 533, 0, 529, 0, 0, + 346, 347, 368, 369, 348, 374, 375, 349, 0, 723, + 426, 711, 581, 537, 546, 525, 612, 523, 0, 528, + 518, 719, 134, 717, 0, 519, 750, 711, 702, 134, + 715, 1266, 1264, 1270, 1265, 0, 0, 0, 0, 0, + 741, 1247, 1246, 1222, 1220, 1221, 1219, 1218, 1225, 0, + 1227, 1016, 651, 653, 0, 702, 129, 0, 0, 0, + 104, 103, 3, 146, 147, 0, 0, 0, 0, 0, + 0, 0, 0, 244, 174, 175, 177, 241, 245, 253, + 0, 110, 0, 808, 0, 785, 0, 0, 0, 0, + 0, 0, 1205, 1205, 0, 0, 0, 0, 0, 1176, + 1125, 1169, 0, 0, 0, 0, 831, 844, 0, 0, + 0, 0, 0, 841, 0, 0, 824, 818, 820, 1127, + 0, 1205, 0, 1123, 0, 0, 0, 1129, 0, 69, + 766, 0, 1724, 1725, 1726, 1677, 1727, 1728, 563, 550, + 559, 564, 560, 0, 1734, 1735, 1683, 1737, 1738, 1739, + 1740, 1741, 1742, 1743, 1744, 1690, 1746, 1747, 1748, 1749, + 1750, 1751, 561, 1753, 1704, 1755, 1710, 562, 0, 1757, + 0, 538, 659, 158, 657, 786, 0, 767, 773, 707, + 0, 787, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, + 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, + 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, + 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, + 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1862, + 1979, 1980, 1981, 1982, 1983, 704, 747, 789, 788, 790, + 710, 0, 0, 67, 0, 0, 0, 0, 0, 1003, + 0, 0, 1468, 1298, 1468, 953, 0, 1468, 953, 1468, + 0, 1116, 1234, 1237, 0, 1095, 1091, 1089, 1088, 1090, + 384, 371, 379, 378, 656, 361, 360, 359, 0, 358, + 0, 0, 385, 385, 383, 362, 338, 0, 0, 0, + 389, 0, 387, 0, 0, 331, 327, 0, 398, 399, + 400, 401, 408, 409, 406, 407, 402, 403, 396, 397, + 404, 405, 394, 395, 0, 410, 411, 412, 413, 414, + 415, 416, 417, 344, 350, 1100, 1101, 0, 1072, 0, + 0, 781, 0, 1067, 0, 0, 1069, 0, 0, 0, + 988, 1329, 0, 825, 1060, 1061, 1059, 0, 0, 845, + 1054, 1018, 828, 1063, 1053, 1062, 1017, 1012, 0, 1242, + 58, 0, 0, 0, 0, 0, 0, 666, 667, 668, + 669, 670, 671, 672, 673, 674, 0, 0, 675, 272, + 270, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 494, 523, 0, 0, 0, 651, 685, 0, 0, 0, + 0, 0, 0, 651, 691, 0, 0, 275, 283, 193, + 199, 271, 0, 269, 0, 716, 264, 0, 315, 0, + 297, 293, 0, 294, 0, 0, 0, 295, 0, 267, + 0, 283, 268, 0, 312, 1276, 1275, 1284, 795, 0, + 662, 0, 1329, 99, 815, 0, 656, 526, 700, 0, + 0, 531, 450, 0, 0, 451, 430, 431, 0, 728, + 737, 651, 655, 0, 529, 651, 0, 520, 793, 522, + 615, 617, 0, 0, 530, 0, 757, 0, 425, 425, + 722, 637, 0, 630, 0, 0, 634, 635, 636, 0, + 0, 0, 714, 0, 645, 647, 0, 0, 466, 643, + 0, 469, 0, 0, 0, 0, 631, 632, 633, 624, + 625, 626, 627, 628, 629, 641, 623, 447, 0, 521, + 0, 584, 0, 446, 720, 262, 0, 755, 752, 0, + 703, 262, 1278, 1282, 1283, 0, 1277, 1281, 1269, 1268, + 1273, 1271, 1274, 1272, 817, 0, 1248, 1216, 0, 1213, + 654, 257, 131, 744, 0, 0, 126, 125, 168, 168, + 159, 162, 168, 0, 124, 0, 216, 217, 0, 0, + 0, 0, 250, 248, 751, 764, 204, 178, 203, 0, + 0, 182, 0, 208, 426, 243, 108, 172, 173, 176, + 107, 0, 246, 0, 256, 244, 177, 0, 809, 1362, + 1253, 1334, 1333, 0, 0, 0, 0, 0, 0, 0, + 1468, 0, 0, 326, 1160, 1141, 905, 1204, 0, 0, + 0, 0, 0, 0, 0, 1168, 1165, 1166, 1167, 0, + 0, 0, 0, 829, 830, 843, 0, 834, 835, 832, + 836, 837, 0, 0, 822, 823, 0, 0, 0, 0, + 821, 0, 0, 0, 0, 0, 0, 0, 0, 996, + 991, 158, 158, 158, 544, 0, 156, 157, 0, 0, + 705, 708, 57, 951, 961, 0, 0, 0, 0, 1119, + 1118, 0, 0, 0, 0, 0, 988, 1007, 1005, 1008, + 1010, 1009, 1440, 1110, 0, 0, 1297, 1295, 0, 950, + 924, 0, 0, 1239, 0, 0, 0, 1468, 940, 1236, + 0, 993, 0, 0, 0, 1102, 0, 382, 381, 332, + 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1107, 1102, 782, 0, + 1099, 1102, 743, 0, 1102, 1001, 1014, 1056, 826, 846, + 827, 847, 92, 0, 64, 72, 77, 55, 0, 55, + 0, 74, 78, 55, 73, 0, 55, 68, 69, 0, + 577, 0, 552, 554, 567, 0, 556, 558, 0, 304, + 0, 0, 568, 496, 497, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 513, 512, 569, 308, 0, 311, 0, 0, + 683, 684, 0, 570, 0, 0, 690, 0, 0, 0, + 575, 0, 274, 0, 0, 188, 195, 0, 198, 192, + 0, 134, 115, 1460, 1498, 0, 145, 145, 145, 133, + 143, 0, 221, 276, 0, 0, 278, 280, 0, 281, + 0, 0, 316, 0, 0, 0, 746, 0, 796, 0, + 1207, 0, 1209, 1206, 1212, 1211, 1210, 0, 0, 0, + 699, 695, 729, 0, 622, 630, 634, 635, 636, 631, + 632, 633, 624, 625, 626, 627, 628, 629, 649, 0, + 0, 611, 0, 0, 727, 0, 724, 0, 524, 535, + 0, 618, 536, 0, 0, 0, 759, 760, 427, 438, + 470, 471, 442, 443, 444, 448, 792, 791, 721, 0, + 713, 0, 0, 428, 452, 457, 0, 692, 487, 0, + 475, 0, 465, 0, 473, 477, 453, 468, 0, 449, + 0, 714, 646, 648, 0, 644, 0, 439, 440, 441, + 432, 433, 434, 435, 436, 437, 445, 621, 619, 620, + 0, 712, 0, 0, 586, 0, 0, 472, 718, 0, + 315, 158, 729, 315, 0, 425, 1249, 785, 1226, 1214, + 1215, 652, 745, 784, 1329, 166, 167, 171, 171, 0, + 0, 171, 149, 123, 1701, 1587, 0, 0, 0, 0, + 209, 251, 0, 242, 206, 207, 0, 205, 751, 210, + 750, 211, 214, 215, 183, 252, 738, 254, 0, 247, + 112, 111, 258, 0, 1251, 1323, 0, 0, 711, 1354, + 1356, 262, 0, 0, 1126, 0, 1468, 1143, 0, 0, + 0, 0, 0, 0, 855, 0, 955, 855, 1181, 1468, + 1102, 1468, 1102, 1367, 1435, 1603, 929, 1172, 0, 0, + 1139, 1198, 958, 0, 914, 1162, 1177, 1191, 0, 0, + 819, 1128, 833, 838, 1194, 842, 839, 1312, 840, 1205, + 0, 1124, 0, 1192, 0, 1310, 0, 0, 1130, 1196, + 1314, 156, 156, 156, 0, 658, 0, 0, 0, 660, + 661, 707, 0, 56, 0, 952, 0, 66, 46, 47, + 57, 1117, 0, 0, 953, 0, 953, 0, 1006, 0, + 0, 1112, 1108, 0, 0, 0, 0, 326, 943, 941, + 974, 0, 948, 942, 0, 0, 900, 0, 802, 0, + 0, 0, 0, 1307, 0, 0, 0, 0, 0, 351, + 364, 1073, 338, 0, 392, 391, 393, 393, 338, 0, + 321, 338, 0, 336, 0, 376, 345, 418, 419, 420, + 421, 422, 423, 424, 1066, 783, 1068, 0, 1070, 59, + 0, 62, 0, 65, 61, 60, 54, 0, 87, 0, + 0, 0, 0, 0, 0, 0, 1243, 0, 549, 664, + 0, 678, 677, 495, 504, 508, 509, 510, 679, 0, + 0, 0, 505, 506, 507, 498, 499, 500, 501, 502, + 503, 511, 313, 0, 0, 307, 688, 687, 681, 682, + 0, 572, 573, 574, 689, 0, 0, 186, 184, 187, + 189, 185, 0, 0, 284, 315, 145, 145, 145, 145, + 142, 0, 0, 0, 314, 0, 238, 300, 0, 279, + 277, 289, 0, 320, 0, 291, 1285, 663, 151, 527, + 0, 0, 696, 0, 737, 493, 638, 0, 610, 0, + 0, 0, 736, 0, 652, 616, 614, 532, 425, 0, + 0, 0, 0, 0, 0, 0, 476, 467, 0, 474, + 478, 0, 0, 0, 461, 0, 0, 459, 488, 455, + 0, 0, 489, 0, 0, 585, 594, 265, 261, 221, + 156, 737, 221, 0, 1279, 1217, 0, 0, 160, 161, + 163, 0, 639, 171, 165, 213, 212, 0, 181, 249, + 179, 0, 255, 1252, 0, 1343, 0, 0, 0, 0, + 1318, 1338, 0, 1346, 1360, 1357, 1251, 0, 0, 0, + 0, 904, 0, 0, 0, 855, 0, 963, 0, 970, + 0, 0, 955, 936, 1161, 0, 0, 0, 1135, 1180, + 1153, 1145, 1131, 1159, 0, 0, 1164, 0, 1157, 1174, + 1175, 1173, 865, 890, 1178, 0, 0, 0, 901, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 158, 154, 155, 539, 706, 90, 91, + 824, 89, 962, 0, 0, 1121, 0, 950, 0, 1239, + 0, 1004, 988, 0, 1113, 0, 1111, 0, 1298, 953, + 0, 928, 924, 949, 922, 921, 923, 0, 803, 1002, + 0, 797, 953, 1238, 0, 0, 1308, 0, 1302, 0, + 1233, 370, 334, 0, 388, 386, 335, 0, 333, 329, + 337, 1102, 93, 0, 50, 88, 75, 80, 0, 86, + 82, 81, 76, 84, 83, 79, 565, 576, 676, 0, + 0, 0, 0, 306, 309, 0, 571, 566, 282, 0, + 0, 221, 0, 0, 0, 0, 136, 135, 141, 0, + 0, 588, 0, 317, 0, 318, 290, 0, 698, 694, + 0, 650, 726, 651, 731, 733, 0, 0, 0, 613, + 758, 429, 0, 0, 458, 693, 479, 0, 0, 0, + 454, 638, 0, 0, 0, 0, 0, 463, 0, 0, + 0, 0, 0, 545, 266, 238, 0, 725, 238, 0, + 132, 169, 170, 0, 164, 180, 739, 1250, 0, 1245, + 1324, 1322, 1345, 1344, 0, 711, 1352, 0, 0, 1343, + 0, 0, 1355, 1343, 1331, 1199, 855, 0, 0, 1142, + 0, 972, 916, 964, 947, 931, 0, 0, 0, 856, + 0, 989, 0, 0, 937, 0, 0, 0, 0, 917, + 0, 0, 876, 0, 0, 947, 0, 954, 872, 873, + 0, 1134, 1154, 0, 1150, 0, 1179, 0, 0, 0, + 0, 0, 1137, 1149, 0, 1132, 0, 1102, 1102, 1140, + 777, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, + 1767, 1768, 1769, 1770, 1889, 1771, 1772, 1773, 1774, 1775, + 1776, 1777, 1778, 1898, 1779, 862, 1780, 1534, 1781, 1782, + 1783, 1784, 1785, 0, 1786, 324, 1787, 1788, 1976, 1789, + 1790, 624, 625, 965, 859, 861, 0, 860, 957, 857, + 778, 858, 960, 915, 1195, 1313, 0, 1193, 0, 1311, + 1202, 1200, 1197, 1315, 542, 543, 540, 156, 69, 49, + 1120, 0, 0, 802, 0, 0, 0, 1468, 0, 1109, + 0, 1239, 1296, 950, 0, 980, 900, 975, 0, 802, + 800, 0, 1239, 1262, 0, 1299, 0, 0, 0, 330, + 322, 1071, 63, 0, 85, 514, 0, 0, 0, 0, + 196, 0, 202, 238, 140, 139, 138, 137, 219, 1410, + 1684, 1586, 220, 0, 224, 218, 222, 227, 229, 228, + 230, 226, 237, 0, 240, 299, 319, 697, 492, 734, + 735, 730, 0, 426, 485, 483, 480, 0, 481, 462, + 0, 0, 460, 456, 0, 490, 580, 0, 583, 597, + 592, 593, 588, 539, 588, 1280, 0, 1342, 0, 1330, + 0, 0, 1327, 1317, 0, 1347, 1316, 968, 1144, 0, + 947, 0, 855, 933, 932, 935, 930, 934, 0, 990, + 0, 0, 874, 0, 881, 919, 920, 918, 875, 947, + 953, 877, 0, 0, 0, 1146, 1136, 1133, 1138, 1147, + 0, 0, 1148, 1151, 320, 1163, 1156, 1898, 1907, 0, + 0, 0, 0, 0, 0, 45, 52, 824, 0, 0, + 924, 799, 0, 0, 1304, 0, 0, 950, 1114, 0, + 0, 0, 802, 0, 0, 852, 0, 897, 0, 999, + 801, 0, 0, 1254, 0, 0, 1231, 1232, 0, 51, + 515, 0, 516, 310, 0, 0, 194, 588, 0, 0, + 0, 231, 225, 587, 589, 0, 0, 191, 732, 578, + 0, 482, 486, 484, 464, 582, 599, 596, 240, 756, + 240, 640, 0, 1319, 0, 1320, 1353, 0, 0, 0, + 1332, 0, 855, 0, 946, 969, 886, 864, 0, 0, + 0, 871, 878, 979, 880, 0, 1155, 1171, 0, 0, + 959, 1203, 1201, 541, 69, 0, 1239, 900, 1262, 1301, + 0, 0, 0, 924, 1002, 798, 913, 906, 907, 908, + 909, 910, 911, 912, 927, 926, 898, 899, 0, 0, + 0, 0, 0, 1303, 1233, 0, 1349, 1349, 1358, 0, + 517, 197, 0, 240, 0, 0, 0, 223, 0, 0, + 239, 0, 119, 0, 0, 158, 191, 191, 0, 0, + 0, 0, 953, 971, 945, 0, 938, 884, 883, 885, + 889, 0, 887, 0, 903, 0, 896, 864, 0, 1158, + 0, 966, 44, 48, 0, 854, 1256, 950, 0, 1262, + 900, 802, 1262, 0, 1259, 0, 1300, 0, 0, 0, + 1351, 1351, 1239, 0, 0, 191, 233, 0, 232, 590, + 591, 193, 579, 0, 602, 118, 117, 0, 1326, 315, + 1337, 0, 979, 0, 925, 0, 0, 886, 0, 879, + 976, 977, 978, 0, 892, 882, 893, 1152, 1170, 967, + 0, 950, 1257, 853, 1000, 1255, 1260, 1261, 0, 1349, + 1348, 1350, 168, 168, 315, 1359, 201, 120, 234, 190, + 598, 0, 0, 0, 1321, 1325, 0, 896, 944, 939, + 863, 888, 902, 0, 0, 0, 894, 0, 895, 1262, + 0, 1351, 171, 171, 1229, 1670, 1411, 1639, 0, 600, + 603, 601, 595, 315, 855, 868, 0, 867, 0, 956, + 891, 1258, 1239, 168, 1340, 1339, 0, 607, 606, 605, + 609, 608, 1336, 973, 866, 870, 869, 315, 171, 0, + 1230, 1341, 604 +}; + + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -2784, -2784, -2784, 1939, 81, -2784, -2784, 171, -2784, 927, - -2784, 167, -650, 506, -2784, 82, 89, -1104, 47, -2784, - -2784, -2784, -2784, -253, 221, -2784, -2784, -496, -1480, -375, - -2784, -2755, -2783, -2784, -2784, -563, -2707, -1949, 90, -2784, - -2784, 91, -2784, -2784, 4, 129, 92, -2417, 94, -712, - -1152, -929, -1162, -2784, -64, 97, 1508, -2784, 5, -2097, - -2660, -469, -2784, -564, -2784, -262, -2784, -515, -2784, -700, - -522, -552, -2537, -1108, -2784, 1509, -307, -2784, 539, -2784, - -2412, -2784, -2784, 527, -2784, -1122, -2784, -2119, 140, -500, - -2418, -2415, -2009, -711, 215, -512, 188, -2014, -980, -2784, - 548, -2784, -491, -2784, -709, -1710, 99, -2784, -2784, -502, - -752, -2784, 1309, 101, 1350, -1989, 48, 102, -2784, -2784, - -2784, -2784, -732, 484, -1166, -2784, 415, -2784, -2784, -2784, - -2784, -146, 180, -2784, 11, 108, -39, -31, -2784, -26, - 55, 69, 1562, -1008, -2784, -1304, 922, -2784, 1701, 1711, - -2042, -693, -63, -2784, 601, -1589, -2032, -557, 1001, 1546, - 1565, 362, -1952, -2784, -463, -2784, -131, -2784, -2784, 595, - 1037, -1508, -1464, -2784, -2083, -2784, -392, -295, -2784, -2784, - -2784, -2784, -2784, -2339, -2632, -547, 1012, -2784, 1558, -2784, - -2784, -2784, -2784, 109, -1478, 2682, 638, -609, 2079, -571, - -393, 1745, 1719, 310, 778, 24, 2099, 411, -2784, -2784, - 413, -2016, -1460, 374, -217, 1337, -2784, -2784, -497, -1319, - -796, -2784, -2784, -419, -478, -2784, -2784, -2784, -132, 902, - -2784, -2784, 1694, 2075, -2784, -633, 2346, -495, -787, 1766, - -922, 1767, -913, -882, -891, 1771, 1775, -1477, 3885, 556, - 1394, -2784, -6, -2784, -1390, 35, -2784, -2784, -2784, -2784, - -2545, -2784, -360, -2784, -358, -2784, -2784, -2784, -467, -2483, - -2784, -592, 752, -2784, -2784, -2784, -1512, -2784, 4554, 656, - -2784, -1910, -952, -676, -1074, -918, -1191, -1322, -2784, -2784, - -2784, -2784, -2784, -2784, -1467, -1690, -300, 710, -2784, -2784, - 787, -2784, -2784, -2784, -710, 987, -573, -1059, 719, 1244, - 116, -588, -1569, -2784, -1530, -2228, -2784, -2784, -1957, -2784, - 2718, -485, -1086, 1744, -1196, 22, -2784, 3412, 457, 2194, - 3072, -2350, -2784, -2784, -1324, -2444, -1090, -2784, -716, -2784, - -2784, 104, -2784, 677, 105, 546, -2784, 6, -2784, -329, - -2784, -2784, -2435, -2784, 107, 110, 2146, -2784, -2784, -2784, - -468, -2784, -504, -501, -2784, -2784, 10, -923, 1334, -2784, - 111, 544, -2784, 812, -2784, 663, 115, 98, 117, 1120, - -2784, -2784, -2784, 49, -540, 333, -2784, 1128, -2784, -2784, - -2784, -2784, 2005, -2784, 118, -2784, -2784, 119, -2784, 2737, - 2676, 120, 7, -2748, 121, -2599, -1621, -7, -2784, -2784, - -2784, -561, -2784, -2351 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1916 + -2803, -2803, -2803, 1856, 87, -2803, -2803, -2803, -2803, -694, + 358, -1161, -2803, 287, -2803, -2803, -2803, -2803, -273, 51, + -2803, 91, -2803, -2803, 92, 7, 783, -39, -17, -2803, + -11, 27, 58, 1439, -999, -2803, -1483, 755, -2803, 1579, + 1580, -2048, -691, -36, -2803, 484, -1598, -2017, -554, 881, + 1425, 1432, 248, -2257, -2803, -588, -2803, 231, -2803, -2803, + 482, 919, -1497, -1490, -2803, -2062, -2803, -515, -420, -2803, + -2803, -2803, -2803, -2803, -2306, -2647, -547, 898, -2803, 1438, + -2803, -2803, -2803, -2803, 18, -1482, 2553, 473, -597, 1949, + -562, -385, 1627, 1601, -114, 659, 34, 1978, 284, -2803, + -2803, 293, -2001, -1446, 254, -340, 1226, -2803, -2803, -539, + -1301, -791, -2803, -2803, -414, 644, -2803, -2803, -2803, 1336, + 2322, -2803, -2803, 2978, 2982, -2803, -622, 3106, 1191, -778, + 1642, -882, 1647, -874, -881, -886, 1648, 1649, -1473, 4416, + -1396, 1496, -2803, -4, -2803, -1427, 29, -2803, -2803, -2803, + -2803, -2198, -2803, -489, -2803, -482, -2803, -2803, -2803, -593, + -2310, -2803, 2218, 632, -2803, -2803, -2803, -1507, -2803, 4876, + 544, -2803, -1914, -943, -673, -1085, -923, -1164, -1318, -2803, + -2803, -2803, -2803, -2803, -2803, -994, -1724, -559, 592, -2803, + -2803, 667, -2803, -2803, -2803, -707, 870, -581, -1052, 599, + 1127, -23, -584, -1558, -2803, -1642, -2226, -2803, -2803, -1995, + -2803, 2821, -473, -1065, 1713, -1250, 17, -2803, 4598, 132, + 2130, 2961, -2373, -2803, -2803, -553, -2510, -1082, -2803, -722, + -2803, -2803, 94, 95, -2576, -1615, 99, -2803, 2599, 2570, + 100, -705, -1142, -930, -1145, -2803, -79, 101, 1, -2071, + -2668, -483, -2803, -582, -2803, -280, -2803, -529, -2803, -671, + -537, -567, -2600, -1098, -2803, 1491, -321, -2803, 524, -2803, + -2411, -2803, -2803, 513, -2803, -1103, -2803, -2119, 131, -517, + -2402, -2399, -2012, -711, 197, -519, 180, -2030, -973, -2803, + 538, -2803, -505, -2803, -708, -2344, -2803, -2803, 2644, -2803, + 102, -2403, 105, 463, -2803, -2803, -454, -2803, -485, -484, + -2803, -2803, 44, -917, 1242, -2803, 107, -2803, -2803, 1256, + -764, -2803, 1307, 110, -2803, -2803, -2803, -2803, 112, -2803, + -2803, 211, -2803, 958, -2803, 200, -663, 541, -2803, 113, + 1400, 115, -1093, 116, -2803, 606, 117, 1046, -2803, -2803, + -2803, 5, -2803, -402, -2803, -2803, -2412, -2803, -2803, -2803, + 22, -544, 242, -2803, 6, -2714, 118, 501, -2803, 739, + -2803, 595, 119, 2081, 120, 82, 9, 161, 121, 1350, + -2010, -2803, 122, 30, 31, -2803, -2803, -2803, -2803, -211, + 249, -2803, -2803, -458, -1581, -328, -2803, -2732, -2802, -2803, + -2803, -518, -2737, -1993, 1058, -7, -2803, -2803, -2803, -552, + -2803, -2345 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 42, 43, 44, 569, 2190, 2947, 2553, 2948, 2267, + 2184, 1439, 2263, 1832, 1757, 1440, 514, 1847, 2554, 2500, + 1833, 570, 654, 655, 571, 572, 1057, 50, 51, 981, + 52, 673, 686, 687, 1498, 1919, 679, 1125, 1645, 661, + 662, 2178, 698, 1747, 1640, 1641, 2067, 2408, 1669, 1670, + 1134, 1135, 1906, 3092, 1907, 1908, 1490, 1491, 2986, 1657, + 1661, 1662, 2089, 2079, 1648, 2336, 2844, 2845, 2846, 2847, + 2848, 2849, 2850, 1058, 2591, 2997, 1665, 1666, 1137, 1138, + 1139, 1674, 2099, 54, 55, 2050, 2397, 2398, 634, 635, + 975, 976, 994, 990, 1501, 1926, 636, 637, 1885, 1886, + 2305, 997, 1922, 1931, 1932, 2595, 1805, 821, 2125, 1520, + 1376, 823, 1059, 824, 1355, 1060, 1359, 826, 1061, 1062, + 1063, 829, 1064, 1065, 1066, 832, 1351, 1067, 1068, 1370, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1112, + 1469, 1070, 1071, 1072, 1073, 639, 1074, 1075, 1601, 2044, + 2396, 2854, 2993, 2994, 2633, 2880, 3006, 3095, 3203, 3229, + 3230, 1076, 1077, 1550, 1551, 1552, 2040, 1595, 1596, 1078, + 2764, 1598, 1969, 1113, 1484, 1543, 1233, 1234, 1521, 1456, + 1457, 1466, 1861, 1473, 1477, 1890, 1891, 1485, 2008, 1079, + 1950, 1951, 2353, 1529, 1080, 727, 1240, 728, 1599, 2002, + 1089, 1081, 1090, 1083, 1539, 1540, 2362, 2605, 2606, 1976, + 2095, 641, 1633, 1910, 845, 1315, 1084, 1085, 1086, 1087, + 1115, 643, 1235, 500, 835, 3191, 1411, 1119, 1236, 2136, + 1998, 1549, 573, 574, 2531, 1336, 575, 59, 668, 675, + 576, 1776, 1726, 1515, 1178, 1716, 1432, 577, 578, 2449, + 2768, 3112, 2473, 3239, 2697, 2698, 3109, 3110, 2452, 2137, + 3174, 3175, 2528, 1708, 3169, 2208, 3064, 2143, 2124, 2699, + 2216, 3024, 2805, 2138, 2679, 2209, 3105, 1789, 2210, 3106, + 2902, 2211, 1754, 1780, 2453, 3176, 2144, 1755, 2448, 2769, + 1696, 2212, 3116, 2213, 527, 2683, 63, 64, 102, 1189, + 579, 849, 580, 1329, 1768, 67, 710, 1433, 581, 1434, + 1435, 939, 68, 1516, 941, 942, 583, 561, 562, 842, + 1408, 563, 836, 584, 2515, 2516, 71, 528, 585, 2460, + 2461, 2462, 2139, 1159, 3119, 2140, 1160, 1161, 2464, 586, + 95, 587, 1699, 588, 1004, 1943, 589, 1108, 683, 1109, + 1111, 590, 2977, 2818, 1343, 1790, 2221, 529, 78, 79, + 591, 1102, 2425, 2104, 592, 2973, 593, 669, 670, 1517, + 1618, 1518, 594, 509, 595, 647, 596, 1777, 597, 747, + 1786, 87, 598, 599, 600, 2431, 2106, 3019, 91, 2656, + 2109, 1148, 2659, 3078, 2649, 2654, 2432, 3140, 3192, 2657, + 2110, 2111, 3079, 2112, 92, 510, 502, 503, 838, 1318, + 1238, 1319 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 501, 497, 693, 704, 53, 58, 73, 91, 1181, 947, - 1117, 63, 1319, 1147, 501, 640, 1433, 1480, 1373, 1734, - 1323, 1326, 1440, 975, 1796, 1972, 1744, 1733, 593, 498, - 1330, 1612, 1698, 1379, 2458, 1638, 1453, 706, 2403, 2052, - 1747, 2406, 707, 498, 674, 1455, 1803, 48, 61, 83, - 2428, 1709, 1705, 2433, 1807, 68, 642, 1939, 678, 2082, - 1687, 845, 2085, 981, 828, 854, 840, 1457, 996, 941, - 1180, 1002, 1186, 68, 1190, 1085, 1456, 1609, 2798, 847, - 1738, 45, 46, 831, 1615, 1990, 1991, 1523, 1891, 47, - 50, 51, 54, 1417, 55, 1420, 2796, 56, 1828, 59, - 714, 60, 62, 1550, 71, 72, 1103, 74, 64, 691, - 75, 80, 2387, 2451, 2810, 81, 2813, 82, 87, 88, - 90, 92, 650, 722, 2421, 948, 64, 515, -476, 633, - 634, 2776, 2774, 2494, 2495, 2496, 2608, 2057, -479, 1359, - 1360, 64, -1148, 1869, 1652, 2199, 1140, 1870, 515, 692, - -1145, -1145, -767, 1797, -767, 512, 1143, -1123, 1129, -1883, - -1883, 2105, -1148, -764, -1733, -1740, -759, -764, -1749, 1619, - -1734, 1371, -1886, -1886, -1735, 1423, 705, -1736, -1887, -1887, - -1737, 2506, -1888, -1888, -1758, -1889, -1889, -1740, -1890, -1890, - 1016, -1749, -1149, 2521, -1756, -1893, -1893, 64, 2955, -1902, - -1902, -1758, -1909, -1909, 2312, -1913, -1913, 2108, -1760, -1911, - -1911, -1149, 2514, -1733, 2973, -1734, -1914, -1914, 515, -1146, - -1146, -1735, 1016, -476, 1427, 2004, 1381, -1736, -1737, 1016, - 1381, -1756, -1760, -479, -726, -739, -754, 515, 515, 1718, - 761, -996, 1721, 1722, 2004, 994, 1099, 2041, -996, 1616, - 1427, 515, 683, 2007, 2042, 1016, 3031, 3217, 2910, 21, - 1379, 2563, 2565, 3020, 2568, 1566, 2528, 2323, 1106, 1567, - 1016, 701, 2355, 2969, 1381, 1710, 1745, 21, 1447, 1015, - 1658, 2925, 1869, 2192, 1381, 3044, 1870, 1800, 1746, 1871, - 1872, 1873, 1323, 21, 1710, 701, 2970, 1575, 3, 4, - 2886, -434, -588, 2888, 3130, -1016, 2616, 3164, 3174, 1658, - 2321, 2971, -1016, 2585, 3104, 2180, 1641, 2324, 1690, 840, - 2639, 2049, 2111, 2642, 1701, 604, 1659, 2993, 3147, 1577, - 2944, 2676, 1765, 1701, -199, 1736, 831, 1136, 536, -199, - 3073, 3012, 1353, 3014, 2486, 3145, 1015, 2814, 3074, 1869, - 3252, 2705, 2675, 1870, 2921, 1659, 1871, 1872, 1873, 1136, - 2126, 3259, 2640, 1617, 3199, 1363, 2454, 3059, 515, 2126, - 2963, 1717, 2574, 696, 1500, 1475, 1566, 101, 1546, 1506, - 3100, 2975, 3101, 2649, 947, 3186, 1354, 1372, 3189, 996, - 1359, 1360, 2964, 1323, 1732, 603, -699, 986, 2286, 1723, - 2666, 2604, 2157, 981, 2959, 1371, 2293, 2160, 2943, -1882, - -1882, 1138, 982, 1739, 646, -476, 1660, 1693, 2127, 2650, - 680, 1655, 1415, 2706, 2820, -479, 2358, 2448, 2313, 833, - 2112, 987, 2451, 1138, 2451, 1107, 1661, 1108, 3225, 686, - 1577, 3175, 3247, 947, 1441, 537, 3087, 1508, 2641, -609, - 661, 2605, 1767, 694, 2325, 3149, 1952, 989, 29, 1566, - 1139, 697, 795, 1567, 2050, 1661, 605, 1869, 528, 1711, - 1642, 1870, 2181, 1686, 3165, 3245, 29, 3021, 2348, -476, - 647, 647, 1708, 1749, 1618, 3224, 3026, 1558, 1711, -479, - 1875, 1575, 29, 1100, 2972, 34, 1662, 2322, 2991, 3042, - 1869, 3253, 2837, 2455, 1870, 3036, 2707, 1943, 2815, 3213, - 1972, 840, 2922, 34, 3129, 1538, 1382, 3075, 1614, 3176, - 1382, 3260, 2575, 1577, 731, 1662, 2405, 1656, 831, 34, - 2193, 693, 1708, -699, 695, 1874, 3188, 38, 762, 947, - 947, 1724, 3051, 1750, 708, 1614, 2294, 983, 2828, 1725, - 2818, 1708, 3239, 662, 842, 38, 2295, 1875, 2179, 725, - 1876, 1355, 955, 946, 1382, 1101, 1463, 709, 3032, 2121, - 1695, 38, 2431, 2901, 1382, 3218, 1369, 1370, 1010, 992, - 943, 684, 2408, 2105, 2911, 39, 1640, 2005, 2524, 41, - 1684, -476, 1953, 693, 2776, 2774, 2572, 3187, 2423, -996, - 1685, -479, 2232, 1620, 513, 2043, 2389, 41, 1363, 40, - 501, 640, 1374, 1357, 1374, 3128, 2335, 2336, 2337, 1734, - 2950, 64, 1372, 41, 68, 501, 640, 1876, 2436, 1885, - -476, 1787, -476, 1319, 1375, 3002, 1375, 1956, -1148, 498, - -479, 3135, -479, 1148, 706, 3134, 1633, 1534, 1376, 707, - 1378, 727, 642, -1123, 498, 728, 501, 501, -1148, -764, - -1733, -1740, -759, -1016, -1749, 1737, -1734, 642, 2506, 1356, - -1735, 1383, 840, -1736, 2487, 1348, -1737, 64, 692, 501, - -1758, 2248, 833, -1740, 1696, 1546, 2280, -1749, -1149, 831, - -1756, 698, 2055, 972, 1110, 1130, 2967, -1758, 1710, 53, - 58, 73, 91, 952, -1760, 1104, 63, -1149, 3194, -1733, - 2898, -1734, 1431, 1432, 1561, 1330, 2796, -1735, 1109, 1240, - 501, 1320, 1104, -1736, -1737, 959, 1838, -1756, -1760, 1419, - 1361, 1365, -754, 1610, 2058, 2025, 1804, 1805, 1431, 1432, - 973, 974, 48, 61, 83, 2968, 3250, 2907, 515, 2948, - 68, 1598, 2179, 2934, 2935, 2900, 1119, 2502, 2503, 1877, - 1878, 1879, 3240, 1880, 1881, 1882, 1883, 1884, 1885, 727, - 2964, 1004, 2079, 728, 2919, 2663, 45, 46, 726, 3111, - 3266, 2953, 1005, 705, 47, 50, 51, 54, 735, 55, - 736, 2156, 56, 1728, 59, 93, 60, 62, 1131, 71, - 72, 2159, 74, 64, 2162, 75, 80, 842, 1900, 3029, - 81, 3261, 82, 87, 88, 90, 92, 1729, 2776, 2774, - 2908, 2320, -199, -199, -1880, -1880, 1877, 1878, 1879, 2013, - 1880, 1881, 1882, 1883, 1884, 1885, 1777, 2679, 840, 3112, - 2664, 94, 3241, 21, 501, 1795, 2459, 2920, 1323, 1972, - 1497, 1728, 2320, 1951, 1546, 831, 2014, 2462, 2001, 2080, - 739, 2026, 1976, 1513, 1566, 947, 1516, 699, 1567, 3242, - 828, 2228, 840, 840, 833, 1729, 2685, 2027, 2689, 1475, - 1475, 1710, 2028, 1988, 1475, 2718, 1814, 2414, 840, 831, - 831, 2363, 1711, 2045, 1927, 2614, 1575, 1319, 2252, 1931, - 2686, 1933, 2045, 1934, 1323, 831, 3043, 2329, 2253, 2267, - 1915, 1832, 1374, 1798, 1824, 2269, 1016, 1891, 2546, 2029, - 1906, 1830, 2680, 2482, 2550, 941, 2692, 2552, 1577, 3107, - 2255, 2257, 2258, 1825, 1375, 700, 2483, 2555, 946, 2254, - 2256, 21, 1595, 1596, 1597, 1598, 501, 501, 1880, 1881, - 1882, 1883, 1884, 1885, 751, 1708, 501, 3060, 2460, 501, - 501, 1710, 501, 501, 501, 501, 3205, 1329, 21, 2015, - 2431, 2409, 3017, 96, 2016, 1558, 501, 640, 1701, 2017, - 1701, 501, 640, 1882, 1883, 1884, 1885, 2497, 2681, 1702, - 2682, 1704, 2148, 1734, 2927, 3206, 743, 946, 1240, 842, - 1742, 2274, 2932, 68, 2155, 498, 2275, 1834, 3061, 758, - 498, 2379, 1016, 701, 2051, 501, 693, 3062, 642, 2425, - 737, 760, 738, 642, 3124, 1566, 2586, 2587, 2588, 2589, - 759, 1798, 501, 727, 517, 833, 763, 728, 2380, 2118, - 1397, 1398, 29, 501, 501, 501, 3063, 501, 501, 764, - 2236, 727, 2175, 2176, 2177, 1613, 64, 1575, 2276, 2488, - 949, 2204, 647, 2623, 765, 1475, 2154, 2030, 851, 1992, - 2415, 840, 2259, 2260, 501, 1711, 2262, 953, 1154, 34, - 2485, 3034, 1319, 954, 1155, 2165, 2696, 955, 831, 1577, - 2172, 633, 634, 946, 946, 518, 633, 634, 1550, 1154, - 956, 1645, 1646, 1003, 1653, 1155, 707, 707, 1136, 707, - 2529, 2273, 1157, 1137, 957, 2277, 2537, 3064, 2279, 2833, - 1710, 38, 2018, 2233, 1096, 958, 1531, 501, 1710, 3065, - 2697, 501, 501, 2019, 744, 39, 97, 1535, 1708, 985, - 29, 3257, 501, 1530, 98, 41, 2698, 3209, 3159, 3160, - 1104, 1401, 1402, 1972, 702, 1711, 2381, 2434, 961, 40, - 842, 2382, 1016, 1548, 1908, 744, 1374, 29, 2461, 1909, - 2462, 517, 1425, 41, -531, 1426, 2896, 34, 3226, -531, - 99, 2899, 1138, 1899, 962, 1901, 1902, 1240, 1375, 727, - 1156, -1123, 963, 728, 1154, 3248, 3249, 3201, 2463, 1240, - 1155, 833, 1376, 2130, 34, 840, 745, 1735, 966, 1094, - 1095, 1156, 1097, 1631, 967, 986, 1632, 1154, 1708, 38, - 968, 3256, 831, 1155, 1240, 999, 1942, 2318, 100, 1943, - 3265, 1139, 518, 39, 1001, 833, 833, 745, 969, 2489, - 705, 705, 970, 705, 2699, 3264, 38, 2493, -531, 987, - 1944, 833, 2700, 1945, 2832, 2189, 2596, 40, 2190, 2237, - 39, 2243, 1945, 2246, 2244, 988, 2244, 971, 521, 746, - 522, 2416, 1008, 2263, 2860, 989, 2264, 947, 1475, 1475, - 1475, 1475, 1475, 972, 40, 1475, 1475, 1475, 1475, 1475, - 1475, 1475, 1475, 1475, 1475, 525, 746, -531, 41, 1507, - 2871, 2716, 1511, 1006, 2383, 747, 1156, -1881, -1881, 990, - 2709, 1154, 1011, 1154, 1711, 2384, 2245, 1155, 840, 1155, - 1009, 3066, 1711, 2343, 3067, 2673, 842, 1765, 2306, 1156, - 1928, 2307, 747, 1010, 2377, 831, 1771, 1772, 1774, 1775, - 1098, 2517, 1320, 2559, 1157, 1593, 1594, 1595, 1596, 1597, - 1598, 1102, 2792, 2708, 501, 2717, 2281, 991, 840, 1374, - 842, 842, 2404, 1113, 2345, 1157, 2916, 2346, 748, 2218, - 1120, 2219, 2287, 1154, 840, 831, 842, 1708, 1121, 1155, - 947, 1375, 2470, 2349, 2472, 1708, 2346, 2476, 1126, 749, - 2477, 831, 2330, 1123, 2331, 1378, 1158, 992, 1124, 1766, - 1159, 2314, 1436, 840, 1127, 521, 2480, 522, 2319, 2481, - 840, 1134, 1550, 1475, 1475, 1462, 749, 1184, 1149, 946, - 831, 1159, 2332, 1156, 2333, 1156, 2540, 831, 2600, 1943, - 1160, 2346, 525, 2431, 833, 1320, 943, 2473, 1151, 2475, - 2347, 501, 840, 2347, 1152, 840, 2052, 1767, 2351, 1153, - 840, 1185, 1165, 2658, 2548, 2549, 2659, -1884, -1884, 831, - 1157, 1436, 831, 834, 501, 501, 2672, 831, 2674, 501, - 2805, 501, 640, 2190, -1885, -1885, 501, 501, 501, 501, - 68, 2826, 1166, 1157, 2827, 1156, 1929, 2834, 1183, 2513, - 2835, 501, 501, -1891, -1891, 2872, 501, 640, 1945, 1161, - 498, 501, 640, 501, 640, 501, 640, 2892, 2986, 2985, - 2893, 1945, 1188, 642, 103, 1187, 1159, 511, 2987, 1560, - 1161, 2346, 501, 501, 566, 498, 3005, 1191, 1563, 1945, - 498, 501, 498, 64, 498, 2117, 660, 1948, 642, 1159, - 673, -1892, -1892, 642, 1611, 642, 1189, 642, 1838, 2902, - -1894, -1894, 501, 2768, 501, 1621, 2716, 1436, 1436, 842, - 501, 501, 501, 501, 501, 501, 501, 1320, 833, 1160, - 1324, 501, 501, 1946, 1947, 1950, 501, 1157, 1325, 1157, - 501, 68, 517, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 3082, 3050, 501, 2894, 2190, 3084, 1327, 3143, - 1945, 501, 3144, 1240, 3163, -1195, 1320, 3144, 3227, 1328, - 3228, 633, 634, -1895, -1895, 1161, 633, 634, 633, 634, - 633, 634, 1133, 2087, 1135, 2221, 2949, 501, 707, 2163, - 1331, 3082, 1333, 1159, 64, 1159, -1896, -1896, 1161, 1157, - -488, 699, 1110, 518, 3167, 21, 3246, 3168, 1345, 3144, - 501, -1897, -1897, 1335, -488, -532, 1347, 2431, 3262, -488, - -532, 501, 501, 2164, 1348, 1160, 515, -1898, -1898, -1899, - -1899, -1900, -1900, -1901, -1901, -1903, -1903, -1904, -1904, -1905, - -1905, 833, -1906, -1906, -1907, -1907, -1908, -1908, 2011, -1910, - -1910, 2170, 1349, 842, 536, 1159, 1352, 853, 1357, 1320, - 1361, 1320, -1912, -1912, 1364, 947, 1365, 1015, -488, 700, - 1869, -1915, -1915, 1367, 1870, 2045, 834, -1916, -1916, -1916, - 2130, 833, 840, 1752, 1753, 2171, 2106, 2107, -488, -532, - 1416, 1167, 1161, 1368, 1161, -583, -583, 833, 1380, 831, - 1401, 1402, 1240, 1399, 1400, 501, 501, 1418, 501, 1385, - 1168, -587, -587, 1386, 3082, 1388, 533, -586, -586, 2965, - 1422, 567, 705, 1625, 1627, 2148, 833, 2777, 520, 1421, - 652, 516, 1424, 833, 1442, 1445, 1448, -488, -532, 21, - 2930, 1167, 1240, 690, 690, 1763, -488, 701, 1016, 1491, - 1478, 1320, 501, 1493, 1161, 1503, 2222, 1475, 1475, 3048, - 1168, 1169, 3082, 2825, 2791, 833, 842, 2800, 833, 1496, - 1501, 1504, 1510, 833, 1512, 1517, 521, 1518, 522, 1526, - 1527, 3196, 3198, 3198, 1529, 2816, -730, -737, 1534, 41, - -609, 946, -610, -727, 523, -728, 1537, -731, 517, 1538, - 524, 718, -729, 525, 29, 1542, 842, 1551, 1552, 1604, - 1559, 1169, 501, 1606, 1623, 501, 1608, 501, 1634, 1643, - 1139, -1195, 842, 501, 501, 501, 501, 501, 2712, 1635, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 1639, 34, 3126, 1644, 2206, 501, 501, 1391, 1392, 501, - 840, 842, 1170, 64, 1137, 1550, 501, 1680, 842, 518, - 1682, 3198, 1852, 1688, 2559, 1706, 1707, 831, 834, 1708, - 1715, 1713, 1714, 1719, 1726, 1727, 1731, 1741, 501, 1748, - 21, 501, 1755, 38, 1762, 501, 640, -488, 702, 1756, - 842, 1760, 1769, 842, 946, 1770, 1240, 39, 842, 1779, - 1782, 1783, 1170, 1171, 1785, 1798, 501, 1786, 1789, 1788, - 1799, 1172, 1806, 519, 498, 1808, 1397, 1398, 1809, 1816, - 1829, 40, 1373, 1173, 1817, 1820, 1821, 642, 1822, 2939, - 2940, 693, 501, 1854, 1823, 41, 1859, 501, 29, 1856, - 501, 1475, 1925, 1857, 1858, 2771, 1860, 840, 1876, 1861, - 1896, 1957, 727, 1171, 1174, 1123, 728, 1863, 501, 501, - 1958, 1172, 1866, 501, 831, 1888, 1907, 1959, 1734, 1897, - 1960, 1961, 1962, 1173, 1904, 34, 2768, 501, 1932, 1938, - 501, 1941, 501, 1566, 520, 1953, 1979, 1867, 1868, 1500, - 1982, 1984, 1887, 2010, 1985, 1839, 1987, 1986, 2003, 2021, - 633, 634, 1176, 501, 1174, 2022, 501, 640, 2024, 2046, - 2047, 2053, 2069, 2067, 2824, 2068, 840, 38, 2066, 700, - 2086, 2097, 501, 640, 1177, 2083, 2095, 1401, 1402, 834, - 2096, 39, 521, 831, 522, 498, 501, 2059, 2098, 1948, - 1840, 840, 2418, 2099, 1179, 833, 2100, 2116, 642, 2119, - 523, 498, 1176, 501, 501, 40, 524, 2123, 831, 525, - 1475, 2124, 2125, 701, 642, 2191, 1841, 2196, 2187, 41, - 2197, 2205, 501, 2207, 1177, 1946, 1947, 1950, 1548, 29, - 2208, 2209, 2223, 68, 1842, 2226, 2224, 840, 1843, 2229, - 1320, 1320, 1320, 2230, 1179, 2231, 2011, 2234, 2235, 2238, - 2261, 2239, 2270, 2240, 831, 2241, 2242, 2250, 2251, 2278, - 1844, 1893, 2396, 1845, 1869, 2308, 34, 1892, 2339, 2378, - 2394, 633, 634, 2399, 2412, 2419, 693, 2315, 1846, -589, - 2426, 1240, 2437, 2438, 2316, 35, 64, 633, 634, 64, - 2317, 2326, 2361, 2327, 2045, 2328, 2342, -1916, -1916, -1916, - 2352, 1880, 1881, 1882, 1883, 1884, 1885, 985, 38, 2373, - 2422, 499, 508, 2353, 2359, 3204, 534, 2360, 2362, 2371, - 842, 534, 39, 3037, 2385, 644, 2424, 648, 648, 651, - 534, 656, 501, 2938, 656, 840, 2395, 676, 679, 2440, - 679, 2397, 2441, 534, 534, 834, 40, 2398, 1475, 2444, - 2768, 2446, 831, 2442, 2447, 3214, 2450, 2469, 2471, 2484, - 41, 2490, 2491, 833, 2492, 836, 2498, 1320, 2499, 946, - 1847, 2500, 2511, 840, 2501, 2508, 947, 2512, 1848, 834, - 834, 2516, 2526, 986, 2531, 2530, 753, 2534, 2538, 517, - 831, 2430, 2527, 676, 1167, 834, 2543, 2545, 2553, 1849, - 679, 534, 679, 679, 679, 1436, 2562, 2570, 2554, 2272, - 501, 640, -1195, 1168, 2573, 2576, 2593, 987, 2579, 850, - 2580, 3110, 1850, 692, 2581, 2582, 3088, 2598, 3090, 2594, - 2603, 2606, 2612, 988, 2689, 693, 2619, 2621, 2622, 498, - 2690, 2636, 2646, 989, 2633, 2648, 840, 2625, 2655, 2671, - 518, 2667, 642, 2691, 2638, 2643, 2677, 2704, 501, 2644, - 833, 2665, 2684, 831, 1169, 2795, 693, 501, 2678, 2720, - 2799, 1474, 2788, 2808, 2789, 2790, 501, 990, 2803, 501, - 2804, 501, 2692, 2807, 2693, 2812, 2821, 693, 842, 501, - 2190, 2830, 501, 501, 2831, 2823, 2857, 501, 501, 2836, - 2891, 501, 2859, 2862, 2203, 3166, 2864, 2863, 1436, 2880, - 2887, 2895, 2897, 3170, 2903, 501, 3158, 2904, 2905, 2909, - 2913, 2914, 2915, 2923, 2926, 991, 2928, 501, 2929, 833, - -1145, 2933, -1880, -1881, -1882, -1883, 2288, 2289, 2290, 2291, - 2292, 690, -1884, 2296, 2297, 2298, 2299, 2300, 2301, 2302, - 2303, 2304, 2305, -1885, 833, 1170, 1015, -1886, 2771, 1869, - 840, -1887, 3110, 1870, -1888, 992, 1871, 1872, 1873, 2694, - -1889, -1890, -1891, -1892, -1894, -1895, -1896, 831, 834, -1897, - 1320, 2956, 1548, 2617, 1320, 2775, 1320, -1898, -1899, -1900, - 1963, 1964, 1965, 2945, 1966, 1967, 1968, 1969, 1970, 1971, - 833, 2946, 2947, 2960, 2974, 2976, 1171, -1901, -1903, -1904, - -1905, -1906, -1907, 1548, 1172, -1908, -1909, -1910, 836, -1911, - -1912, 2961, -1913, 521, -1914, 522, 1173, -1915, -1146, 1771, - 1772, 1774, 1775, 2797, 692, 2954, 2978, 2695, 2979, 2982, - 2988, 2992, 2696, 1673, 2989, 3004, 2994, 524, 2996, 3000, - 525, 3015, 3024, 3025, 842, 3027, 3039, 1174, 3040, 2817, - 3047, 3049, 2819, 3055, 3056, 3070, 3057, 3071, 3072, 3085, - 3086, 2374, 2375, 3089, 3093, 3092, 501, 3095, 3098, 842, - 3103, 3115, 3105, 2922, 3119, 3121, 2697, 3125, 3131, 3122, - 3137, 3138, 3139, 3148, 3145, 3150, 501, 501, 833, 3152, - 2883, 3155, 2698, 3157, 501, 1176, 3169, 3161, 3172, 3177, - 2479, 3184, 834, 3183, 3185, 501, 3190, 3191, 3192, 501, - 501, 3200, 3202, 3210, 501, 842, 3216, 1177, 3236, 501, - 64, 3219, 501, 501, 3221, 3217, 833, 501, 3218, 3251, - 3258, 501, 640, 3263, 1125, 2719, 837, 1179, 2467, 501, - 3019, 2150, 3102, 2660, 2723, 2505, 64, 3237, 3195, 64, - 2936, 2806, 3181, 2509, 3244, 3035, 3215, 1875, 3222, 3238, - 498, 3069, 2520, 1697, 2449, 2474, 3220, 2811, 3212, 2724, - 2445, 2688, 2771, 642, 840, 3211, 1802, 501, 2507, 2556, - 1768, 2983, 1636, 1498, 2429, 501, 2115, 2793, 1677, 2584, - 2699, 831, 3203, 1499, 2092, 2439, 2114, 3151, 2700, 833, - 836, 3091, 1681, 635, 501, 1464, 1676, 2411, 679, 1509, - 679, 976, 2344, 842, 679, 834, 960, 679, 2578, 2577, - 2597, 3041, 1815, 1436, 1452, 1454, 534, 1876, 2560, 1458, - 2561, 756, 3153, 1459, 2566, 3154, 2569, 2369, 2392, 3235, - 2432, 2356, 2186, 1916, 2390, 2410, 633, 634, 2515, 3141, - 951, 2775, 2062, 2350, 682, 834, 2661, 756, 534, 534, - 1831, 2064, 2890, 1351, 659, 715, 0, 0, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, + 501, 62, 691, 497, 1316, 77, 81, 48, 841, 85, + 1140, 1114, 1431, 1177, 501, 699, 944, 638, 1366, 1323, + 822, 1320, 80, 1476, 498, 1436, 1968, 53, 1740, 1327, + 89, 90, 1730, 972, 1729, 1608, 701, 1372, 498, 632, + 672, 2068, 702, 1796, 2071, 53, 2048, 1887, 1695, 2399, + 640, 2409, 2402, 1634, 2414, 1179, 2454, 1183, 1705, 1187, + 1701, 999, 582, 1679, 1743, 1800, 707, 1935, 676, 1453, + 978, 1863, 1864, 1449, 1452, 993, 1883, 1082, 1413, 1519, + 1416, 1451, 851, 1605, 938, 1986, 1987, 45, 1734, 844, + 1611, 46, 47, 2447, 56, 57, 1100, 2794, 689, 58, + 60, 61, 65, 2766, 2383, 66, 648, 69, 2792, 1546, + 70, 2806, 72, 73, 2433, 74, 75, 76, 82, 83, + 84, 86, 88, 2490, 2491, 2492, 2809, 512, 945, 2053, + -824, 2771, -393, 720, 2604, -824, -102, -1879, -1879, 515, + -393, -105, 1643, 526, 1133, 1352, 1353, 2195, 1013, 3139, + -774, 1136, 515, -1729, -385, 645, 645, -774, -771, -771, + 1818, -1882, -1882, 2091, -390, 1617, 2308, 515, -390, 1149, + -1730, 1013, 2094, 2517, 2502, 1419, -749, 1364, -1883, -1883, + -1731, 1865, -1732, -1736, -1733, 1866, -1736, 2510, -1884, -1884, + -1885, -1885, -1886, -1886, -1889, -1889, -1745, -1745, 1686, -1752, + -1754, -1754, -1909, -1909, -1898, -1898, 2965, -1905, -1905, -1907, + -1907, -1756, -775, -775, -1729, -1730, 2000, 2951, -1731, -1910, + -1910, -772, -772, 21, 1405, -1732, -1733, 515, 1096, -1752, + 2906, -102, -53, 2969, 723, 1714, -105, 681, 1717, 1718, + -1756, 2559, 2561, 1405, 2564, 2000, -352, 3213, -365, -380, + 515, 991, 515, 3235, 3017, 517, 2940, 21, 1405, 1405, + 3027, 2188, 1423, 2810, 756, 3160, 1372, 1013, 1741, 1793, + 694, 1562, 1562, 3040, 1649, 1563, 1563, 1103, 1443, 1697, + 1742, 3100, 1865, 1612, 1423, 515, 1866, 1013, 696, 1013, + 1732, 711, 1320, 2921, -622, 2917, 1649, 1689, 1719, 2524, + -214, -622, 3255, 1571, 1571, 21, 2037, 3, 4, 696, + 2354, 3107, 3170, 2038, 2289, -642, 518, 1697, 2045, 2319, + 1650, 2450, -642, 659, 2581, 3069, 2966, 2672, 2482, 2882, + -325, 678, 2884, 3070, 3126, 1573, 1573, 2635, 695, 3193, + 2638, 2967, 1650, 1562, 2317, 3141, 2675, 1563, 1346, 1865, + 2122, 2351, 2636, 1866, 1386, 1387, 2923, -1878, -1878, 2600, + 1724, 3096, 725, 3097, 2928, 1356, 726, 2701, 2065, 2320, + 684, 3108, 3201, 1713, 2671, 1571, 101, 983, 1542, 712, + 2939, 1651, 692, 1496, 1725, 602, 3055, 1365, 1502, 2959, + 944, 1123, 1347, 1320, 2570, 993, 2644, 1613, 1352, 1353, + 2971, 3202, 979, 3248, 2960, 536, 2637, 1573, 2123, 978, + 2401, 984, 2447, 1364, 2447, 3182, 696, 2176, 3185, 3243, + 2816, 1404, 29, -102, 2811, 1681, 660, 1504, -105, 3038, + 1652, 2676, 3161, 2331, 2332, 2333, 3145, 986, 601, 2702, + 1720, 1948, 2097, 2601, 1104, 3171, 1105, 3125, 1721, 944, + 1691, 3220, 1652, 2918, 2290, 2066, 29, 3221, 2451, 34, + 1437, 2046, 3256, 3236, 2291, 1390, 1391, -325, 3018, 1677, + 2284, 2285, 2286, 2287, 2288, 1097, 1554, 2292, 2293, 2294, + 2295, 2296, 2297, 2298, 2299, 2300, 2301, -102, 2344, 521, + 1653, 522, -105, 34, 1124, 3208, 790, 2677, 3022, 2678, + 1745, 38, 3071, 1151, 29, 3241, 2321, 1610, 2189, 1152, + 952, 1968, 1653, 1534, 1406, 1704, 525, 3032, 1614, 2833, + 729, 1939, 2703, 3172, 2968, 2814, 603, 2987, 2824, 691, + 3183, 2318, 644, 1406, 1610, 38, 2963, 980, 2641, 3047, + 2122, 34, 1746, 3237, 2571, 944, 944, 1098, 1406, 1406, + 2098, 2946, 837, 41, 3249, 3184, 2907, 697, 2568, 989, + 1007, 943, 757, 2412, 1692, 3214, 682, 1348, 2766, 2255, + 3238, 1459, 3028, 725, 2177, 703, 513, 726, 2001, 1682, + 2091, 2175, 2404, 38, 2117, 2964, 1675, 41, 2417, 1724, + 2520, 691, 1367, 1676, 53, 2897, 2771, 39, 2444, -102, + 1367, 1350, 1680, 2642, -105, 2370, 2371, 2385, 501, 713, + 1356, 638, 940, 1725, 1368, 1153, 2498, 2499, -824, -824, + 1733, 40, 1368, 501, 1365, 1530, 638, 1783, 1369, 2436, + 515, 1730, 498, 2998, 3124, 41, 1371, 693, -102, 2243, + -102, 1952, 3130, -105, 640, -105, -774, 498, 971, -1729, + -385, 3131, -622, -774, 501, 501, 701, 1629, 2483, 640, + -390, 2502, 702, 1557, 2039, 1141, -1730, 1881, 2895, 1407, + 725, 1949, -749, -642, 726, 1349, -1731, 501, -1732, -1736, + -1733, 1542, -1736, 2051, 3008, 949, 3010, 2276, 1316, 2903, + 969, 1706, -1745, -1745, 62, -1752, -1754, -1754, 77, 81, + 48, 2915, 85, 1412, 1415, 709, 2458, -1756, -775, -775, + -1729, -1730, 1327, 1101, -1731, 80, 1834, 1237, 501, 1317, + 53, -1732, -1733, 89, 90, -1752, 1107, 1106, 2792, 2886, + 3194, 1646, 2021, 946, 2714, 645, -1756, 1367, 724, 2944, + 1797, 1798, 1354, 1116, 1358, -380, 1606, 1101, 2054, 2989, + 1427, 1428, 1589, 1590, 1591, 1592, 1593, 1594, 1594, 1368, + 748, 2949, 2904, 1876, 1877, 1878, 1879, 1880, 1881, 1154, + 2930, 2931, 1427, 1428, 2916, 2175, 1000, 1706, 1421, 1761, + 45, 1422, 2960, 49, 46, 47, 2152, 56, 57, 3083, + 2766, 1773, 58, 60, 61, 65, 2155, 1093, 66, 2158, + 69, 49, 837, 70, 631, 72, 73, 1896, 74, 75, + 76, 82, 83, 84, 86, 88, 49, 93, 2771, 1129, + 1562, 822, 737, 1706, 690, 1156, 1591, 1592, 1593, 1594, + 3257, 3025, 1878, 1879, 1880, 1881, 700, 1647, 2316, 3155, + 3156, 501, 49, 2582, 2583, 2584, 2585, 1320, 1997, 2270, + 1968, 2955, 1947, 1542, 2271, 1157, 841, 1562, 2022, 1820, + 515, 1972, 2224, 94, 1164, 1824, 2681, 2282, 1816, 2316, + 944, -235, 1503, 749, 2023, 1507, 1887, 2652, 1129, 2024, + 1326, 1129, 1984, 1165, 1573, 1707, 1130, 1316, 3197, 1571, + 2682, 96, 2041, 1131, 752, 2610, 1728, 2309, 2685, 1763, + 694, 2041, 1923, 1320, 2264, 2476, 2272, 1927, 2359, 1929, + 1911, 1930, 2325, 2653, -158, 3246, 2025, 2265, 2477, -158, + 1895, 1573, 1897, 1898, 1158, 1902, 2455, 2250, 2252, 2253, + 2247, 2542, 2249, 2251, 1166, 943, 1826, 2546, 938, 2248, + 2548, 1821, 1735, 501, 501, 2427, 2688, 517, 1704, 3262, + 1706, 3103, 1131, 501, 725, 1131, 501, 501, 1609, 501, + 501, 501, 501, 1554, 753, 516, 1706, 1706, 695, 2412, + 1367, 1707, 53, 501, 1828, 2405, 638, 3039, 501, 1013, + 1151, 638, 2142, 21, 1819, 1706, 1152, 1151, -158, 2623, + 2624, 2217, 1368, 1152, 943, 1237, 837, 498, 632, 21, + 754, 1132, 498, 632, 1132, 1730, 1369, 2150, 518, 640, + 2493, 21, 501, 691, 640, 1001, 1697, 1707, 1627, 1697, + 2003, 1628, 2114, 1988, 755, 1167, 1002, 1698, -157, 501, + 1700, 2231, 517, -157, 1704, 758, 3120, -158, 2456, 1367, + 501, 501, 501, 1819, 501, 501, 696, 1362, 1363, 2151, + 2171, 2172, 2173, 2254, 97, -1241, 2434, 2256, 2200, 1151, + 2258, 1368, 98, 2619, 2026, 1152, 2484, 1830, 2161, 1738, + 759, 501, 1013, 2168, 1430, 1371, 1168, 1151, 2893, 3056, + 1704, 760, 2896, 1152, 1169, 2481, 2485, 1458, 848, 2415, + 943, 943, 1153, 518, 1013, 1904, 1170, 1316, 99, 1153, + 1905, 3030, -157, 1546, 2489, 950, 2692, 1938, 1636, 1637, + 1939, 1644, -1876, -1876, 702, 702, 2525, 702, 1940, 2228, + 501, 1941, 2533, 741, 501, 501, 952, 1171, 2428, 2829, + 3057, 1012, 951, 1430, 1865, 501, 1968, 2185, 1866, 3058, + 2186, 1867, 1868, 1869, 1707, 2269, 100, 519, 953, 2273, + 2693, -157, 2275, 733, 2126, 734, 741, 837, 3205, 2232, + 1707, 1707, 1941, 3253, 1091, 1092, 2694, 1094, 3059, 2153, + 2961, 1153, 954, 2825, 2156, 1173, 735, 743, 736, 1707, + 1101, 521, 29, 522, 1237, 2238, 955, 697, 2239, 1153, + 21, 1556, 1154, 3224, 958, 742, 1237, 1174, 29, 2241, + 1559, 2259, 2239, 825, 2260, 3244, 3245, 1704, 525, 1493, + 29, -1877, -1877, 744, 1731, 21, 1607, 1176, 520, 34, + 959, 1237, 1509, 1704, 1704, 1512, 2314, 1616, 742, 1430, + 1430, 2302, 3252, 1012, 2303, 34, 1865, 960, 35, 3060, + 1866, 3261, 1704, 1867, 1868, 1869, 1154, 34, 2457, 2513, + 2458, 3061, 963, 1154, 2828, 725, 3260, -749, 964, 726, + 2612, 38, 2341, 965, 2695, 2342, 521, 2240, 522, 966, + 1151, 2345, 2696, 2592, 2342, 39, 1152, 38, 2459, 1526, + 2474, 41, 944, 2475, 523, 743, 2214, 967, 2215, 38, + 524, 39, 2914, 525, -1880, -1880, 49, 746, 1155, 40, + 2867, 2478, 1156, 39, 2479, 1181, 2326, 968, 2327, 1156, + 2277, 1151, 969, 41, 2712, 40, 2705, 1152, 1761, 2536, + 1870, 744, 1939, 837, 996, 1154, 2283, 40, 3210, 2429, + 1767, 2339, 1157, 2373, 1769, 1770, -1881, -1881, 1771, 1182, + 2669, 41, 1871, 1154, 3014, 2555, 2596, 501, 998, 2342, + 49, 690, 1003, 837, 837, 2310, 1005, 745, 2788, 2704, + 2400, 2713, 2315, 1006, 2660, 2009, 2466, 2661, 2468, 1007, + 2801, 2822, 21, 2186, 2823, 2830, 2868, 1185, 2831, 1941, + 2890, 1156, 1153, 2891, 2982, 944, 1099, 1941, 2983, 29, + 1762, 2342, 2010, 3001, 2343, 2113, 1941, 2343, 956, 1156, + 837, 1158, 2347, 1317, 3046, 746, 103, 2186, 1158, 511, + 1095, 1186, 1872, 970, 29, 943, 564, 1546, 3080, 3142, + 1008, 1941, 3143, 1153, 3159, 1110, 34, 3143, 658, 1157, + 2980, 1317, 671, 3164, 2412, 1117, 3165, 501, 1763, 3242, + -1887, -1887, 3143, 3062, 1871, 1118, 3063, 2328, 53, 2329, + 1126, 34, 1128, 825, 2048, 1120, 700, 1759, 2544, 2545, + 501, 501, 2469, 1127, 2471, 501, 940, 501, 38, 2668, + 638, 2670, 501, 501, 501, 501, 49, -1888, -1888, 1121, + 1158, 1142, 39, -1890, -1890, 2509, 1143, 501, 501, -1891, + -1891, 498, 501, 38, 1144, 638, 1146, 501, 1158, 501, + 638, 501, 638, 640, 638, 2011, 40, 39, 1147, 2981, + 2012, -1892, -1892, 1150, 1872, 2013, 498, 632, 501, 501, + 41, 498, 632, 498, 632, 498, 632, 501, 640, 1942, + 1162, 40, 1163, 640, 1180, 640, 1154, 640, 1834, -1893, + -1893, -1894, -1894, 1184, 1944, 41, 2767, 1188, 501, 53, + 501, 3076, 1945, 1946, 1322, 837, 501, 501, 501, 501, + 501, 501, 501, 1317, 2898, -1895, -1895, 501, 501, 2712, + 1321, 29, 501, 1848, 1324, 982, 501, 1154, 1328, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 2159, 1325, + 501, 3076, 1156, 1330, 3222, 3223, 1331, 501, 2375, 1237, + -1896, -1896, 1317, 2889, -1897, -1897, -1899, -1899, 34, -1900, + -1900, 1873, 1874, 1875, 1342, 1876, 1877, 1878, 1879, 1880, + 1881, 1344, 2160, 501, 1345, 2376, 1350, 2945, 2073, 2166, + -1901, -1901, 1354, 1156, 702, 1357, 1380, 1381, -1902, -1902, + 1358, 501, -1903, -1903, 1360, 3258, 1361, 825, -1904, -1904, + 38, 983, 501, 501, -1906, -1906, 2412, 1373, 2014, -1908, + -1908, 1374, 1953, 2167, 39, 1375, -1911, -1911, 2126, 2015, + 1748, 1749, 1107, 2092, 2093, -209, -209, 1388, 1389, 1390, + 1391, 1377, -213, -213, 1409, 984, 837, 1410, 40, -212, + -212, 1158, 1621, 1623, 1414, 1317, 1417, 1317, 1418, 1420, + 1438, 985, 41, 1441, 2551, 1386, 1387, 1444, 1013, 1474, + 944, 986, 1487, 1873, 1874, 1875, 3076, 1876, 1877, 1878, + 1879, 1880, 1881, 1489, 1492, 533, 1499, 2041, 49, 1497, + 565, 1500, 1158, 1506, 1514, 1508, 1513, 1525, 1237, 650, + 1522, 501, 501, 2377, 501, 987, -356, 2055, 2378, 1523, + 834, -114, 688, 688, -363, 2772, -353, 2142, 1530, 41, + -235, 3076, -236, 631, -354, -114, 1924, 1533, 631, -357, + -114, 1534, -355, 1555, 1538, 2926, 1548, 1164, 1237, 1547, + 1600, 1602, 1604, 1619, 2685, 501, 1635, 2821, 2218, 1630, + 2686, 1631, 1132, 988, 1678, 1683, 1165, 1130, 1527, 837, + 1671, 1673, 2787, 2687, 2796, 3044, 1684, 1703, 825, 1531, + 716, 1702, 1317, 1709, 1704, 1711, 1390, 1391, 1715, -114, + 1723, 2812, 1722, 1727, 1710, 1756, 1737, 943, 1744, 517, + 1752, 1751, 2688, 989, 2689, 1544, 1775, 1758, 1765, -114, + 1766, 1778, 837, 1779, 1781, 1782, 1784, 1166, 501, 1785, + 1791, 501, -1241, 501, 1792, 1799, 1808, 1801, 837, 501, + 501, 501, 501, 501, 1802, 982, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 1809, 1812, 1813, 1814, + 1815, 501, 501, 3122, 1819, 501, 1825, 837, -114, 1850, + 518, 2379, 501, 1855, 837, 827, 1852, -114, 1853, 1903, + 1546, 1854, 2380, 1856, 1921, 1857, 2555, 1859, 700, 700, + 517, 700, 1862, 1928, 501, 1884, 1893, 501, 1900, 2690, + 1892, 501, 1925, 1934, 638, 1937, 837, 1949, 1562, 837, + 943, 1975, 1237, -1241, 837, 1980, 1978, 2763, 1167, 1981, + 1999, 983, 501, 1982, 850, 498, 632, 2006, 1983, 2017, + 2043, 2018, 2020, 2935, 2936, 2042, 2049, 640, 2062, 2063, + 2069, 695, 1366, 2072, 2064, 2081, 1430, 691, 501, 2083, + 2268, 518, 2084, 501, 825, 984, 501, 2082, 2085, 2086, + 2102, 2103, 2115, 2120, 2119, 2121, 696, 2691, 2183, 1168, + 2187, 985, 2692, 2192, 501, 501, 2193, 1169, 2201, 501, + 834, 986, 2203, 2204, 825, 825, 2205, 2219, 2820, 1170, + 2220, 2767, 2222, 501, 2225, 520, 501, 1012, 501, 2226, + 1865, 1730, 2227, 2229, 1866, 2199, 2233, -1912, -1912, -1912, + 2234, 2230, 2235, 2236, 2266, 987, 2693, 1496, -114, 501, + 1171, 2856, 501, 2257, 2274, 638, 1889, 1561, 1865, 2304, + 1562, 825, 2694, 2237, 1563, 1564, 1565, 1566, 1567, 1568, + 2245, 2246, 501, 521, 1888, 522, 498, 632, 2311, 1430, + 2312, 1942, 2313, 2322, 1569, 2335, 2323, 2338, 640, 501, + 501, 523, 1571, 988, 2324, 2348, 1944, 524, 1173, 1572, + 525, 53, 2349, 2357, 1945, 1946, 501, 2355, 2369, 638, + 2356, 2358, 2367, 725, 2374, 2390, 1120, 726, 501, 2381, + 1174, 2391, 2393, 2430, 1573, 2395, 2394, -215, 2407, 2418, + 498, 632, 2419, 989, 2421, 2422, 1317, 1317, 1317, 2426, + 1176, 2424, 640, 2912, 2437, 2435, 2438, 499, 508, 2440, + 2442, 2443, 534, 2446, 521, 827, 522, 534, 2480, 2465, + 2695, 642, 2467, 646, 646, 649, 534, 656, 2696, 2494, + 656, 2486, 691, 674, 677, 2495, 677, 1237, 524, 534, + 534, 525, 2487, 2488, 2497, 2496, 2504, 2934, 2507, 2508, + 2512, 2522, 2041, 2523, 2526, 2534, 2530, 2527, 2539, 674, + 2541, 2558, 2549, 2569, 834, 2550, 2566, 2572, 2575, 2589, + 837, 2590, 2594, 2576, 49, 2577, 825, 2599, 2578, 3033, + 3200, 2602, 2608, 2617, 2615, 1574, 2621, 2618, 501, 2632, + 2645, 2639, 2634, 2640, 2648, 2643, 677, 534, 677, 677, + 677, 1575, 2651, 2767, 2658, 2667, 1576, 1012, 2674, 2673, + 1865, 2680, 2700, 2716, 1866, 751, 2784, 1867, 1868, 1869, + 2795, 2804, 2785, 1317, 2786, 943, 2808, 2826, 1577, 1578, + 2799, 2853, 2800, 2817, 2613, 2888, 2791, 2892, 2186, 2803, + 2472, 944, 2819, 1579, 2894, 2827, 847, 2905, 2832, 2855, + 2858, 2909, 631, 2860, 2859, 2910, 1615, 631, 2876, 631, + 2901, 631, 2883, 2899, 2900, 2911, 501, 1012, 1872, 638, + 1865, 3104, 2919, 2922, 1866, 49, 2924, 1867, 1868, 1869, + 2925, 1580, 2929, -771, 1581, 3084, 2501, 3086, -1876, -1877, + 498, 691, -1878, 2941, 2505, 2942, -1879, -1880, 1582, -1881, + 2943, 1583, 640, 2514, 2950, 1378, 1379, 825, 2952, 827, + -1882, -1883, -1884, -1885, 501, -1886, -1887, -1888, -1890, 1164, + 2957, -1891, 691, 501, 2956, 834, -1892, 2629, 2970, 2007, + -1893, -1894, 501, 2974, -1895, 501, -1896, 501, 1165, -1897, + 2984, -1899, -1900, -1901, 837, 501, 2972, -1902, 501, 501, + -1903, -1904, -1905, 501, 501, 2975, -1906, 501, -1907, 2978, + 691, 3162, -1908, -1909, 1430, -1910, -1911, -772, 688, 2556, + 2985, 2557, 2763, 2988, 3154, 2562, 3166, 2565, 2992, 2990, + 3012, 1380, 1381, 2996, 3021, 3000, 3023, 501, 3011, 1166, + 3035, 1584, 3036, 3043, 3051, 3045, 1012, 3052, 700, 1865, + 501, 3053, 3066, 1866, 3068, 3067, 1867, 1868, 1869, 3081, + 3082, 3085, 3089, 3104, 3091, 3094, 3088, 3099, 1871, 3101, + 825, 3111, 3115, 2870, 2918, 1954, 3117, 3118, 3121, 3127, + 1470, 3133, 1955, 3134, 3135, 1956, 1957, 1958, 1317, 2770, + 1317, 3144, 1317, 3139, 3146, 3148, 1382, 1383, 1384, 1385, + 1386, 1387, 2879, 3151, 1388, 1389, 2708, 3153, 3157, 3163, + 3173, 3168, 3179, 825, 3180, 3181, 3186, -1912, -1912, -1912, + 827, 1876, 1877, 1878, 1879, 1880, 1881, 3187, 1871, 825, + 1167, 3188, 1767, 3206, 3196, 2793, 1769, 1770, 1872, 3212, + 1771, 834, 3198, 3215, 1585, 3217, 3232, 1586, 1587, 1588, + 3213, 1589, 1590, 1591, 1592, 1593, 1594, 3214, 825, 1750, + 837, 2813, 3247, 3254, 2815, 825, 3259, 2552, 2503, 1122, + 2979, 834, 834, 2410, 2789, 2202, 1632, 2101, 1494, 1495, + 1668, 1168, 501, 3199, 49, 837, 1667, 2078, 2420, 1169, + 3147, 2580, 3087, 2100, 633, 1672, 2423, 825, 1872, 973, + 825, 1170, 501, 501, 1460, 825, 3190, 2574, 1505, 2340, + 501, 1390, 1391, 957, 3037, 2573, 2593, 1448, 834, 3149, + 1807, 501, 1450, 1454, 1455, 501, 501, 3150, 2765, 3231, + 501, 837, 1171, 2365, 2413, 501, 2388, 2352, 501, 501, + 2386, 2182, 1912, 501, 2763, 2887, 657, 501, 1664, 708, + 638, 2932, 3240, 3031, 3177, 2501, 2790, 1871, 3211, 3218, + 3234, 501, 1694, 3065, 677, 2445, 677, 2470, 3209, 2684, + 677, 498, 632, 677, 2807, 3216, 2441, 3207, 537, 2773, + 1173, 2511, 534, 640, 1827, 1817, 827, 1795, 2146, 2463, + 2406, 2715, 3137, 501, 2058, 2719, 2346, 1764, 2663, 2802, + 3016, 501, 1174, 948, 2662, 3195, 3098, 2060, 3233, 0, + 0, 840, 534, 534, 0, 0, 827, 827, 0, 0, + 501, 0, 1176, 0, 0, 1392, 1393, 1872, 0, 837, + 0, 631, 0, 0, 0, 0, 0, 1873, 1874, 1875, + 0, 1876, 1877, 1878, 1879, 1880, 1881, 0, 0, 0, + 0, 947, 508, 646, 0, 0, 2411, 0, 0, 0, + 0, 0, 0, 827, 0, 499, 2770, 0, 0, 677, + 0, 0, 0, 834, 0, 1835, 0, 0, 0, 0, + 642, 977, 977, 0, 0, 0, 977, 995, 0, 0, + 0, 2885, 0, 0, 0, 0, 0, 1873, 1874, 1875, + 0, 1876, 1877, 1878, 1879, 1880, 1881, 0, 501, 1544, + 0, 1088, 1088, 656, 656, 0, 656, 0, 0, 0, + 1836, 0, 0, 0, 691, 0, 0, 2007, 0, 677, + 0, 2962, 0, 0, 0, 534, 943, 0, 0, 501, + 837, 0, 0, 2392, 0, 0, 1837, 0, 0, 0, + 688, 0, 631, 0, 0, 0, 501, 0, 0, 0, + 677, 0, 0, 677, 1838, 0, 0, 49, 1839, 0, + 0, 825, 501, 0, 0, 0, 0, 680, 0, 0, + 0, 0, 0, 501, 501, 0, 0, 501, 0, 0, + 1840, 0, 0, 1841, 677, 677, 677, 677, 677, 0, + 0, 828, 0, 0, 834, 0, 631, 501, 1842, 49, + 0, 0, 0, 0, 0, 3013, 0, 3015, 827, 0, + 0, 0, 0, 0, 501, 0, 1873, 1874, 1875, 0, + 1876, 1877, 1878, 1879, 1880, 1881, 0, 715, 0, 718, + 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2958, 0, 2770, 1959, 1960, 1961, 0, 1962, + 1963, 1964, 1965, 1966, 1967, 0, 1012, 0, 0, 1865, + 0, 0, 0, 1866, 0, 1430, 1867, 1868, 1869, 3048, + 3049, 0, 0, 1470, 1470, 0, 0, 501, 1470, 0, + 0, 501, 0, 535, 638, 0, 0, 0, 535, 0, + 1843, 501, 0, 501, 690, 501, 0, 535, 1844, 501, + 0, 0, 0, 501, 0, 498, 0, 834, 0, 0, + 535, 535, 0, 0, 0, 501, 0, 640, 0, 1845, + 0, 501, 0, 0, 638, 3009, 1317, 0, 0, 0, + 0, 501, 0, 0, 0, 825, 0, 0, 0, 827, + 1561, 0, 1846, 1562, 0, 498, 0, 1563, 0, 0, + 834, 0, 0, 0, 0, 0, 0, 640, 0, 0, + 0, 0, 0, 0, 0, 0, 834, 0, 535, 3129, + 0, 0, 0, 0, 0, 1571, 0, 0, 501, 0, + 0, 0, -1912, 2765, 0, 3132, 0, 0, 501, 3136, + 0, 0, 0, 0, 0, 834, 977, 995, 0, 0, + 0, 677, 834, 0, 0, 0, 0, 1573, 0, 0, + 977, 977, 0, 0, 534, 0, 0, 0, 0, 0, + 642, 501, 0, 0, 0, 642, 0, 0, 0, 0, + 825, 0, 534, 0, 834, 0, 0, 834, 1822, 0, + 1823, 828, 834, 0, 0, 0, 501, 1524, 0, 638, + 0, 0, 827, 1544, 2080, 0, 501, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2770, -1912, 1317, 0, + 498, 0, 0, 0, 3204, 0, 0, 2372, 0, 0, + 0, 0, 640, 0, 1544, 0, 0, 3123, 0, 0, + 0, 501, 1471, 0, 638, 827, 534, 3219, 0, 0, + 0, 825, 0, 0, 501, 501, 0, 0, -1912, 0, + 0, 827, 0, 0, 0, 498, 1378, 1379, 0, 0, + 0, 0, 690, 0, -1912, 0, 825, 640, 501, -1912, + 0, 0, 0, 0, 0, 0, 0, 1872, 0, 1624, + 827, 1626, 0, 0, 0, 0, 0, 827, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 534, 534, 0, + 0, 0, 501, 0, 0, 0, -1912, 0, 0, 0, + 0, 0, 825, 0, 0, 0, 0, 0, 0, 827, + 0, 0, 827, 0, 0, 0, 677, 827, 0, 0, + 677, 1693, 1380, 1381, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 677, 0, 2765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 0, 0, 0, 0, 950, 508, 648, - 834, 0, 0, 0, 0, 0, 0, 834, 693, 0, - 0, 499, 0, 833, 717, 679, 720, 0, 724, 2966, - 946, 0, 0, 501, 842, 0, 644, 980, 980, 0, - 0, 0, 980, 998, 0, 0, 0, 0, 0, 834, - 501, 0, 834, 0, 0, 0, 0, 834, 0, 0, - 0, 0, 0, 0, 0, 0, 501, 1091, 1091, 656, - 656, 836, 656, 0, 690, 1474, 1474, 501, 501, 0, - 1474, 501, 0, 0, 0, 679, 0, 0, 0, 0, - 0, 534, 0, 0, 0, 0, 0, 0, 0, 837, - 501, 0, 679, 0, 1451, 0, 515, 0, 0, 0, - 0, 0, 3016, 3018, 679, 0, 0, 839, 501, 0, - 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1877, 1878, 1879, 0, - 1880, 1881, 1882, 1883, 1884, 1885, 0, 679, 2775, 2773, - 0, 679, 679, 679, 679, 2627, 2628, 0, 0, 0, - 0, 0, 0, 0, 0, 1548, 0, 0, 0, 0, - 0, 0, 0, 0, 2505, 2794, 0, 3052, 3053, 0, - 0, 501, 0, 0, 0, 501, 640, 0, 0, 0, - 0, 0, 0, 0, 0, 501, 0, 501, 0, 501, - 0, 0, 0, 501, 0, 0, 0, 501, 0, 64, - 64, 0, 1389, 1390, 498, 0, 0, 0, 501, 0, - 0, 0, 0, 0, 501, 640, 0, 642, 0, 0, - 1320, 0, 0, 0, 0, 501, 0, 836, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 833, 0, 0, - 0, 0, 0, 498, 0, 0, 0, 0, 0, 0, - 0, 2094, 0, 0, 0, 0, 642, 0, 0, 0, - 0, 836, 836, 0, 64, 64, 0, 3133, 0, 0, - 0, 0, 501, 0, 0, 0, 0, 836, 1391, 1392, - 0, 837, 501, 3136, 535, 0, 0, 3140, 0, 535, - 0, 0, 0, 0, 0, 0, 0, 0, 535, 0, - 2889, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 535, 535, 0, 0, 501, 0, 0, 0, 834, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2829, - 0, 0, 0, 0, 0, 0, 0, 501, 640, 0, - 0, 0, 0, 1393, 1394, 1395, 1396, 1397, 1398, 0, - 501, 1399, 1400, 980, 998, 0, 0, 0, 679, 0, - 839, 1320, 2775, 1826, 64, 1827, 498, 980, 980, 535, - 0, 534, 3208, 0, 0, 0, 0, 644, 0, 642, - 64, 0, 644, 0, 64, 501, 640, 0, 0, 534, - 0, 0, 0, 0, 0, 3223, 0, 0, 501, 501, - 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 0, 0, 0, 0, 0, - 0, 0, 501, 0, 0, 0, 0, 642, 0, 0, - 0, 0, 732, 0, 734, 0, 0, 0, 741, 0, - 0, 742, 837, 0, 0, 0, 0, 0, 2918, 0, - 0, 0, 0, 534, 0, 0, 501, 0, 1401, 1402, - 836, 2962, 0, 0, 1474, 1474, 1474, 1474, 1474, 64, - 0, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, - 1474, 0, 0, 0, 1436, 0, 0, 834, 0, 0, - 0, 0, 64, 0, 0, 0, 1628, 0, 1630, 0, + 677, 1582, 0, 0, 677, 0, 0, 49, 1739, 0, + 49, 0, 0, 0, 0, 828, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 730, 0, 732, 0, 1164, + 0, 739, 0, 0, 740, 0, 0, 1382, 1383, 1384, + 1385, 1386, 1387, 0, 0, 1388, 1389, 0, 1165, 0, + 825, 0, 1470, 1470, 1470, 1470, 1470, 0, 0, 1470, + 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 534, 534, 0, 0, 0, 0, - 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1632, 0, 0, 0, 0, 0, 0, 0, 0, 965, - 0, 0, 0, 0, 3013, 0, 0, 679, 1700, 0, - 0, 0, 839, 0, 0, 0, 0, 0, 0, 0, - 679, 0, 0, 0, 0, 0, 0, 0, 1565, 0, - 0, 1566, 1403, 1404, 0, 1567, 0, 679, -1916, -1916, - -1916, 679, 0, 0, 834, 1743, 2984, 0, 0, 0, - 0, 0, 0, 0, 836, 0, 0, 0, 0, 1474, - 1474, 0, 2773, 1575, 0, 0, 0, 0, 837, 0, - 1576, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -1632, 0, 0, 1150, 0, - 0, 0, 0, 0, 0, 1577, 2122, 0, 0, 0, - 0, 0, 837, 837, 0, 0, 2131, 0, 2134, 0, - 0, 2145, 0, 834, 0, 0, 0, 2149, 837, 2151, - 0, 1334, 0, 0, 0, 1337, 1339, 1342, 1344, 0, - 0, 2158, 0, 0, 0, 0, 2161, -1632, 834, 0, - 2166, 2167, 2168, 2169, 0, 2173, 2174, 0, 0, 0, - 0, -1632, 0, 0, 0, 0, -1632, 0, 0, 0, - 0, -1632, 0, 0, 0, 0, 3127, 836, 0, 0, - -1632, 0, 0, 839, -1632, 0, 0, 0, 0, 1759, - 0, 0, 0, 679, 834, 0, 0, 0, 0, 679, - 0, 0, 0, 0, 0, 0, 1578, 0, 0, 0, - 1793, 756, 756, 0, 0, -1632, 0, 836, 0, 0, - 0, 0, 1579, 0, 0, 0, 0, 1580, 0, 0, - 0, 0, 0, 836, 0, -1632, 0, 0, 0, 0, - 0, 0, 0, 0, 1813, 0, 0, 0, 0, 1813, + 0, 0, 0, 0, 0, 0, 0, 825, 834, 0, + 0, 2118, 0, 0, -1912, 0, 0, 0, 0, 1166, + 2706, 2127, 0, 2130, 0, 0, 2141, 631, 2707, 0, + 0, 0, 2145, 0, 2147, 0, 1873, 1874, 1875, 0, + 1876, 1877, 1878, 1879, 1880, 1881, 2154, 0, 0, 0, + 962, 2157, 0, 0, 0, 2162, 2163, 2164, 2165, 0, + 2169, 2170, 1753, 0, 0, 0, 677, 0, 0, 0, + 0, 677, 1390, 1391, 0, 0, 0, 0, 0, 0, + 0, 825, 0, 1788, 0, 0, 2708, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, + 0, 0, 0, 535, 0, 0, 0, 1470, 1470, 0, + 1167, 0, 0, 1806, 1806, 0, 0, -1912, 0, 0, + 0, 0, 0, 0, 1589, 1590, 1591, 1592, 1593, 1594, + 0, 0, 0, 535, 535, 0, 0, 0, 0, 0, + 0, 1145, 0, 0, 0, 0, 0, 830, 0, 840, + 0, 831, 840, 827, 534, 534, 0, 534, 840, 0, + 0, 1168, 0, 1561, 0, 0, 1562, 0, 0, 1169, + 1563, 0, 0, 0, 0, 1333, 1335, 1338, 1340, 1341, + 0, 1170, 834, 2709, 0, 0, 1392, 1393, 0, 0, + 0, 0, 0, 0, 0, 825, 0, 49, 1571, 0, + 0, 0, 0, 0, 0, -1912, 1394, 0, 0, 0, + 0, 0, 1171, 0, 499, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 977, 0, 1909, + 1573, 0, 534, 0, 1088, 1088, 1544, 677, 0, 642, + 0, 0, 0, 0, 642, 0, 642, 0, 642, 0, + 534, 0, 0, 534, 0, 0, 535, 0, 0, 0, + 1173, 0, 828, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1970, 0, 833, 0, 834, 1974, 0, + 0, 49, 1174, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 828, 828, 0, 1471, 1471, 0, 1012, 0, + 1471, 1865, 1176, 0, 2710, 1866, 0, 2711, 1867, 1868, + 1869, 0, 0, 840, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2871, 0, 827, 0, 0, + 0, -1912, 0, 0, 0, 0, 0, 0, 0, 828, + 0, 0, 0, 0, 1088, 49, 49, -1912, 834, 0, + 0, 0, -1912, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2056, 0, 677, 0, 677, + 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1822, 0, 0, 0, -1912, + 0, 0, 1464, 0, -1628, 0, 0, 830, 0, 0, + 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1704, 677, 0, 0, 0, 825, 0, 834, + 0, 0, 827, 677, 2108, 0, 0, 1693, 534, 0, + 2047, 0, 0, 0, 0, 0, 0, 0, 534, 2128, + 534, 2132, 0, 534, 1582, 49, 0, 0, 0, 534, + 0, 534, 0, 1561, 0, 0, 1562, 0, 0, 0, + 1563, 49, 840, 534, 0, 49, 0, 840, 534, 0, + 0, 0, 534, 534, 534, 534, 1471, 534, 534, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1571, -1628, + 0, 1470, 1470, 827, 828, -1912, 0, 0, 677, 0, + 0, 0, 677, 677, 677, 677, 0, 0, 0, 1871, + 0, 0, 0, 0, 0, 0, 0, 834, 827, 2207, + 1573, 0, 0, 0, 0, 833, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1912, 0, 0, + 2529, -1628, 0, 0, 0, 1488, 0, 0, 0, 0, + 49, 0, 0, 0, 834, -1628, 0, 0, 0, 0, + -1628, 0, 0, 1511, 827, -1628, 0, 0, 0, 0, + 0, 0, 0, 49, -1628, 0, 0, 0, -1628, 1872, + 0, 1685, 0, 0, 0, 0, 0, 0, 0, 0, + 2382, 830, 0, 0, 1712, 831, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1628, + 0, 0, 0, 0, 0, 1736, 0, 0, 0, 0, + 0, -1912, 0, 0, 0, 828, 0, 1553, 834, -1628, + 0, 0, 0, 0, 0, 0, 0, -1912, 0, 0, + -1912, 0, -1912, 534, 0, 0, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 0, 0, 677, 1447, 0, 515, 0, + 0, 0, 827, 0, 0, 0, 0, 0, 642, 0, + 0, 0, 0, 0, 534, 1470, 0, 0, -1628, -1912, + 0, -1628, 0, 0, 0, 0, 0, -1628, 535, 535, + 0, 0, 0, 0, 1471, 1471, 1471, 1471, 1471, 827, + 0, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 0, 0, 534, 2863, 0, 0, 2363, 0, 833, + 0, 534, -1628, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1582, 0, 0, 0, 828, 0, + 0, 0, 834, 0, 0, -1628, 0, 0, 0, 0, + 0, 0, 830, 0, 0, 0, 831, 1760, 1970, 0, + 0, 2665, 1774, 0, 1378, 1379, 0, 0, 0, 0, + 0, 0, 0, 827, 0, 0, 0, 0, 1873, 1874, + 1875, 828, 1876, 1877, 1878, 1879, 1880, 1881, 2717, 642, + 0, 0, 0, 0, 1470, 0, 0, 828, 0, 0, + 0, 678, 534, 2774, 2775, 2776, 2777, 2778, 2779, 2780, + 2781, 2782, 2783, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 828, -1912, -1628, 1471, + 1471, 0, 0, 828, 0, 0, 0, -1628, 0, 0, + 1380, 1381, 0, 642, 0, 0, 0, 2108, 0, 0, + 0, 0, 0, 0, -1628, 0, -1628, -1628, 0, 0, + 0, 0, 0, 1753, 0, 828, 0, 0, 828, 0, + 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, + 833, 0, 0, 0, 0, 0, 0, 827, 0, 0, + 0, 0, 0, -1628, 0, 0, -1628, -1628, -1628, 0, + 0, 0, 0, 0, 0, 1382, 1383, 1384, 1385, 1386, + 1387, 0, 0, 1388, 1389, 0, 0, 0, 830, 0, + 0, 0, 831, 0, 0, 0, 1753, 0, 1920, 0, + -1912, 0, 1470, 677, 0, 0, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 1753, 677, 677, 677, 0, 830, 830, + 0, 0, 831, 831, 0, 0, 0, 534, 0, 677, + 0, 0, 677, 0, 834, 0, 0, 677, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547, + 0, 0, 0, 0, 0, 535, 535, 0, 535, 0, + 0, 0, 0, 0, 0, 830, 0, 840, 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 836, 0, 1583, 0, -1634, 0, 0, 836, - 0, 0, 540, 0, 535, 0, 0, 0, 0, 0, - 756, 0, 534, 534, -1632, 534, 756, -1632, 0, 0, - 0, 0, 834, -1632, 0, 0, 2773, 0, 0, 0, - 0, 836, 0, 0, 836, 0, 535, 535, 0, 836, - 0, 837, 0, 0, 0, 0, 0, 0, 0, 1586, - 0, 0, 0, 0, 0, 541, 1015, 0, -1632, 1869, - 834, 0, 0, 1870, 0, 0, 1871, 1872, 1873, 0, - 0, 542, 499, 0, 0, 0, 0, 0, 0, 839, - 0, -1632, 1468, 2874, 0, 980, 0, 1913, 0, 543, - 534, -1634, 1091, 1091, 0, 679, 0, 644, 0, 0, - 0, 0, 644, 0, 644, 0, 644, 0, 534, 0, - 0, 534, 0, 839, 839, 0, 0, 0, 0, 1565, - 0, 0, 1566, 0, 0, 544, 1567, 0, 0, 839, - 0, 1974, 0, 834, 0, 545, 1978, 680, 0, 0, - 0, 0, 1588, -1634, 0, 0, 0, 546, 0, 0, - 0, 0, 547, 0, 1575, 0, 0, -1634, 0, 535, - 0, -1916, -1634, 0, -1632, 0, 0, -1634, 0, 0, - 0, 756, 0, -1632, 0, 837, -1634, 0, 0, 548, - -1634, 0, 0, 1474, 1474, 0, 1577, 0, 0, 0, - -1632, 0, -1632, -1632, 0, 0, 0, 0, 0, 0, - 0, 0, 1091, 0, 0, 0, 0, 0, 0, 0, - 1826, -1634, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2060, 549, 679, 0, 679, 550, -1632, - 0, -1634, -1632, -1632, -1632, 0, 0, 679, 2078, 0, - 0, 0, 0, 0, 0, 1589, 0, 834, -1916, -1916, - -1916, 0, 1593, 1594, 1595, 1596, 1597, 1598, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1875, 0, 0, - 0, 1689, 0, 0, 0, 0, 679, 0, 0, 0, - -1634, 0, 0, -1634, 1716, 1700, 534, -1916, 837, -1634, - 0, 551, 0, 0, 0, 0, 534, 2132, 534, 2136, - 0, 534, 0, -1916, 0, 1740, 552, 534, -1916, 534, - 0, 836, 839, 0, 0, 0, 0, 0, 0, 0, - 756, 534, 0, 0, -1634, 756, 534, 0, 837, 0, - 534, 534, 534, 534, 0, 534, 534, 1876, 0, 553, - 0, 0, 554, 0, 837, -1916, 0, -1634, 0, 0, - 555, 0, 0, 556, 0, 0, 679, 0, 0, 0, - 679, 679, 679, 679, 0, 2533, 0, 1474, 0, 0, - 0, 0, 557, 837, 0, 0, 0, 2217, 0, 0, - 837, 0, 0, 0, 0, 0, 558, 0, 0, 0, - 0, 0, 0, 559, 0, 0, 0, 0, 0, 0, - 1586, 0, 560, 680, 0, 0, 2867, 0, 561, 0, - 0, 0, 837, 1154, 0, 837, 0, 0, 0, 1155, - 837, 0, 0, 0, 0, 0, 1167, 0, 0, 0, - -1634, 0, 0, 0, 562, 0, 0, 0, 0, -1634, - 0, 0, 0, 0, 0, 1168, 839, 1764, 0, 1492, - 0, 0, 0, 1778, 0, 0, -1634, 0, -1634, -1634, - 0, 0, 0, 0, 0, 0, 0, 1515, 0, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 836, - 0, 0, 0, 0, 0, 1565, 1474, 0, 1566, 0, - 0, 0, 1567, -1916, 0, -1634, 1169, 0, -1634, -1634, - -1634, 534, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1015, 679, 0, 1869, 0, 0, 0, 1870, - 1575, 0, 1871, 1872, 1873, 1156, 644, -1916, 0, 0, - 0, 1557, 534, 0, 0, 0, 1877, 1878, 1879, 2875, - 1880, 1881, 1882, 1883, 1884, 1885, 0, 0, 0, 0, - 0, 0, 1577, 0, 0, 0, 0, 0, 0, 839, + 2913, 1753, 1753, 0, 1753, 0, 0, 0, 0, 0, + 1390, 1391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 534, 0, 0, 0, 2367, 836, 0, 0, 534, - 0, 0, 0, 0, 0, 0, 2669, 1170, 0, 0, - 0, 0, 535, 535, 0, 0, -1916, 0, 0, 839, - 0, 0, 0, 1593, 1594, 1595, 1596, 1597, 1598, 0, - 0, 0, 0, 2721, 0, 839, 1974, 0, 0, 1924, - 0, 0, 2376, 0, 1474, 0, 0, 0, 2778, 2779, - 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 1171, 0, - 0, 0, 0, 0, 839, 836, 1172, 644, 0, 0, - 0, 839, 0, -1916, 0, 0, 0, 0, 1173, 0, - 534, 0, 0, 644, 0, 0, 0, 2078, 0, -1916, - 836, 0, 0, 1565, -1916, 0, 1566, 0, 0, 1157, - 1567, 0, 0, 839, 0, 0, 839, 1389, 1390, 1174, - 0, 839, 837, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1389, 1390, 0, 0, 1575, 0, - 0, -1916, 0, 0, 0, -1916, 836, 0, 0, 0, - 0, 1759, 0, 1875, 0, 0, 0, 0, 0, 0, - 0, 1175, 0, 0, 0, 1159, 0, 1176, 0, 0, - 1577, 0, 0, 0, 0, 0, 0, 0, 0, 2061, - 0, 2063, 0, 0, 0, 0, 0, 1435, 0, 1177, - 0, 2072, 0, 1391, 1392, 1178, 1586, 0, 1449, 1450, - 0, 0, 0, 1465, 1466, 0, 0, 0, 0, 1179, - 1391, 1392, 0, 0, 1759, 0, 0, 0, 0, 0, - 0, 679, 0, 1876, 0, 0, 0, 0, 0, 0, - 2110, 1759, 679, 679, 679, 0, 0, 0, 0, 0, - 2386, 0, 0, 0, 836, 534, 1435, 679, 0, 0, - 679, 0, 0, 0, 0, 679, 0, 0, 1393, 1394, - 1395, 1396, 1397, 1398, 1161, 2917, 1399, 1400, 2551, 0, - 0, -1916, 0, 0, 0, 1393, 1394, 1395, 1396, 1397, - 1398, 0, 836, 1399, 1400, 756, 0, -1916, 0, -1916, - 837, 0, -1916, 0, 0, 0, 0, 0, 0, 1759, - 1759, 0, 1759, 0, 0, 0, 0, 0, 0, 0, - 2195, 0, 0, 1562, 2198, 2200, 2201, 2202, 0, 0, - 535, 535, 0, 535, 0, 0, 0, 0, 0, -1916, - 0, 499, 0, 0, 0, 0, 0, 0, 0, 0, - 1435, 0, 1435, 1435, 0, 0, 0, 0, 0, 0, - 2583, 0, 0, 0, 0, 836, 0, 0, 0, 679, - 679, 679, 0, 0, 0, 0, 534, 0, 0, 0, - 534, 0, 0, 1401, 1402, 0, 0, 0, 1072, 1072, - 0, 0, 0, 0, 1586, 1974, 0, 837, 0, 0, - 1401, 1402, -1916, 839, 0, 0, 0, 0, 535, 1593, - 1594, 1595, 1596, 1597, 1598, 0, 0, 0, 0, 0, - 1435, 0, 0, 1435, 1435, 0, 1937, 0, 0, 1940, - 0, 0, 1877, 1878, 1879, 0, 1880, 1881, 1882, 1883, - 1884, 1885, 0, 0, 0, 0, 0, 0, 0, 0, - 2654, 1235, 1242, 2657, 0, 0, 2078, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 837, 0, 0, 0, - 0, 0, 0, 0, 679, 0, 534, 2334, 0, 836, - 1759, 1700, 1759, 0, 1793, 0, 0, -1916, 0, 0, - 0, 837, 0, 0, 0, 0, 0, 1403, 1404, 0, - 0, 0, 0, 534, 0, 2722, 0, 0, 0, 0, - 3038, 0, 0, 0, 1403, 1404, 0, 1405, 534, 534, - 534, 534, 534, 534, 534, 534, 534, 534, 0, 0, - 3045, 3046, 0, 0, 0, 0, 0, 837, 0, 0, - 0, 0, 0, 0, 0, 2217, 0, 0, 0, 3058, - 0, 679, 1015, 0, 0, 1869, 0, 0, 0, 1870, - 0, 1700, 1871, 1872, 1873, 0, 0, 0, 0, 0, - 0, 839, 0, 0, 0, 0, 1565, 1793, 0, 1566, - 0, 0, 0, 1567, 0, 0, 1570, 1571, 1572, 0, - -1916, 0, 0, 0, 0, 0, 1759, 1593, 1594, 1595, - 1596, 1597, 1598, 1573, 535, 0, 0, 0, 0, 0, - 0, 1575, 0, 534, 535, 0, 535, 1801, 1576, 535, - 679, 679, 679, 679, 0, 535, 1015, 535, 1810, 1869, - 1811, 0, 756, 1870, 0, 837, 1871, 1872, 1873, 535, - 1818, 0, 0, 1577, 535, 2865, 0, 0, 535, 535, - 535, 535, 0, 535, 535, 0, 0, 1819, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 839, 0, - 2885, 0, 644, 837, 0, 0, 0, 0, 1446, 0, - 1091, 0, 0, 1833, 1835, 0, 0, 3162, 1467, 0, - 0, 1469, 0, 2078, 1479, 1482, 1487, 1490, 0, 1974, - 0, 0, 0, 836, 0, 1700, 0, 0, 0, 0, - 0, 1759, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 756, 534, 0, 0, 0, 0, - 1235, 0, 679, 0, 0, 0, 0, 839, 0, 1167, - 0, 0, 0, 0, 1578, 0, 837, 1532, 0, 2937, - 1565, 0, 0, 1566, 0, 2510, 0, 1567, 1168, 0, - 1579, 0, 839, 1875, 1536, 1580, 2522, 2523, 2525, 0, - 0, 0, 0, 0, 0, 1539, 1540, 1541, 0, 1545, - 1549, 2536, 0, 0, 2539, 1575, 0, 1581, 1582, 2544, - 0, 0, -1916, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1583, 0, 0, 0, 1607, 0, 839, 1169, - 2710, 0, 0, 0, 0, 0, 0, 1577, 2711, 535, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1759, - 0, 0, 0, 1876, 0, 0, 0, -1916, 0, 0, - 1584, 2217, 0, 1585, 0, 0, 0, 0, 0, 0, - 1940, 0, 0, 0, 0, 2980, 0, 1586, 0, 1651, - 837, 0, 0, 1667, 1672, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2712, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2626, 0, 535, - 0, 2999, 0, 2590, 2591, 2592, 0, 1557, 0, 0, - 1170, 0, 0, 0, 0, 0, 839, 1876, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3011, -1916, 1235, - 2104, 2104, 0, 0, 0, 0, 0, 2654, 0, 0, - 0, 1235, 0, 1565, -1916, 0, 1566, 0, 0, -1916, - 1567, 0, 0, 0, 839, 0, 0, 0, 0, 0, - 1588, 1171, 0, 0, 0, 0, 1235, 0, 0, 1172, - 534, 0, 0, 0, 0, 0, 0, 0, 1575, 0, - 0, 1173, 1435, 2713, 0, -1916, -1916, 0, 535, 0, - 534, 534, 1435, 0, 0, 1435, 0, 0, 0, 0, - 0, 0, 0, 679, 0, 1700, 0, 0, 2668, 534, - 1577, 0, 1174, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 679, 0, 0, 3083, 839, 0, 0, + 0, 0, 0, 499, 0, 0, 833, 0, 0, 0, + 1561, 0, 0, 1562, 0, 0, 0, 1563, 2057, 0, + 2059, 0, 2579, 535, 0, 0, 0, 0, 0, 0, + 0, 677, 677, 677, 0, 0, 833, 833, 534, 0, + 0, 1933, 534, 0, 1936, 1571, 0, 0, 0, 0, + 0, 0, -1912, 0, 0, 0, 0, 1970, 0, 0, + 0, 0, 0, 0, 2096, 0, 0, 0, 0, 827, + 0, 0, 0, 0, 2105, 0, 0, 1573, 1561, 0, + 0, 1562, 0, 833, 0, 1563, 1564, 1565, 1566, 1567, + 1568, 0, 0, 0, 1392, 1393, 0, 0, 0, 828, + 0, 0, 0, 0, 0, 1569, 0, 0, 0, 0, + 830, 0, 0, 1571, 831, 0, 0, 0, 0, 0, + 1572, 677, 0, 0, 0, 0, 2650, 0, 0, 2655, + 0, 0, 0, 0, 0, 2108, 0, 0, 534, 0, + 0, 0, 1753, 1693, 1753, 1573, 1788, 2622, 0, 2191, + 0, 0, 0, 2194, 2196, 2197, 2198, 0, 0, 0, + 0, 0, 0, 0, 0, 534, 0, 2718, 0, 0, + 0, 0, 0, 1471, 1471, 0, 0, 0, -1912, 0, + 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 0, 0, 0, 0, -1912, 0, 0, 0, 0, -1912, + 0, 0, 0, 0, 0, 3034, 0, 2207, 0, 0, + 0, 0, 0, 677, 0, 0, 0, 0, 0, 535, + 0, 0, 0, 1693, 0, 3041, 3042, 0, 0, 535, + 0, 535, 0, 0, 535, 0, -1912, 0, 833, 1788, + 535, 830, 535, -1630, 3054, 831, 1574, 0, 0, 0, + 0, 0, 0, 0, 535, 0, 0, 0, 1753, 535, + 0, 0, 1575, 535, 535, 535, 535, 1576, 535, 535, + 0, 0, 0, 828, 0, 534, 0, 0, 0, 0, + 0, 0, 677, 677, 677, 677, 0, 0, 0, 1577, + 1578, 1582, 0, 0, 840, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1579, 0, 2330, 2861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1586, 1877, 1878, 1879, 0, 1880, 1881, 1882, 1883, - 1884, 1885, 0, 0, 0, 0, 0, 0, 0, 1091, - 1176, 0, 0, 1589, 0, 3083, 1590, 1591, 1592, 679, - 1593, 1594, 1595, 1596, 1597, 1598, 0, 0, 2247, 2249, - 2629, 0, 1177, 0, 0, 2802, 0, 0, 0, 0, - 0, 0, 0, 0, 837, 0, 0, 0, 0, 679, - 1435, 0, 1179, 0, 2714, 0, 0, 2715, 0, 0, - 0, -1916, 0, 0, 0, 0, 1877, 1878, 1879, 0, - 1880, 1881, 1882, 1883, 1884, 1885, 0, -1916, 0, 0, - 0, 0, -1916, 0, -1916, 0, 2999, 0, 0, 0, - 0, 839, 0, 535, 0, 0, 0, 534, 0, 0, - 0, 0, 0, 0, 2838, 2839, 2840, 2841, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1916, - 0, 0, 0, 0, 0, 1700, 0, 0, 0, 0, - 0, 0, 0, 1855, 0, 0, 0, 0, 3083, 756, - 756, 756, 0, 0, 0, 0, 0, 0, 0, 1913, - 0, 0, -1648, 1435, 0, 0, 0, 0, 0, 0, - 0, 0, 1708, 0, 0, 0, 0, 0, 1487, 0, - 1487, 1487, 0, 0, 1586, 0, 0, 0, 0, 1700, - 0, 0, 0, 1072, 1072, 0, 3083, -1916, 0, 0, - 0, 0, 0, 0, 1593, 1594, 1595, 1596, 1597, 1598, - 0, 0, 0, 0, 2078, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 535, 0, 2924, 0, 1937, 756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2881, 0, 642, 0, 0, 0, -1630, 0, + 0, 0, 1580, 1970, 0, 1581, 0, 0, 1088, 0, + 0, 0, 0, 0, 830, 0, 0, 1471, 831, 1582, + 0, 2108, 1583, 0, 0, 0, 0, 1693, 828, 833, + 0, 0, 0, 1753, 0, 0, 0, 0, 0, 0, + 0, 0, 3158, 0, -1912, 0, 840, 534, 0, 0, + -1630, 0, 0, 0, 677, 0, 0, 830, 0, 0, + 0, 831, 0, 0, -1630, 0, 0, 0, 0, -1630, + 0, 2933, 0, 830, -1630, 0, 0, 831, 0, 0, + 0, 0, 0, -1630, 0, 0, 0, -1630, 0, 0, + 0, 0, 0, 0, 535, 0, 0, 0, 0, 828, + 0, 0, 830, 0, 0, 0, 831, 0, 0, 830, + 0, 0, 1584, 831, 0, 0, 0, 0, -1630, 0, + 0, 0, 0, 0, 828, 1936, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1471, 0, -1630, 0, + 0, 830, 833, 0, 830, 831, 0, -1912, 831, 830, + 0, 1753, 0, 831, 1589, 1590, 1591, 1592, 1593, 1594, + 0, 0, 0, 2207, 535, 0, 0, 0, 0, 0, + 828, 0, 1553, 0, 0, 1561, 0, 2976, 1562, 0, + 0, 0, 1563, 0, 0, 833, 0, -1630, 0, 0, + -1630, 0, 0, 0, 0, 0, -1630, 0, 0, 0, + 0, 833, 0, 0, 0, 0, 0, 0, 0, 0, + 1571, 0, 0, 2995, 0, 1585, 0, -1912, 1586, 1587, + 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, + 833, -1630, 0, 0, 0, 1858, 0, 833, 0, 3007, + 0, 0, 1573, 0, 2506, 0, 0, 0, 0, 0, + 0, 2655, 0, 535, -1630, 2518, 2519, 2521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 828, 833, + 2532, 0, 833, 2535, 1471, 0, 0, 833, 2540, 0, + 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1989, -1648, 0, 0, - 0, 0, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 0, - 0, 0, 0, 2008, 2009, 0, 0, -1916, 2020, 0, - 2407, 0, 2023, 0, 0, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 2039, 0, 0, 2040, 0, 0, 0, - 0, 0, 0, 1072, 0, 1235, 0, 0, 0, -1648, - 0, 0, 2435, 2435, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1648, 535, 839, 0, 0, -1648, 2065, - 0, 1476, 0, -1648, 0, 0, 0, 0, 0, 0, - 0, 0, -1648, 0, 0, 0, -1648, 0, 0, 0, - 0, 535, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1540, 1541, 0, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 0, -1648, 0, 0, - -1916, -43, 0, 0, 0, 0, 0, 1593, 1594, 1595, - 1596, 1597, 1598, 0, 0, 0, 0, -1648, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 3, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 1601, 0, 0, 7, - 0, 0, 0, 0, 1235, 0, -1648, 2183, 2184, -1648, - 2185, 8, 0, 0, 0, -1648, 0, 0, 0, 0, - 2547, 1937, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 11, 0, 0, 1601, - 0, 0, 0, 0, 1235, 0, 0, 3054, 0, 0, - -1648, 0, 0, 0, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3078, 13, 14, - 0, 0, 0, -1648, 0, 0, 0, 0, 15, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 21, 3106, 2283, 0, 0, 2284, 0, 2285, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 680, - 0, 0, 0, 535, 0, 0, 0, 22, 0, 0, - 0, 0, 0, 3132, 0, 0, 0, 2310, 2311, 0, - 0, 2065, 23, 0, 0, 0, -1648, 0, 0, 1601, - 0, 0, 0, 0, 0, -1648, 1601, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 2338, 0, -1648, 2341, -1648, -1648, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1235, 0, - 0, 0, 0, 0, 1154, 0, 0, 0, 2354, 0, - 1155, 0, 0, 0, 0, 0, 0, 1167, 0, 0, - 0, -1648, 0, 0, -1648, -1648, -1648, 0, 0, 0, - 0, 0, 0, 0, 2365, 0, 1168, 0, 0, 2368, - 0, 0, 2370, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 0, 0, 26, - 0, 0, 0, 1565, 1435, 0, 1566, 0, 0, 0, - 1567, 1568, 1569, 1570, 1571, 1572, 0, 0, 0, 2388, - 0, 0, 2391, 0, 2393, 0, 0, 1169, 27, 0, - 1573, 0, 0, 0, 0, 0, 0, 28, 1575, 0, - 0, 0, 0, 0, 0, 1576, 0, 0, 0, 0, - 0, 29, 0, 0, 0, 0, 1156, 0, 30, 0, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 1577, 0, 32, 0, 0, 0, 0, 0, 1651, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 1672, 2038, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 535, 0, - 1601, 0, 0, 0, 2443, 0, 0, 0, 1170, 0, - 0, 0, 36, 0, 0, 37, 0, 0, 535, 535, - 38, 1601, 0, 1601, 0, 1476, 1476, 1886, 0, 0, - 1476, 0, 0, 1601, 39, 0, 1601, 535, 0, 0, - 0, 1601, 0, 0, 1601, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 1171, - 0, 1578, 0, 1235, 0, 0, 0, 1172, 0, 0, - 0, 0, 41, 0, 0, -43, 0, 1579, 0, 1173, - 0, 0, 1580, 0, 0, 0, 1601, 0, 0, 0, - 1601, 0, 0, 1601, 1601, 1601, 0, 0, 0, 1601, - 1157, 0, 0, 1601, 1581, 1582, 0, 0, 0, 0, - 1174, 0, 0, 0, 2542, 0, 0, 0, 0, 1583, - 0, 1435, 0, 0, 1565, 0, 1435, 1566, 0, 0, - 0, 1567, 1568, 1569, 1570, 1571, 1572, 0, 0, 0, + 0, 0, 534, 534, 0, 828, 0, 1069, 1069, 0, + 678, 0, 2625, 0, 0, 677, 0, 1693, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 677, 0, -1630, 3077, 0, + 0, 0, 0, -1912, 0, 0, -1630, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1912, + 0, 0, 0, -1630, -1912, -1630, -1630, 0, 0, 0, + 1232, 1239, 1088, 0, 0, 0, 0, 0, 3077, 828, + 0, 677, 2586, 2587, 2588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1573, 2152, 0, 2611, 0, 1159, 1584, 1176, 1575, - 1585, 1601, 0, 0, 0, 0, 1576, 0, 0, 0, - 0, 0, 0, 0, 1586, 535, 0, 1587, 1833, 1835, - 1177, 0, 1564, 0, 0, 0, 2153, 1565, 0, 0, - 1566, 1577, 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, - 1179, 0, 0, 0, 0, 1601, 0, 0, 0, 0, - 0, 0, 0, 0, 1573, 0, 0, 1574, 0, 0, - 0, 1601, 1575, 0, 0, 0, 1601, 0, 0, 1576, + 0, -1912, -1630, 0, 0, -1630, -1630, -1630, 535, 0, + 0, 677, 0, 0, 0, 830, 0, 0, 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2602, 0, 0, 0, 0, 0, 0, 0, 0, 2607, - 0, 0, 0, 0, 1577, 1161, 0, 0, 2615, 0, - 0, 2618, 0, 2620, 0, 0, 0, 1588, 0, 0, - 0, 2624, 0, 0, 0, 0, 0, 0, 0, 2631, - 2632, 0, 0, 2635, 0, 0, 0, 0, 0, 0, - 0, 0, 1578, 0, 0, 0, 0, 2645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1579, 2662, - 0, 0, 0, 1580, 0, 0, 0, 0, 0, 0, + 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2995, 0, + 0, 0, 0, 1, 0, 0, 1582, 0, 0, 534, + 0, 0, 0, 2, 0, 3, 4, 0, 0, 0, + 0, 0, 2646, 0, 0, 0, 5, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 1693, 0, 0, + 7, 0, 0, 828, 0, 0, 0, 0, 0, 840, + 840, 840, 8, 3077, 0, 0, 0, 0, 0, 0, + 0, 1909, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 11, 0, 535, + 0, 0, 0, 1933, 0, 0, 0, 0, 0, 0, + 0, 1693, 0, 833, 0, 12, 0, 0, 3077, -1912, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, + 14, 0, 0, 0, 2798, 0, 2108, 0, 0, 15, + 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 840, 0, 17, 0, 18, 19, 0, 0, 830, + 0, 0, 0, 831, 0, 0, 1442, 0, 0, 20, + 0, 0, 0, 21, 0, 0, 1463, 0, 0, 1465, + 0, 0, 1475, 1478, 1483, 1486, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1151, 0, 22, 535, + 0, 0, 1152, 2834, 2835, 2836, 2837, 0, 0, 1164, + 0, 0, 0, 23, 0, 0, 0, 0, 1232, 0, + 0, 0, -1912, 0, 0, 0, 535, 0, 1165, 1589, + 1590, 1591, 1592, 1593, 1594, 1528, 0, 0, 0, 24, + 0, 535, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 0, 1532, 0, 830, 0, 0, 0, 831, 0, + 0, 0, 0, 1535, 1536, 1537, 0, 1541, 1545, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1166, + 0, 0, 0, 0, 0, 828, 0, 833, 0, 0, + 0, 0, 0, 0, 1603, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1153, 0, + 0, 0, 0, 0, 0, 2920, 0, 25, 0, 0, + 26, 0, 0, 0, 0, 830, 0, 0, 0, 831, + 0, 0, 0, 0, 0, 0, 1933, 0, 0, 0, + 1429, 0, 0, 1642, 0, 0, 0, 1658, 1663, 27, + 830, 1445, 1446, 0, 831, 0, 1461, 1462, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1581, 1582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1833, 1835, 0, 0, - 1583, 0, 0, 0, 0, 1578, 0, 1435, 0, 0, + 1167, 0, 29, 0, 0, 0, 0, 0, 0, 30, + -1644, 0, 833, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 830, 0, 0, 1429, + 831, 0, 0, 0, 0, 33, 0, 1232, 0, 34, + 1560, 0, 0, 0, 0, 1561, 0, 0, 1562, 1232, + 0, 1168, 1563, 1564, 1565, 1566, 1567, 1568, 35, 1169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1589, 1579, 0, 1590, 1591, 1592, 1580, 1593, 1594, 1595, - 1596, 1597, 1598, 0, 0, 0, 0, 0, 1584, 0, - 1862, 1585, 0, 0, 0, 0, 0, 0, 1581, 1582, - 0, 0, 0, 0, 0, 1586, 0, 0, 1587, 1601, - 0, 0, 0, 1583, 0, 0, 0, 0, 0, 0, - 0, 1886, 1886, 0, 1476, 1476, 1476, 1476, 1476, 0, - 0, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, - 1476, 1886, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1584, 0, 0, 1585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1586, 0, - 0, 1587, 0, 0, 0, 0, 0, 0, 2855, 2856, - 0, 0, 0, 0, 0, 0, 2861, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2866, 1588, 0, - 0, 2868, 2869, 0, 0, 0, 2870, 0, 0, 0, - 0, 2873, 0, 0, 2876, 2877, 0, 0, 0, 2881, + 0, 1170, 1569, 36, 1232, 1570, 37, 0, 535, 0, + 1571, 38, 0, 833, 0, 0, 0, 1572, 0, 0, + 0, 0, 1154, 0, 0, 39, 1558, 0, 0, 0, + 0, 0, 1171, 0, 0, -1644, 0, 0, 833, 0, + 0, 0, 1573, 0, 0, 0, 0, 0, 0, 40, + 0, 0, 0, 1429, 830, 1429, 1429, 0, 831, 0, + 0, 0, 0, 41, 0, 0, -43, 0, 0, 0, + 0, 0, 0, 0, 1172, 0, 0, 0, 1156, 0, + 1173, 0, 0, 0, 833, 0, 0, -1644, 0, 0, + 0, 830, 0, 0, 0, 831, 0, 0, 0, 0, + 0, -1644, 1174, 0, 0, 0, -1644, 0, 1175, 0, + 0, -1644, 0, 0, 0, 0, 0, 0, 0, 0, + -1644, 0, 1176, 1429, -1644, 0, 1429, 1429, 0, 0, + 0, 0, 0, 0, 0, 0, 3050, 0, 0, 0, + 0, 0, 0, 1574, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1644, 3074, 0, 0, 1575, + 0, 0, 0, 0, 1576, 830, 0, 0, 0, 831, + 0, 0, 0, 0, 0, -1644, 0, 1158, 0, 0, + 0, 0, 833, 0, 0, 0, 1577, 1578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1072, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1601, 0, 0, 0, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 0, 0, 0, 0, 0, 1476, - 1476, 1588, 1601, 1601, 0, 0, 0, 0, 0, 2912, - 0, 0, 0, 0, 1601, 0, 0, 1601, 0, 0, - 0, 1435, 0, 0, 0, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 0, 2931, 0, 0, 0, - 0, 1589, 0, 0, 1590, 1591, 1592, 0, 1593, 1594, - 1595, 1596, 1597, 1598, 0, 0, 0, 0, 1983, 1601, + 1472, 1579, 3102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 833, + 1851, 0, 0, 0, -1644, 0, 0, -1644, 0, 0, + 0, 0, 3128, -1644, 0, 0, 0, 0, 0, 1580, + 0, 0, 1581, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1483, 1582, 1483, 1483, 1583, + 0, 0, 0, 535, 535, 0, 0, 0, -1644, 0, + 1069, 1069, 0, 0, 0, 0, 0, 0, 0, 830, + 0, 0, 535, 831, 0, 0, 0, 0, 0, 0, + 0, -1644, 0, 833, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1794, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1803, 0, 1804, + 0, 0, 0, 1985, 0, 1810, 0, 0, 0, 1989, + 1990, 1991, 1992, 1993, 1994, 1995, 0, 678, 1597, 1584, + 2004, 2005, 1811, 0, 0, 2016, 0, 0, 0, 2019, + 0, 0, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, + 2035, 0, 0, 2036, -1644, 0, 0, 0, 0, 0, + 1069, 0, 1232, -1644, 0, 1829, 1831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1644, 0, -1644, -1644, 0, 0, 2061, 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1561, 0, 0, 1562, 1536, 1537, 0, 1563, -1644, + 0, 0, -1644, -1644, -1644, 0, 0, 0, 0, 0, + 0, 0, 1585, 0, 0, 1586, 1587, 1588, 0, 1589, + 1590, 1591, 1592, 1593, 1594, 0, 1571, 1561, 1597, 0, + 1562, 0, 0, -1912, 1563, 1597, 0, -1912, -1912, -1912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1573, 0, + 0, 830, 1571, 0, 0, 831, 0, 0, 0, 1572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1589, 0, 0, 1590, 1591, 1592, - 0, 1593, 1594, 1595, 1596, 1597, 1598, 0, 0, 0, - 0, 0, 0, 0, 2958, 0, 0, 0, 0, 0, + 0, 1232, 0, 0, 2179, 2180, 0, 2181, 0, 0, + 0, 0, 0, 0, 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1232, 0, 1561, 0, 0, 1562, 0, 2626, 0, + 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1565, 0, 0, 1566, 0, 0, 0, - 1567, 0, 1549, 1570, 1571, 1572, 0, 1601, 1601, 1601, - 0, 0, 1565, 0, 0, 1566, 0, 0, 2365, 1567, - 1568, 1569, 1570, 1571, 1572, 0, 0, 0, 1575, 3006, - 3007, 0, 0, 3008, 0, 1576, 0, 0, 0, 1573, - 0, 0, 0, 0, 0, 0, 0, 1575, 0, 0, - 0, 0, 3023, 0, 1576, 0, 0, 0, 0, 0, - 1577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3033, 0, 0, 0, 0, 1565, 0, 0, 1566, 1577, - 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, 0, 0, + 1569, 0, 0, 2607, 0, 0, 0, 0, 1571, -1912, + 0, 0, 0, 0, 0, 1572, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -1912, 0, 2090, 2090, 0, + -1912, 0, 0, 0, 0, 0, 0, 0, 0, 833, + 1573, 2279, 0, 0, 2280, 1574, 2281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1573, 0, 0, 0, 0, 1601, 1601, 1601, - 1575, 0, 1886, 1886, 1886, 1886, 1886, 1576, 0, 0, - 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886, - 0, 0, 0, 3077, 1601, 1601, 0, 0, 0, 0, - 0, 0, 1577, 0, 0, 0, 0, 0, 0, 0, - 0, 2855, 0, 0, 0, 3094, 0, 0, 0, 3097, - 0, 1578, 1601, 0, 0, 1601, 0, 0, 0, 0, - 1072, 0, 0, 0, 0, 0, 0, 1579, 1601, 0, - 1578, 0, 1580, 0, 0, 0, 0, 3117, 0, 1601, - 0, 0, 1601, 0, 1601, 0, 1579, 0, 1886, 1886, - 0, 1580, 0, 0, -1916, -1916, 0, 0, 0, 0, - 0, 0, 1601, 1476, 1476, 1601, 0, 1601, 0, 1583, - 0, 0, 0, 1581, 1582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3142, 0, 0, 0, 1583, 0, - 0, 0, 0, 1578, 2855, 0, 1565, 0, 0, 1566, - 0, 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, 1579, - -1916, 0, 0, 0, 1580, 0, 0, 1601, 0, 0, - 0, 0, 0, 1573, 1586, 0, 1584, 3182, 0, 1585, - 0, 1575, 0, 0, 0, 0, 1581, 1582, 1576, 0, - 0, 0, 0, 1586, 0, 0, 1587, 0, 0, 0, - 0, 1583, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1577, 0, 0, 0, 0, 0, 0, + 0, 1575, 0, 0, 0, 0, 1576, -1912, 0, 0, + 0, 0, 0, 0, 2306, 2307, 0, 0, 2061, 0, + 0, 0, 0, 0, 1429, 0, 0, 0, 1597, 0, + 0, 0, 0, 0, 1429, 0, 0, 1429, 1561, 0, + 0, 1562, 0, 1579, 0, 1563, 0, 2334, 0, 1597, + 2337, 1597, 0, 1472, 1472, 1882, 0, 0, 1472, 0, + 0, 1597, 1582, 0, 1597, 1232, 0, 0, 0, 1597, + 0, 0, 1597, 1571, 0, 2350, 0, 0, 0, 0, + -1912, 1574, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1575, 1582, 0, + 0, 2361, 1576, 0, 0, 1573, 2364, 0, 0, 2366, + 0, 0, 0, 0, 1597, 0, 2242, 2244, 1597, 0, + 0, 1597, 1597, 1597, 1577, 1578, 0, 1597, 0, 0, + 0, 1597, 0, 0, 0, 0, 0, 0, 0, 1579, + 0, 0, 1429, 0, 0, 0, 2384, 0, 0, 2387, + 0, 2389, 0, 0, 0, -1912, 0, 1561, 0, 0, + 1562, 0, 0, 0, 1563, 1564, 1565, 1566, 1567, 1568, + 0, 0, 0, 0, 0, 2874, 0, 1580, 0, 0, + 1581, 0, 0, 0, 1569, 0, 0, 0, 0, 1597, + 0, 1584, 1571, 0, 1582, 1642, 0, 1583, 0, 1572, + 0, 0, 0, 0, 0, 0, -1912, 0, 0, 0, + 0, 0, 1663, 2034, 0, 0, 0, 0, 0, 0, + 0, 0, -1912, 0, 1573, 0, 0, -1912, 1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1584, - 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, - 1565, 0, 0, 1566, 0, 0, 1586, 1567, 0, 1587, - 3232, 3232, 0, 0, 0, 1565, 1601, 1588, 1566, 0, - 0, 0, 1567, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3232, 1575, 1588, 0, 0, 0, - 0, 0, -1916, 0, 0, 0, 0, 1476, 0, 0, - 1575, 0, 0, 0, 0, 0, 0, -1916, 0, 0, - 0, 0, 0, 0, 1578, 0, 0, 1577, 3232, 0, - 0, 0, 0, 0, 0, 0, 1601, 0, 0, 0, - 1579, 1601, 1577, 0, 0, 1580, 0, 0, 0, 1601, - 0, 0, 1601, 0, 1601, 0, 0, 0, 1601, 1588, - 0, 1886, 1886, 0, 0, 1601, 1601, 1581, 1582, 1601, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1601, - 1589, 0, 1583, 1590, 1591, 1592, 0, 1593, 1594, 1595, - 1596, 1597, 1598, 0, 0, 0, 1601, 2630, 0, 1589, - 0, 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, - 1597, 1598, 2878, 0, 0, 0, 1983, 0, 0, 0, - 1584, 0, 0, 1585, 0, 0, 1476, 0, -1916, 0, - 0, 0, 0, 0, 0, 0, 0, 1586, 0, 0, - 1587, 0, 0, -1916, -1916, 0, 0, 0, 0, -1916, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1916, - 0, 0, 1589, 0, -1916, 1590, 1591, 1592, 0, 1593, - 1594, 1595, 1596, 1597, 1598, 0, 0, 0, 0, 2282, - 0, 0, 0, 0, 0, 0, -1916, 0, 0, 0, + 0, 2439, 0, 0, 1597, 1429, 0, 0, 0, 1597, + 0, 0, 0, 0, 0, 0, 0, 0, -1912, 0, + 0, 0, 0, 0, -1912, 1589, 1590, 1591, 1592, 1593, + 1594, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1584, 0, 0, + 0, 0, 0, 0, 1585, 0, 0, -1912, -1912, -1912, + 1232, 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1582, + 0, 0, 0, 0, 0, 1574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -1916, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1575, 0, 0, 0, 0, 1576, 0, 0, 0, + 0, 2538, 0, 0, 0, 0, 0, 0, 0, 1151, + 0, 0, 2403, 0, 0, 1152, 0, 0, 1577, 1578, + 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1579, 2416, 2416, 0, 0, 0, 0, + 1585, 1165, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 0, 0, 0, 0, 1979, 0, 0, + 0, 0, -1912, 0, 0, 0, 0, 0, 0, 0, + 0, 1580, 0, 0, 1581, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1597, 1582, 0, + 0, 1583, 1166, 0, 0, 0, 0, 0, 0, 1882, + 1882, 0, 1472, 1472, 1472, 1472, 1472, 0, 0, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1882, + 0, 1153, 0, 0, 0, 0, 0, 2598, 0, 0, + 0, 0, 0, 0, 0, 0, 2603, 0, 0, 0, + 0, 0, 0, 0, 0, 2611, 0, 0, 2614, 0, + 2616, 0, 0, 0, 0, 0, 0, 0, 2620, 0, + 0, 0, 0, 0, 0, -1912, 2627, 2628, 0, 0, + 2631, 0, 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, + 0, 1584, 0, 1167, 0, 0, 0, 0, 0, 0, + 0, 2543, 0, 0, 0, 0, 0, 0, 0, 0, + 2647, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2664, 0, 0, 0, 0, 0, 0, + 0, 1597, 0, 0, 0, 1597, 1597, 1597, 1597, 1597, + 1597, 1597, 0, 0, 1168, 0, 0, 1472, 1472, 0, + 1597, 1597, 1169, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1597, 0, 1170, 1597, 0, 0, 0, 0, + 0, 0, 0, 1597, 1597, 1597, 1597, 1597, 1597, 1597, + 1597, 1597, 1597, 0, 0, 1154, 0, 0, 0, 0, + 0, 0, 0, 0, 1585, 1171, 0, 1586, 1587, 1588, + 0, 1589, 1590, 1591, 1592, 1593, 1594, 1597, 0, 0, + 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1561, 0, 0, 1562, 0, 0, + 0, 1563, 1564, 1565, 1566, 1567, 1568, 2148, 0, 0, + 0, 1156, 0, 1173, 0, 0, 0, 0, 0, 0, + 0, 1569, 0, 0, 0, 0, 0, 0, 0, 1571, + 0, 0, 0, 0, 0, 1174, 1572, 0, 0, 0, + 0, 2149, 0, 0, 0, 2851, 2852, 0, 0, 0, + 0, 0, 0, 2857, 0, 1176, 0, 0, 0, 0, + 0, 1573, 0, 0, 2862, 0, 0, 0, 2864, 2865, + 0, 0, 0, 2866, 0, 0, 0, 0, 2869, 0, + 0, 2872, 2873, 0, 0, 0, 2877, 0, 0, 0, + 0, 0, 0, 0, 0, 1597, 1597, 1597, 0, 0, + 0, 0, 0, 0, 1069, 0, 0, 0, 0, 0, + 1158, 0, 0, 0, 1429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1586, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1586, 0, 0, 0, - 0, 0, 0, 1886, 1476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1601, - 1601, 0, 0, 0, 0, 1601, 0, 0, 0, 0, - 1601, 0, 1601, 1601, 1601, 0, 0, 1601, 0, 0, - 1601, 1601, 0, 0, 0, 1601, 0, 0, 0, 0, + 0, 0, 1574, 2927, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1575, 0, + 0, 0, 0, 1576, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1597, 1597, 1597, 0, 0, + 1882, 1882, 1882, 1882, 1882, 1577, 1578, 0, 1882, 1882, + 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 0, 0, + 1579, 0, 1597, 1597, 0, 1561, 0, 0, 1562, 0, + 0, 0, 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1589, -1916, 0, 1590, 1591, 1592, 0, - 1593, 1594, 1595, 1596, 1597, 1598, 1601, 0, 0, -1916, - 2372, 0, 1886, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1601, 0, 0, 0, 0, + 1597, 2954, 1569, 1597, 0, 0, 0, 0, 1580, 0, + 1571, 1581, 0, 0, 0, 0, 1597, 1572, 0, 0, + 0, 0, 0, 0, 0, 1582, 0, 1597, 1583, 0, + 1597, 0, 1597, 0, 0, 0, 1882, 1882, 0, 538, + 0, 0, 1573, 0, 0, 0, 0, 0, 0, 1545, + 1597, 1472, 1472, 1597, 0, 1597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2361, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3002, 3003, 0, 0, + 3004, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 539, 1429, 0, 0, 0, 0, 1429, 0, + 3020, 0, 0, 0, 0, 1597, 0, 0, 540, 0, + 0, 0, 0, 0, 0, 0, 0, 3029, 1584, 0, + 0, 0, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1574, 0, 0, 0, 0, 0, 1829, + 1831, 0, 0, 0, 0, 0, 0, 0, 0, 1575, + 0, 0, 542, 0, 1576, 0, 0, 0, 0, 0, + 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, + 3073, 0, 0, 0, 544, 0, 1577, 1578, 0, 545, + 0, 0, 0, 0, 0, 0, 0, 0, 2851, 0, + 0, 1579, 3090, 0, 1597, 0, 3093, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 546, 0, 1069, 0, + 0, 1585, 0, 0, 1586, 1587, 1588, 0, 1589, 1590, + 1591, 1592, 1593, 1594, 3113, 1472, 0, 0, 2278, 1580, + 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1582, 0, 0, 1583, + 0, 547, 0, 0, 1597, 548, 0, 0, 0, 1597, + 0, 0, 0, 0, 0, 0, 0, 1597, 0, 0, + 1597, 3138, 1597, 0, 0, 0, 1597, 0, 0, 1882, + 1882, 2851, 0, 1597, 1597, 0, 0, 1597, 0, 0, + 1561, 0, 0, 1562, 0, 0, 0, 1563, 1564, 1565, + 1566, 1567, 1568, 1597, 0, 0, 0, 0, 1829, 1831, + 0, 0, 0, 0, 3178, 0, 0, 1569, 549, 1429, + 1597, 0, 0, 0, 0, 1571, 0, 0, 0, 0, + 0, 0, 1572, 550, 0, 0, 0, 0, 0, 1584, + 0, 0, 0, 0, 1472, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1573, 0, 0, + 0, 0, 0, 0, 0, 0, 551, 0, 0, 552, + 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, + 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3228, 3228, 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1601, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, + 557, 3228, 0, 0, 0, 0, 0, 0, 0, 558, + 0, 0, 0, 0, 0, 559, 0, 0, 0, 0, + 0, 0, 1585, 0, 0, 1586, 1587, 1588, 0, 1589, + 1590, 1591, 1592, 1593, 1594, 3228, 0, 0, 1574, 2368, + 0, 560, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1575, 0, 0, 0, 0, 1576, + 0, 1882, 1472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1886, 0, + 0, 1577, 1578, 0, 0, 0, 0, 1597, 1597, 0, + 0, 0, 0, 1597, 0, 0, 1579, 0, 1597, 0, + 1597, 1597, 1597, 0, 0, 1597, 0, 0, 1597, 1597, + 0, 0, 0, 1597, 0, 0, 0, 0, 0, 0, + 0, 1429, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1580, 0, 0, 1581, 0, 0, + 0, 0, 0, 0, 1597, 0, 0, 0, 0, 0, + 1882, 1582, 0, 0, 1583, 0, 0, 0, 0, 0, + 0, 0, 0, 1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1916, 0, 0, - 1601, 1601, 1601, 0, 1593, 1594, 1595, 1596, 1597, 1598, - 0, 0, -1916, 0, 0, 0, 0, 1601, 0, 1593, - 1594, 1595, 1596, 1597, 1598, 0, 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1597, 1597, + 1597, 0, 0, 0, 1584, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1597, 0, 0, 0, + 0, 0, 0, 0, 0, 1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1601, 0, - 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1601, 0, 0, 0, - 0, 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, - 115, 0, 0, 0, 0, 1018, 1601, 0, 116, 117, - 0, 118, 119, 120, 121, 122, 123, 124, 125, 1019, - 127, 1020, 1021, 0, 130, 131, 132, 133, 134, 135, - 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, 142, - 143, 144, 607, 0, 608, 0, 1025, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 1601, 157, 158, 159, - 160, 161, 162, 0, 163, 164, 165, 166, 609, 610, - 611, 612, 613, 614, 615, 172, 173, 174, 175, 176, - 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, 184, - 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, - 0, 0, 194, 195, 785, 197, 198, 0, 199, 200, - 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, - 1029, 210, 211, 212, 213, 214, 616, 1030, 216, 0, - 217, 218, 1031, 220, 0, 221, 0, 222, 223, 21, - 224, 225, 226, 227, 228, 229, 0, 230, 0, 1032, - 1033, 233, 0, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, - 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, - 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, - 275, 276, 277, 0, 278, 279, 280, 618, 619, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 1037, 306, 1038, 308, 309, 310, 311, - 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, 319, - 320, 321, 0, 322, 323, 0, 0, 1042, 325, 326, - 0, 0, 327, 328, 329, 330, 331, 622, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, - 344, 623, 346, 347, 348, 349, 350, 351, 352, 0, - 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, - 1043, 363, 364, 365, 366, 0, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 383, 384, 385, 1044, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 29, 398, - 399, 400, 401, 402, 625, 404, 405, 406, 407, 408, - 409, 410, 411, 1045, 413, 0, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 626, 429, 0, 430, 431, 34, 432, 433, 434, 435, - 436, 437, 438, 0, 1046, 1047, 0, 0, 441, 442, - 627, 444, 628, 1048, 446, 447, 629, 449, 450, 451, - 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, - 630, 0, 461, 462, 463, 464, 465, 631, 1049, 0, - 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, - 0, 39, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 1050, 0, 40, 0, 0, 0, 0, - 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, 1055, - 2995, 0, 0, 0, 1056, 1057, 1058, 1059, 1193, 1012, - 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, - 109, 110, 111, 112, 1194, 113, 114, 115, 0, 0, - 0, 0, 1018, 0, 0, 116, 117, 0, 118, 119, - 120, 1195, 122, 123, 124, 125, 1019, 1196, 1020, 1021, - 0, 130, 131, 132, 133, 134, 135, 1022, 606, 136, - 137, 1023, 1024, 140, 0, 141, 142, 143, 144, 607, - 0, 1197, 0, 1198, 148, 149, 150, 151, 152, 1199, - 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 1200, 164, 165, 166, 1201, 1202, 1203, 1204, 613, - 614, 1205, 172, 173, 174, 175, 176, 177, 178, 1026, - 1027, 181, 1028, 182, 0, 183, 184, 185, 186, 187, - 188, 0, 189, 190, 191, 192, 193, 1206, 0, 194, - 195, 785, 197, 198, 0, 199, 200, 201, 0, 202, - 203, 204, 0, 205, 206, 207, 208, 1029, 210, 211, - 212, 213, 214, 616, 1030, 216, 0, 217, 218, 1031, - 220, 0, 221, 0, 222, 1207, 0, 1208, 225, 226, - 1209, 1210, 229, 0, 230, 0, 1032, 1033, 233, 0, - 234, 235, 236, 237, 238, 239, 240, 1211, 242, 243, - 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 1212, 254, 255, 256, 257, 258, 259, 1034, 1035, - 0, 1036, 0, 263, 1213, 1214, 266, 1215, 268, 269, - 270, 271, 272, 273, 0, 0, 274, 1216, 276, 1217, - 0, 278, 279, 280, 618, 619, 281, 282, 283, 284, - 285, 1218, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 1037, 1219, 1038, 308, 309, 310, 311, 1039, 312, 313, - 1220, 315, 1040, 620, 317, 1041, 319, 320, 321, 0, - 322, 323, 0, 0, 1042, 325, 326, 0, 0, 327, - 328, 1221, 330, 1222, 622, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 0, 343, 344, 623, 1223, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 0, 359, 360, 361, 1043, 363, 364, - 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 1224, - 383, 384, 385, 1044, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 1225, 404, 405, 406, 407, 408, 1226, 410, 411, - 1045, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 1227, 427, 626, 429, 0, - 430, 431, 0, 432, 1228, 434, 435, 436, 437, 438, - 0, 1046, 1047, 0, 0, 441, 442, 627, 444, 628, - 1048, 446, 447, 1229, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 1230, 0, 461, - 462, 463, 464, 465, 466, 1049, 1231, 468, 1232, 470, - 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, 1233, - 0, 0, 0, 0, 1054, 0, 1055, 1234, 0, 0, - 0, 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, - 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 0, 113, 114, 115, 0, 0, 0, 0, 1018, - 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, - 123, 124, 125, 1019, 127, 1020, 1021, 0, 130, 131, - 132, 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, - 140, 0, 141, 142, 143, 144, 607, 0, 608, 0, - 1025, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, - 165, 166, 609, 610, 611, 612, 613, 614, 615, 172, - 173, 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, - 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, - 190, 191, 192, 193, 0, 0, 194, 195, 785, 197, - 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, - 205, 206, 207, 208, 1029, 210, 211, 212, 213, 214, - 616, 1030, 216, 0, 217, 218, 1031, 220, 0, 221, - 0, 222, 223, 21, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 1032, 1033, 233, 0, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, - 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, - 280, 618, 619, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 1037, 306, 1038, - 308, 309, 310, 311, 1039, 312, 313, 314, 315, 1040, - 620, 317, 1041, 319, 320, 321, 0, 322, 323, 0, - 0, 1042, 325, 326, 0, 0, 327, 328, 329, 330, - 331, 622, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 0, 343, 344, 623, 346, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 0, 359, 360, 361, 1043, 363, 364, 365, 366, 0, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 382, 383, 384, 385, - 1044, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 29, 398, 399, 400, 401, 402, 625, 404, - 405, 406, 407, 408, 409, 410, 411, 1045, 413, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 626, 429, 0, 430, 431, 34, - 432, 433, 434, 435, 436, 437, 438, 0, 1046, 1047, - 0, 0, 441, 442, 627, 444, 628, 1048, 446, 447, - 629, 449, 450, 451, 452, 453, 0, 0, 454, 455, - 456, 457, 458, 459, 630, 0, 461, 462, 463, 464, - 465, 631, 1049, 0, 468, 469, 470, 471, 472, 473, - 474, 0, 0, 475, 0, 39, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 1050, 0, 40, - 0, 0, 0, 0, 1051, 1052, 0, 0, 0, 0, - 0, 1054, 0, 1055, 0, 0, 0, 0, 1056, 1057, - 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 1018, 0, 0, 116, - 117, 0, 118, 119, 120, 121, 122, 123, 124, 125, - 1019, 127, 1020, 1021, 1483, 130, 131, 132, 133, 134, - 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, - 142, 143, 144, 607, 0, 608, 0, 1025, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 163, 164, 165, 166, 609, - 610, 611, 612, 613, 614, 615, 172, 173, 174, 175, - 176, 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, - 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 785, 197, 198, 0, 199, - 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 1029, 210, 211, 212, 213, 214, 616, 1030, 216, - 0, 217, 218, 1031, 220, 0, 221, 0, 222, 223, - 1484, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 1032, 1033, 233, 0, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, - 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 0, 1485, - 274, 275, 276, 277, 0, 278, 279, 280, 618, 619, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 1037, 306, 1038, 308, 309, 310, - 311, 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, - 319, 320, 321, 0, 322, 323, 0, 0, 1042, 325, - 326, 0, 0, 327, 328, 329, 330, 331, 622, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 623, 346, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 1043, 363, 364, 365, 366, 0, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 383, 384, 385, 1044, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 625, 404, 405, 406, 407, - 408, 409, 410, 411, 1045, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 626, 429, 0, 430, 431, 0, 432, 433, 434, - 435, 436, 437, 438, 0, 1046, 1047, 0, 1486, 441, - 442, 627, 444, 628, 1048, 446, 447, 629, 449, 450, - 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 630, 0, 461, 462, 463, 464, 465, 466, 1049, - 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 1050, 0, 0, 0, 0, 0, - 0, 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, - 1055, 0, 0, 0, 0, 1056, 1057, 1058, 1059, 104, - 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1597, 0, 0, 1597, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1585, 0, 1597, + 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, + 0, 0, 0, 0, 2567, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1597, 0, 0, 0, 0, 104, + 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, - 108, 109, 110, 111, 112, -1002, 113, 114, 115, 0, - 0, 0, -1002, 1018, 0, 0, 116, 117, 0, 118, - 119, 120, 121, 122, 123, 124, 125, 1019, 127, 1020, - 1021, 0, 130, 131, 132, 133, 134, 135, 1022, 606, - 136, 137, 1023, 1024, 140, 0, 141, 142, 143, 144, - 607, 0, 608, 0, 1025, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, - 162, 0, 163, 164, 165, 166, 609, 610, 611, 612, - 613, 614, 615, 172, 173, 174, 175, 176, 177, 178, - 1026, 1027, 181, 1028, 182, 0, 183, 184, 185, 186, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 1015, 1597, 0, 116, 117, 0, 118, + 119, 120, 121, 122, 123, 124, 125, 1016, 127, 1017, + 1018, 0, 130, 131, 132, 133, 134, 135, 1019, 604, + 136, 137, 1020, 1021, 140, 0, 141, 142, 143, 144, + 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 1597, 157, 158, 159, 160, 161, + 162, 0, 163, 164, 165, 166, 607, 608, 609, 610, + 611, 612, 613, 172, 173, 174, 175, 176, 177, 178, + 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, - 194, 195, 785, 197, 198, 0, 199, 200, 201, 0, - 202, 203, 204, 0, 205, 206, 207, 208, 1029, 210, - 211, 212, 213, 214, 616, 1030, 216, 0, 217, 218, - 1031, 220, 0, 221, 0, 222, 223, 0, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 1032, 1033, 233, + 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, + 202, 203, 204, 0, 205, 206, 207, 208, 1026, 210, + 211, 212, 213, 214, 614, 1027, 216, 0, 217, 218, + 1028, 220, 0, 221, 0, 222, 223, 21, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, - 0, 252, 253, 254, 255, 256, 257, 258, 259, 1034, - 1035, 0, 1036, 0, 263, 264, 265, 266, 267, 268, + 0, 252, 253, 254, 255, 256, 257, 258, 259, 1031, + 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, - 277, 0, 278, 279, 280, 618, 619, 281, 282, 283, + 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 1037, 306, 1038, 308, 309, 310, 311, 1039, 312, - 313, 314, 315, 1040, 620, 317, 1041, 319, 320, 321, - 0, 322, 323, 0, 0, 1042, 325, 326, 0, 0, - 327, 328, 329, 330, 331, 622, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 0, 343, 344, 623, + 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, 312, + 313, 314, 315, 1037, 618, 317, 1038, 319, 320, 321, + 0, 322, 323, 0, 0, 1039, 325, 326, 0, 0, + 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 355, 356, 357, 358, 0, 359, 360, 361, 1043, 363, + 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 382, 383, 384, 385, 1044, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, - 401, 402, 625, 404, 405, 406, 407, 408, 409, 410, - 411, 1045, 413, -1002, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 626, 429, - 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, - 438, 0, 1046, 1047, 0, 0, 441, 442, 627, 444, - 628, 1048, 446, 447, 629, 449, 450, 451, 452, 453, - 0, 0, 454, 455, 456, 457, 458, 459, 630, 0, - 461, 462, 463, 464, 465, 466, 1049, 0, 468, 469, - 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, + 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 29, 398, 399, 400, + 401, 402, 623, 404, 405, 406, 407, 408, 409, 410, + 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 624, 429, + 0, 430, 431, 34, 432, 433, 434, 435, 436, 437, + 438, 0, 1043, 1044, 0, 0, 441, 442, 625, 444, + 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, + 0, 0, 454, 455, 456, 457, 458, 459, 628, 0, + 461, 462, 463, 464, 465, 629, 1046, 0, 468, 469, + 470, 471, 472, 473, 474, 0, 0, 475, 0, 39, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, - 0, 0, 0, 0, 0, 1054, 0, 1055, 0, 0, - 0, 0, 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, - 1014, 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, + 496, 1047, 0, 40, 0, 0, 0, 0, 1048, 1049, + 0, 0, 0, 0, 0, 1051, 0, 1052, 2991, 0, + 0, 0, 1053, 1054, 1055, 1056, 1190, 1009, 515, 1010, + 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 1647, 113, 114, 115, 0, 0, 0, 0, - 1018, 0, 0, 116, 117, 0, 118, 119, 120, 121, - 122, 123, 124, 125, 1019, 127, 1020, 1021, 0, 130, - 131, 132, 133, 134, 135, 1022, 606, 136, 137, 1023, - 1024, 140, 0, 141, 142, 143, 144, 607, 0, 608, - 0, 1025, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, - 164, 165, 166, 609, 610, 611, 612, 613, 614, 615, - 172, 173, 174, 175, 176, 177, 178, 1026, 1027, 181, - 1028, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 785, + 111, 112, 1191, 113, 114, 115, 0, 0, 0, 0, + 1015, 0, 0, 116, 117, 0, 118, 119, 120, 1192, + 122, 123, 124, 125, 1016, 1193, 1017, 1018, 0, 130, + 131, 132, 133, 134, 135, 1019, 604, 136, 137, 1020, + 1021, 140, 0, 141, 142, 143, 144, 605, 0, 1194, + 0, 1195, 148, 149, 150, 151, 152, 1196, 154, 155, + 156, 0, 157, 158, 159, 160, 161, 162, 0, 1197, + 164, 165, 166, 1198, 1199, 1200, 1201, 611, 612, 1202, + 172, 173, 174, 175, 176, 177, 178, 1023, 1024, 181, + 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, + 189, 190, 191, 192, 193, 1203, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 1029, 210, 211, 212, 213, - 214, 616, 1030, 216, 0, 217, 218, 1031, 220, 0, - 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 1032, 1033, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, - 279, 280, 618, 619, 281, 282, 283, 284, 285, 286, + 0, 205, 206, 207, 208, 1026, 210, 211, 212, 213, + 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, + 221, 0, 222, 1204, 0, 1205, 225, 226, 1206, 1207, + 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, + 236, 237, 238, 239, 240, 1208, 242, 243, 244, 245, + 0, 246, 247, 248, 249, 250, 251, 0, 252, 1209, + 254, 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, + 0, 263, 1210, 1211, 266, 1212, 268, 269, 270, 271, + 272, 273, 0, 0, 274, 1213, 276, 1214, 0, 278, + 279, 280, 616, 617, 281, 282, 283, 284, 285, 1215, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 1037, 306, - 1038, 308, 309, 310, 311, 1039, 312, 313, 314, 315, - 1040, 620, 317, 1041, 319, 320, 321, 0, 322, 323, - 0, 0, 1042, 325, 326, 0, 0, 327, 328, 329, - 330, 331, 622, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 623, 346, 347, 348, + 297, 298, 299, 300, 301, 302, 303, 304, 1034, 1216, + 1035, 308, 309, 310, 311, 1036, 312, 313, 1217, 315, + 1037, 618, 317, 1038, 319, 320, 321, 0, 322, 323, + 0, 0, 1039, 325, 326, 0, 0, 327, 328, 1218, + 330, 1219, 620, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 0, 343, 344, 621, 1220, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 1043, 363, 364, 365, 366, + 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 383, 384, - 385, 1044, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 625, - 404, 405, 406, 407, 408, 409, 410, 411, 1045, 413, + 376, 377, 378, 379, 0, 380, 381, 1221, 383, 384, + 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 398, 399, 400, 401, 402, 1222, + 404, 405, 406, 407, 408, 1223, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 626, 429, 0, 430, 431, - 0, 432, 433, 434, 435, 436, 437, 438, 0, 1046, - 1047, 0, 0, 441, 442, 627, 444, 628, 1048, 446, - 447, 629, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 630, 0, 461, 462, 463, - 464, 465, 466, 1049, 0, 468, 469, 470, 471, 472, + 423, 424, 425, 1224, 427, 624, 429, 0, 430, 431, + 0, 432, 1225, 434, 435, 436, 437, 438, 0, 1043, + 1044, 0, 0, 441, 442, 625, 444, 626, 1045, 446, + 447, 1226, 449, 450, 451, 452, 453, 0, 0, 454, + 455, 456, 457, 458, 459, 1227, 0, 461, 462, 463, + 464, 465, 466, 1046, 1228, 468, 1229, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 1050, 0, - 0, 0, 0, 0, 0, 1051, 1052, 1648, 0, 0, - 0, 0, 1054, 0, 1055, 0, 0, 0, 0, 1056, - 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, - 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 105, 106, 107, 108, 109, 110, 111, 112, 2842, - 113, 114, 115, 0, 0, 0, 0, 1018, 0, 0, + 489, 490, 491, 492, 493, 494, 495, 496, 1047, 0, + 0, 0, 0, 0, 0, 1048, 1049, 1230, 0, 0, + 0, 0, 1051, 0, 1052, 1231, 0, 0, 0, 1053, + 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, + 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, - 125, 1019, 127, 1020, 1021, 0, 130, 131, 132, 133, - 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, - 141, 142, 143, 144, 607, 0, 608, 0, 1025, 148, + 125, 1016, 127, 1017, 1018, 0, 130, 131, 132, 133, + 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, + 141, 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, - 158, 159, 160, 161, 162, 0, 163, 164, 2843, 166, - 609, 610, 611, 612, 613, 614, 615, 172, 173, 174, - 175, 176, 177, 178, 1026, 1027, 181, 1028, 182, 0, + 158, 159, 160, 161, 162, 0, 163, 164, 165, 166, + 607, 608, 609, 610, 611, 612, 613, 172, 173, 174, + 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, - 192, 193, 0, 0, 194, 195, 785, 197, 198, 0, + 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, - 207, 208, 1029, 210, 211, 212, 213, 214, 616, 1030, - 216, 0, 217, 218, 1031, 220, 0, 221, 0, 222, - 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 2844, 1033, 233, 0, 234, 235, 236, 237, 238, + 207, 208, 1026, 210, 211, 212, 213, 214, 614, 1027, + 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, + 223, 21, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, - 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, + 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, - 0, 274, 275, 276, 277, 0, 278, 279, 280, 618, - 619, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 274, 275, 276, 277, 0, 278, 279, 280, 616, + 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1037, 306, 1038, 308, 309, - 310, 311, 1039, 312, 313, 314, 315, 1040, 620, 317, - 1041, 319, 320, 321, 0, 322, 323, 0, 0, 1042, - 325, 326, 0, 0, 327, 328, 329, 330, 331, 622, + 300, 301, 302, 303, 304, 1034, 306, 1035, 308, 309, + 310, 311, 1036, 312, 313, 314, 315, 1037, 618, 317, + 1038, 319, 320, 321, 0, 322, 323, 0, 0, 1039, + 325, 326, 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 0, 343, 344, 623, 346, 347, 348, 349, 350, 351, + 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, - 360, 361, 1043, 363, 364, 365, 366, 0, 367, 368, + 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 383, 384, 2845, 1044, 387, + 379, 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 625, 404, 405, 406, - 407, 408, 409, 410, 411, 1045, 413, 0, 414, 415, + 29, 398, 399, 400, 401, 402, 623, 404, 405, 406, + 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 626, 429, 0, 430, 431, 0, 432, 433, - 434, 435, 436, 437, 438, 0, 1046, 1047, 0, 0, - 441, 442, 627, 444, 628, 1048, 446, 447, 629, 449, + 426, 427, 624, 429, 0, 430, 431, 34, 432, 433, + 434, 435, 436, 437, 438, 0, 1043, 1044, 0, 0, + 441, 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, - 458, 459, 630, 0, 461, 462, 463, 464, 465, 466, - 1049, 0, 468, 469, 470, 471, 472, 473, 474, 0, - 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, + 458, 459, 628, 0, 461, 462, 463, 464, 465, 629, + 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 39, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 1050, 0, 0, 0, 0, - 0, 0, 1051, 1052, 2846, 0, 0, 0, 0, 1054, - 0, 2847, 0, 0, 0, 0, 1056, 1057, 1058, 1059, - 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, + 492, 493, 494, 495, 496, 1047, 0, 40, 0, 0, + 0, 0, 1048, 1049, 0, 0, 0, 0, 0, 1051, + 0, 1052, 0, 0, 0, 0, 1053, 1054, 1055, 1056, + 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 1018, 0, 0, 116, 117, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 1019, 127, - 1020, 1021, 0, 130, 131, 132, 133, 134, 135, 1022, - 606, 136, 137, 1023, 1024, 140, 0, 141, 142, 143, - 144, 607, 0, 608, 0, 1025, 148, 149, 150, 151, + 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, + 118, 119, 120, 121, 122, 123, 124, 125, 1016, 127, + 1017, 1018, 1479, 130, 131, 132, 133, 134, 135, 1019, + 604, 136, 137, 1020, 1021, 140, 0, 141, 142, 143, + 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 163, 164, 165, 166, 609, 610, 611, - 612, 613, 614, 615, 172, 173, 174, 175, 176, 177, - 178, 1026, 1027, 181, 1028, 182, 0, 183, 184, 185, + 161, 162, 0, 163, 164, 165, 166, 607, 608, 609, + 610, 611, 612, 613, 172, 173, 174, 175, 176, 177, + 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 785, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 1029, - 210, 211, 212, 213, 214, 616, 1030, 216, 0, 217, - 218, 1031, 220, 0, 221, 0, 222, 223, 0, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 1032, 1033, + 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 1026, + 210, 211, 212, 213, 214, 614, 1027, 216, 0, 217, + 218, 1028, 220, 0, 221, 0, 222, 223, 1480, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, - 1034, 1035, 0, 1036, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, - 276, 277, 0, 278, 279, 280, 618, 619, 281, 282, + 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 0, 1481, 274, 275, + 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 1037, 306, 1038, 308, 309, 310, 311, 1039, - 312, 313, 314, 315, 1040, 620, 317, 1041, 319, 320, - 321, 0, 322, 323, 0, 0, 1042, 325, 326, 0, - 0, 327, 328, 329, 330, 331, 622, 333, 334, 335, + 303, 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, + 312, 313, 314, 315, 1037, 618, 317, 1038, 319, 320, + 321, 0, 322, 323, 0, 0, 1039, 325, 326, 0, + 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 623, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 1043, + 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 383, 384, 385, 1044, 387, 388, 389, 390, + 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 625, 404, 405, 406, 407, 408, 409, - 410, 411, 1045, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 626, + 400, 401, 402, 623, 404, 405, 406, 407, 408, 409, + 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, - 437, 438, 0, 1046, 1047, 0, 0, 441, 442, 627, - 444, 628, 1048, 446, 447, 629, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 630, - 0, 461, 462, 463, 464, 465, 466, 1049, 0, 468, + 437, 438, 0, 1043, 1044, 0, 1482, 441, 442, 625, + 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 628, + 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 1050, 0, 0, 0, 0, 0, 0, 1051, - 1052, 1053, 0, 0, 0, 0, 1054, 0, 1055, 0, - 0, 0, 0, 1056, 1057, 1058, 1059, 104, 1663, 515, - 1013, 1014, 1015, 1664, 1017, 0, 0, 0, 0, 0, + 495, 496, 1047, 0, 0, 0, 0, 0, 0, 1048, + 1049, 0, 0, 0, 0, 0, 1051, 0, 1052, 0, + 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, 515, + 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, - 110, 111, 112, 1665, 113, 114, 115, 0, 0, 0, - 0, 1018, 0, 0, 116, 117, 0, 118, 119, 120, - 121, 122, 123, 124, 125, 1019, 127, 1020, 1021, 0, - 130, 131, 132, 133, 134, 135, 1022, 606, 136, 137, - 1023, 1024, 140, 0, 141, 142, 143, 144, 607, 0, - 608, 0, 1025, 148, 149, 150, 151, 152, 153, 154, + 110, 111, 112, -628, 113, 114, 115, 0, 0, 0, + -628, 1015, 0, 0, 116, 117, 0, 118, 119, 120, + 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, 0, + 130, 131, 132, 133, 134, 135, 1019, 604, 136, 137, + 1020, 1021, 140, 0, 141, 142, 143, 144, 605, 0, + 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, - 163, 164, 165, 166, 609, 610, 611, 612, 613, 614, - 615, 172, 173, 174, 175, 176, 177, 178, 1026, 1027, - 181, 1028, 182, 0, 183, 184, 185, 186, 187, 188, + 163, 164, 165, 166, 607, 608, 609, 610, 611, 612, + 613, 172, 173, 174, 175, 176, 177, 178, 1023, 1024, + 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, - 785, 197, 198, 0, 199, 200, 201, 0, 202, 203, - 204, 0, 205, 206, 207, 208, 1029, 210, 211, 212, - 213, 214, 616, 1030, 216, 0, 217, 218, 1031, 220, + 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 1026, 210, 211, 212, + 213, 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, - 228, 229, 0, 230, 0, 1032, 1033, 233, 0, 234, + 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, - 253, 254, 255, 256, 257, 258, 259, 1034, 1035, 0, - 1036, 0, 263, 264, 265, 266, 267, 268, 269, 270, + 253, 254, 255, 256, 257, 258, 259, 1031, 1032, 0, + 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, - 278, 279, 280, 618, 619, 281, 282, 283, 284, 285, + 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 1037, - 306, 1038, 308, 309, 310, 311, 1039, 312, 313, 314, - 315, 1040, 620, 317, 1041, 319, 320, 321, 0, 322, - 323, 0, 0, 1042, 325, 326, 0, 0, 327, 328, - 329, 330, 331, 622, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 0, 343, 344, 623, 346, 347, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 1034, + 306, 1035, 308, 309, 310, 311, 1036, 312, 313, 314, + 315, 1037, 618, 317, 1038, 319, 320, 321, 0, 322, + 323, 0, 0, 1039, 325, 326, 0, 0, 327, 328, + 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 0, 359, 360, 361, 1043, 363, 364, 365, + 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, - 384, 385, 1044, 387, 388, 389, 390, 391, 392, 393, + 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, - 625, 404, 405, 406, 407, 408, 409, 410, 411, 1045, - 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 626, 429, 0, 430, + 623, 404, 405, 406, 407, 408, 409, 410, 411, 1042, + 413, -628, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, 0, - 1046, 1047, 0, 0, 441, 442, 627, 444, 628, 1048, - 446, 447, 629, 449, 450, 451, 452, 453, 0, 0, - 454, 455, 456, 457, 458, 459, 630, 0, 461, 462, - 463, 464, 465, 466, 1049, 0, 468, 469, 470, 471, + 1043, 1044, 0, 0, 441, 442, 625, 444, 626, 1045, + 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, + 454, 455, 456, 457, 458, 459, 628, 0, 461, 462, + 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 1050, - 0, 0, 0, 0, 0, 0, 1051, 1052, 0, 0, - 0, 0, 0, 1054, 0, 1055, 0, 0, 0, 0, - 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, - 1016, 1017, 0, 0, 0, 0, 0, 0, 0, 0, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 1047, + 0, 0, 0, 0, 0, 0, 1048, 1049, 0, 0, + 0, 0, 0, 1051, 0, 1052, 0, 0, 0, 0, + 1053, 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, + 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 1018, 0, + 1638, 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, - 124, 125, 1019, 127, 1020, 1021, 0, 130, 131, 132, - 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, - 0, 141, 142, 143, 144, 607, 0, 608, 0, 1025, + 124, 125, 1016, 127, 1017, 1018, 0, 130, 131, 132, + 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, + 0, 141, 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, 165, - 166, 609, 610, 611, 612, 613, 614, 615, 172, 173, - 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, 182, + 166, 607, 608, 609, 610, 611, 612, 613, 172, 173, + 174, 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 785, 197, 198, + 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 1029, 210, 211, 212, 213, 214, 616, - 1030, 216, 0, 217, 218, 1031, 220, 0, 221, 0, - 222, 223, 1484, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 1032, 1033, 233, 0, 234, 235, 236, 237, + 206, 207, 208, 1026, 210, 211, 212, 213, 214, 614, + 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, - 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, + 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, 280, - 618, 619, 281, 282, 283, 284, 285, 286, 287, 288, + 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 1037, 306, 1038, 308, - 309, 310, 311, 1039, 312, 313, 314, 315, 1040, 620, - 317, 1041, 319, 320, 321, 0, 322, 323, 0, 0, - 1042, 325, 326, 0, 0, 327, 328, 329, 330, 331, - 622, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 623, 346, 347, 348, 349, 350, + 299, 300, 301, 302, 303, 304, 1034, 306, 1035, 308, + 309, 310, 311, 1036, 312, 313, 314, 315, 1037, 618, + 317, 1038, 319, 320, 321, 0, 322, 323, 0, 0, + 1039, 325, 326, 0, 0, 327, 328, 329, 330, 331, + 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 1043, 363, 364, 365, 366, 0, 367, + 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 383, 384, 385, 1044, + 378, 379, 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 625, 404, 405, - 406, 407, 408, 409, 410, 411, 1045, 413, 0, 414, + 397, 0, 398, 399, 400, 401, 402, 623, 404, 405, + 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 626, 429, 0, 430, 431, 0, 432, - 433, 434, 435, 436, 437, 438, 0, 1046, 1047, 0, - 0, 441, 442, 627, 444, 628, 1048, 446, 447, 629, + 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, + 433, 434, 435, 436, 437, 438, 0, 1043, 1044, 0, + 0, 441, 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 630, 0, 461, 462, 463, 464, 465, - 466, 1049, 0, 468, 469, 470, 471, 472, 473, 474, + 457, 458, 459, 628, 0, 461, 462, 463, 464, 465, + 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1050, 0, 0, 0, - 0, 0, 0, 1051, 1052, 0, 0, 0, 0, 0, - 1054, 0, 1055, 0, 0, 0, 0, 1056, 1057, 1058, - 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, + 491, 492, 493, 494, 495, 496, 1047, 0, 0, 0, + 0, 0, 0, 1048, 1049, 1639, 0, 0, 0, 0, + 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, 1055, + 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, - 115, 0, 0, 0, 0, 1018, 0, 0, 116, 117, - 0, 118, 119, 120, 121, 122, 123, 124, 125, 1019, - 127, 1020, 1021, 0, 130, 131, 132, 133, 134, 135, - 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, 142, - 143, 144, 607, 0, 608, 0, 1025, 148, 149, 150, + 106, 107, 108, 109, 110, 111, 112, 2838, 113, 114, + 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, + 0, 118, 119, 120, 121, 122, 123, 124, 125, 1016, + 127, 1017, 1018, 0, 130, 131, 132, 133, 134, 135, + 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, 142, + 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, - 160, 161, 162, 0, 163, 164, 165, 166, 609, 610, - 611, 612, 613, 614, 615, 172, 173, 174, 175, 176, - 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, 184, + 160, 161, 162, 0, 163, 164, 2839, 166, 607, 608, + 609, 610, 611, 612, 613, 172, 173, 174, 175, 176, + 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, - 0, 0, 194, 195, 785, 197, 198, 0, 199, 200, + 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, - 1029, 210, 211, 212, 213, 214, 616, 1030, 216, 0, - 217, 218, 1031, 220, 0, 221, 0, 222, 223, 0, - 224, 225, 226, 227, 228, 229, 0, 230, 0, 1032, - 1033, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 1026, 210, 211, 212, 213, 214, 614, 1027, 216, 0, + 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 2840, + 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, - 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, 266, + 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, - 275, 276, 277, 0, 278, 279, 280, 618, 619, 281, + 275, 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 1037, 306, 1038, 308, 309, 310, 311, - 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, 319, - 320, 321, 0, 322, 323, 0, 0, 1042, 325, 326, - 0, 0, 327, 328, 329, 330, 331, 622, 333, 334, + 302, 303, 304, 1034, 306, 1035, 308, 309, 310, 311, + 1036, 312, 313, 314, 315, 1037, 618, 317, 1038, 319, + 320, 321, 0, 322, 323, 0, 0, 1039, 325, 326, + 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, - 344, 623, 346, 347, 348, 349, 350, 351, 352, 0, + 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, - 1043, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 383, 384, 385, 1044, 387, 388, 389, + 380, 381, 382, 383, 384, 2841, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, - 399, 400, 401, 402, 625, 404, 405, 406, 407, 408, - 409, 410, 411, 1045, 413, 0, 414, 415, 416, 417, + 399, 400, 401, 402, 623, 404, 405, 406, 407, 408, + 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 626, 429, 0, 430, 431, 0, 432, 433, 434, 435, - 436, 437, 438, 0, 1046, 1047, 0, 0, 441, 442, - 627, 444, 628, 1048, 446, 447, 629, 449, 450, 451, + 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, + 436, 437, 438, 0, 1043, 1044, 0, 0, 441, 442, + 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, - 630, 0, 461, 462, 463, 464, 465, 466, 1049, 0, + 628, 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 1050, 0, 0, 0, 0, 0, 0, - 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, 1055, - 1975, 0, 0, 0, 1056, 1057, 1058, 1059, 1193, 1012, - 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, 0, + 494, 495, 496, 1047, 0, 0, 0, 0, 0, 0, + 1048, 1049, 2842, 0, 0, 0, 0, 1051, 0, 2843, + 0, 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, + 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, - 0, 0, 1018, 0, 0, 116, 117, 0, 118, 119, - 120, 1195, 122, 123, 124, 125, 1019, 1196, 1020, 1021, - 0, 130, 131, 132, 133, 134, 135, 1022, 606, 136, - 137, 1023, 1024, 140, 0, 141, 142, 143, 144, 607, - 0, 1197, 0, 1198, 148, 149, 150, 151, 152, 1199, + 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, + 120, 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, + 0, 130, 131, 132, 133, 134, 135, 1019, 604, 136, + 137, 1020, 1021, 140, 0, 141, 142, 143, 144, 605, + 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 1200, 164, 165, 166, 1201, 1202, 1203, 1204, 613, - 614, 1205, 172, 173, 174, 175, 176, 177, 178, 1026, - 1027, 181, 1028, 182, 0, 183, 184, 185, 186, 187, + 0, 163, 164, 165, 166, 607, 608, 609, 610, 611, + 612, 613, 172, 173, 174, 175, 176, 177, 178, 1023, + 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, - 195, 785, 197, 198, 0, 199, 200, 201, 0, 202, - 203, 204, 0, 205, 206, 207, 208, 1029, 210, 211, - 212, 213, 214, 616, 1030, 216, 0, 217, 218, 1031, - 220, 0, 221, 0, 222, 1207, 0, 1208, 225, 226, - 1209, 1210, 229, 0, 230, 0, 1032, 1033, 233, 0, - 234, 235, 236, 237, 238, 239, 240, 1211, 242, 243, + 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, + 203, 204, 0, 205, 206, 207, 208, 1026, 210, 211, + 212, 213, 214, 614, 1027, 216, 0, 217, 218, 1028, + 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 1212, 254, 255, 256, 257, 258, 259, 1034, 1035, - 0, 1036, 0, 263, 1213, 1214, 266, 1215, 268, 269, - 270, 271, 272, 273, 0, 0, 274, 1216, 276, 1217, - 0, 278, 279, 280, 618, 619, 281, 282, 283, 284, - 285, 1218, 287, 288, 289, 290, 291, 292, 293, 294, + 252, 253, 254, 255, 256, 257, 258, 259, 1031, 1032, + 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, + 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 1037, 1219, 1038, 308, 309, 310, 311, 1039, 312, 313, - 1220, 315, 1040, 620, 317, 1041, 319, 320, 321, 0, - 322, 323, 0, 0, 1042, 325, 326, 0, 0, 327, - 328, 1221, 330, 1222, 622, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 0, 343, 344, 623, 1223, + 1034, 306, 1035, 308, 309, 310, 311, 1036, 312, 313, + 314, 315, 1037, 618, 317, 1038, 319, 320, 321, 0, + 322, 323, 0, 0, 1039, 325, 326, 0, 0, 327, + 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 0, 359, 360, 361, 1043, 363, 364, + 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 1224, - 383, 384, 385, 1044, 387, 388, 389, 390, 391, 392, + 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, + 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 1225, 404, 405, 406, 407, 408, 1226, 410, 411, - 1045, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 1227, 427, 626, 429, 0, - 430, 431, 0, 432, 1228, 434, 435, 436, 437, 438, - 0, 1046, 1047, 0, 0, 441, 442, 627, 444, 628, - 1048, 446, 447, 1229, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 1230, 0, 461, - 462, 463, 464, 465, 466, 1049, 2178, 468, 1232, 470, + 402, 623, 404, 405, 406, 407, 408, 409, 410, 411, + 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, + 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, + 0, 1043, 1044, 0, 0, 441, 442, 625, 444, 626, + 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 628, 0, 461, + 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, 0, - 0, 0, 0, 0, 1054, 0, 1055, 0, 0, 0, - 0, 1056, 1057, 1058, 1059, 1193, 1012, 515, 1013, 1014, - 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, 0, + 1047, 0, 0, 0, 0, 0, 0, 1048, 1049, 1050, + 0, 0, 0, 0, 1051, 0, 1052, 0, 0, 0, + 0, 1053, 1054, 1055, 1056, 104, 1654, 515, 1010, 1011, + 1012, 1655, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 0, 113, 114, 115, 0, 0, 0, 0, 1018, - 0, 0, 116, 117, 0, 118, 119, 120, 1195, 122, - 123, 124, 125, 1019, 1196, 1020, 1021, 0, 130, 131, - 132, 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, - 140, 0, 141, 142, 143, 144, 607, 0, 1197, 0, - 1198, 148, 149, 150, 151, 152, 1199, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 1200, 164, - 165, 166, 1201, 1202, 1203, 1204, 613, 614, 1205, 172, - 173, 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, + 112, 1656, 113, 114, 115, 0, 0, 0, 0, 1015, + 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, + 123, 124, 125, 1016, 127, 1017, 1018, 0, 130, 131, + 132, 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, + 140, 0, 141, 142, 143, 144, 605, 0, 606, 0, + 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, + 165, 166, 607, 608, 609, 610, 611, 612, 613, 172, + 173, 174, 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, - 190, 191, 192, 193, 0, 0, 194, 195, 785, 197, + 190, 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, - 205, 206, 207, 208, 1029, 210, 211, 212, 213, 214, - 616, 1030, 216, 0, 217, 218, 1031, 220, 0, 221, - 0, 222, 1207, 0, 1208, 225, 226, 1209, 1210, 229, - 0, 230, 0, 1032, 1033, 233, 0, 234, 235, 236, - 237, 238, 239, 240, 1211, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 250, 251, 0, 252, 1212, 254, - 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, - 263, 1213, 1214, 266, 1215, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 1216, 276, 1217, 0, 278, 279, - 280, 618, 619, 281, 282, 283, 284, 285, 1218, 287, + 205, 206, 207, 208, 1026, 210, 211, 212, 213, 214, + 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, + 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, + 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 1037, 1219, 1038, - 308, 309, 310, 311, 1039, 312, 313, 1220, 315, 1040, - 620, 317, 1041, 319, 320, 321, 0, 322, 323, 0, - 0, 1042, 325, 326, 0, 0, 327, 328, 1221, 330, - 1222, 622, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 0, 343, 344, 623, 1223, 347, 348, 349, + 298, 299, 300, 301, 302, 303, 304, 1034, 306, 1035, + 308, 309, 310, 311, 1036, 312, 313, 314, 315, 1037, + 618, 317, 1038, 319, 320, 321, 0, 322, 323, 0, + 0, 1039, 325, 326, 0, 0, 327, 328, 329, 330, + 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 0, 359, 360, 361, 1043, 363, 364, 365, 366, 0, + 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 1224, 383, 384, 385, - 1044, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 0, 398, 399, 400, 401, 402, 1225, 404, - 405, 406, 407, 408, 1226, 410, 411, 1045, 413, 0, + 377, 378, 379, 0, 380, 381, 382, 383, 384, 385, + 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 623, 404, + 405, 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 1227, 427, 626, 429, 0, 430, 431, 0, - 432, 1228, 434, 435, 436, 437, 438, 0, 1046, 1047, - 0, 0, 441, 442, 627, 444, 628, 1048, 446, 447, - 1229, 449, 450, 451, 452, 453, 0, 0, 454, 455, - 456, 457, 458, 459, 1230, 0, 461, 462, 463, 464, - 465, 466, 1049, 0, 468, 1232, 470, 471, 472, 473, + 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, + 432, 433, 434, 435, 436, 437, 438, 0, 1043, 1044, + 0, 0, 441, 442, 625, 444, 626, 1045, 446, 447, + 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 628, 0, 461, 462, 463, 464, + 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 1050, 0, 0, - 0, 0, 0, 0, 1051, 1052, 0, 0, 0, 0, - 0, 1054, 0, 1055, 2227, 0, 0, 0, 1056, 1057, - 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, + 490, 491, 492, 493, 494, 495, 496, 1047, 0, 0, + 0, 0, 0, 0, 1048, 1049, 0, 0, 0, 0, + 0, 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, + 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 1018, 0, 0, 116, + 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, 125, - 1019, 127, 1020, 1021, 0, 130, 131, 132, 133, 134, - 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, - 142, 143, 144, 607, 0, 608, 0, 1025, 148, 149, + 1016, 127, 1017, 1018, 0, 130, 131, 132, 133, 134, + 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, + 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 163, 164, 165, 166, 609, - 610, 611, 612, 613, 614, 615, 172, 173, 174, 175, - 176, 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, + 159, 160, 161, 162, 0, 163, 164, 165, 166, 607, + 608, 609, 610, 611, 612, 613, 172, 173, 174, 175, + 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 785, 197, 198, 0, 199, + 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 1029, 210, 211, 212, 213, 214, 616, 1030, 216, - 0, 217, 218, 1031, 220, 0, 221, 0, 222, 223, - 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 1032, 1033, 233, 0, 234, 235, 236, 237, 238, 239, + 208, 1026, 210, 211, 212, 213, 214, 614, 1027, 216, + 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, + 1480, 224, 225, 226, 227, 228, 229, 0, 230, 0, + 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, - 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, + 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 275, 276, 277, 0, 278, 279, 280, 618, 619, + 274, 275, 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 1037, 306, 1038, 308, 309, 310, - 311, 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, - 319, 320, 321, 0, 322, 323, 0, 0, 1042, 325, - 326, 0, 0, 327, 328, 329, 330, 331, 622, 333, + 301, 302, 303, 304, 1034, 306, 1035, 308, 309, 310, + 311, 1036, 312, 313, 314, 315, 1037, 618, 317, 1038, + 319, 320, 321, 0, 322, 323, 0, 0, 1039, 325, + 326, 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 623, 346, 347, 348, 349, 350, 351, 352, + 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 1043, 363, 364, 365, 366, 0, 367, 368, 369, + 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 383, 384, 385, 1044, 387, 388, + 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 625, 404, 405, 406, 407, - 408, 409, 410, 411, 1045, 413, 0, 414, 415, 416, + 398, 399, 400, 401, 402, 623, 404, 405, 406, 407, + 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 626, 429, 0, 430, 431, 2541, 432, 433, 434, - 435, 436, 437, 438, 0, 1046, 1047, 0, 0, 441, - 442, 627, 444, 628, 1048, 446, 447, 629, 449, 450, + 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, + 435, 436, 437, 438, 0, 1043, 1044, 0, 0, 441, + 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 630, 0, 461, 462, 463, 464, 465, 466, 1049, + 459, 628, 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 1050, 0, 0, 0, 0, 0, - 0, 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, - 1055, 0, 0, 0, 0, 1056, 1057, 1058, 1059, 104, - 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, + 493, 494, 495, 496, 1047, 0, 0, 0, 0, 0, + 0, 1048, 1049, 0, 0, 0, 0, 0, 1051, 0, + 1052, 0, 0, 0, 0, 1053, 1054, 1055, 1056, 104, + 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, - 0, 0, 0, 1018, 0, 0, 116, 117, 0, 118, - 119, 120, 121, 122, 123, 124, 125, 1019, 127, 1020, - 1021, 0, 130, 131, 132, 133, 134, 135, 1022, 606, - 136, 137, 1023, 1024, 140, 0, 141, 142, 143, 144, - 607, 0, 608, 0, 1025, 148, 149, 150, 151, 152, + 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, + 119, 120, 121, 122, 123, 124, 125, 1016, 127, 1017, + 1018, 0, 130, 131, 132, 133, 134, 135, 1019, 604, + 136, 137, 1020, 1021, 140, 0, 141, 142, 143, 144, + 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, - 162, 0, 163, 164, 165, 166, 609, 610, 611, 612, - 613, 614, 615, 172, 173, 174, 175, 176, 177, 178, - 1026, 1027, 181, 1028, 182, 0, 183, 184, 185, 186, + 162, 0, 163, 164, 165, 166, 607, 608, 609, 610, + 611, 612, 613, 172, 173, 174, 175, 176, 177, 178, + 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, - 194, 195, 785, 197, 198, 0, 199, 200, 201, 0, - 202, 203, 204, 0, 205, 206, 207, 208, 1029, 210, - 211, 212, 213, 214, 616, 1030, 216, 0, 217, 218, - 1031, 220, 0, 221, 0, 222, 223, 0, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 1032, 1033, 233, + 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, + 202, 203, 204, 0, 205, 206, 207, 208, 1026, 210, + 211, 212, 213, 214, 614, 1027, 216, 0, 217, 218, + 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, - 0, 252, 253, 254, 255, 256, 257, 258, 259, 1034, - 1035, 0, 1036, 0, 263, 264, 265, 266, 267, 268, + 0, 252, 253, 254, 255, 256, 257, 258, 259, 1031, + 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, - 277, 0, 278, 279, 280, 618, 619, 281, 282, 283, + 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 1037, 306, 1038, 308, 309, 310, 311, 1039, 312, - 313, 314, 315, 1040, 620, 317, 1041, 319, 320, 321, - 0, 322, 323, 0, 0, 1042, 325, 326, 0, 0, - 327, 328, 329, 330, 331, 622, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 0, 343, 344, 623, + 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, 312, + 313, 314, 315, 1037, 618, 317, 1038, 319, 320, 321, + 0, 322, 323, 0, 0, 1039, 325, 326, 0, 0, + 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 355, 356, 357, 358, 0, 359, 360, 361, 1043, 363, + 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 382, 383, 384, 385, 1044, 387, 388, 389, 390, 391, + 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, - 401, 402, 625, 404, 405, 406, 407, 408, 409, 410, - 411, 1045, 413, 0, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 626, 429, + 401, 402, 623, 404, 405, 406, 407, 408, 409, 410, + 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, - 438, 0, 1046, 1047, 0, 0, 441, 442, 627, 444, - 628, 1048, 446, 447, 629, 449, 450, 451, 452, 453, - 0, 0, 454, 455, 456, 457, 458, 459, 630, 0, - 461, 462, 463, 464, 465, 466, 1049, 0, 468, 469, - 470, 471, 472, 473, 474, 0, 2634, 475, 0, 0, + 438, 0, 1043, 1044, 0, 0, 441, 442, 625, 444, + 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, + 0, 0, 454, 455, 456, 457, 458, 459, 628, 0, + 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, + 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, - 0, 0, 0, 0, 0, 1054, 0, 1055, 0, 0, - 0, 0, 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, - 1014, 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, + 496, 1047, 0, 0, 0, 0, 0, 0, 1048, 1049, + 0, 0, 0, 0, 0, 1051, 0, 1052, 1971, 0, + 0, 0, 1053, 1054, 1055, 1056, 1190, 1009, 515, 1010, + 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 1018, 0, 0, 116, 117, 0, 118, 119, 120, 121, - 122, 123, 124, 125, 1019, 127, 1020, 1021, 0, 130, - 131, 132, 133, 134, 135, 1022, 606, 136, 137, 1023, - 1024, 140, 0, 141, 142, 143, 144, 607, 0, 608, - 0, 1025, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, - 164, 165, 166, 609, 610, 611, 612, 613, 614, 615, - 172, 173, 174, 175, 176, 177, 178, 1026, 1027, 181, - 1028, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 785, + 1015, 0, 0, 116, 117, 0, 118, 119, 120, 1192, + 122, 123, 124, 125, 1016, 1193, 1017, 1018, 0, 130, + 131, 132, 133, 134, 135, 1019, 604, 136, 137, 1020, + 1021, 140, 0, 141, 142, 143, 144, 605, 0, 1194, + 0, 1195, 148, 149, 150, 151, 152, 1196, 154, 155, + 156, 0, 157, 158, 159, 160, 161, 162, 0, 1197, + 164, 165, 166, 1198, 1199, 1200, 1201, 611, 612, 1202, + 172, 173, 174, 175, 176, 177, 178, 1023, 1024, 181, + 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, + 189, 190, 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 1029, 210, 211, 212, 213, - 214, 616, 1030, 216, 0, 217, 218, 1031, 220, 0, - 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 1032, 1033, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, - 279, 280, 618, 619, 281, 282, 283, 284, 285, 286, + 0, 205, 206, 207, 208, 1026, 210, 211, 212, 213, + 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, + 221, 0, 222, 1204, 0, 1205, 225, 226, 1206, 1207, + 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, + 236, 237, 238, 239, 240, 1208, 242, 243, 244, 245, + 0, 246, 247, 248, 249, 250, 251, 0, 252, 1209, + 254, 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, + 0, 263, 1210, 1211, 266, 1212, 268, 269, 270, 271, + 272, 273, 0, 0, 274, 1213, 276, 1214, 0, 278, + 279, 280, 616, 617, 281, 282, 283, 284, 285, 1215, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 1037, 306, - 1038, 308, 309, 310, 311, 1039, 312, 313, 314, 315, - 1040, 620, 317, 1041, 319, 320, 321, 0, 322, 323, - 0, 0, 1042, 325, 326, 0, 0, 327, 328, 329, - 330, 331, 622, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 623, 346, 347, 348, + 297, 298, 299, 300, 301, 302, 303, 304, 1034, 1216, + 1035, 308, 309, 310, 311, 1036, 312, 313, 1217, 315, + 1037, 618, 317, 1038, 319, 320, 321, 0, 322, 323, + 0, 0, 1039, 325, 326, 0, 0, 327, 328, 1218, + 330, 1219, 620, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 0, 343, 344, 621, 1220, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 1043, 363, 364, 365, 366, + 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 382, 383, 384, - 385, 1044, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 625, - 404, 405, 406, 407, 408, 409, 410, 411, 1045, 413, + 376, 377, 378, 379, 0, 380, 381, 1221, 383, 384, + 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 398, 399, 400, 401, 402, 1222, + 404, 405, 406, 407, 408, 1223, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 626, 429, 0, 430, 431, - 2957, 432, 433, 434, 435, 436, 437, 438, 0, 1046, - 1047, 0, 0, 441, 442, 627, 444, 628, 1048, 446, - 447, 629, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 630, 0, 461, 462, 463, - 464, 465, 466, 1049, 0, 468, 469, 470, 471, 472, + 423, 424, 425, 1224, 427, 624, 429, 0, 430, 431, + 0, 432, 1225, 434, 435, 436, 437, 438, 0, 1043, + 1044, 0, 0, 441, 442, 625, 444, 626, 1045, 446, + 447, 1226, 449, 450, 451, 452, 453, 0, 0, 454, + 455, 456, 457, 458, 459, 1227, 0, 461, 462, 463, + 464, 465, 466, 1046, 2174, 468, 1229, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 1050, 0, - 0, 0, 0, 0, 0, 1051, 1052, 0, 0, 0, - 0, 0, 1054, 0, 1055, 0, 0, 0, 0, 1056, - 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, - 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 489, 490, 491, 492, 493, 494, 495, 496, 1047, 0, + 0, 0, 0, 0, 0, 1048, 1049, 0, 0, 0, + 0, 0, 1051, 0, 1052, 0, 0, 0, 0, 1053, + 1054, 1055, 1056, 1190, 1009, 515, 1010, 1011, 1012, 1013, + 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, - 113, 114, 115, 0, 0, 0, 0, 1018, 0, 0, - 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, - 125, 1019, 127, 1020, 1021, 0, 130, 131, 132, 133, - 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, - 141, 142, 143, 144, 607, 0, 608, 0, 1025, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, - 158, 159, 160, 161, 162, 0, 163, 164, 165, 166, - 609, 610, 611, 612, 613, 614, 615, 172, 173, 174, - 175, 176, 177, 178, 1026, 1027, 181, 1028, 182, 0, + 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, + 116, 117, 0, 118, 119, 120, 1192, 122, 123, 124, + 125, 1016, 1193, 1017, 1018, 0, 130, 131, 132, 133, + 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, + 141, 142, 143, 144, 605, 0, 1194, 0, 1195, 148, + 149, 150, 151, 152, 1196, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 1197, 164, 165, 166, + 1198, 1199, 1200, 1201, 611, 612, 1202, 172, 173, 174, + 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, - 192, 193, 0, 0, 194, 195, 785, 197, 198, 0, + 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, - 207, 208, 1029, 210, 211, 212, 213, 214, 616, 1030, - 216, 0, 217, 218, 1031, 220, 0, 221, 0, 222, - 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 1032, 1033, 233, 0, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, - 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, - 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, - 0, 274, 275, 276, 277, 0, 278, 279, 280, 618, - 619, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 207, 208, 1026, 210, 211, 212, 213, 214, 614, 1027, + 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, + 1204, 0, 1205, 225, 226, 1206, 1207, 229, 0, 230, + 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 1208, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 1209, 254, 255, 256, + 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 1210, + 1211, 266, 1212, 268, 269, 270, 271, 272, 273, 0, + 0, 274, 1213, 276, 1214, 0, 278, 279, 280, 616, + 617, 281, 282, 283, 284, 285, 1215, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1037, 306, 1038, 308, 309, - 310, 311, 1039, 312, 313, 314, 315, 1040, 620, 317, - 1041, 319, 320, 321, 0, 322, 323, 0, 0, 1042, - 325, 326, 0, 0, 327, 328, 329, 330, 331, 622, + 300, 301, 302, 303, 304, 1034, 1216, 1035, 308, 309, + 310, 311, 1036, 312, 313, 1217, 315, 1037, 618, 317, + 1038, 319, 320, 321, 0, 322, 323, 0, 0, 1039, + 325, 326, 0, 0, 327, 328, 1218, 330, 1219, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 0, 343, 344, 623, 346, 347, 348, 349, 350, 351, + 0, 343, 344, 621, 1220, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, - 360, 361, 1043, 363, 364, 365, 366, 0, 367, 368, + 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 383, 384, 385, 1044, 387, + 379, 0, 380, 381, 1221, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 625, 404, 405, 406, - 407, 408, 409, 410, 411, 1045, 413, 0, 414, 415, + 0, 398, 399, 400, 401, 402, 1222, 404, 405, 406, + 407, 408, 1223, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 626, 429, 0, 430, 431, 3076, 432, 433, - 434, 435, 436, 437, 438, 0, 1046, 1047, 0, 0, - 441, 442, 627, 444, 628, 1048, 446, 447, 629, 449, + 1224, 427, 624, 429, 0, 430, 431, 0, 432, 1225, + 434, 435, 436, 437, 438, 0, 1043, 1044, 0, 0, + 441, 442, 625, 444, 626, 1045, 446, 447, 1226, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, - 458, 459, 630, 0, 461, 462, 463, 464, 465, 466, - 1049, 0, 468, 469, 470, 471, 472, 473, 474, 0, + 458, 459, 1227, 0, 461, 462, 463, 464, 465, 466, + 1046, 0, 468, 1229, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 1050, 0, 0, 0, 0, - 0, 0, 1051, 1052, 0, 0, 0, 0, 0, 1054, - 0, 1055, 0, 0, 0, 0, 1056, 1057, 1058, 1059, - 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, + 492, 493, 494, 495, 496, 1047, 0, 0, 0, 0, + 0, 0, 1048, 1049, 0, 0, 0, 0, 0, 1051, + 0, 1052, 2223, 0, 0, 0, 1053, 1054, 1055, 1056, + 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 1018, 0, 0, 116, 117, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 1019, 127, - 1020, 1021, 0, 130, 131, 132, 133, 134, 135, 1022, - 606, 136, 137, 1023, 1024, 140, 0, 141, 142, 143, - 144, 607, 0, 608, 0, 1025, 148, 149, 150, 151, + 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, + 118, 119, 120, 121, 122, 123, 124, 125, 1016, 127, + 1017, 1018, 0, 130, 131, 132, 133, 134, 135, 1019, + 604, 136, 137, 1020, 1021, 140, 0, 141, 142, 143, + 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 163, 164, 165, 166, 609, 610, 611, - 612, 613, 614, 615, 172, 173, 174, 175, 176, 177, - 178, 1026, 1027, 181, 1028, 182, 0, 183, 184, 185, + 161, 162, 0, 163, 164, 165, 166, 607, 608, 609, + 610, 611, 612, 613, 172, 173, 174, 175, 176, 177, + 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 785, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 1029, - 210, 211, 212, 213, 214, 616, 1030, 216, 0, 217, - 218, 1031, 220, 0, 221, 0, 222, 223, 0, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 1032, 1033, + 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 1026, + 210, 211, 212, 213, 214, 614, 1027, 216, 0, 217, + 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, - 1034, 1035, 0, 1036, 0, 263, 264, 265, 266, 267, + 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, - 276, 277, 0, 278, 279, 280, 618, 619, 281, 282, + 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 1037, 306, 1038, 308, 309, 310, 311, 1039, - 312, 313, 314, 315, 1040, 620, 317, 1041, 319, 320, - 321, 0, 322, 323, 0, 0, 1042, 325, 326, 0, - 0, 327, 328, 329, 330, 331, 622, 333, 334, 335, + 303, 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, + 312, 313, 314, 315, 1037, 618, 317, 1038, 319, 320, + 321, 0, 322, 323, 0, 0, 1039, 325, 326, 0, + 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 623, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 1043, + 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 383, 384, 385, 1044, 387, 388, 389, 390, + 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 625, 404, 405, 406, 407, 408, 409, - 410, 411, 1045, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 626, - 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, - 437, 438, 0, 1046, 1047, 0, 0, 441, 442, 627, - 444, 628, 1048, 446, 447, 629, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 630, - 0, 461, 462, 463, 464, 465, 466, 1049, 0, 468, + 400, 401, 402, 623, 404, 405, 406, 407, 408, 409, + 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 624, + 429, 0, 430, 431, 2537, 432, 433, 434, 435, 436, + 437, 438, 0, 1043, 1044, 0, 0, 441, 442, 625, + 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 628, + 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 1050, 0, 0, 0, 0, 0, 0, 1051, - 1052, 0, 0, 0, 0, 0, 1054, 0, 1055, 0, - 0, 0, 0, 1056, 1057, 1058, 1059, 1193, 1012, 515, - 1013, 1014, 1015, 1016, 1017, 0, 0, 0, 0, 0, + 495, 496, 1047, 0, 0, 0, 0, 0, 0, 1048, + 1049, 0, 0, 0, 0, 0, 1051, 0, 1052, 0, + 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, 515, + 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, - 0, 1018, 0, 0, 116, 117, 0, 118, 119, 120, - 1195, 122, 123, 124, 125, 1019, 1196, 1020, 1021, 0, - 130, 131, 132, 133, 134, 135, 1022, 606, 136, 137, - 1023, 1024, 140, 0, 141, 142, 143, 144, 607, 0, - 1197, 0, 1198, 148, 149, 150, 151, 152, 1199, 154, + 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, + 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, 0, + 130, 131, 132, 133, 134, 135, 1019, 604, 136, 137, + 1020, 1021, 140, 0, 141, 142, 143, 144, 605, 0, + 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, - 1200, 164, 165, 166, 1201, 1202, 1203, 1204, 613, 614, - 1205, 172, 173, 174, 175, 176, 177, 178, 1026, 1027, - 181, 1028, 182, 0, 183, 184, 185, 186, 187, 188, + 163, 164, 165, 166, 607, 608, 609, 610, 611, 612, + 613, 172, 173, 174, 175, 176, 177, 178, 1023, 1024, + 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, - 785, 197, 198, 0, 199, 200, 201, 0, 202, 203, - 204, 0, 205, 206, 207, 208, 1029, 210, 211, 212, - 213, 214, 616, 1030, 216, 0, 217, 218, 1031, 220, - 0, 221, 0, 222, 1207, 0, 1208, 225, 226, 1209, - 1210, 229, 0, 230, 0, 1032, 1033, 233, 0, 234, - 235, 236, 237, 238, 239, 240, 1211, 242, 243, 244, + 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 1026, 210, 211, 212, + 213, 214, 614, 1027, 216, 0, 217, 218, 1028, 220, + 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, + 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, - 1212, 254, 255, 256, 257, 258, 259, 1034, 1035, 0, - 1036, 0, 263, 1213, 1214, 266, 1215, 268, 269, 270, - 271, 272, 273, 0, 0, 274, 1216, 276, 1217, 0, - 278, 279, 280, 618, 619, 281, 282, 283, 284, 285, - 1218, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 1037, - 1219, 1038, 308, 309, 310, 311, 1039, 312, 313, 1220, - 315, 1040, 620, 317, 1041, 319, 320, 321, 0, 322, - 323, 0, 0, 1042, 325, 326, 0, 0, 327, 328, - 1221, 330, 1222, 622, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 0, 343, 344, 623, 1223, 347, + 253, 254, 255, 256, 257, 258, 259, 1031, 1032, 0, + 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, + 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 1034, + 306, 1035, 308, 309, 310, 311, 1036, 312, 313, 314, + 315, 1037, 618, 317, 1038, 319, 320, 321, 0, 322, + 323, 0, 0, 1039, 325, 326, 0, 0, 327, 328, + 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 0, 359, 360, 361, 1043, 363, 364, 365, + 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 1224, 383, - 384, 385, 1044, 387, 388, 389, 390, 391, 392, 393, + 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, + 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, - 1225, 404, 405, 406, 407, 408, 1226, 410, 411, 1045, + 623, 404, 405, 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 1227, 427, 626, 429, 0, 430, - 431, 0, 432, 1228, 434, 435, 436, 437, 438, 0, - 1046, 1047, 0, 0, 441, 442, 627, 444, 628, 1048, - 446, 447, 1229, 449, 450, 451, 452, 453, 0, 0, - 454, 455, 456, 457, 458, 459, 1230, 0, 461, 462, - 463, 464, 465, 466, 1049, 0, 468, 1232, 470, 471, - 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, + 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, + 431, 0, 432, 433, 434, 435, 436, 437, 438, 0, + 1043, 1044, 0, 0, 441, 442, 625, 444, 626, 1045, + 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, + 454, 455, 456, 457, 458, 459, 628, 0, 461, 462, + 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, + 472, 473, 474, 0, 2630, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 1050, - 0, 0, 0, 0, 0, 0, 1051, 1052, 0, 0, - 0, 0, 0, 1054, 0, 1055, 0, 0, 0, 0, - 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, - 1016, 1017, 0, 0, 0, 0, 0, 0, 0, 0, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 1047, + 0, 0, 0, 0, 0, 0, 1048, 1049, 0, 0, + 0, 0, 0, 1051, 0, 1052, 0, 0, 0, 0, + 1053, 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, + 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 1018, 0, + 0, 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, - 124, 125, 1019, 127, 1020, 1021, 0, 130, 131, 132, - 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, - 0, 141, 142, 143, 144, 607, 0, 608, 0, 1025, + 124, 125, 1016, 127, 1017, 1018, 0, 130, 131, 132, + 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, + 0, 141, 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, 165, - 166, 609, 610, 611, 612, 613, 614, 615, 172, 173, - 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, 182, + 166, 607, 608, 609, 610, 611, 612, 613, 172, 173, + 174, 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 785, 197, 198, + 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 1029, 210, 211, 212, 213, 214, 616, - 1030, 216, 0, 217, 218, 1031, 220, 0, 221, 0, + 206, 207, 208, 1026, 210, 211, 212, 213, 214, 614, + 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 1032, 1033, 233, 0, 234, 235, 236, 237, + 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, - 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, + 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, 280, - 618, 619, 281, 282, 283, 284, 285, 286, 287, 288, + 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 1037, 306, 1038, 308, - 309, 310, 311, 1039, 312, 313, 314, 315, 1040, 620, - 317, 1041, 319, 320, 321, 0, 322, 323, 0, 0, - 1042, 325, 326, 0, 0, 327, 328, 329, 330, 331, - 622, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 623, 346, 347, 348, 349, 350, + 299, 300, 301, 302, 303, 304, 1034, 306, 1035, 308, + 309, 310, 311, 1036, 312, 313, 314, 315, 1037, 618, + 317, 1038, 319, 320, 321, 0, 322, 323, 0, 0, + 1039, 325, 326, 0, 0, 327, 328, 329, 330, 331, + 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 1043, 363, 364, 365, 366, 0, 367, + 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 383, 384, 385, 1044, + 378, 379, 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 625, 404, 405, - 406, 407, 408, 409, 410, 411, 1045, 413, 0, 414, + 397, 0, 398, 399, 400, 401, 402, 623, 404, 405, + 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 626, 429, 0, 430, 431, 0, 432, - 433, 434, 435, 436, 437, 438, 0, 1046, 1047, 0, - 0, 441, 442, 627, 444, 628, 1048, 446, 447, 629, + 425, 426, 427, 624, 429, 0, 430, 431, 2953, 432, + 433, 434, 435, 436, 437, 438, 0, 1043, 1044, 0, + 0, 441, 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 630, 0, 461, 462, 463, 464, 465, - 466, 1049, 0, 468, 469, 470, 471, 472, 473, 474, + 457, 458, 459, 628, 0, 461, 462, 463, 464, 465, + 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 1050, 0, 0, 0, - 0, 0, 0, 1668, 1669, 0, 0, 0, 0, 0, - 1054, 0, 1055, 0, 0, 0, 0, 1056, 1057, 1058, - 1059, 104, 2102, 515, 1013, 1014, 1015, 1016, 1017, 0, + 491, 492, 493, 494, 495, 496, 1047, 0, 0, 0, + 0, 0, 0, 1048, 1049, 0, 0, 0, 0, 0, + 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, 1055, + 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, - 115, 0, 0, 0, 0, 1018, 0, 0, 116, 117, - 0, 118, 119, 120, 121, 122, 123, 124, 125, 1019, - 127, 1020, 1021, 0, 130, 131, 132, 133, 134, 135, - 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, 142, - 143, 144, 607, 0, 608, 0, 1025, 148, 149, 150, + 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, + 0, 118, 119, 120, 121, 122, 123, 124, 125, 1016, + 127, 1017, 1018, 0, 130, 131, 132, 133, 134, 135, + 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, 142, + 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, - 160, 161, 162, 0, 163, 164, 165, 166, 609, 610, - 611, 612, 613, 614, 615, 172, 173, 174, 175, 176, - 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, 184, + 160, 161, 162, 0, 163, 164, 165, 166, 607, 608, + 609, 610, 611, 612, 613, 172, 173, 174, 175, 176, + 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, - 0, 0, 194, 195, 785, 197, 198, 0, 199, 200, + 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, - 1029, 210, 211, 212, 213, 214, 616, 1030, 216, 0, - 217, 218, 1031, 220, 0, 221, 0, 222, 223, 0, - 224, 225, 226, 227, 228, 229, 0, 230, 0, 1032, - 1033, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 1026, 210, 211, 212, 213, 214, 614, 1027, 216, 0, + 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 1029, + 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, - 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, 266, + 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, - 275, 276, 277, 0, 278, 279, 280, 618, 619, 281, + 275, 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 1037, 306, 1038, 308, 309, 310, 311, - 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, 319, - 320, 321, 0, 322, 323, 0, 0, 1042, 325, 326, - 0, 0, 327, 328, 329, 330, 331, 622, 333, 334, + 302, 303, 304, 1034, 306, 1035, 308, 309, 310, 311, + 1036, 312, 313, 314, 315, 1037, 618, 317, 1038, 319, + 320, 321, 0, 322, 323, 0, 0, 1039, 325, 326, + 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, - 344, 623, 346, 347, 348, 349, 350, 351, 352, 0, + 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, - 1043, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 382, 383, 384, 385, 1044, 387, 388, 389, + 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, - 399, 400, 401, 402, 625, 404, 405, 406, 407, 408, - 409, 410, 411, 1045, 413, 0, 414, 415, 416, 417, + 399, 400, 401, 402, 623, 404, 405, 406, 407, 408, + 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 626, 429, 0, 430, 431, 0, 432, 433, 434, 435, - 436, 437, 438, 0, 1046, 1047, 0, 0, 441, 442, - 627, 444, 628, 1048, 446, 447, 629, 449, 450, 451, + 624, 429, 0, 430, 431, 3072, 432, 433, 434, 435, + 436, 437, 438, 0, 1043, 1044, 0, 0, 441, 442, + 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, - 630, 0, 461, 462, 463, 464, 465, 466, 1049, 0, + 628, 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 1050, 0, 0, 0, 0, 0, 0, - 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, 1055, - 0, 0, 0, 0, 1056, 1057, 1058, 1059, 104, 1012, - 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, 0, + 494, 495, 496, 1047, 0, 0, 0, 0, 0, 0, + 1048, 1049, 0, 0, 0, 0, 0, 1051, 0, 1052, + 0, 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, + 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, - 0, 0, 1018, 0, 0, 116, 117, 0, 118, 119, - 120, 121, 122, 123, 124, 125, 1019, 127, 1020, 1021, - 0, 130, 131, 132, 133, 134, 135, 1022, 606, 136, - 137, 1023, 1024, 140, 0, 141, 142, 143, 144, 607, - 0, 608, 0, 1025, 148, 149, 150, 151, 152, 153, + 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, + 120, 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, + 0, 130, 131, 132, 133, 134, 135, 1019, 604, 136, + 137, 1020, 1021, 140, 0, 141, 142, 143, 144, 605, + 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 163, 164, 165, 166, 609, 610, 611, 612, 613, - 614, 615, 172, 173, 174, 175, 176, 177, 178, 1026, - 1027, 181, 1028, 182, 0, 183, 184, 185, 186, 187, + 0, 163, 164, 165, 166, 607, 608, 609, 610, 611, + 612, 613, 172, 173, 174, 175, 176, 177, 178, 1023, + 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, - 195, 785, 197, 198, 0, 199, 200, 201, 0, 202, - 203, 204, 0, 205, 206, 207, 208, 1029, 210, 211, - 212, 213, 214, 616, 1030, 216, 0, 217, 218, 1031, + 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, + 203, 204, 0, 205, 206, 207, 208, 1026, 210, 211, + 212, 213, 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 1032, 1033, 233, 0, + 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 253, 254, 255, 256, 257, 258, 259, 1034, 1035, - 0, 1036, 0, 263, 264, 265, 266, 267, 268, 269, + 252, 253, 254, 255, 256, 257, 258, 259, 1031, 1032, + 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, - 0, 278, 279, 280, 618, 619, 281, 282, 283, 284, + 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 1037, 306, 1038, 308, 309, 310, 311, 1039, 312, 313, - 314, 315, 1040, 620, 317, 1041, 319, 320, 321, 0, - 322, 323, 0, 0, 1042, 325, 326, 0, 0, 327, - 328, 329, 330, 331, 622, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 0, 343, 344, 623, 346, + 1034, 306, 1035, 308, 309, 310, 311, 1036, 312, 313, + 314, 315, 1037, 618, 317, 1038, 319, 320, 321, 0, + 322, 323, 0, 0, 1039, 325, 326, 0, 0, 327, + 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 0, 359, 360, 361, 1043, 363, 364, + 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 383, 384, 385, 1044, 387, 388, 389, 390, 391, 392, + 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 625, 404, 405, 406, 407, 408, 409, 410, 411, - 1045, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 626, 429, 0, + 402, 623, 404, 405, 406, 407, 408, 409, 410, 411, + 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, - 0, 1046, 1047, 0, 0, 441, 442, 627, 444, 628, - 1048, 446, 447, 629, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 630, 0, 461, - 462, 463, 464, 465, 466, 1049, 0, 468, 469, 470, + 0, 1043, 1044, 0, 0, 441, 442, 625, 444, 626, + 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 628, 0, 461, + 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, 0, - 0, 0, 0, 0, 1054, 0, 2364, 0, 0, 0, - 0, 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, - 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, 0, + 1047, 0, 0, 0, 0, 0, 0, 1048, 1049, 0, + 0, 0, 0, 0, 1051, 0, 1052, 0, 0, 0, + 0, 1053, 1054, 1055, 1056, 1190, 1009, 515, 1010, 1011, + 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 0, 113, 114, 115, 0, 0, 0, 0, 1018, - 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, - 123, 124, 125, 1019, 127, 1020, 1021, 0, 130, 131, - 132, 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, - 140, 0, 141, 142, 143, 144, 607, 0, 608, 0, - 1025, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, - 2843, 166, 609, 610, 611, 612, 613, 614, 615, 172, - 173, 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 1015, + 0, 0, 116, 117, 0, 118, 119, 120, 1192, 122, + 123, 124, 125, 1016, 1193, 1017, 1018, 0, 130, 131, + 132, 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, + 140, 0, 141, 142, 143, 144, 605, 0, 1194, 0, + 1195, 148, 149, 150, 151, 152, 1196, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 1197, 164, + 165, 166, 1198, 1199, 1200, 1201, 611, 612, 1202, 172, + 173, 174, 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, - 190, 191, 192, 193, 0, 0, 194, 195, 785, 197, + 190, 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, - 205, 206, 207, 208, 1029, 210, 211, 212, 213, 214, - 616, 1030, 216, 0, 217, 218, 1031, 220, 0, 221, - 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, - 0, 230, 0, 2844, 1033, 233, 0, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, - 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, - 280, 618, 619, 281, 282, 283, 284, 285, 286, 287, + 205, 206, 207, 208, 1026, 210, 211, 212, 213, 214, + 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, + 0, 222, 1204, 0, 1205, 225, 226, 1206, 1207, 229, + 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, + 237, 238, 239, 240, 1208, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 1209, 254, + 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, + 263, 1210, 1211, 266, 1212, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 1213, 276, 1214, 0, 278, 279, + 280, 616, 617, 281, 282, 283, 284, 285, 1215, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 1037, 306, 1038, - 308, 309, 310, 311, 1039, 312, 313, 314, 315, 1040, - 620, 317, 1041, 319, 320, 321, 0, 322, 323, 0, - 0, 1042, 325, 326, 0, 0, 327, 328, 329, 330, - 331, 622, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 0, 343, 344, 623, 346, 347, 348, 349, + 298, 299, 300, 301, 302, 303, 304, 1034, 1216, 1035, + 308, 309, 310, 311, 1036, 312, 313, 1217, 315, 1037, + 618, 317, 1038, 319, 320, 321, 0, 322, 323, 0, + 0, 1039, 325, 326, 0, 0, 327, 328, 1218, 330, + 1219, 620, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 621, 1220, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 0, 359, 360, 361, 1043, 363, 364, 365, 366, 0, + 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 382, 383, 384, 2845, - 1044, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 0, 398, 399, 400, 401, 402, 625, 404, - 405, 406, 407, 408, 409, 410, 411, 1045, 413, 0, + 377, 378, 379, 0, 380, 381, 1221, 383, 384, 385, + 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 1222, 404, + 405, 406, 407, 408, 1223, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 626, 429, 0, 430, 431, 0, - 432, 433, 434, 435, 436, 437, 438, 0, 1046, 1047, - 0, 0, 441, 442, 627, 444, 628, 1048, 446, 447, - 629, 449, 450, 451, 452, 453, 0, 0, 454, 455, - 456, 457, 458, 459, 630, 0, 461, 462, 463, 464, - 465, 466, 1049, 0, 468, 469, 470, 471, 472, 473, + 424, 425, 1224, 427, 624, 429, 0, 430, 431, 0, + 432, 1225, 434, 435, 436, 437, 438, 0, 1043, 1044, + 0, 0, 441, 442, 625, 444, 626, 1045, 446, 447, + 1226, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 1227, 0, 461, 462, 463, 464, + 465, 466, 1046, 0, 468, 1229, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 1050, 0, 0, - 0, 0, 0, 0, 1051, 1052, 0, 0, 0, 0, - 0, 1054, 0, 2847, 0, 0, 0, 0, 1056, 1057, - 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, + 490, 491, 492, 493, 494, 495, 496, 1047, 0, 0, + 0, 0, 0, 0, 1048, 1049, 0, 0, 0, 0, + 0, 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, + 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 1018, 0, 0, 116, - 117, 0, 118, 119, 120, 121, 122, 123, 124, 3229, - 1019, 127, 1020, 1021, 0, 130, 131, 132, 133, 134, - 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, 141, - 142, 143, 144, 607, 0, 608, 0, 1025, 148, 149, + 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, + 117, 0, 118, 119, 120, 121, 122, 123, 124, 125, + 1016, 127, 1017, 1018, 0, 130, 131, 132, 133, 134, + 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, + 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 163, 164, 165, 3230, 609, - 610, 611, 612, 613, 614, 615, 172, 173, 174, 175, - 176, 177, 178, 1026, 1027, 181, 1028, 182, 0, 183, + 159, 160, 161, 162, 0, 163, 164, 165, 166, 607, + 608, 609, 610, 611, 612, 613, 172, 173, 174, 175, + 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 785, 197, 198, 0, 199, + 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 1029, 210, 211, 212, 213, 214, 616, 1030, 216, - 0, 217, 218, 1031, 220, 0, 221, 0, 222, 223, + 208, 1026, 210, 211, 212, 213, 214, 614, 1027, 216, + 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, - 1032, 1033, 233, 0, 234, 235, 236, 237, 238, 239, + 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, - 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, 265, + 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 275, 276, 277, 0, 278, 279, 280, 618, 619, + 274, 275, 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 1037, 306, 1038, 308, 309, 310, - 311, 1039, 312, 313, 314, 315, 1040, 620, 317, 1041, - 319, 320, 321, 0, 322, 323, 0, 0, 1042, 325, - 326, 0, 0, 327, 328, 329, 330, 331, 622, 333, + 301, 302, 303, 304, 1034, 306, 1035, 308, 309, 310, + 311, 1036, 312, 313, 314, 315, 1037, 618, 317, 1038, + 319, 320, 321, 0, 322, 323, 0, 0, 1039, 325, + 326, 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 623, 346, 347, 348, 349, 350, 351, 352, + 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 1043, 363, 364, 365, 366, 0, 367, 368, 369, + 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 382, 383, 384, 385, 1044, 387, 388, + 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 625, 404, 405, 406, 407, - 408, 409, 410, 411, 1045, 413, 0, 414, 415, 416, + 398, 399, 400, 401, 402, 623, 404, 405, 406, 407, + 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 626, 429, 0, 430, 431, 0, 432, 433, 434, - 435, 436, 437, 438, 0, 1046, 1047, 0, 0, 441, - 442, 627, 444, 628, 1048, 446, 447, 629, 449, 450, - 3231, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 630, 0, 461, 462, 463, 464, 465, 466, 1049, + 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, + 435, 436, 437, 438, 0, 1043, 1044, 0, 0, 441, + 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, + 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, + 459, 628, 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 1050, 0, 0, 0, 0, 0, - 0, 1051, 1052, 0, 0, 0, 0, 0, 1054, 0, - 1055, 0, 0, 0, 0, 1056, 1057, 1058, 1059, 104, - 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, 0, + 493, 494, 495, 496, 1047, 0, 0, 0, 0, 0, + 0, 1659, 1660, 0, 0, 0, 0, 0, 1051, 0, + 1052, 0, 0, 0, 0, 1053, 1054, 1055, 1056, 104, + 2088, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, - 0, 0, 0, 1018, 0, 0, 116, 117, 0, 118, - 119, 120, 121, 122, 123, 124, 125, 1019, 127, 1020, - 1021, 0, 130, 131, 132, 133, 134, 135, 1022, 606, - 136, 137, 1023, 1024, 140, 0, 141, 142, 143, 144, - 607, 0, 608, 0, 1025, 148, 149, 150, 151, 152, + 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, + 119, 120, 121, 122, 123, 124, 125, 1016, 127, 1017, + 1018, 0, 130, 131, 132, 133, 134, 135, 1019, 604, + 136, 137, 1020, 1021, 140, 0, 141, 142, 143, 144, + 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, - 162, 0, 163, 164, 165, 3230, 609, 610, 611, 612, - 613, 614, 615, 172, 173, 174, 175, 176, 177, 178, - 1026, 1027, 181, 1028, 182, 0, 183, 184, 185, 186, + 162, 0, 163, 164, 165, 166, 607, 608, 609, 610, + 611, 612, 613, 172, 173, 174, 175, 176, 177, 178, + 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, - 194, 195, 785, 197, 198, 0, 199, 200, 201, 0, - 202, 203, 204, 0, 205, 206, 207, 208, 1029, 210, - 211, 212, 213, 214, 616, 1030, 216, 0, 217, 218, - 1031, 220, 0, 221, 0, 222, 223, 0, 224, 225, - 226, 227, 228, 229, 0, 230, 0, 1032, 1033, 233, + 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, + 202, 203, 204, 0, 205, 206, 207, 208, 1026, 210, + 211, 212, 213, 214, 614, 1027, 216, 0, 217, 218, + 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, + 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, - 0, 252, 253, 254, 255, 256, 257, 258, 259, 1034, - 1035, 0, 1036, 0, 263, 264, 265, 266, 267, 268, + 0, 252, 253, 254, 255, 256, 257, 258, 259, 1031, + 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, - 277, 0, 278, 279, 280, 618, 619, 281, 282, 283, + 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 1037, 306, 1038, 308, 309, 310, 311, 1039, 312, - 313, 314, 315, 1040, 620, 317, 1041, 319, 320, 321, - 0, 322, 323, 0, 0, 1042, 325, 326, 0, 0, - 327, 328, 329, 330, 331, 622, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 0, 343, 344, 623, + 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, 312, + 313, 314, 315, 1037, 618, 317, 1038, 319, 320, 321, + 0, 322, 323, 0, 0, 1039, 325, 326, 0, 0, + 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, - 355, 356, 357, 358, 0, 359, 360, 361, 1043, 363, + 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 382, 383, 384, 385, 1044, 387, 388, 389, 390, 391, + 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, - 401, 402, 625, 404, 405, 406, 407, 408, 409, 410, - 411, 1045, 413, 0, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 626, 429, + 401, 402, 623, 404, 405, 406, 407, 408, 409, 410, + 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, - 438, 0, 1046, 1047, 0, 0, 441, 442, 627, 444, - 628, 1048, 446, 447, 629, 449, 450, 3231, 452, 453, - 0, 0, 454, 455, 456, 457, 458, 459, 630, 0, - 461, 462, 463, 464, 465, 466, 1049, 0, 468, 469, + 438, 0, 1043, 1044, 0, 0, 441, 442, 625, 444, + 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, + 0, 0, 454, 455, 456, 457, 458, 459, 628, 0, + 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 1050, 0, 0, 0, 0, 0, 0, 1051, 1052, - 0, 0, 0, 0, 0, 1054, 0, 1055, 0, 0, - 0, 0, 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, - 1014, 1015, 1016, 1017, 0, 0, 0, 0, 0, 0, + 496, 1047, 0, 0, 0, 0, 0, 0, 1048, 1049, + 0, 0, 0, 0, 0, 1051, 0, 1052, 0, 0, + 0, 0, 1053, 1054, 1055, 1056, 104, 1009, 515, 1010, + 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 1018, 0, 0, 116, 117, 0, 118, 119, 120, 121, - 122, 123, 124, 125, 1019, 127, 1020, 1021, 0, 130, - 131, 132, 133, 134, 135, 1022, 606, 136, 137, 1023, - 1024, 140, 0, 141, 142, 143, 144, 607, 0, 608, - 0, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, + 122, 123, 124, 125, 1016, 127, 1017, 1018, 0, 130, + 131, 132, 133, 134, 135, 1019, 604, 136, 137, 1020, + 1021, 140, 0, 141, 142, 143, 144, 605, 0, 606, + 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, - 164, 165, 166, 609, 610, 611, 612, 613, 614, 615, - 172, 173, 174, 175, 176, 177, 178, 1026, 1027, 181, - 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 785, + 164, 165, 166, 607, 608, 609, 610, 611, 612, 613, + 172, 173, 174, 175, 176, 177, 178, 1023, 1024, 181, + 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, + 189, 190, 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 1029, 210, 211, 212, 213, - 214, 616, 1030, 216, 0, 217, 218, 1031, 220, 0, + 0, 205, 206, 207, 208, 1026, 210, 211, 212, 213, + 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, - 229, 0, 230, 0, 1032, 1033, 233, 0, 234, 235, + 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 255, 256, 257, 258, 259, 1034, 1035, 0, 1036, + 254, 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, - 279, 280, 618, 619, 281, 282, 283, 284, 285, 286, + 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 1037, 306, - 1038, 308, 309, 310, 311, 0, 312, 313, 314, 315, - 1040, 620, 317, 1041, 319, 320, 321, 0, 322, 323, - 0, 0, 1042, 325, 326, 0, 0, 327, 328, 329, - 330, 331, 622, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 623, 346, 347, 348, + 297, 298, 299, 300, 301, 302, 303, 304, 1034, 306, + 1035, 308, 309, 310, 311, 1036, 312, 313, 314, 315, + 1037, 618, 317, 1038, 319, 320, 321, 0, 322, 323, + 0, 0, 1039, 325, 326, 0, 0, 327, 328, 329, + 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 1043, 363, 364, 365, 366, + 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, 384, - 385, 1044, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 625, - 404, 405, 406, 407, 408, 409, 410, 411, 1045, 413, + 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 398, 399, 400, 401, 402, 623, + 404, 405, 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 626, 429, 0, 430, 431, - 0, 432, 433, 434, 435, 436, 437, 438, 0, 1046, - 1047, 0, 0, 441, 442, 627, 444, 628, 1048, 446, - 447, 629, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 630, 0, 461, 462, 463, - 464, 465, 466, 1049, 0, 468, 469, 470, 471, 472, + 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, + 0, 432, 433, 434, 435, 436, 437, 438, 0, 1043, + 1044, 0, 0, 441, 442, 625, 444, 626, 1045, 446, + 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, + 455, 456, 457, 458, 459, 628, 0, 461, 462, 463, + 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, - 0, 0, 0, 0, 0, 1471, 1472, 0, 0, 0, - 0, 0, 1054, 0, 1055, 0, 0, 0, 0, 1056, - 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 0, 1016, - 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 489, 490, 491, 492, 493, 494, 495, 496, 1047, 0, + 0, 0, 0, 0, 0, 1048, 1049, 0, 0, 0, + 0, 0, 1051, 0, 2360, 0, 0, 0, 0, 1053, + 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, + 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, - 113, 114, 115, 0, 0, 0, 0, 1018, 0, 0, + 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, - 125, 1019, 127, 1020, 1021, 0, 130, 131, 132, 133, - 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, 0, - 141, 142, 143, 144, 607, 0, 608, 0, 147, 148, + 125, 1016, 127, 1017, 1018, 0, 130, 131, 132, 133, + 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, + 141, 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, - 158, 159, 160, 161, 162, 0, 163, 164, 165, 166, - 609, 610, 611, 612, 613, 614, 615, 172, 173, 174, - 175, 176, 177, 178, 1026, 1027, 181, 0, 182, 0, + 158, 159, 160, 161, 162, 0, 163, 164, 2839, 166, + 607, 608, 609, 610, 611, 612, 613, 172, 173, 174, + 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, - 192, 193, 0, 0, 194, 195, 785, 197, 198, 0, + 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, - 207, 208, 1029, 210, 211, 212, 213, 214, 616, 1030, - 216, 0, 217, 218, 1031, 220, 0, 221, 0, 222, + 207, 208, 1026, 210, 211, 212, 213, 214, 614, 1027, + 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, - 0, 1032, 1033, 233, 0, 234, 235, 236, 237, 238, + 0, 2840, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, - 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, 264, + 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, - 0, 274, 275, 276, 277, 0, 278, 279, 280, 618, - 619, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 0, 274, 275, 276, 277, 0, 278, 279, 280, 616, + 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1037, 306, 1038, 308, 309, - 310, 311, 0, 312, 313, 314, 315, 1040, 620, 317, - 1041, 319, 320, 321, 0, 322, 323, 0, 0, 324, - 325, 326, 0, 0, 327, 328, 329, 330, 331, 622, + 300, 301, 302, 303, 304, 1034, 306, 1035, 308, 309, + 310, 311, 1036, 312, 313, 314, 315, 1037, 618, 317, + 1038, 319, 320, 321, 0, 322, 323, 0, 0, 1039, + 325, 326, 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 0, 343, 344, 623, 346, 347, 348, 349, 350, 351, + 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, - 360, 361, 1043, 363, 364, 365, 366, 0, 367, 368, + 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 382, 383, 384, 385, 2088, 2089, + 379, 0, 380, 381, 382, 383, 384, 2841, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 625, 404, 405, 406, - 407, 408, 409, 410, 411, 1045, 413, 0, 414, 415, + 0, 398, 399, 400, 401, 402, 623, 404, 405, 406, + 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 626, 429, 0, 430, 431, 0, 432, 433, - 434, 435, 436, 437, 438, 0, 1046, 1047, 0, 0, - 441, 442, 627, 444, 628, 1048, 446, 447, 629, 449, + 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, + 434, 435, 436, 437, 438, 0, 1043, 1044, 0, 0, + 441, 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, - 458, 459, 630, 0, 461, 462, 463, 464, 465, 466, - 1049, 0, 468, 469, 470, 471, 472, 473, 474, 0, + 458, 459, 628, 0, 461, 462, 463, 464, 465, 466, + 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 0, 0, 2090, 2091, 0, 0, 0, 0, 0, 1054, - 0, 1055, 0, 0, 0, 0, 1056, 1057, 1058, 1059, - 104, 1012, 515, 1013, 1014, 1015, 1016, 1017, 0, 0, + 492, 493, 494, 495, 496, 1047, 0, 0, 0, 0, + 0, 0, 1048, 1049, 0, 0, 0, 0, 0, 1051, + 0, 2843, 0, 0, 0, 0, 1053, 1054, 1055, 1056, + 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 1018, 0, 0, 116, 117, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 1019, 127, - 1020, 1021, 0, 130, 131, 132, 133, 134, 135, 1022, - 606, 136, 137, 1023, 1024, 140, 0, 141, 142, 143, - 144, 607, 0, 608, 0, 147, 148, 149, 150, 151, + 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, + 118, 119, 120, 121, 122, 123, 124, 3225, 1016, 127, + 1017, 1018, 0, 130, 131, 132, 133, 134, 135, 1019, + 604, 136, 137, 1020, 1021, 140, 0, 141, 142, 143, + 144, 605, 0, 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 163, 164, 165, 166, 609, 610, 611, - 612, 613, 614, 615, 172, 173, 174, 175, 176, 177, - 178, 1026, 1027, 181, 0, 182, 0, 183, 184, 185, + 161, 162, 0, 163, 164, 165, 3226, 607, 608, 609, + 610, 611, 612, 613, 172, 173, 174, 175, 176, 177, + 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 785, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 1029, - 210, 211, 212, 213, 214, 616, 1030, 216, 0, 217, - 218, 1031, 220, 0, 221, 0, 222, 223, 0, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 1032, 1033, + 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 1026, + 210, 211, 212, 213, 214, 614, 1027, 216, 0, 217, + 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, - 1034, 1035, 0, 1036, 0, 263, 0, 265, 266, 267, + 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, - 276, 277, 0, 278, 279, 280, 618, 619, 281, 282, + 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 1037, 306, 1038, 308, 309, 310, 311, 0, - 312, 313, 314, 315, 1040, 620, 317, 1041, 319, 320, - 321, 0, 322, 323, 0, 0, 1042, 325, 326, 0, - 0, 327, 328, 329, 330, 331, 622, 333, 334, 335, + 303, 304, 1034, 306, 1035, 308, 309, 310, 311, 1036, + 312, 313, 314, 315, 1037, 618, 317, 1038, 319, 320, + 321, 0, 322, 323, 0, 0, 1039, 325, 326, 0, + 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 623, 346, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 1043, + 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 383, 384, 385, 1044, 387, 388, 389, 390, + 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 625, 404, 405, 406, 407, 408, 409, - 410, 411, 1045, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 626, + 400, 401, 402, 623, 404, 405, 406, 407, 408, 409, + 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, - 437, 438, 0, 1046, 1047, 0, 0, 441, 442, 627, - 444, 628, 1048, 446, 447, 629, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 630, - 0, 461, 462, 463, 464, 465, 466, 1049, 0, 468, + 437, 438, 0, 1043, 1044, 0, 0, 441, 442, 625, + 444, 626, 1045, 446, 447, 627, 449, 450, 3227, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 628, + 0, 461, 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 0, 0, 0, 0, 0, 0, 0, 1471, - 1472, 0, 0, 0, 0, 0, 1054, 0, 1055, 0, - 0, 0, 0, 1056, 1057, 1058, 1059, 104, 1012, 515, - 1013, 1014, 1015, 1016, 1017, 0, 0, 0, 0, 0, + 495, 496, 1047, 0, 0, 0, 0, 0, 0, 1048, + 1049, 0, 0, 0, 0, 0, 1051, 0, 1052, 0, + 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, 515, + 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, - 0, 1018, 0, 0, 116, 117, 0, 118, 119, 120, - 121, 122, 123, 124, -1916, 1019, 127, 1020, 1021, 0, - 130, 131, 132, 133, 134, 135, 1022, 606, 136, 137, - 1023, 1024, 140, 0, 141, 142, 143, 144, 607, 0, - 608, 0, 1025, 148, 149, 150, 151, 152, 153, 154, + 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, + 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, 0, + 130, 131, 132, 133, 134, 135, 1019, 604, 136, 137, + 1020, 1021, 140, 0, 141, 142, 143, 144, 605, 0, + 606, 0, 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, - 163, 164, 165, 3230, 609, 610, 611, 612, 613, 614, - 615, 172, 173, 174, 175, 176, 177, 178, 1026, 1027, - 181, 1028, 182, 0, 183, 184, 185, 186, 187, 188, + 163, 164, 165, 3226, 607, 608, 609, 610, 611, 612, + 613, 172, 173, 174, 175, 176, 177, 178, 1023, 1024, + 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, - 785, 197, 198, 0, 199, 200, 201, 0, 202, 203, - 204, 0, 205, 206, 207, 208, 1029, 210, 211, 212, - 213, 214, 616, 1030, 216, 0, 217, 218, 1031, 220, + 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 1026, 210, 211, 212, + 213, 214, 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, - -1916, 229, 0, 230, 0, 1032, 1033, 233, 0, 234, - 235, 236, 237, 238, 239, 240, -1916, 242, 243, 244, + 228, 229, 0, 230, 0, 1029, 1030, 233, 0, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, - 253, 254, 255, 256, 257, 258, 259, 1034, 1035, 0, - 1036, 0, 263, 0, 0, 266, 267, 268, 269, 270, - 271, 272, 273, 0, 0, 274, 275, 276, -1916, 0, - 278, 279, 280, 618, 619, 281, 282, 283, 284, 285, + 253, 254, 255, 256, 257, 258, 259, 1031, 1032, 0, + 1033, 0, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 0, 0, 274, 275, 276, 277, 0, + 278, 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 1037, - 306, 1038, 308, 309, 310, 311, 0, 312, 313, 0, - 315, 1040, 620, 317, 1041, 319, 320, 321, 0, 322, - 323, 0, 0, 1042, 325, 326, 0, 0, 327, 328, - 329, 330, 331, 622, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 0, 343, 344, 623, 346, 347, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 1034, + 306, 1035, 308, 309, 310, 311, 1036, 312, 313, 314, + 315, 1037, 618, 317, 1038, 319, 320, 321, 0, 322, + 323, 0, 0, 1039, 325, 326, 0, 0, 327, 328, + 329, 330, 331, 620, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 0, 359, 360, 361, 1043, 363, 364, 365, + 357, 358, 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, - 384, 385, 1044, 387, 388, 389, 390, 391, 392, 393, + 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, - 625, 404, 405, 406, 407, 408, -1916, 410, 411, 1045, + 623, 404, 405, 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 626, 429, 0, 430, + 422, 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, 0, - 1046, 1047, 0, 0, 441, 442, 627, 444, 628, 1048, - 446, 447, 629, 449, 450, 3231, 452, 453, 0, 0, - 454, 455, 456, 457, 458, 459, 630, 0, 461, 462, - 463, 464, 465, 466, 1049, 0, 468, 469, 470, 471, + 1043, 1044, 0, 0, 441, 442, 625, 444, 626, 1045, + 446, 447, 627, 449, 450, 3227, 452, 453, 0, 0, + 454, 455, 456, 457, 458, 459, 628, 0, 461, 462, + 463, 464, 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, -1916, - 0, 0, 0, 0, 0, 0, 1051, 1052, 0, 0, - 0, 0, 0, 1054, 0, 1055, 0, 0, 0, 0, - 1056, 1057, 1058, 1059, 104, 1012, 515, 1013, 1014, 1015, - 1016, 1017, 0, 0, 0, 0, 0, 0, 0, 0, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 1047, + 0, 0, 0, 0, 0, 0, 1048, 1049, 0, 0, + 0, 0, 0, 1051, 0, 1052, 0, 0, 0, 0, + 1053, 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, + 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 1018, 0, + 0, 113, 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, - 124, 0, 1019, 127, 1020, 1021, 0, 130, 131, 132, - 133, 134, 135, 1022, 606, 136, 137, 1023, 1024, 140, - 0, 141, 142, 143, 144, 607, 0, 608, 0, 1025, + 124, 125, 1016, 127, 1017, 1018, 0, 130, 131, 132, + 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, 140, + 0, 141, 142, 143, 144, 605, 0, 606, 0, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, 165, - 166, 609, 610, 611, 612, 613, 614, 615, 172, 173, - 174, 175, 176, 177, 178, 1026, 1027, 181, 1028, 182, + 166, 607, 608, 609, 610, 611, 612, 613, 172, 173, + 174, 175, 176, 177, 178, 1023, 1024, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 785, 197, 198, - 0, 199, 200, 201, 0, 202, 0, 204, 0, 205, - 206, 207, 208, 1029, 210, 211, 212, 213, 214, 616, - 1030, 216, 0, 217, 218, 1031, 220, 0, 221, 0, - 222, 223, 0, 224, 225, 226, 227, 0, 229, 0, - 230, 0, 1032, 1033, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, + 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, + 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, + 206, 207, 208, 1026, 210, 211, 212, 213, 214, 614, + 1027, 216, 0, 217, 218, 1028, 220, 0, 221, 0, + 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, + 230, 0, 1029, 1030, 233, 0, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, - 256, 257, 258, 259, 1034, 1035, 0, 1036, 0, 263, - 0, 0, 266, 267, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 275, 276, 0, 0, 278, 279, 280, - 618, 619, 281, 282, 283, 284, 285, 286, 287, 288, + 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 0, 0, 274, 275, 276, 277, 0, 278, 279, 280, + 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 1037, 306, 1038, 308, - 309, 310, 311, 0, 312, 313, 0, 315, 1040, 620, - 317, 1041, 319, 320, 321, 0, 322, 323, 0, 0, - 1042, 325, 326, 0, 0, 327, 328, 329, 330, 331, - 622, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 623, 346, 347, 348, 349, 350, + 299, 300, 301, 302, 303, 304, 1034, 306, 1035, 308, + 309, 310, 311, 0, 312, 313, 314, 315, 1037, 618, + 317, 1038, 319, 320, 321, 0, 322, 323, 0, 0, + 1039, 325, 326, 0, 0, 327, 328, 329, 330, 331, + 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 1043, 363, 364, 365, 366, 0, 367, + 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 383, 384, 385, 1044, + 378, 379, 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 625, 404, 405, - 406, 407, 408, 0, 410, 411, 1045, 413, 0, 414, + 397, 0, 398, 399, 400, 401, 402, 623, 404, 405, + 406, 407, 408, 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 626, 429, 0, 430, 431, 0, 432, - 433, 434, 435, 436, 437, 438, 0, 1046, 1047, 0, - 0, 441, 442, 627, 444, 628, 1048, 446, 447, 629, + 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, + 433, 434, 435, 436, 437, 438, 0, 1043, 1044, 0, + 0, 441, 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 630, 0, 461, 462, 463, 464, 465, - 466, 1049, 0, 468, 469, 470, 471, 472, 473, 474, + 457, 458, 459, 628, 0, 461, 462, 463, 464, 465, + 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, 0, 0, 0, - 0, 0, 0, 1051, 1052, 504, 0, 0, 0, 0, - 1054, 0, 1055, 0, 0, 0, 0, 1056, 1057, 1058, - 1059, 0, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, - 977, 0, 116, 117, 0, 118, 119, 120, 0, 122, - 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, - 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, - 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 0, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 0, 0, 0, 1467, 1468, 0, 0, 0, 0, 0, + 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, 1055, + 1056, 104, 1009, 515, 1010, 1011, 0, 1013, 1014, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 1015, 0, 0, 116, 117, + 0, 118, 119, 120, 121, 122, 123, 124, 125, 1016, + 127, 1017, 1018, 0, 130, 131, 132, 133, 134, 135, + 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, 142, + 143, 144, 605, 0, 606, 0, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 163, 164, 165, 166, 607, 608, + 609, 610, 611, 612, 613, 172, 173, 174, 175, 176, + 177, 178, 1023, 1024, 181, 0, 182, 0, 183, 184, + 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, + 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, + 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, + 1026, 210, 211, 212, 213, 214, 614, 1027, 216, 0, + 217, 218, 1028, 220, 0, 221, 0, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 1029, + 1030, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, + 259, 1031, 1032, 0, 1033, 0, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 275, 276, 277, 0, 278, 279, 280, 616, 617, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 1034, 306, 1035, 308, 309, 310, 311, + 0, 312, 313, 314, 315, 1037, 618, 317, 1038, 319, + 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, + 0, 0, 327, 328, 329, 330, 331, 620, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, + 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, + 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, + 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, + 380, 381, 382, 383, 384, 385, 2074, 2075, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, + 399, 400, 401, 402, 623, 404, 405, 406, 407, 408, + 409, 410, 411, 1042, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, + 436, 437, 438, 0, 1043, 1044, 0, 0, 441, 442, + 625, 444, 626, 1045, 446, 447, 627, 449, 450, 451, + 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, + 628, 0, 461, 462, 463, 464, 465, 466, 1046, 0, + 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 0, 0, 0, 0, 0, 0, 0, + 2076, 2077, 0, 0, 0, 0, 0, 1051, 0, 1052, + 0, 0, 0, 0, 1053, 1054, 1055, 1056, 104, 1009, + 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 1015, 0, 0, 116, 117, 0, 118, 119, + 120, 121, 122, 123, 124, 125, 1016, 127, 1017, 1018, + 0, 130, 131, 132, 133, 134, 135, 1019, 604, 136, + 137, 1020, 1021, 140, 0, 141, 142, 143, 144, 605, + 0, 606, 0, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, + 0, 163, 164, 165, 166, 607, 608, 609, 610, 611, + 612, 613, 172, 173, 174, 175, 176, 177, 178, 1023, + 1024, 181, 0, 182, 0, 183, 184, 185, 186, 187, + 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, + 195, 780, 197, 198, 0, 199, 200, 201, 0, 202, + 203, 204, 0, 205, 206, 207, 208, 1026, 210, 211, + 212, 213, 214, 614, 1027, 216, 0, 217, 218, 1028, + 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, + 227, 228, 229, 0, 230, 0, 1029, 1030, 233, 0, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, + 252, 253, 254, 255, 256, 257, 258, 259, 1031, 1032, + 0, 1033, 0, 263, 0, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, + 0, 278, 279, 280, 616, 617, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 1034, 306, 1035, 308, 309, 310, 311, 0, 312, 313, + 314, 315, 1037, 618, 317, 1038, 319, 320, 321, 0, + 322, 323, 0, 0, 1039, 325, 326, 0, 0, 327, + 328, 329, 330, 331, 620, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 621, 346, + 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, + 356, 357, 358, 0, 359, 360, 361, 1040, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, + 383, 384, 385, 1041, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, + 402, 623, 404, 405, 406, 407, 408, 409, 410, 411, + 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 624, 429, 0, + 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, + 0, 1043, 1044, 0, 0, 441, 442, 625, 444, 626, + 1045, 446, 447, 627, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 628, 0, 461, + 462, 463, 464, 465, 466, 1046, 0, 468, 469, 470, + 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 0, 0, 0, 0, 0, 1467, 1468, 0, + 0, 0, 0, 0, 1051, 0, 1052, 0, 0, 0, + 0, 1053, 1054, 1055, 1056, 104, 1009, 515, 1010, 1011, + 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 1015, + 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, + 123, 124, -1912, 1016, 127, 1017, 1018, 0, 130, 131, + 132, 133, 134, 135, 1019, 604, 136, 137, 1020, 1021, + 140, 0, 141, 142, 143, 144, 605, 0, 606, 0, + 1022, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, + 165, 3226, 607, 608, 609, 610, 611, 612, 613, 172, + 173, 174, 175, 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, - 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, - 198, 0, 199, 200, 201, 0, 202, 203, 204, -488, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 0, 216, -488, 217, 218, 219, 220, -488, 221, - 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, - 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, - 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, - 255, 256, 257, 258, 259, 260, 261, -488, 262, 0, - 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 0, 276, 0, -488, 278, 279, - 280, 0, 0, 281, 282, 283, 284, 285, 506, 287, + 190, 191, 192, 193, 0, 0, 194, 195, 780, 197, + 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, + 205, 206, 207, 208, 1026, 210, 211, 212, 213, 214, + 614, 1027, 216, 0, 217, 218, 1028, 220, 0, 221, + 0, 222, 223, 0, 224, 225, 226, 227, -1912, 229, + 0, 230, 0, 1029, 1030, 233, 0, 234, 235, 236, + 237, 238, 239, 240, -1912, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 255, 256, 257, 258, 259, 1031, 1032, 0, 1033, 0, + 263, 0, 0, 266, 267, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 275, 276, -1912, 0, 278, 279, + 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, - 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, - 316, 317, 318, 319, 320, 321, -488, 322, 323, 0, - 0, 324, 325, 326, 0, -488, 327, 328, 0, 330, - 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, + 298, 299, 300, 301, 302, 303, 304, 1034, 306, 1035, + 308, 309, 310, 311, 0, 312, 313, 0, 315, 1037, + 618, 317, 1038, 319, 320, 321, 0, 322, 323, 0, + 0, 1039, 325, 326, 0, 0, 327, 328, 329, 330, + 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, + 0, 359, 360, 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 0, 398, 399, 400, 401, 402, 0, 404, - 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, + 377, 378, 379, 0, 380, 381, 382, 383, 384, 385, + 1041, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 623, 404, + 405, 406, 407, 408, -1912, 410, 411, 1042, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, - 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, - 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, - 448, 449, 450, 451, 452, 453, -488, 0, 454, 455, - 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, - 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, + 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, + 432, 433, 434, 435, 436, 437, 438, 0, 1043, 1044, + 0, 0, 441, 442, 625, 444, 626, 1045, 446, 447, + 627, 449, 450, 3227, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 628, 0, 461, 462, 463, 464, + 465, 466, 1046, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 104, 0, 530, + 490, 491, 492, 493, 494, 495, 496, -1912, 0, 0, + 0, 0, 0, 0, 1048, 1049, 0, 0, 0, 0, + 0, 1051, 0, 1052, 0, 0, 0, 0, 1053, 1054, + 1055, 1056, 104, 1009, 515, 1010, 1011, 1012, 1013, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1123, 105, 106, 107, 108, 109, - 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, - 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, - 130, 131, 132, 133, 134, 135, 0, 606, 136, 137, - 138, 139, 140, 0, 141, 142, 143, 144, 607, 0, - 608, 0, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, - 163, 164, 165, 166, 609, 610, 611, 612, 613, 614, - 615, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, - 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, - 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, - 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 616, 0, 216, 0, 217, 218, 219, 220, - 0, 221, 0, 222, 223, 21, 224, 225, 226, 227, - 228, 229, 0, 230, 0, 231, 232, 233, 0, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, - 262, 0, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 617, 0, 274, 275, 276, 277, 0, - 278, 279, 280, 618, 619, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 0, 312, 313, 314, - 315, 0, 620, 317, 318, 319, 320, 321, 0, 322, - 323, 0, 621, 324, 325, 326, 0, 0, 327, 328, - 329, 330, 331, 622, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 0, 343, 344, 623, 346, 347, - 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, - 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, - 384, 385, 386, 624, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 29, 398, 399, 400, 401, 402, - 625, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 626, 429, 0, 430, - 431, 34, 432, 433, 434, 435, 436, 437, 438, 0, - 439, 440, 0, 0, 441, 442, 627, 444, 628, 0, - 446, 447, 629, 449, 450, 451, 452, 453, 0, 0, - 454, 455, 456, 457, 458, 459, 630, 0, 461, 462, - 463, 464, 465, 631, 467, 0, 468, 469, 470, 471, - 472, 473, 474, 0, 0, 475, 0, 39, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 0, - 0, 40, 855, 1427, 515, 0, 0, 0, 1016, 0, - 0, 0, 0, 0, 0, 632, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, - 117, 0, 118, 119, 120, 856, 122, 123, 124, 857, - 858, 859, 860, 861, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 862, 863, 140, 0, 141, - 142, 143, 144, 864, 0, 865, 0, 866, 148, 149, - 150, 151, 152, 867, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 868, 164, 165, 166, 869, - 870, 871, 872, 0, 0, 873, 172, 173, 174, 175, - 176, 177, 178, 874, 875, 181, 0, 182, 0, 183, + 114, 115, 0, 0, 0, 0, 1015, 0, 0, 116, + 117, 0, 118, 119, 120, 121, 122, 123, 124, 0, + 1016, 127, 1017, 1018, 0, 130, 131, 132, 133, 134, + 135, 1019, 604, 136, 137, 1020, 1021, 140, 0, 141, + 142, 143, 144, 605, 0, 606, 0, 1022, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, + 159, 160, 161, 162, 0, 163, 164, 165, 166, 607, + 608, 609, 610, 611, 612, 613, 172, 173, 174, 175, + 176, 177, 178, 1023, 1024, 181, 1025, 182, 0, 183, + 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, + 193, 0, 0, 194, 195, 780, 197, 198, 0, 199, + 200, 201, 0, 202, 0, 204, 0, 205, 206, 207, + 208, 1026, 210, 211, 212, 213, 214, 614, 1027, 216, + 0, 217, 218, 1028, 220, 0, 221, 0, 222, 223, + 0, 224, 225, 226, 227, 0, 229, 0, 230, 0, + 1029, 1030, 233, 0, 234, 235, 236, 237, 238, 239, + 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, + 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, + 258, 259, 1031, 1032, 0, 1033, 0, 263, 0, 0, + 266, 267, 268, 269, 270, 271, 272, 273, 0, 0, + 274, 275, 276, 0, 0, 278, 279, 280, 616, 617, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 1034, 306, 1035, 308, 309, 310, + 311, 0, 312, 313, 0, 315, 1037, 618, 317, 1038, + 319, 320, 321, 0, 322, 323, 0, 0, 1039, 325, + 326, 0, 0, 327, 328, 329, 330, 331, 620, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, + 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, + 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, + 361, 1040, 363, 364, 365, 366, 0, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 0, 380, 381, 382, 383, 384, 385, 1041, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 398, 399, 400, 401, 402, 623, 404, 405, 406, 407, + 408, 0, 410, 411, 1042, 413, 0, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, + 435, 436, 437, 438, 0, 1043, 1044, 0, 0, 441, + 442, 625, 444, 626, 1045, 446, 447, 627, 449, 450, + 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, + 459, 628, 0, 461, 462, 463, 464, 465, 466, 1046, + 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, + 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 0, 0, 0, 0, 0, 0, + 0, 1048, 1049, 761, 0, 0, 0, 0, 1051, 0, + 1052, 0, 0, 0, 0, 1053, 1054, 1055, 1056, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 120, 762, 122, 123, 124, + 0, 763, 764, 765, 766, 0, 130, 131, 132, 133, + 134, 135, 0, 0, 136, 137, 767, 768, 140, 0, + 141, 142, 143, 144, 0, 0, 769, 0, 770, 148, + 149, 150, 151, 152, 771, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 772, 164, 165, 166, + 773, 774, 775, 776, 0, 0, 777, 172, 173, 174, + 175, 176, 177, 178, 778, 779, 181, 0, 182, 0, + 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, + 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, + 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, + 207, 208, 0, 210, 211, 212, 213, 214, 0, 0, + 216, 0, 217, 218, 781, 220, 0, 221, 0, 222, + 782, 0, 783, 225, 226, 0, 784, 229, 0, 230, + 0, 0, 0, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 786, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 787, 0, 255, 256, + 257, 258, 259, 788, 789, 0, 790, 0, 263, 791, + 792, 266, 793, 268, 269, 270, 271, 272, 273, 0, + 0, 274, 794, 276, 795, 0, 278, 279, 280, 0, + 0, 281, 282, 283, 284, 285, 796, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 797, 798, 799, 308, 309, + 310, 0, 0, 312, 313, 800, 315, 0, 0, 317, + 801, 319, 320, 321, 0, 322, 323, 0, 0, 324, + 325, 326, 0, 0, 327, 0, 802, 330, 803, 0, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 0, 343, 344, 0, 804, 347, 348, 0, 350, 351, + 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 360, 361, 805, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 0, 380, 381, 806, 383, 384, 385, 807, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 398, 399, 400, 401, 402, 808, 404, 809, 406, + 407, 408, 810, 410, 411, 811, 413, 0, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 812, 427, 0, 429, 0, 430, 431, 0, 432, 813, + 434, 435, 436, 437, 438, 0, 814, 815, 0, 0, + 441, 442, 0, 444, 0, 0, 446, 447, 816, 449, + 450, 451, 452, 453, 817, 0, 454, 455, 456, 457, + 458, 459, 818, 0, 461, 462, 463, 464, 465, 0, + 819, 0, 468, 820, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, + 0, 504, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 493, 494, 495, 496, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, -951, 0, 0, -951, 974, 0, 116, 117, + 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, + 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, + 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, + 143, 144, 145, 0, 0, 0, 147, 148, 149, 150, + 151, 152, 0, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 0, 164, 165, 166, 0, 0, + 0, 0, 0, 0, 0, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, + 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, + 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, + 201, 0, 202, 203, 204, -114, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, -114, + 217, 218, 219, 220, -114, 221, 0, 222, 0, 0, + 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, + 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, + 259, 260, 261, -114, 262, 0, 263, 0, 0, 266, + 0, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 0, 276, 0, -114, 278, 279, 280, 0, 0, 281, + 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, + 0, 312, 313, 0, 315, 0, 316, 317, 318, 319, + 320, 321, -114, 322, 323, 0, 0, 324, 325, 326, + 0, -114, 327, 328, 0, 330, 0, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, + 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, + 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, + 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, + 399, 400, 401, 402, 0, 404, 405, 406, 407, 408, + 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, + 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, + 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, + 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, + 452, 453, -114, 0, 454, 455, 456, 457, 458, 459, + 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, + 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 104, 0, 530, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1120, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 0, 130, 131, 132, 133, + 134, 135, 0, 604, 136, 137, 138, 139, 140, 0, + 141, 142, 143, 144, 605, 0, 606, 0, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 163, 164, 165, 166, + 607, 608, 609, 610, 611, 612, 613, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, + 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, + 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, + 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 614, 0, + 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, + 223, 21, 224, 225, 226, 227, 228, 229, 0, 230, + 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 0, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 615, + 0, 274, 275, 276, 277, 0, 278, 279, 280, 616, + 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 312, 313, 314, 315, 0, 618, 317, + 318, 319, 320, 321, 0, 322, 323, 0, 619, 324, + 325, 326, 0, 0, 327, 328, 329, 330, 331, 620, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, + 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 0, 380, 381, 382, 383, 384, 385, 386, 622, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 29, 398, 399, 400, 401, 402, 623, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 0, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 624, 429, 0, 430, 431, 34, 432, 433, + 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, + 441, 442, 625, 444, 626, 0, 446, 447, 627, 449, + 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, + 458, 459, 628, 0, 461, 462, 463, 464, 465, 629, + 467, 0, 468, 469, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 39, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 0, 0, 40, 852, 1423, + 515, 0, 0, 0, 1013, 0, 0, 0, 0, 0, + 0, 630, 0, 0, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, + 120, 853, 122, 123, 124, 854, 855, 856, 857, 858, + 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, + 137, 859, 860, 140, 0, 141, 142, 143, 144, 861, + 0, 862, 0, 863, 148, 149, 150, 151, 152, 864, + 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, + 0, 865, 164, 165, 166, 866, 867, 868, 869, 0, + 0, 870, 172, 173, 174, 175, 176, 177, 178, 871, + 872, 181, 0, 182, 0, 183, 184, 185, 186, 187, + 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, + 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, + 203, 204, 0, 205, 206, 207, 208, 873, 210, 211, + 212, 213, 214, 874, 1424, 216, 0, 217, 218, 875, + 220, 0, 221, 0, 222, 876, 0, 877, 225, 226, + 878, 879, 229, 0, 230, 0, 880, 881, 233, 0, + 234, 235, 236, 237, 238, 239, 240, 882, 242, 243, + 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, + 252, 883, 884, 255, 256, 257, 258, 259, 885, 886, + 0, 887, 0, 263, 888, 889, 266, 890, 268, 269, + 270, 271, 272, 273, 0, 0, 274, 891, 276, 892, + 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, + 285, 893, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 894, 895, 896, 308, 309, 310, 897, 0, 312, 313, + 898, 315, 0, 899, 317, 900, 319, 320, 321, 0, + 322, 323, 1425, 0, 324, 325, 326, 0, 0, 327, + 901, 902, 330, 903, 904, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 905, 906, + 347, 348, 907, 350, 351, 352, 0, 353, 354, 355, + 356, 357, 358, 0, 359, 360, 361, 908, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 0, 380, 381, 909, + 383, 384, 385, 910, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, + 402, 911, 404, 912, 406, 407, 408, 913, 410, 411, + 914, 413, 0, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 915, 427, 916, 429, 0, + 430, 431, 0, 432, 917, 434, 435, 436, 437, 438, + 0, 918, 919, 0, 0, 441, 442, 920, 444, 921, + 1426, 446, 447, 922, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 923, 0, 461, + 462, 463, 464, 465, 1309, 925, 0, 468, 926, 470, + 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, + 477, 478, 479, 480, 481, 927, 928, 929, 930, 931, + 932, 933, 934, 935, 936, 937, 493, 494, 495, 496, + 104, 0, 530, 0, 0, 0, 0, 1427, 1428, 2261, + 0, 0, 0, 0, 0, 0, 2262, 0, 105, 106, + 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, + 604, 136, 137, 138, 139, 140, 0, 141, 142, 143, + 144, 605, 0, 606, 0, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, + 161, 162, 0, 163, 164, 165, 166, 607, 608, 609, + 610, 611, 612, 613, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, + 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 614, 0, 216, 0, 217, + 218, 219, 220, 0, 221, 0, 222, 223, 0, 224, + 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 0, 262, 0, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 615, 0, 274, 275, + 276, 277, 0, 278, 279, 280, 616, 617, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 312, 313, 314, 315, 0, 618, 317, 318, 319, 320, + 321, 0, 322, 323, 0, 619, 324, 325, 326, 0, + 0, 327, 328, 329, 330, 331, 620, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, + 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, + 381, 382, 383, 384, 385, 386, 622, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, + 400, 401, 402, 623, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 624, + 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, + 437, 438, 0, 439, 440, 0, 0, 441, 442, 625, + 444, 626, 0, 446, 447, 627, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 628, + 0, 461, 462, 463, 464, 465, 629, 467, 0, 468, + 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, + 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 852, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 630, 0, + 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, + 114, 115, 3, 4, 0, 0, 0, 0, 0, 116, + 117, 0, 118, 119, 120, 853, 122, 123, 124, 854, + 855, 856, 857, 858, 0, 130, 131, 132, 133, 134, + 135, 0, 0, 136, 137, 859, 860, 140, 0, 141, + 142, 143, 144, 861, 0, 862, 0, 863, 148, 149, + 150, 151, 152, 864, 154, 155, 156, 0, 157, 158, + 159, 160, 161, 162, 0, 865, 164, 165, 166, 866, + 867, 868, 869, 0, 0, 870, 172, 173, 174, 175, + 176, 177, 178, 871, 872, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 876, 210, 211, 212, 213, 214, 877, 1428, 216, - 0, 217, 218, 878, 220, 0, 221, 0, 222, 879, - 0, 880, 225, 226, 881, 882, 229, 0, 230, 0, - 883, 884, 233, 0, 234, 235, 236, 237, 238, 239, - 240, 885, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 886, 887, 255, 256, 257, - 258, 259, 888, 889, 0, 890, 0, 263, 891, 892, - 266, 893, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 894, 276, 895, 0, 278, 279, 280, 0, 0, - 281, 282, 283, 284, 285, 896, 287, 288, 289, 290, + 208, 873, 210, 211, 212, 213, 214, 874, 0, 216, + 0, 217, 218, 875, 220, 0, 221, 0, 222, 876, + 21, 877, 225, 226, 878, 879, 229, 0, 230, 0, + 880, 881, 233, 0, 234, 235, 236, 237, 238, 239, + 240, 882, 242, 243, 244, 245, 0, 246, 247, 248, + 249, 250, 251, 0, 252, 883, 884, 255, 256, 257, + 258, 259, 885, 886, 0, 887, 0, 263, 888, 889, + 266, 890, 268, 269, 270, 271, 272, 273, 0, 0, + 274, 891, 276, 892, 0, 278, 279, 280, 0, 0, + 281, 282, 283, 284, 285, 893, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 897, 898, 899, 308, 309, 310, - 900, 0, 312, 313, 901, 315, 0, 902, 317, 903, - 319, 320, 321, 0, 322, 323, 1429, 0, 324, 325, - 326, 0, 0, 327, 904, 905, 330, 906, 907, 333, + 301, 302, 303, 304, 894, 895, 896, 308, 309, 310, + 897, 0, 312, 313, 898, 315, 0, 899, 317, 900, + 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, + 326, 0, 0, 327, 901, 902, 330, 903, 904, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 908, 909, 347, 348, 910, 350, 351, 352, + 343, 344, 905, 906, 347, 348, 907, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 911, 363, 364, 365, 366, 0, 367, 368, 369, + 361, 908, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 912, 383, 384, 385, 913, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 914, 404, 915, 406, 407, - 408, 916, 410, 411, 917, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 918, - 427, 919, 429, 0, 430, 431, 0, 432, 920, 434, - 435, 436, 437, 438, 0, 921, 922, 0, 0, 441, - 442, 923, 444, 924, 1430, 446, 447, 925, 449, 450, + 0, 380, 381, 909, 383, 384, 385, 910, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 29, + 398, 399, 400, 401, 402, 911, 404, 912, 406, 407, + 408, 913, 410, 411, 914, 413, 0, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 915, + 427, 916, 429, 0, 430, 431, 34, 432, 917, 434, + 435, 436, 437, 438, 0, 918, 919, 0, 0, 441, + 442, 920, 444, 921, 0, 446, 447, 922, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 926, 0, 461, 462, 463, 464, 465, 1312, 928, - 0, 468, 929, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 0, 476, 477, 478, 479, 480, 481, 930, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, - 493, 494, 495, 496, 104, 0, 530, 0, 0, 0, - 0, 1431, 1432, 2265, 0, 0, 0, 0, 0, 0, - 2266, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 459, 923, 0, 461, 462, 463, 464, 465, 924, 925, + 0, 468, 926, 470, 471, 472, 473, 474, 0, 0, + 475, 0, 39, 476, 477, 478, 479, 480, 481, 927, + 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, + 493, 494, 495, 496, 104, 0, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, 130, 131, 132, - 133, 134, 135, 0, 606, 136, 137, 138, 139, 140, - 0, 141, 142, 143, 144, 607, 0, 608, 0, 147, + 133, 134, 135, 0, 604, 136, 137, 138, 139, 140, + 0, 141, 142, 143, 144, 605, 0, 606, 0, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, 165, - 166, 609, 610, 611, 612, 613, 614, 615, 172, 173, + 166, 607, 608, 609, 610, 611, 612, 613, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 616, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 614, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, @@ -313983,275 +313171,275 @@ static const yytype_int16 yytable[] = 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 617, 0, 274, 275, 276, 277, 0, 278, 279, 280, - 618, 619, 281, 282, 283, 284, 285, 286, 287, 288, + 0, 0, 274, 275, 276, 277, 0, 278, 279, 280, + 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 312, 313, 314, 315, 0, 620, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 621, + 309, 310, 311, 0, 312, 313, 314, 315, 0, 618, + 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, 328, 329, 330, 331, - 622, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 623, 346, 347, 348, 349, 350, + 620, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 0, 343, 344, 621, 346, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, 383, 384, 385, 386, - 624, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 625, 404, 405, + 622, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 398, 399, 400, 401, 402, 623, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 626, 429, 0, 430, 431, 0, 432, + 425, 426, 427, 624, 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, 0, 439, 440, 0, - 0, 441, 442, 627, 444, 628, 0, 446, 447, 629, + 0, 441, 442, 625, 444, 626, 0, 446, 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 630, 0, 461, 462, 463, 464, 465, - 631, 467, 0, 468, 469, 470, 471, 472, 473, 474, + 457, 458, 459, 628, 0, 461, 462, 463, 464, 465, + 466, 467, 0, 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 855, 0, 0, 0, + 491, 492, 493, 494, 495, 496, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 632, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 3, 4, 0, 0, - 0, 0, 0, 116, 117, 0, 118, 119, 120, 856, - 122, 123, 124, 857, 858, 859, 860, 861, 0, 130, - 131, 132, 133, 134, 135, 0, 0, 136, 137, 862, - 863, 140, 0, 141, 142, 143, 144, 864, 0, 865, - 0, 866, 148, 149, 150, 151, 152, 867, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 868, - 164, 165, 166, 869, 870, 871, 872, 0, 0, 873, - 172, 173, 174, 175, 176, 177, 178, 874, 875, 181, + 0, 0, 41, 0, 105, 106, 107, 108, 109, 110, + 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, + 0, 0, 0, 116, 117, 0, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 0, 130, + 131, 132, 133, 134, 135, 0, 604, 136, 137, 138, + 139, 140, 0, 141, 142, 143, 144, 605, 0, 606, + 0, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 0, 157, 158, 159, 160, 161, 162, 0, 163, + 164, 165, 166, 607, 608, 609, 610, 611, 612, 613, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 876, 210, 211, 212, 213, - 214, 877, 0, 216, 0, 217, 218, 878, 220, 0, - 221, 0, 222, 879, 21, 880, 225, 226, 881, 882, - 229, 0, 230, 0, 883, 884, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 885, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 886, - 887, 255, 256, 257, 258, 259, 888, 889, 0, 890, - 0, 263, 891, 892, 266, 893, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 894, 276, 895, 0, 278, - 279, 280, 0, 0, 281, 282, 283, 284, 285, 896, + 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 614, 0, 216, 0, 217, 218, 219, 220, 0, + 221, 0, 222, 223, 0, 224, 225, 226, 227, 228, + 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 0, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, + 0, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 0, 0, 274, 275, 276, 277, 0, 278, + 279, 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 897, 898, - 899, 308, 309, 310, 900, 0, 312, 313, 901, 315, - 0, 902, 317, 903, 319, 320, 321, 0, 322, 323, - 0, 0, 324, 325, 326, 0, 0, 327, 904, 905, - 330, 906, 907, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 908, 909, 347, 348, - 910, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 911, 363, 364, 365, 366, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 312, 313, 314, 315, + 0, 618, 317, 318, 319, 320, 321, 0, 322, 323, + 0, 0, 324, 325, 326, 0, 0, 327, 328, 329, + 330, 331, 620, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 0, 343, 344, 621, 346, 347, 348, + 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, + 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 912, 383, 384, - 385, 913, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 29, 398, 399, 400, 401, 402, 914, - 404, 915, 406, 407, 408, 916, 410, 411, 917, 413, + 376, 377, 378, 379, 0, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 398, 399, 400, 401, 402, 623, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 918, 427, 919, 429, 0, 430, 431, - 34, 432, 920, 434, 435, 436, 437, 438, 0, 921, - 922, 0, 0, 441, 442, 923, 444, 924, 0, 446, - 447, 925, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 926, 0, 461, 462, 463, - 464, 465, 927, 928, 0, 468, 929, 470, 471, 472, - 473, 474, 0, 0, 475, 0, 39, 476, 477, 478, - 479, 480, 481, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 493, 494, 495, 496, 104, 0, - 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 41, 0, 105, 106, 107, 108, - 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 423, 424, 425, 426, 427, 624, 429, 0, 430, 431, + 0, 432, 433, 434, 435, 436, 437, 438, 0, 439, + 440, 0, 0, 441, 442, 625, 444, 626, 0, 446, + 447, 627, 449, 450, 451, 452, 453, 0, 0, 454, + 455, 456, 457, 458, 459, 628, 0, 461, 462, 463, + 464, 465, 466, 467, 0, 468, 469, 470, 471, 472, + 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3075, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 704, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 0, 130, 131, 132, 133, 134, 135, 0, 606, 136, - 137, 138, 139, 140, 0, 141, 142, 143, 144, 607, - 0, 608, 0, 147, 148, 149, 150, 151, 152, 153, + 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, + 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, + 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, + 0, 0, 0, 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 163, 164, 165, 166, 609, 610, 611, 612, 613, - 614, 615, 172, 173, 174, 175, 176, 177, 178, 179, + 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, + 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 616, 0, 216, 0, 217, 218, 219, - 220, 0, 221, 0, 222, 223, 0, 224, 225, 226, - 227, 228, 229, 0, 230, 0, 231, 232, 233, 0, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, + 220, 0, 221, 0, 222, 0, 21, 0, 225, 226, + 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, + 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 0, 262, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 0, 0, 274, 275, 276, 277, - 0, 278, 279, 280, 618, 619, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, + 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, + 270, 271, 272, 273, 0, 0, 274, 0, 276, 0, + 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, + 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 312, 313, - 314, 315, 0, 620, 317, 318, 319, 320, 321, 0, + 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, + 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, - 328, 329, 330, 331, 622, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 0, 343, 344, 623, 346, + 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 382, - 383, 384, 385, 386, 624, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 625, 404, 405, 406, 407, 408, 409, 410, 411, + 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 29, 398, 399, 400, 401, + 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 626, 429, 0, - 430, 431, 0, 432, 433, 434, 435, 436, 437, 438, - 0, 439, 440, 0, 0, 441, 442, 627, 444, 628, - 0, 446, 447, 629, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 630, 0, 461, - 462, 463, 464, 465, 466, 467, 0, 468, 469, 470, - 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, + 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, + 430, 431, 34, 432, 0, 434, 435, 436, 437, 438, + 0, 705, 440, 0, 0, 706, 442, 443, 444, 445, + 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, + 462, 463, 464, 465, 629, 467, 0, 468, 0, 470, + 471, 472, 473, 474, 0, 0, 475, 0, 39, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 504, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, - 606, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 607, 0, 608, 0, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 163, 164, 165, 166, 609, 610, 611, - 612, 613, 614, 615, 172, 173, 174, 175, 176, 177, + 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, + 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, + 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, + 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 616, 0, 216, 0, 217, - 218, 219, 220, 0, 221, 0, 222, 223, 0, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, + 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, + 218, 219, 220, 0, 221, 0, 222, 0, 21, 0, + 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 0, 262, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, - 276, 277, 0, 278, 279, 280, 618, 619, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, + 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, + 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, + 276, 0, 0, 278, 279, 280, 0, 0, 281, 282, + 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 312, 313, 314, 315, 0, 620, 317, 318, 319, 320, + 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, + 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, - 0, 327, 328, 329, 330, 331, 622, 333, 334, 335, + 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 623, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 625, 404, 405, 406, 407, 408, 409, + 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 29, 398, 399, + 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 626, - 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, - 437, 438, 0, 439, 440, 0, 0, 441, 442, 627, - 444, 628, 0, 446, 447, 629, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 630, - 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, - 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, - 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, + 429, 0, 430, 431, 34, 432, 0, 434, 435, 436, + 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, + 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, + 0, 461, 462, 463, 464, 465, 629, 467, 0, 468, + 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, + 39, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3079, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 711, 113, - 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, - 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, - 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, - 150, 151, 152, 0, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, - 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, - 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, - 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, - 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, - 21, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, - 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, - 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, - 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 0, 276, 0, 0, 278, 279, 280, 0, 0, - 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, - 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, - 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, - 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 29, - 398, 399, 400, 401, 402, 0, 404, 405, 406, 407, - 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, - 427, 428, 429, 0, 430, 431, 34, 432, 0, 434, - 435, 436, 437, 438, 0, 712, 440, 0, 0, 713, - 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, - 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 0, 0, 461, 462, 463, 464, 465, 631, 467, - 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 39, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 504, 0, 40, 0, 0, 0, + 495, 496, 0, 504, 40, 530, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, + 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, + 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, + 141, 142, 143, 144, 145, 0, 0, 0, 147, 148, + 149, 150, 151, 152, 0, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 0, 164, 165, 166, + 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, + 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, + 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, + 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, + 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, + 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, + 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, + 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, + 0, 274, 0, 276, 0, 0, 278, 279, 280, 0, + 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, + 310, 311, 0, 312, 313, 0, 315, 0, 316, 317, + 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, + 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, + 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 398, 399, 400, 401, 402, 0, 404, 405, 406, + 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, + 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, + 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, + 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, + 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, + 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, - 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, - 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, - 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 0, 0, 0, 147, - 148, 149, 150, 151, 152, 0, 154, 155, 156, 0, - 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, - 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, - 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, - 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, - 222, 0, 21, 0, 225, 226, 505, 0, 229, 0, - 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, - 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, - 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 0, 276, 0, 0, 278, 279, 280, - 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, - 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, - 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 29, 398, 399, 400, 401, 402, 0, 404, 405, - 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 507, 427, 428, 429, 0, 430, 431, 34, 432, - 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, - 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, - 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, - 631, 467, 0, 468, 0, 470, 471, 472, 473, 474, - 0, 0, 475, 0, 39, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 0, 504, 40, 530, + 0, 961, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, + 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, + 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, + 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, + 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 0, 164, + 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, + 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, + 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, + 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, + 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, + 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 0, 276, 0, 0, 278, 279, + 280, 0, 0, 281, 282, 283, 284, 285, 506, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, + 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, + 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, + 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, + 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, + 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, + 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 0, 404, + 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, + 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, + 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, + 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, + 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, + 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 0, 105, 106, 107, 108, 109, + 0, 0, 0, 1510, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, @@ -314298,8 +313486,8 @@ static const yytype_int16 yytable[] = 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, - 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 964, 0, 105, 106, 107, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1973, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, @@ -314347,7 +313535,7 @@ static const yytype_int16 yytable[] = 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1514, 0, 105, + 0, 0, 0, 0, 0, 0, 0, 2107, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, @@ -314394,15 +313582,1085 @@ static const yytype_int16 yytable[] = 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 0, 0, 2720, 1423, 515, 0, 0, + 1954, 1013, 0, 0, 0, 0, 0, 1955, 0, 2879, + 1956, 1957, 1958, 105, 106, 107, 108, 109, 110, 111, + 112, 1242, 113, 114, 115, 1243, 1244, 1245, 1246, 1247, + 1248, 1249, 116, 117, 1250, 118, 119, 120, 2721, 122, + 123, 124, 0, 763, 2722, 765, 766, 1251, 130, 131, + 132, 133, 134, 135, 1252, 1253, 136, 137, 767, 768, + 140, 1254, 141, 142, 143, 144, 0, 1255, 2723, 1256, + 2724, 148, 149, 150, 151, 152, 2725, 154, 155, 156, + 1257, 157, 158, 159, 160, 161, 162, 1258, 2726, 164, + 165, 166, 2727, 2728, 2729, 2730, 1259, 1260, 2731, 172, + 173, 174, 175, 176, 177, 178, 778, 779, 181, 1261, + 182, 1262, 183, 184, 185, 186, 187, 188, 1263, 189, + 190, 191, 192, 193, 1264, 1265, 194, 195, 780, 197, + 198, 1266, 199, 200, 201, 1267, 202, 203, 204, 1268, + 205, 206, 207, 208, 0, 210, 211, 212, 213, 214, + 0, 1269, 216, 1270, 217, 218, 781, 220, 1271, 221, + 1272, 222, 2732, 1273, 2733, 225, 226, 2734, 2735, 229, + 1274, 230, 1275, 0, 0, 233, 1276, 234, 235, 236, + 237, 238, 239, 240, 2736, 242, 243, 244, 245, 1277, + 246, 247, 248, 249, 250, 251, 1278, 252, 2737, 0, + 255, 256, 257, 258, 259, 788, 789, 1279, 790, 1280, + 263, 2738, 2739, 266, 2740, 268, 269, 270, 271, 272, + 273, 1281, 1282, 274, 2741, 276, 2742, 1283, 278, 279, + 280, 1284, 1285, 281, 282, 283, 284, 285, 2743, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 797, 2744, 799, + 308, 309, 310, 2745, 1286, 312, 313, 2746, 315, 1287, + 0, 317, 801, 319, 320, 321, 1288, 322, 323, 1289, + 1290, 2747, 325, 326, 1291, 1292, 327, 0, 2748, 330, + 2749, 0, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 1293, 343, 344, 0, 2750, 347, 348, 0, + 350, 351, 352, 1294, 353, 354, 355, 356, 357, 358, + 1295, 359, 360, 361, 805, 363, 364, 365, 366, 1296, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1297, 380, 381, 2751, 383, 384, 385, + 807, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 1298, 398, 399, 400, 401, 402, 2752, 404, + 2753, 406, 407, 408, 2754, 410, 411, 811, 413, 1299, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 2755, 427, 0, 429, 1300, 430, 431, 1301, + 432, 2756, 434, 435, 436, 437, 438, 1302, 814, 815, + 1303, 1304, 441, 442, 0, 444, 0, 1305, 446, 447, + 2757, 449, 450, 451, 452, 453, 2758, 1307, 454, 455, + 456, 457, 458, 459, 2759, 1308, 461, 462, 463, 464, + 465, 0, 819, 1310, 468, 2760, 470, 471, 472, 473, + 474, 1311, 1312, 475, 1313, 1314, 476, 477, 478, 479, + 480, 481, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 493, 494, 495, 496, 0, 504, 0, + 1959, 1960, 1961, 1954, 2761, 2762, 1964, 1965, 1966, 1967, + 1955, 0, 0, 1956, 1957, 1958, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, + 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, + 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, + 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, + 0, 0, 0, 147, 148, 149, 150, 151, 152, 0, + 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, + 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, + 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, + 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, + 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, + 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, + 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, + 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, + 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, + 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, + 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, + 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, + 270, 271, 272, 273, 0, 0, 274, 0, 276, 0, + 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, + 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, + 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, + 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, + 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, + 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, + 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, + 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, + 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, + 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, + 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, + 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, + 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, + 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, + 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 0, 0, 0, 1959, 1960, 1961, 0, 1962, 1963, 1964, + 1965, 1966, 1967, 1561, 0, 0, 1562, 0, 0, 0, + 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1569, 0, 1561, 0, 0, 1562, 0, 0, 1571, 1563, + 1564, 1565, 1566, 1567, 1568, 1572, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1569, + 0, 0, 0, 0, 0, 0, 0, 1571, 1561, 0, + 1573, 1562, 0, 0, 1572, 1563, 1564, 1565, 1566, 1567, + 1568, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1569, 0, 1561, 0, 1573, + 1562, 0, 0, 1571, 1563, 1564, 1565, 1566, 1567, 1568, + 1572, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1569, 0, 0, 0, 0, 0, + 0, 0, 1571, 0, 0, 1573, 0, 0, 0, 1572, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1573, 0, 0, 0, 0, 0, + 0, 1574, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1575, 0, 0, + 0, 0, 1576, 0, 0, 0, 0, 0, 0, 0, + 1574, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1577, 1578, 1575, 0, 0, 0, + 0, 1576, 0, 0, 0, 0, 0, 0, 0, 1579, + 0, 0, 0, 0, 0, 0, 1574, 0, 0, 0, + 0, 0, 0, 1577, 1578, 0, 0, 0, 0, 0, + 0, 0, 1575, 0, 0, 0, 0, 1576, 1579, 0, + 0, 0, 0, 0, 0, 1574, 0, 1580, 0, 0, + 1581, 0, 0, 0, 0, 0, 0, 0, 0, 1577, + 1578, 1575, 0, 0, 1582, 0, 1576, 1583, 0, 0, + 0, 0, 0, 0, 1579, 0, 1580, 0, 0, 1581, + 0, 0, 0, 0, 0, 0, 0, 0, 1577, 1578, + 0, 0, 0, 1582, 0, 0, 1583, 0, 0, 0, + 0, 0, 0, 1579, 0, 0, 0, 0, 0, 0, + 0, 0, 1580, 0, 0, 1581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1561, 0, 1582, + 1562, 0, 1583, 0, 1563, 1564, 1565, 1566, 1567, 1568, + 0, 1580, 0, 0, 1581, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1569, 0, 1561, 1584, 1582, 1562, + 0, 1583, 1571, 1563, 1564, 1565, 1566, 1567, 1568, 1572, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1569, 0, 0, 1584, 0, 0, 0, + 0, 1571, 1561, 0, 1573, 1562, 0, 0, 1572, 1563, + 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1569, + 0, 0, 1584, 1573, 0, 0, 0, 1571, 0, 0, + 0, 0, 0, 0, 1572, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1584, 0, 0, 0, 0, 0, 0, 0, 1573, + 1585, 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 0, 0, 0, 0, 2609, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1585, + 0, 0, 1586, 1587, 1588, 1574, 1589, 1590, 1591, 1592, + 1593, 1594, 0, 0, 0, 0, 2666, 0, 0, 0, + 0, 1575, 0, 0, 0, 0, 1576, 0, 0, 0, + 0, 0, 0, 0, 1574, 1585, 0, 0, 1586, 1587, + 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, 1577, 1578, + 1575, 0, 2875, 0, 0, 1576, 0, 0, 0, 0, + 0, 0, 0, 1579, 1585, 0, 0, 1586, 1587, 1588, + 1574, 1589, 1590, 1591, 1592, 1593, 1594, 1577, 1578, 0, + 0, 2878, 0, 0, 0, 0, 1575, 0, 0, 0, + 0, 1576, 1579, 0, 0, 0, 0, 0, 0, 0, + 0, 1580, 0, 0, 1581, 0, 0, 0, 0, 0, + 0, 0, 0, 1577, 1578, 0, 0, 0, 1582, 0, + 0, 1583, 0, 0, 0, 0, 0, 0, 1579, 0, + 1580, 0, 0, 1581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1561, 0, 1582, 1562, 0, + 1583, 0, 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, + 0, 0, 0, 0, 0, 0, 1580, 0, 0, 1581, + 0, 0, 1569, 0, 0, 0, 0, 0, 0, 0, + 1571, 1561, 0, 1582, 1562, 0, 1583, 1572, 1563, 1564, + 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1569, 0, + 1561, 1584, 1573, 1562, 0, 0, 1571, 1563, 1564, 1565, + 1566, 1567, 1568, 1572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1569, 0, 0, + 1584, 0, 0, 0, 0, 1571, 0, 0, 1573, 0, + 0, 0, 1572, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1584, 1573, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1574, 1585, 0, 0, 1586, 1587, 1588, + 0, 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, 1575, + 0, 3005, 0, 0, 1576, 0, 0, 0, 0, 0, + 0, 0, 0, 1585, 0, 0, 1586, 1587, 1588, 1574, + 1589, 1590, 1591, 1592, 1593, 1594, 1577, 1578, 0, 0, + 3026, 0, 0, 0, 0, 1575, 0, 0, 0, 0, + 1576, 1579, 0, 0, 0, 0, 0, 0, 1574, 1585, + 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, + 1593, 1594, 1577, 1578, 1575, 0, 3114, 0, 0, 1576, + 0, 0, 0, 0, 0, 0, 0, 1579, 0, 1580, + 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, + 0, 1577, 1578, 0, 1, 0, 1582, 0, 0, 1583, + 0, 0, 0, 0, 2, 0, 1579, 0, 0, 0, + 0, 0, 0, 0, 0, 1580, 0, 0, 1581, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 1561, 7, 1582, 1562, 0, 1583, 0, 1563, 1564, 1565, + 1566, 1567, 1568, 8, 1580, 0, 0, 1581, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 1569, 0, 0, + 0, 1582, 0, 0, 1583, 1571, 10, 0, 566, 0, + 0, 0, 1572, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 0, 0, 1584, + 0, 0, 0, 0, 0, 0, 0, 1573, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 17, 1584, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1584, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 1585, 0, 0, 1586, 1587, 1588, 1574, 1589, + 1590, 1591, 1592, 1593, 1594, 0, 0, 0, 0, 3167, + 24, 0, 0, 0, 1575, 0, 0, 0, 0, 1576, + 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, + 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, + 1594, 1577, 1578, 0, 0, 3189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1579, 1585, 0, 0, + 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, + 0, 0, 2999, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 0, 26, 0, 0, 1580, 0, 0, 1581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1582, 0, 0, 1583, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 1584, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1241, 0, 1585, 0, 0, + 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, + 0, 0, 3152, 105, 106, 107, 108, 109, 110, 111, + 112, 1242, 113, 114, 115, 1243, 1244, 1245, 1246, 1247, + 1248, 1249, 116, 117, 1250, 118, 119, 120, 853, 122, + 123, 124, 854, 855, 856, 857, 858, 1251, 130, 131, + 132, 133, 134, 135, 1252, 1253, 136, 137, 859, 860, + 140, 1254, 141, 142, 143, 144, 861, 1255, 862, 1256, + 863, 148, 149, 150, 151, 152, 864, 154, 155, 156, + 1257, 157, 158, 159, 160, 161, 162, 1258, 865, 164, + 165, 166, 866, 867, 868, 869, 1259, 1260, 870, 172, + 173, 174, 175, 176, 177, 178, 871, 872, 181, 1261, + 182, 1262, 183, 184, 185, 186, 187, 188, 1263, 189, + 190, 191, 192, 193, 1264, 1265, 194, 195, 196, 197, + 198, 1266, 199, 200, 201, 1267, 202, 203, 204, 1268, + 205, 206, 207, 208, 873, 210, 211, 212, 213, 214, + 874, 1269, 216, 1270, 217, 218, 875, 220, 1271, 221, + 1272, 222, 876, 1273, 877, 225, 226, 878, 879, 229, + 1274, 230, 1275, 880, 881, 233, 1276, 234, 235, 236, + 237, 238, 239, 240, 882, 242, 243, 244, 245, 1277, + 246, 247, 248, 249, 250, 251, 1278, 252, 883, 884, + 255, 256, 257, 258, 259, 885, 886, 1279, 887, 1280, + 263, 888, 889, 266, 890, 268, 269, 270, 271, 272, + 273, 1281, 1282, 274, 891, 276, 892, 1283, 278, 279, + 280, 1284, 1285, 281, 282, 283, 284, 285, 893, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 894, 895, 896, + 308, 309, 310, 897, 1286, 312, 313, 898, 315, 1287, + 899, 317, 900, 319, 320, 321, 1288, 322, 323, 1289, + 1290, 324, 325, 326, 1291, 1292, 327, 901, 902, 330, + 903, 904, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 1293, 343, 344, 905, 906, 347, 348, 907, + 350, 351, 352, 1294, 353, 354, 355, 356, 357, 358, + 1295, 359, 360, 361, 908, 363, 364, 365, 366, 1296, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1297, 380, 381, 909, 383, 384, 385, + 910, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 1298, 398, 399, 400, 401, 402, 911, 404, + 912, 406, 407, 408, 913, 410, 411, 914, 413, 1299, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 915, 427, 916, 429, 1300, 430, 431, 1301, + 432, 917, 434, 435, 436, 437, 438, 1302, 918, 919, + 1303, 1304, 441, 442, 920, 444, 921, 1305, 446, 447, + 922, 449, 450, 451, 452, 453, 1306, 1307, 454, 455, + 456, 457, 458, 459, 923, 1308, 461, 462, 463, 464, + 465, 1309, 925, 1310, 468, 926, 470, 471, 472, 473, + 474, 1311, 1312, 475, 1313, 1314, 476, 477, 478, 479, + 480, 481, 927, 928, 929, 930, 931, 932, 933, 934, + 935, 936, 937, 493, 494, 495, 496, 504, 0, 0, + 0, 0, 0, 0, 0, 0, 2052, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, + 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, + 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, + 138, 139, 140, 0, 141, 142, 143, 144, 145, 0, + 0, 0, 147, 148, 149, 150, 151, 152, 0, 154, + 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, + 0, 164, 165, 166, 0, 0, 0, 0, 0, 0, + 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, + 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, + 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, + 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, + 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, + 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, + 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, + 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, + 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, + 271, 272, 273, 0, 0, 274, 0, 276, 0, 0, + 278, 279, 280, 0, 0, 281, 282, 283, 284, 285, + 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, + 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, + 323, 0, 0, 324, 325, 326, 0, 0, 327, 328, + 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, + 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, + 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, + 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, + 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, + 431, 0, 432, 0, 434, 435, 436, 437, 438, 0, + 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, + 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, + 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, + 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, + 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, + 0, 0, 0, 0, 0, 0, 0, 0, 2560, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, + 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, + 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, + 145, 0, 0, 0, 147, 148, 149, 150, 151, 152, + 0, 154, 155, 156, 0, 157, 158, 159, 160, 161, + 162, 0, 0, 164, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, + 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, + 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, + 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, + 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, + 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, + 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, + 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, + 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, + 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, + 269, 270, 271, 272, 273, 0, 0, 274, 0, 276, + 0, 0, 278, 279, 280, 0, 0, 281, 282, 283, + 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, + 313, 0, 315, 0, 316, 317, 318, 319, 320, 321, + 0, 322, 323, 0, 0, 324, 325, 326, 0, 0, + 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, + 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, + 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, + 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, + 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, + 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, + 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, + 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, + 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, + 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, + 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, + 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 852, 1423, 515, 0, 0, 0, 1013, 0, 0, + 2563, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 120, 853, 122, 123, 124, 854, 855, + 856, 857, 858, 0, 130, 131, 132, 133, 134, 135, + 0, 0, 136, 137, 859, 860, 140, 0, 141, 142, + 143, 144, 861, 0, 862, 0, 863, 148, 149, 150, + 151, 152, 864, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 865, 164, 165, 166, 866, 867, + 868, 869, 0, 0, 870, 172, 173, 174, 175, 176, + 177, 178, 871, 872, 181, 1620, 182, 0, 183, 184, + 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, + 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, + 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, + 873, 210, 211, 212, 213, 214, 874, 1424, 216, 0, + 217, 218, 875, 220, 0, 221, 0, 222, 876, 0, + 877, 225, 226, 878, 879, 229, 0, 230, 0, 880, + 881, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 882, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 883, 884, 255, 256, 257, 258, + 259, 885, 886, 0, 887, 0, 263, 888, 889, 266, + 890, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 891, 276, 892, 0, 278, 279, 280, 0, 0, 281, + 282, 283, 284, 285, 893, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 894, 895, 896, 308, 309, 310, 897, + 0, 312, 313, 898, 315, 0, 899, 317, 900, 319, + 320, 321, 0, 322, 323, 1425, 0, 324, 325, 326, + 0, 0, 327, 901, 902, 330, 903, 904, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, + 344, 905, 906, 347, 348, 907, 350, 351, 352, 0, + 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, + 908, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, + 380, 381, 909, 383, 384, 385, 910, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, + 399, 400, 401, 402, 911, 404, 912, 406, 407, 408, + 913, 410, 411, 914, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 915, 427, + 916, 429, 0, 430, 431, 0, 432, 917, 434, 435, + 436, 437, 438, 0, 918, 919, 0, 0, 441, 442, + 920, 444, 921, 1426, 446, 447, 922, 449, 450, 451, + 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, + 923, 0, 461, 462, 463, 464, 465, 1309, 925, 0, + 468, 926, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 937, 493, + 494, 495, 496, 852, 1423, 515, 0, 0, 0, 1013, + 1427, 1428, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 120, 853, 122, 123, 124, + 854, 855, 856, 857, 858, 0, 130, 131, 132, 133, + 134, 135, 0, 0, 136, 137, 859, 860, 140, 0, + 141, 142, 143, 144, 861, 0, 862, 0, 863, 148, + 149, 150, 151, 152, 864, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 865, 164, 165, 166, + 866, 867, 868, 869, 0, 0, 870, 172, 173, 174, + 175, 176, 177, 178, 871, 872, 181, 1622, 182, 0, + 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, + 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, + 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, + 207, 208, 873, 210, 211, 212, 213, 214, 874, 1424, + 216, 0, 217, 218, 875, 220, 0, 221, 0, 222, + 876, 0, 877, 225, 226, 878, 879, 229, 0, 230, + 0, 880, 881, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 882, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 883, 884, 255, 256, + 257, 258, 259, 885, 886, 0, 887, 0, 263, 888, + 889, 266, 890, 268, 269, 270, 271, 272, 273, 0, + 0, 274, 891, 276, 892, 0, 278, 279, 280, 0, + 0, 281, 282, 283, 284, 285, 893, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 894, 895, 896, 308, 309, + 310, 897, 0, 312, 313, 898, 315, 0, 899, 317, + 900, 319, 320, 321, 0, 322, 323, 1425, 0, 324, + 325, 326, 0, 0, 327, 901, 902, 330, 903, 904, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 0, 343, 344, 905, 906, 347, 348, 907, 350, 351, + 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 360, 361, 908, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 0, 380, 381, 909, 383, 384, 385, 910, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 398, 399, 400, 401, 402, 911, 404, 912, 406, + 407, 408, 913, 410, 411, 914, 413, 0, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 915, 427, 916, 429, 0, 430, 431, 0, 432, 917, + 434, 435, 436, 437, 438, 0, 918, 919, 0, 0, + 441, 442, 920, 444, 921, 1426, 446, 447, 922, 449, + 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, + 458, 459, 923, 0, 461, 462, 463, 464, 465, 1309, + 925, 0, 468, 926, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 937, 493, 494, 495, 496, 852, 1423, 515, 0, 0, + 0, 1013, 1427, 1428, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 120, 853, 122, + 123, 124, 854, 855, 856, 857, 858, 0, 130, 131, + 132, 133, 134, 135, 0, 0, 136, 137, 859, 860, + 140, 0, 141, 142, 143, 144, 861, 0, 862, 0, + 863, 148, 149, 150, 151, 152, 864, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 865, 164, + 165, 166, 866, 867, 868, 869, 0, 0, 870, 172, + 173, 174, 175, 176, 177, 178, 871, 872, 181, 0, + 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, + 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, + 205, 206, 207, 208, 873, 210, 211, 212, 213, 214, + 874, 1424, 216, 0, 217, 218, 875, 220, 0, 221, + 0, 222, 876, 0, 877, 225, 226, 878, 879, 229, + 0, 230, 0, 880, 881, 233, 0, 234, 235, 236, + 237, 238, 239, 240, 882, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 883, 884, + 255, 256, 257, 258, 259, 885, 886, 0, 887, 0, + 263, 888, 889, 266, 890, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 891, 276, 892, 0, 278, 279, + 280, 0, 0, 281, 282, 283, 284, 285, 893, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 894, 895, 896, + 308, 309, 310, 897, 0, 312, 313, 898, 315, 0, + 899, 317, 900, 319, 320, 321, 0, 322, 323, 1425, + 0, 324, 325, 326, 0, 0, 327, 901, 902, 330, + 903, 904, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 905, 906, 347, 348, 907, + 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, + 0, 359, 360, 361, 908, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 0, 380, 381, 909, 383, 384, 385, + 910, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 911, 404, + 912, 406, 407, 408, 913, 410, 411, 914, 413, 0, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 915, 427, 916, 429, 0, 430, 431, 0, + 432, 917, 434, 435, 436, 437, 438, 0, 918, 919, + 0, 0, 441, 442, 920, 444, 921, 1426, 446, 447, + 922, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 923, 0, 461, 462, 463, 464, + 465, 1309, 925, 0, 468, 926, 470, 471, 472, 473, + 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, + 480, 481, 927, 928, 929, 930, 931, 932, 933, 934, + 935, 936, 937, 493, 494, 495, 496, 0, 0, 1561, + 0, 0, 1562, 0, 1427, 1428, 1563, 1564, 1565, 1566, + 1567, 1568, 1561, 0, 0, 1562, 0, 0, 0, 1563, + 1564, 1565, 1566, 1567, 1568, 0, 1569, 0, 0, 0, + 2065, 0, 0, 0, 1571, 0, 0, 0, 0, 1569, + 0, 1572, 0, 0, 0, 0, 0, 1571, 1561, 0, + 0, 1562, 0, 0, 1572, 1563, 1564, 1565, 1566, 1567, + 1568, 1561, 0, 0, 1562, 0, 1573, 0, 1563, 1564, + 1565, 1566, 1567, 1568, 0, 1569, 0, 0, 0, 1573, + 0, 0, 0, 1571, 0, 0, 0, 0, 1569, 0, + 1572, 1849, 0, 0, 0, 0, 1571, 1561, 0, 0, + 1562, 0, 0, 1572, 1563, 1564, 1565, 1566, 1567, 1568, + 0, 0, 0, 0, 0, 1573, 0, 2066, 0, 0, + 0, 0, 0, 0, 1569, 0, 0, 0, 1573, 0, + 0, 0, 1571, 0, 0, 0, 0, 0, 0, 1572, + 0, 0, 1561, 0, 0, 1562, 0, 0, 0, 1563, + 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1573, 0, 0, 1574, 0, 1569, + 1888, 0, 1894, 0, 0, 1889, 0, 1571, 0, 0, + 1574, 0, 0, 1575, 1572, 0, 0, 0, 1576, 0, + 0, 0, 0, 0, 0, 0, 1575, 0, 0, 0, + 0, 1576, 0, 0, 0, 3250, 0, 0, 0, 1573, + 1577, 1578, 0, 0, 0, 0, 1574, 0, 0, 0, + 0, 0, 0, 1577, 1578, 1579, 0, 0, 0, 1574, + 0, 0, 1575, 0, 0, 0, 0, 1576, 1579, 0, + 0, 0, 0, 0, 0, 1575, 0, 0, 0, 0, + 1576, 0, 0, 0, 0, 0, 0, 0, 0, 1577, + 1578, 0, 0, 1580, 0, 1574, 1581, 0, 0, 0, + 0, 0, 1577, 1578, 1579, 0, 1580, 0, 0, 1581, + 1582, 1575, 0, 1583, 0, 0, 1576, 1579, 0, 0, + 0, 0, 0, 1582, 0, 0, 1583, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1577, 1578, + 1574, 0, 1580, 0, 0, 1581, 0, 0, 0, 0, + 0, 0, 0, 1579, 0, 1580, 1575, 0, 1581, 1582, + 0, 1576, 1583, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1582, 0, 0, 1583, 0, 0, 0, 0, + 0, 0, 0, 1577, 1578, 0, 3251, 0, 0, 0, + 0, 1580, 0, 0, 1581, 0, 0, 0, 1579, 0, + 0, 0, 0, 1584, 0, 0, 0, 0, 1582, 0, + 0, 1583, 0, 0, 0, 0, 1584, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1860, + 0, 0, 0, 0, 0, 0, 1580, 0, 0, 1581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1584, 1582, 0, 0, 1583, 0, 0, 0, + 0, 0, 0, 0, 2070, 1584, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1584, 0, 0, 0, 0, 1585, 0, 0, 1586, + 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, 1585, + 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, + 1593, 1594, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1584, 0, 0, 0, + 0, 0, 0, 0, 0, 1585, 0, 0, 1586, 1587, + 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, 1585, 0, + 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, + 1594, 0, 0, 1561, 0, 0, 1562, 0, 0, 0, + 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, + 0, 0, 0, 0, 1585, 0, 0, 1586, 1587, 1588, + 1569, 1589, 1590, 1591, 1592, 1593, 1594, 0, 1571, 0, + 0, 0, 0, 0, 0, 1572, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1585, + 1573, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, + 1593, 1594, 1561, 0, 0, 1562, 0, 0, 0, 1563, + 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1569, + 0, 0, 1901, 0, 0, 0, 0, 1571, 0, 0, + 0, 0, 0, 0, 1572, 0, 0, 1561, 0, 0, + 1562, 0, 0, 0, 1563, 1564, 1565, 1566, 1567, 1568, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1573, + 0, 0, 0, 0, 1569, 0, 0, 0, 0, 0, + 0, 0, 1571, 0, 0, 0, 1899, 0, 0, 1572, + 0, 1574, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1575, 0, 0, + 0, 0, 1576, 0, 1573, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1577, 1578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1579, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1561, 0, 0, 1562, + 1574, 0, 0, 1563, 1564, 1565, 1566, 1567, 1568, 0, + 0, 0, 0, 0, 0, 0, 1575, 1580, 0, 0, + 1581, 1576, 0, 1569, 0, 0, 0, 0, 0, 0, + 0, 1571, 0, 0, 1582, 1977, 0, 1583, 1572, 0, + 0, 0, 0, 1577, 1578, 1574, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1579, 0, + 0, 1575, 0, 1573, 0, 0, 1576, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1577, 1578, + 0, 0, 0, 0, 0, 0, 1580, 0, 0, 1581, + 0, 0, 0, 1579, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1582, 0, 0, 1583, 0, 0, 0, + 0, 1561, 0, 0, 1562, 0, 0, 1584, 1563, 1564, + 1565, 1566, 1567, 1568, 0, 0, 0, 0, 0, 0, + 0, 1580, 0, 0, 1581, 0, 0, 0, 1569, 0, + 0, 2607, 0, 0, 0, 0, 1571, 0, 1582, 0, + 0, 1583, 0, 1572, 1574, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1575, 0, 0, 1561, 0, 1576, 1562, 0, 1573, 0, + 1563, 1564, 1565, 1566, 1567, 1568, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1584, 1577, 1578, 0, + 1569, 0, 0, 0, 0, 0, 0, 0, 1571, 0, + 0, 0, 1579, 0, 0, 1572, 0, 0, 0, 0, + 1585, 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 0, 0, 0, 0, 0, 0, 0, + 1573, 1584, 0, 0, 0, 0, 0, 0, 0, 0, + 1580, 0, 0, 1581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1582, 0, 0, + 1583, 0, 0, 0, 0, 0, 0, 0, 0, 1574, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1575, 0, 0, 0, 1585, + 1576, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, + 1593, 1594, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1577, 1578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1579, 0, 0, + 0, 1574, 0, 0, 1585, 0, 0, 1586, 1587, 1588, + 0, 1589, 1590, 1591, 1592, 1593, 1594, 1575, 0, 0, + 1584, 1561, 1576, 0, 1562, 0, 0, 0, 1563, 1564, + 1565, 1566, 1567, 1568, 0, 1580, 0, 0, 1581, 0, + 0, 0, 0, 0, 1577, 1578, 0, 0, 1569, 0, + 0, 0, 1582, 2597, 0, 1583, 1571, 0, 0, 1579, + 0, 0, 0, 1572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1573, 0, + 0, 0, 0, 0, 0, 0, 0, 1580, 0, 0, + 1581, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1582, 0, 0, 1583, 0, 0, + 0, 0, 0, 1585, 0, 0, 1586, 1587, 1588, 0, + 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, 0, 1561, + 0, 0, 1562, 0, 0, 1584, 1563, 0, 0, 1566, + 1567, 1568, 0, 0, 0, 0, 0, 1561, 0, 0, + 1562, 0, 0, 0, 1563, 0, 1569, 1566, 1567, 1568, + 0, 0, 0, 0, 1571, 0, 0, 0, 0, 0, + 0, 1572, 0, 0, 1569, 0, 0, 0, 0, 1574, + 0, 0, 1571, 0, 0, 0, 0, 0, 0, 1572, + 0, 0, 0, 0, 0, 1575, 1573, 1584, 0, 0, + 1576, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1573, 0, 0, 0, 0, 0, + 0, 0, 1577, 1578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1579, 1585, 0, + 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, + 1594, 0, 1561, 0, 0, 1562, 0, 0, 0, 1563, + 0, 0, 1566, 1567, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1580, 0, 0, 1581, 0, + 0, 0, 0, 0, 0, 0, 0, 1571, 0, 0, + 0, 0, 1582, 0, 1572, 1583, 0, 1574, 0, 0, + 1585, 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, + 1592, 1593, 1594, 1575, 0, 1574, 0, 0, 1576, 1573, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1575, 0, 0, 0, 0, 1576, 0, 0, 0, + 1577, 1578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1579, 0, 0, 1577, 1578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1579, 0, 0, 0, 1561, 0, 0, + 1562, 0, 0, 0, 1563, 1584, 0, 1566, 1567, 1568, + 0, 0, 0, 1580, 0, 0, 1581, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1582, 1580, 1571, 1583, 1581, 0, 0, 0, 0, 1572, + 1574, 0, 0, 0, 0, 0, 0, 0, 1582, 0, + 0, 0, 0, 0, 0, 0, 1575, 0, 0, 0, + 0, 1576, 0, 0, 1573, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1577, 1578, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1579, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1585, 0, + 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, 2087, + 1594, 0, 0, 1584, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1580, 0, 0, 1581, + 0, 1584, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1582, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1574, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1575, 0, 0, 0, 0, 1576, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -1912, -1912, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1579, 0, 0, 1585, 0, 0, 1586, + 1587, 1588, 0, 1589, 1590, 1591, 1592, 1593, 1594, 0, + 0, 0, 0, 0, 1585, 0, 1584, 1586, 1587, 1588, + 0, 1589, 1590, 1591, 1592, 1593, 1594, 0, 0, 0, + 0, 0, 0, 0, -1912, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1582, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1585, + 0, 0, 1586, 1587, 1588, 0, 1589, 1590, 1591, 1592, + 1593, 1594, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1584, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1241, + 0, 1996, 0, 0, 1585, 0, 0, 1586, 1587, 1588, + 0, 1589, 1590, 1591, 1592, 1593, 1594, 105, 106, 107, + 108, 109, 110, 111, 112, 1242, 113, 114, 115, 1243, + 1244, 1245, 1246, 1247, 1248, 1249, 116, 117, 1250, 118, + 119, 120, 853, 122, 123, 124, 854, 855, 856, 857, + 858, 1251, 130, 131, 132, 133, 134, 135, 1252, 1253, + 136, 137, 859, 860, 140, 1254, 141, 142, 143, 144, + 861, 1255, 862, 1256, 863, 148, 149, 150, 151, 152, + 864, 154, 155, 156, 1257, 157, 158, 159, 160, 161, + 162, 1258, 865, 164, 165, 166, 866, 867, 868, 869, + 1259, 1260, 870, 172, 173, 174, 175, 176, 177, 178, + 871, 872, 181, 1261, 182, 1262, 183, 184, 185, 186, + 187, 188, 1263, 189, 190, 191, 192, 193, 1264, 1265, + 194, 195, 196, 197, 198, 1266, 199, 200, 201, 1267, + 202, 203, 204, 1268, 205, 206, 207, 208, 873, 210, + 211, 212, 213, 214, 874, 1269, 216, 1270, 217, 218, + 875, 220, 1271, 221, 1272, 222, 876, 1273, 877, 225, + 226, 878, 879, 229, 1274, 230, 1275, 880, 881, 233, + 1276, 234, 235, 236, 237, 238, 239, 240, 882, 242, + 243, 244, 245, 1277, 246, 247, 248, 249, 250, 251, + 1278, 252, 883, 884, 255, 256, 257, 258, 259, 885, + 886, 1279, 887, 1280, 263, 888, 889, 266, 890, 268, + 269, 270, 271, 272, 273, 1281, 1282, 274, 891, 276, + 892, 1283, 278, 279, 280, 1284, 1285, 281, 282, 283, + 284, 285, 893, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 894, 895, 896, 308, 309, 310, 897, 1286, 312, + 313, 898, 315, 1287, 899, 317, 900, 319, 320, 321, + 1288, 322, 323, 1289, 1290, 324, 325, 326, 1291, 1292, + 327, 901, 902, 330, 903, 904, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 1293, 343, 344, 905, + 906, 347, 348, 907, 350, 351, 352, 1294, 353, 354, + 355, 356, 357, 358, 1295, 359, 360, 361, 908, 363, + 364, 365, 366, 1296, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 1297, 380, 381, + 909, 383, 384, 385, 910, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 1298, 398, 399, 400, + 401, 402, 911, 404, 912, 406, 407, 408, 913, 410, + 411, 914, 413, 1299, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 915, 427, 916, 429, + 1300, 430, 431, 1301, 432, 917, 434, 435, 436, 437, + 438, 1302, 918, 919, 1303, 1304, 441, 442, 920, 444, + 921, 1305, 446, 447, 922, 449, 450, 451, 452, 453, + 1306, 1307, 454, 455, 456, 457, 458, 459, 923, 1308, + 461, 462, 463, 464, 465, 1309, 925, 1310, 468, 926, + 470, 471, 472, 473, 474, 1311, 1312, 475, 1313, 1314, + 476, 477, 478, 479, 480, 481, 927, 928, 929, 930, + 931, 932, 933, 934, 935, 936, 937, 493, 494, 495, + 496, 1241, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 1242, 113, 114, + 115, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 116, 117, + 1250, 118, 119, 120, 853, 122, 123, 124, 854, 855, + 856, 857, 858, 1251, 130, 131, 132, 133, 134, 135, + 1252, 1253, 136, 137, 859, 860, 140, 1254, 141, 142, + 143, 144, 861, 1255, 862, 1256, 863, 148, 149, 150, + 151, 152, 864, 154, 155, 156, 1257, 157, 158, 159, + 160, 161, 162, 1258, 865, 164, 165, 166, 866, 867, + 868, 869, 1259, 1260, 870, 172, 173, 174, 175, 176, + 177, 178, 871, 872, 181, 1261, 182, 1262, 183, 184, + 185, 186, 187, 188, 1263, 189, 190, 191, 192, 193, + 1264, 1265, 194, 195, 196, 197, 198, 1266, 199, 200, + 201, 1267, 202, 203, 204, 1268, 205, 206, 207, 208, + 873, 210, 211, 212, 213, 214, 874, 1269, 216, 1270, + 217, 218, 875, 220, 1271, 221, 1272, 222, 876, 1273, + 877, 225, 226, 878, 879, 229, 1274, 230, 1275, 880, + 881, 233, 1276, 234, 235, 236, 237, 238, 239, 240, + 882, 242, 243, 244, 245, 1277, 246, 247, 248, 249, + 250, 251, 1278, 252, 883, 884, 255, 256, 257, 258, + 259, 885, 886, 1279, 887, 1280, 263, 888, 889, 266, + 890, 268, 269, 270, 271, 272, 273, 1281, 1282, 274, + 891, 276, 892, 1283, 278, 279, 280, 1284, 1285, 281, + 282, 283, 284, 285, 893, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 894, 895, 896, 308, 309, 310, 897, + 1286, 312, 313, 898, 315, 1287, 899, 317, 900, 319, + 320, 321, 1288, 322, 323, 1289, 1290, 324, 325, 326, + 1291, 1292, 327, 901, 902, 330, 903, 904, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 1293, 343, + 344, 905, 906, 347, 348, 907, 350, 351, 352, 1294, + 353, 354, 355, 356, 357, 358, 1295, 359, 360, 361, + 908, 363, 364, 365, 366, 1296, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 1297, + 380, 381, 909, 383, 384, 385, 910, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 1298, 398, + 399, 400, 401, 402, 911, 404, 912, 406, 407, 408, + 913, 410, 411, 914, 413, 1299, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 915, 427, + 916, 429, 1300, 430, 431, 1301, 432, 917, 434, 435, + 436, 437, 438, 1302, 918, 919, 1303, 1304, 441, 442, + 920, 444, 921, 1305, 446, 447, 922, 449, 450, 451, + 452, 453, 1306, 1307, 454, 455, 456, 457, 458, 459, + 923, 1308, 461, 462, 463, 464, 465, 1309, 925, 1310, + 468, 926, 470, 471, 472, 473, 474, 1311, 1312, 475, + 1313, 1314, 476, 477, 478, 479, 480, 481, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 937, 493, + 494, 495, 496, 1241, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 2133, 110, 111, 112, 1242, + 113, 114, 115, 1243, 1244, 1245, 1246, 1247, 1248, 1249, + 116, 117, 1250, 118, 119, 120, 853, 122, 123, 124, + 854, 855, 856, 857, 858, 1251, 130, 131, 132, 133, + 134, 135, 1252, 1253, 136, 137, 859, 860, 140, 1254, + 141, 142, 143, 144, 861, 1255, 862, 1256, 863, 148, + 149, 150, 151, 152, 864, 154, 155, 156, 1257, 157, + 158, 159, 160, 161, 162, 1258, 865, 164, 165, 166, + 866, 867, 868, 869, 1259, 1260, 870, 172, 173, 174, + 175, 176, 177, 178, 871, 872, 181, 1261, 182, 1262, + 183, 184, 185, 186, 187, 188, 1263, 189, 190, 191, + 192, 193, 1264, 1265, 194, 195, 196, 2134, 198, 1266, + 199, 200, 201, 1267, 202, 203, 204, 1268, 205, 206, + 207, 208, 873, 210, 211, 212, 213, 214, 874, 1269, + 216, 1270, 217, 218, 875, 220, 1271, 221, 1272, 222, + 876, 1273, 877, 225, 226, 878, 879, 229, 1274, 230, + 1275, 880, 881, 233, 1276, 234, 235, 236, 237, 238, + 239, 240, 882, 242, 243, 244, 245, 1277, 246, 247, + 248, 249, 250, 251, 1278, 252, 883, 884, 255, 256, + 257, 258, 259, 885, 886, 1279, 887, 1280, 263, 888, + 889, 266, 890, 268, 269, 270, 271, 272, 273, 1281, + 1282, 274, 891, 276, 892, 1283, 278, 279, 280, 1284, + 1285, 281, 282, 283, 284, 285, 893, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 894, 895, 896, 308, 309, + 310, 897, 1286, 312, 313, 898, 315, 1287, 899, 317, + 900, 319, 320, 321, 1288, 322, 323, 1289, 1290, 324, + 325, 326, 1291, 1292, 327, 901, 902, 330, 903, 904, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 1293, 343, 344, 905, 906, 347, 348, 907, 350, 351, + 352, 1294, 353, 354, 355, 356, 357, 358, 1295, 359, + 360, 361, 908, 363, 364, 365, 366, 1296, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 1297, 380, 381, 909, 383, 384, 385, 910, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 1298, 398, 399, 400, 401, 402, 911, 2135, 912, 406, + 407, 408, 913, 410, 411, 914, 413, 1299, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 915, 427, 916, 429, 1300, 430, 431, 1301, 432, 917, + 434, 435, 436, 437, 438, 1302, 918, 919, 1303, 1304, + 441, 442, 920, 444, 921, 1305, 446, 447, 922, 449, + 450, 451, 452, 453, 1306, 1307, 454, 455, 456, 457, + 458, 459, 923, 1308, 461, 462, 463, 464, 465, 1309, + 925, 1310, 468, 926, 470, 471, 472, 473, 474, 1311, + 1312, 475, 1313, 1314, 476, 477, 478, 479, 480, 481, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 937, 493, 494, 495, 496, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 0, 130, 131, + 132, 133, 134, 135, 0, 604, 136, 137, 138, 139, + 140, 0, 141, 142, 143, 144, 605, 0, 606, 0, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 0, 163, 164, + 165, 166, 607, 608, 609, 610, 611, 612, 613, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, + 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, + 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, + 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 614, 0, 216, 0, 217, 218, 219, 220, 0, 221, + 0, 222, 223, 0, 224, 225, 226, 227, 228, 229, + 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 0, 0, 274, 275, 276, 277, 0, 278, 279, + 280, 616, 617, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 312, 313, 314, 315, 0, + 618, 317, 318, 319, 320, 321, 0, 322, 323, 0, + 0, 324, 325, 326, 0, 0, 327, 328, 329, 330, + 331, 620, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 0, 343, 344, 621, 346, 347, 348, 349, + 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, + 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 0, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 398, 399, 400, 401, 402, 623, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 624, 429, 0, 430, 431, 0, + 432, 433, 434, 435, 436, 437, 438, 0, 439, 440, + 0, 0, 441, 442, 625, 444, 626, 0, 446, 447, + 627, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 456, 457, 458, 459, 628, 0, 461, 462, 463, 464, + 465, 466, 467, 0, 468, 469, 470, 471, 472, 473, + 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 852, 0, 515, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, + 853, 122, 123, 124, 854, 855, 856, 857, 858, 0, + 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, + 859, 860, 140, 0, 141, 142, 143, 144, 861, 0, + 862, 0, 863, 148, 149, 150, 151, 152, 864, 154, + 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, + 865, 164, 165, 166, 866, 867, 868, 869, 0, 0, + 870, 172, 173, 174, 175, 176, 177, 178, 871, 872, + 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, + 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, + 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 873, 210, 211, 212, + 213, 214, 874, 1424, 216, 0, 217, 218, 875, 220, + 0, 221, 0, 222, 876, 0, 877, 225, 226, 878, + 879, 229, 0, 230, 0, 880, 881, 233, 0, 234, + 235, 236, 237, 238, 239, 240, 882, 242, 243, 244, + 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, + 883, 884, 255, 256, 257, 258, 259, 885, 886, 0, + 887, 0, 263, 888, 889, 266, 890, 268, 269, 270, + 271, 272, 273, 0, 0, 274, 891, 276, 892, 0, + 278, 279, 280, 0, 0, 281, 282, 283, 284, 285, + 893, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 894, + 895, 896, 308, 309, 310, 897, 0, 312, 313, 898, + 315, 0, 899, 317, 900, 319, 320, 321, 0, 322, + 323, 1425, 0, 324, 325, 326, 0, 0, 327, 901, + 902, 330, 903, 904, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 905, 906, 347, + 348, 907, 350, 351, 352, 0, 353, 354, 355, 356, + 357, 358, 0, 359, 360, 361, 908, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 0, 380, 381, 909, 383, + 384, 385, 910, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, + 911, 404, 912, 406, 407, 408, 913, 410, 411, 914, + 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 915, 427, 916, 429, 0, 430, + 431, 0, 432, 917, 434, 435, 436, 437, 438, 0, + 918, 919, 0, 0, 441, 442, 920, 444, 921, 1426, + 446, 447, 922, 449, 450, 451, 452, 453, 0, 0, + 454, 455, 456, 457, 458, 459, 923, 0, 461, 462, + 463, 464, 465, 1309, 925, 0, 468, 926, 470, 471, + 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, + 478, 479, 480, 481, 927, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 493, 494, 495, 496, 852, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 3, + 4, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 120, 853, 122, 123, 124, 854, 855, 856, 857, + 858, 0, 130, 131, 132, 133, 134, 135, 0, 0, + 136, 137, 859, 860, 140, 0, 141, 142, 143, 144, + 861, 0, 862, 0, 863, 148, 149, 150, 151, 152, + 864, 154, 155, 156, 0, 157, 158, 159, 160, 161, + 162, 0, 865, 164, 165, 166, 866, 867, 868, 869, + 0, 0, 870, 172, 173, 174, 175, 176, 177, 178, + 871, 872, 181, 0, 182, 0, 183, 184, 185, 186, + 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, + 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, + 202, 203, 204, 0, 205, 206, 207, 208, 873, 210, + 211, 212, 213, 214, 874, 0, 216, 0, 217, 218, + 875, 220, 0, 221, 0, 222, 876, 0, 877, 225, + 226, 878, 879, 229, 0, 230, 0, 880, 881, 233, + 0, 234, 235, 236, 237, 238, 239, 240, 882, 242, + 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, + 0, 252, 883, 884, 255, 256, 257, 258, 259, 885, + 886, 0, 887, 0, 263, 888, 889, 266, 890, 268, + 269, 270, 271, 272, 273, 0, 0, 274, 891, 276, + 892, 0, 278, 279, 280, 0, 0, 281, 282, 283, + 284, 285, 893, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 894, 895, 896, 308, 309, 310, 897, 0, 312, + 313, 898, 315, 0, 899, 317, 900, 319, 320, 321, + 0, 322, 323, 0, 0, 324, 325, 326, 0, 0, + 327, 901, 902, 330, 903, 904, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 0, 343, 344, 905, + 906, 347, 348, 907, 350, 351, 352, 0, 353, 354, + 355, 356, 357, 358, 0, 359, 360, 361, 908, 363, + 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, + 909, 383, 384, 385, 910, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, + 401, 402, 911, 404, 912, 406, 407, 408, 913, 410, + 411, 914, 413, 0, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 915, 427, 916, 429, + 0, 430, 431, 0, 432, 917, 434, 435, 436, 437, + 438, 0, 918, 919, 0, 0, 441, 442, 920, 444, + 921, 0, 446, 447, 922, 449, 450, 451, 452, 453, + 0, 0, 454, 455, 456, 457, 458, 459, 923, 0, + 461, 462, 463, 464, 465, 1309, 925, 0, 468, 926, + 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, + 476, 477, 478, 479, 480, 481, 927, 928, 929, 930, + 931, 932, 933, 934, 935, 936, 937, 493, 494, 495, + 496, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 0, 130, 131, 132, 133, 134, 135, + 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, + 143, 144, 145, 0, 146, 0, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 163, 164, 165, 166, 167, 168, + 169, 170, 0, 0, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, + 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, + 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, + 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, + 217, 218, 219, 220, 0, 221, 0, 222, 223, 0, + 224, 225, 226, 227, 228, 229, 0, 230, 0, 231, + 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 0, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 275, 276, 277, 0, 278, 279, 280, 0, 0, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 312, 313, 314, 315, 0, 316, 317, 318, 319, + 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, + 0, 0, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 0, + 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 0, 430, 431, 0, 432, 433, 434, 435, + 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, + 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, + 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, + 460, 0, 461, 462, 463, 464, 465, 466, 467, 0, + 468, 469, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1977, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, - 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 0, 0, 0, 147, 148, - 149, 150, 151, 152, 0, 154, 155, 156, 0, 157, + 134, 135, 0, 0, 136, 137, 138, 139, 140, 1686, + 141, 142, 143, 144, 145, 0, 0, 1687, 147, 148, + 149, 150, 151, 152, 0, 154, 155, 156, 1688, 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, @@ -314410,10 +314668,10 @@ static const yytype_int16 yytable[] = 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, - 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, + 216, 0, 217, 218, 219, 220, 0, 221, 1689, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, - 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, + 1690, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, @@ -314426,7 +314684,7 @@ static const yytype_int16 yytable[] = 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 352, 1691, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, @@ -314437,21 +314695,21 @@ static const yytype_int16 yytable[] = 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, - 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, + 450, 451, 452, 453, 0, 1692, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2073, 0, 105, 106, 107, 108, 109, 110, 111, + 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, + 140, 1686, 141, 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 0, 164, + 1688, 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, @@ -314459,13 +314717,13 @@ static const yytype_int16 yytable[] = 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, - 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, + 1689, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 0, 276, 0, 0, 278, 279, + 273, 0, 0, 274, 0, 276, 2206, 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, @@ -314474,7 +314732,7 @@ static const yytype_int16 yytable[] = 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, + 350, 351, 352, 1691, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, @@ -314485,360 +314743,155 @@ static const yytype_int16 yytable[] = 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, - 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, + 448, 449, 450, 451, 452, 453, 0, 1692, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 0, 0, 2725, - 1427, 515, 0, 0, 1958, 1016, 0, 0, 0, 0, - 0, 1959, 0, 2883, 1960, 1961, 1962, 105, 106, 107, - 108, 109, 110, 111, 112, 1245, 113, 114, 115, 1246, - 1247, 1248, 1249, 1250, 1251, 1252, 116, 117, 1253, 118, - 119, 120, 2726, 122, 123, 124, 0, 768, 2727, 770, - 771, 1254, 130, 131, 132, 133, 134, 135, 1255, 1256, - 136, 137, 772, 773, 140, 1257, 141, 142, 143, 144, - 0, 1258, 2728, 1259, 2729, 148, 149, 150, 151, 152, - 2730, 154, 155, 156, 1260, 157, 158, 159, 160, 161, - 162, 1261, 2731, 164, 165, 166, 2732, 2733, 2734, 2735, - 1262, 1263, 2736, 172, 173, 174, 175, 176, 177, 178, - 783, 784, 181, 1264, 182, 1265, 183, 184, 185, 186, - 187, 188, 1266, 189, 190, 191, 192, 193, 1267, 1268, - 194, 195, 785, 197, 198, 1269, 199, 200, 201, 1270, - 202, 203, 204, 1271, 205, 206, 207, 208, 0, 210, - 211, 212, 213, 214, 0, 1272, 216, 1273, 217, 218, - 786, 220, 1274, 221, 1275, 222, 2737, 1276, 2738, 225, - 226, 2739, 2740, 229, 1277, 230, 1278, 0, 0, 233, - 1279, 234, 235, 236, 237, 238, 239, 240, 2741, 242, - 243, 244, 245, 1280, 246, 247, 248, 249, 250, 251, - 1281, 252, 2742, 0, 255, 256, 257, 258, 259, 793, - 794, 1282, 795, 1283, 263, 2743, 2744, 266, 2745, 268, - 269, 270, 271, 272, 273, 1284, 1285, 274, 2746, 276, - 2747, 1286, 278, 279, 280, 1287, 1288, 281, 282, 283, - 284, 285, 2748, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 802, 2749, 804, 308, 309, 310, 2750, 1289, 312, - 313, 2751, 315, 1290, 0, 317, 806, 319, 320, 321, - 1291, 322, 323, 1292, 1293, 2752, 325, 326, 1294, 1295, - 327, 0, 2753, 330, 2754, 0, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 1296, 343, 344, 0, - 2755, 347, 348, 0, 350, 351, 352, 1297, 353, 354, - 355, 356, 357, 358, 1298, 359, 360, 361, 810, 363, - 364, 365, 366, 1299, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 1300, 380, 381, - 2756, 383, 384, 385, 812, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 1301, 398, 399, 400, - 401, 402, 2757, 404, 2758, 406, 407, 408, 2759, 410, - 411, 816, 413, 1302, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 2760, 427, 0, 429, - 1303, 430, 431, 1304, 432, 2761, 434, 435, 436, 437, - 438, 1305, 819, 820, 1306, 1307, 441, 442, 0, 444, - 0, 1308, 446, 447, 2762, 449, 450, 451, 452, 453, - 2763, 1310, 454, 455, 456, 457, 458, 459, 2764, 1311, - 461, 462, 463, 464, 465, 0, 824, 1313, 468, 2765, - 470, 471, 472, 473, 474, 1314, 1315, 475, 1316, 1317, - 476, 477, 478, 479, 480, 481, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 493, 494, 495, - 496, 0, 504, 0, 1963, 1964, 1965, 1958, 2766, 2767, - 1968, 1969, 1970, 1971, 1959, 0, 0, 1960, 1961, 1962, - 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, - 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, - 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, - 150, 151, 152, 0, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, - 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, - 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, - 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, - 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, - 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, - 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, - 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, - 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 0, 276, 0, 0, 278, 279, 280, 0, 0, - 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, - 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, - 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, - 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 0, 404, 405, 406, 407, - 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, - 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, - 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, - 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, - 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, - 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 0, 0, 0, 1963, 1964, 1965, - 0, 1966, 1967, 1968, 1969, 1970, 1971, 1565, 0, 0, - 1566, 0, 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1573, 0, 1565, 0, 0, 1566, - 0, 0, 1575, 1567, 1568, 1569, 1570, 1571, 1572, 1576, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1573, 0, 0, 0, 0, 0, 0, - 0, 1575, 1565, 0, 1577, 1566, 0, 0, 1576, 1567, - 1568, 1569, 1570, 1571, 1572, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1573, - 0, 1565, 0, 1577, 1566, 0, 0, 1575, 1567, 1568, - 1569, 1570, 1571, 1572, 1576, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1573, 0, - 0, 0, 0, 0, 0, 0, 1575, 0, 0, 1577, - 0, 0, 0, 1576, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1577, 0, - 0, 0, 0, 0, 0, 1578, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1579, 0, 0, 0, 0, 1580, 0, 0, 0, - 0, 0, 0, 0, 1578, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1581, 1582, - 1579, 0, 0, 0, 0, 1580, 0, 0, 0, 0, - 0, 0, 0, 1583, 0, 0, 0, 0, 0, 0, - 1578, 0, 0, 0, 0, 0, 0, 1581, 1582, 0, - 0, 0, 0, 0, 0, 0, 1579, 0, 0, 0, - 0, 1580, 1583, 0, 0, 0, 0, 0, 0, 1578, - 0, 1584, 0, 0, 1585, 0, 0, 0, 0, 0, - 0, 0, 0, 1581, 1582, 1579, 0, 0, 1586, 0, - 1580, 1587, 0, 0, 0, 0, 0, 0, 1583, 0, - 1584, 0, 0, 1585, 0, 0, 0, 0, 0, 0, - 0, 0, 1581, 1582, 0, 0, 0, 1586, 0, 0, - 1587, 0, 0, 0, 0, 0, 0, 1583, 0, 0, - 0, 0, 0, 0, 0, 0, 1584, 0, 0, 1585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1565, 0, 1586, 1566, 0, 1587, 0, 1567, 1568, - 1569, 1570, 1571, 1572, 0, 1584, 0, 0, 1585, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1573, 0, - 1565, 1588, 1586, 1566, 0, 1587, 1575, 1567, 1568, 1569, - 1570, 1571, 1572, 1576, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1573, 0, 0, - 1588, 0, 0, 0, 0, 1575, 1565, 0, 1577, 1566, - 0, 0, 1576, 1567, 1568, 1569, 1570, 1571, 1572, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1573, 0, 0, 1588, 1577, 0, 0, - 0, 1575, 0, 0, 0, 0, 0, 0, 1576, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1588, 0, 0, 0, 0, - 0, 0, 0, 1577, 1589, 0, 0, 1590, 1591, 1592, - 0, 1593, 1594, 1595, 1596, 1597, 1598, 0, 0, 0, - 0, 2571, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1589, 0, 0, 1590, 1591, 1592, 1578, - 1593, 1594, 1595, 1596, 1597, 1598, 0, 0, 0, 0, - 2613, 0, 0, 0, 0, 1579, 0, 0, 0, 0, - 1580, 0, 0, 0, 0, 0, 0, 0, 1578, 1589, - 0, 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, - 1597, 1598, 1581, 1582, 1579, 0, 2670, 0, 0, 1580, - 0, 0, 0, 0, 0, 0, 0, 1583, 1589, 0, - 0, 1590, 1591, 1592, 1578, 1593, 1594, 1595, 1596, 1597, - 1598, 1581, 1582, 0, 0, 2879, 0, 0, 0, 0, - 1579, 0, 0, 0, 0, 1580, 1583, 0, 0, 0, - 0, 0, 0, 0, 0, 1584, 0, 0, 1585, 0, - 0, 0, 0, 0, 0, 0, 0, 1581, 1582, 0, - 0, 0, 1586, 0, 0, 1587, 0, 0, 0, 0, - 0, 0, 1583, 0, 1584, 0, 0, 1585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1565, - 0, 1586, 1566, 0, 1587, 0, 1567, 1568, 1569, 1570, - 1571, 1572, 0, 0, 0, 0, 0, 0, 0, 0, - 1584, 0, 0, 1585, 0, 0, 1573, 0, 0, 0, - 0, 0, 0, 0, 1575, 1565, 0, 1586, 1566, 0, - 1587, 1576, 1567, 1568, 1569, 1570, 1571, 1572, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1573, 0, 1565, 1588, 1577, 1566, 0, 0, - 1575, 1567, 1568, 1569, 1570, 1571, 1572, 1576, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1573, 0, 0, 1588, 0, 0, 0, 0, 1575, - 0, 0, 1577, 0, 0, 0, 1576, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1588, 1577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1578, 1589, 0, - 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, - 1598, 0, 0, 1579, 0, 2882, 0, 0, 1580, 0, - 0, 0, 0, 0, 0, 0, 0, 1589, 0, 0, - 1590, 1591, 1592, 1578, 1593, 1594, 1595, 1596, 1597, 1598, - 1581, 1582, 0, 0, 3009, 0, 0, 0, 0, 1579, - 0, 0, 0, 0, 1580, 1583, 0, 0, 0, 0, - 0, 0, 1578, 1589, 0, 0, 1590, 1591, 1592, 0, - 1593, 1594, 1595, 1596, 1597, 1598, 1581, 1582, 1579, 0, - 3030, 0, 0, 1580, 0, 0, 0, 0, 0, 0, - 0, 1583, 0, 1584, 0, 0, 1585, 0, 0, 0, - 0, 0, 0, 0, 0, 1581, 1582, 0, 0, 0, - 1586, 0, 0, 1587, 0, 0, 0, 0, 0, 0, - 1583, 0, 0, 0, 0, 0, 0, 0, 0, 1584, - 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1565, 0, 1586, 1566, 0, 1587, - 0, 1567, 1568, 1569, 1570, 1571, 1572, 0, 1584, 0, - 0, 1585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1573, 0, 1565, 0, 1586, 1566, 0, 1587, 1575, - 1567, 1568, 1569, 1570, 1571, 1572, 1576, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1573, 0, 0, 1588, 0, 0, 0, 0, 1575, 1565, - 0, 1577, 1566, 0, 0, 1576, 1567, 1568, 1569, 1570, - 1571, 1572, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1573, 0, 0, 1588, - 1577, 0, 0, 0, 1575, 0, 0, 0, 0, 0, - 0, 1576, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1588, 0, - 0, 0, 0, 0, 0, 0, 1577, 0, 0, 0, + 490, 491, 492, 493, 494, 495, 496, 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1589, 0, 0, 1590, - 1591, 1592, 1578, 1593, 1594, 1595, 1596, 1597, 1598, 0, - 0, 0, 0, 3118, 0, 0, 0, 0, 1579, 0, - 0, 0, 0, 1580, 0, 0, 0, 0, 0, 0, - 0, 1578, 1589, 0, 0, 1590, 1591, 1592, 0, 1593, - 1594, 1595, 1596, 1597, 1598, 1581, 1582, 1579, 0, 3171, - 0, 0, 1580, 0, 0, 0, 0, 0, 0, 0, - 1583, 1589, 0, 0, 1590, 1591, 1592, 1578, 1593, 1594, - 1595, 1596, 1597, 1598, 1581, 1582, 0, 0, 3193, 0, - 0, 0, 0, 1579, 0, 0, 0, 0, 1580, 1583, - 0, 0, 0, 0, 0, 0, 0, 0, 1584, 0, - 0, 1585, 0, 0, 0, 0, 0, 0, 0, 0, - 1581, 1582, 0, 0, 0, 1586, 0, 0, 1587, 0, - 0, 0, 0, 0, 0, 1583, 0, 1584, 0, 0, - 1585, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1586, 0, 0, 1587, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1584, 0, 0, 1585, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1586, 0, 0, 1587, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1588, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1588, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1589, 0, 0, 1590, 1591, 1592, 0, 1593, 1594, - 1595, 1596, 1597, 1598, 0, 0, 1754, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1589, 0, 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, - 1596, 1597, 1598, 0, 0, 3003, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1244, 0, 1589, 0, 0, 1590, - 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, 1598, 0, - 0, 3156, 105, 106, 107, 108, 109, 110, 111, 112, - 1245, 113, 114, 115, 1246, 1247, 1248, 1249, 1250, 1251, - 1252, 116, 117, 1253, 118, 119, 120, 856, 122, 123, - 124, 857, 858, 859, 860, 861, 1254, 130, 131, 132, - 133, 134, 135, 1255, 1256, 136, 137, 862, 863, 140, - 1257, 141, 142, 143, 144, 864, 1258, 865, 1259, 866, - 148, 149, 150, 151, 152, 867, 154, 155, 156, 1260, - 157, 158, 159, 160, 161, 162, 1261, 868, 164, 165, - 166, 869, 870, 871, 872, 1262, 1263, 873, 172, 173, - 174, 175, 176, 177, 178, 874, 875, 181, 1264, 182, - 1265, 183, 184, 185, 186, 187, 188, 1266, 189, 190, - 191, 192, 193, 1267, 1268, 194, 195, 196, 197, 198, - 1269, 199, 200, 201, 1270, 202, 203, 204, 1271, 205, - 206, 207, 208, 876, 210, 211, 212, 213, 214, 877, - 1272, 216, 1273, 217, 218, 878, 220, 1274, 221, 1275, - 222, 879, 1276, 880, 225, 226, 881, 882, 229, 1277, - 230, 1278, 883, 884, 233, 1279, 234, 235, 236, 237, - 238, 239, 240, 885, 242, 243, 244, 245, 1280, 246, - 247, 248, 249, 250, 251, 1281, 252, 886, 887, 255, - 256, 257, 258, 259, 888, 889, 1282, 890, 1283, 263, - 891, 892, 266, 893, 268, 269, 270, 271, 272, 273, - 1284, 1285, 274, 894, 276, 895, 1286, 278, 279, 280, - 1287, 1288, 281, 282, 283, 284, 285, 896, 287, 288, + 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, + 762, 122, 123, 124, 0, 763, 764, 765, 766, 0, + 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, + 767, 768, 140, 0, 141, 142, 143, 144, 0, 0, + 769, 0, 770, 148, 149, 150, 151, 152, 771, 154, + 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, + 772, 164, 165, 166, 773, 774, 775, 776, 0, 0, + 777, 172, 173, 174, 175, 176, 177, 178, 778, 779, + 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, + 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, + 780, 197, 198, 0, 199, 200, 201, 0, 202, 203, + 204, 0, 205, 206, 207, 208, 0, 210, 211, 212, + 213, 214, 0, 0, 216, 0, 217, 218, 781, 220, + 0, 221, 0, 222, 782, 0, 783, 225, 226, 0, + 784, 229, 0, 230, 0, 0, 0, 233, 0, 234, + 235, 236, 237, 238, 785, 240, 786, 242, 243, 244, + 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, + 787, 0, 255, 256, 257, 258, 259, 788, 789, 0, + 790, 0, 263, 791, 792, 266, 793, 268, 269, 270, + 271, 272, 273, 0, 0, 274, 794, 276, 795, 0, + 278, 279, 280, 0, 0, 281, 282, 283, 284, 285, + 796, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 797, + 798, 799, 308, 309, 310, 0, 0, 312, 313, 800, + 315, 0, 0, 317, 801, 319, 320, 321, 0, 322, + 323, 0, 0, 324, 325, 326, 0, 0, 327, 0, + 802, 330, 803, 0, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 0, 343, 344, 0, 804, 347, + 348, 0, 350, 351, 352, 0, 353, 354, 355, 356, + 357, 358, 0, 359, 360, 361, 805, 363, 364, 365, + 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 0, 380, 381, 806, 383, + 384, 385, 807, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, + 808, 404, 809, 406, 407, 408, 810, 410, 411, 811, + 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 812, 427, 0, 429, 0, 430, + 431, 0, 432, 813, 434, 435, 436, 437, 438, 0, + 814, 815, 0, 0, 441, 442, 0, 444, 0, 0, + 446, 447, 816, 449, 450, 451, 452, 453, 817, 0, + 454, 455, 456, 457, 458, 459, 818, 0, 461, 462, + 463, 464, 465, 0, 819, 0, 468, 820, 470, 471, + 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, + 478, 479, 480, 481, 761, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 493, 494, 495, 496, 0, + 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 0, 118, 119, 120, 762, 122, 123, + 124, 0, 763, 764, 765, 766, 0, 130, 131, 132, + 133, 134, 135, 0, 0, 136, 137, 767, 768, 140, + 0, 141, 142, 143, 144, 0, 0, 769, 0, 770, + 148, 149, 150, 151, 152, 771, 154, 155, 156, 0, + 157, 158, 159, 160, 161, 162, 0, 772, 164, 165, + 166, 773, 774, 775, 776, 0, 0, 777, 172, 173, + 174, 175, 176, 177, 178, 778, 779, 181, 0, 182, + 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, + 191, 192, 193, 0, 0, 194, 195, 780, 197, 198, + 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, + 206, 207, 208, 0, 210, 211, 212, 213, 214, 0, + 0, 216, 0, 217, 218, 781, 220, 0, 221, 0, + 222, 782, 0, 783, 225, 226, 0, 784, 229, 0, + 230, 0, 0, 0, 233, 0, 234, 235, 236, 237, + 238, 239, 240, 786, 242, 243, 244, 245, 0, 246, + 247, 248, 249, 250, 251, 0, 252, 787, 0, 255, + 256, 257, 258, 259, 788, 789, 0, 790, 0, 263, + 791, 792, 266, 793, 268, 269, 270, 271, 272, 273, + 0, 0, 274, 794, 276, 795, 0, 278, 279, 280, + 0, 0, 281, 282, 283, 284, 285, 796, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 897, 898, 899, 308, - 309, 310, 900, 1289, 312, 313, 901, 315, 1290, 902, - 317, 903, 319, 320, 321, 1291, 322, 323, 1292, 1293, - 324, 325, 326, 1294, 1295, 327, 904, 905, 330, 906, - 907, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 1296, 343, 344, 908, 909, 347, 348, 910, 350, - 351, 352, 1297, 353, 354, 355, 356, 357, 358, 1298, - 359, 360, 361, 911, 363, 364, 365, 366, 1299, 367, + 299, 300, 301, 302, 303, 304, 797, 798, 799, 308, + 309, 310, 0, 0, 312, 313, 800, 315, 0, 0, + 317, 801, 319, 320, 321, 0, 322, 323, 0, 0, + 324, 325, 326, 0, 0, 327, 0, 802, 330, 803, + 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 0, 343, 344, 0, 804, 347, 348, 0, 350, + 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, + 359, 360, 361, 805, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 1300, 380, 381, 912, 383, 384, 385, 913, + 378, 379, 0, 380, 381, 806, 383, 384, 385, 807, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 1301, 398, 399, 400, 401, 402, 914, 404, 915, - 406, 407, 408, 916, 410, 411, 917, 413, 1302, 414, + 397, 0, 398, 399, 400, 401, 402, 808, 404, 809, + 406, 407, 408, 810, 410, 411, 811, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 918, 427, 919, 429, 1303, 430, 431, 1304, 432, - 920, 434, 435, 436, 437, 438, 1305, 921, 922, 1306, - 1307, 441, 442, 923, 444, 924, 1308, 446, 447, 925, - 449, 450, 451, 452, 453, 1309, 1310, 454, 455, 456, - 457, 458, 459, 926, 1311, 461, 462, 463, 464, 465, - 1312, 928, 1313, 468, 929, 470, 471, 472, 473, 474, - 1314, 1315, 475, 1316, 1317, 476, 477, 478, 479, 480, - 481, 930, 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 493, 494, 495, 496, 504, 0, 0, 0, - 0, 0, 0, 0, 0, 2056, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, - 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, - 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, - 139, 140, 0, 141, 142, 143, 144, 145, 0, 0, - 0, 147, 148, 149, 150, 151, 152, 0, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 0, - 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, - 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, - 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, - 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, - 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, - 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 0, 276, 0, 0, 278, - 279, 280, 0, 0, 281, 282, 283, 284, 285, 506, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, - 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, - 0, 316, 317, 318, 319, 320, 321, 0, 322, 323, - 0, 0, 324, 325, 326, 0, 0, 327, 328, 0, - 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, - 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, - 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 0, - 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, - 0, 432, 0, 434, 435, 436, 437, 438, 0, 439, - 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, - 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, - 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, - 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, - 0, 0, 0, 0, 0, 0, 0, 2564, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, - 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 425, 812, 427, 0, 429, 0, 430, 431, 0, 432, + 813, 434, 435, 436, 437, 438, 0, 814, 815, 0, + 0, 441, 442, 0, 444, 0, 0, 446, 447, 816, + 449, 450, 451, 452, 453, 817, 0, 454, 455, 456, + 457, 458, 459, 818, 0, 461, 462, 463, 464, 465, + 0, 819, 0, 468, 820, 470, 471, 472, 473, 474, + 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, + 481, 761, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 493, 494, 495, 496, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 120, 762, 122, 123, 124, 0, 763, + 764, 765, 766, 0, 130, 131, 132, 133, 134, 135, + 0, 0, 136, 137, 767, 768, 140, 0, 141, 142, + 143, 144, 0, 0, 769, 0, 770, 148, 149, 150, + 151, 152, 771, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 772, 164, 165, 166, 773, 774, + 775, 776, 0, 0, 777, 172, 173, 174, 175, 176, + 177, 178, 778, 779, 181, 0, 182, 0, 183, 184, + 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, + 0, 0, 194, 195, 780, 197, 198, 0, 199, 200, + 201, 0, 1772, 203, 204, 0, 205, 206, 207, 208, + 0, 210, 211, 212, 213, 214, 0, 0, 216, 0, + 217, 218, 781, 220, 0, 221, 0, 222, 782, 0, + 783, 225, 226, 0, 784, 229, 0, 230, 0, 0, + 0, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 786, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 787, 0, 255, 256, 257, 258, + 259, 788, 789, 0, 790, 0, 263, 791, 792, 266, + 793, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 794, 276, 795, 0, 278, 279, 280, 0, 0, 281, + 282, 283, 284, 285, 796, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 797, 798, 799, 308, 309, 310, 0, + 0, 312, 313, 800, 315, 0, 0, 317, 801, 319, + 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, + 0, 0, 327, 0, 802, 330, 803, 0, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, + 344, 0, 804, 347, 348, 0, 350, 351, 352, 0, + 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, + 805, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, + 380, 381, 806, 383, 384, 385, 807, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, + 399, 400, 401, 402, 808, 404, 809, 406, 407, 408, + 810, 410, 411, 811, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 812, 427, + 0, 429, 0, 430, 431, 0, 432, 813, 434, 435, + 436, 437, 438, 0, 814, 815, 0, 0, 441, 442, + 0, 444, 0, 0, 446, 447, 816, 449, 450, 451, + 452, 453, 817, 0, 454, 455, 456, 457, 458, 459, + 818, 0, 461, 462, 463, 464, 465, 0, 819, 0, + 468, 820, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 504, 0, + 530, 0, 0, 0, 0, 0, 0, 0, 0, 493, + 494, 495, 496, 0, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 3, 4, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, @@ -314884,675 +314937,63 @@ static const yytype_int16 yytable[] = 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 855, 1427, 515, 0, 0, 0, 1016, 0, 0, 2567, - 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, - 118, 119, 120, 856, 122, 123, 124, 857, 858, 859, - 860, 861, 0, 130, 131, 132, 133, 134, 135, 0, - 0, 136, 137, 862, 863, 140, 0, 141, 142, 143, - 144, 864, 0, 865, 0, 866, 148, 149, 150, 151, - 152, 867, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 868, 164, 165, 166, 869, 870, 871, - 872, 0, 0, 873, 172, 173, 174, 175, 176, 177, - 178, 874, 875, 181, 1624, 182, 0, 183, 184, 185, - 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 876, - 210, 211, 212, 213, 214, 877, 1428, 216, 0, 217, - 218, 878, 220, 0, 221, 0, 222, 879, 0, 880, - 225, 226, 881, 882, 229, 0, 230, 0, 883, 884, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 885, - 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, - 251, 0, 252, 886, 887, 255, 256, 257, 258, 259, - 888, 889, 0, 890, 0, 263, 891, 892, 266, 893, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 894, - 276, 895, 0, 278, 279, 280, 0, 0, 281, 282, - 283, 284, 285, 896, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 897, 898, 899, 308, 309, 310, 900, 0, - 312, 313, 901, 315, 0, 902, 317, 903, 319, 320, - 321, 0, 322, 323, 1429, 0, 324, 325, 326, 0, - 0, 327, 904, 905, 330, 906, 907, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 908, 909, 347, 348, 910, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 911, - 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 912, 383, 384, 385, 913, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 914, 404, 915, 406, 407, 408, 916, - 410, 411, 917, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 918, 427, 919, - 429, 0, 430, 431, 0, 432, 920, 434, 435, 436, - 437, 438, 0, 921, 922, 0, 0, 441, 442, 923, - 444, 924, 1430, 446, 447, 925, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 926, - 0, 461, 462, 463, 464, 465, 1312, 928, 0, 468, - 929, 470, 471, 472, 473, 474, 0, 0, 475, 0, - 0, 476, 477, 478, 479, 480, 481, 930, 931, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 493, 494, - 495, 496, 855, 1427, 515, 0, 0, 0, 1016, 1431, - 1432, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, - 117, 0, 118, 119, 120, 856, 122, 123, 124, 857, - 858, 859, 860, 861, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 862, 863, 140, 0, 141, - 142, 143, 144, 864, 0, 865, 0, 866, 148, 149, - 150, 151, 152, 867, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 868, 164, 165, 166, 869, - 870, 871, 872, 0, 0, 873, 172, 173, 174, 175, - 176, 177, 178, 874, 875, 181, 1626, 182, 0, 183, - 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, - 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 876, 210, 211, 212, 213, 214, 877, 1428, 216, - 0, 217, 218, 878, 220, 0, 221, 0, 222, 879, - 0, 880, 225, 226, 881, 882, 229, 0, 230, 0, - 883, 884, 233, 0, 234, 235, 236, 237, 238, 239, - 240, 885, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 886, 887, 255, 256, 257, - 258, 259, 888, 889, 0, 890, 0, 263, 891, 892, - 266, 893, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 894, 276, 895, 0, 278, 279, 280, 0, 0, - 281, 282, 283, 284, 285, 896, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 897, 898, 899, 308, 309, 310, - 900, 0, 312, 313, 901, 315, 0, 902, 317, 903, - 319, 320, 321, 0, 322, 323, 1429, 0, 324, 325, - 326, 0, 0, 327, 904, 905, 330, 906, 907, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 908, 909, 347, 348, 910, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 911, 363, 364, 365, 366, 0, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 912, 383, 384, 385, 913, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 914, 404, 915, 406, 407, - 408, 916, 410, 411, 917, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 918, - 427, 919, 429, 0, 430, 431, 0, 432, 920, 434, - 435, 436, 437, 438, 0, 921, 922, 0, 0, 441, - 442, 923, 444, 924, 1430, 446, 447, 925, 449, 450, - 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 926, 0, 461, 462, 463, 464, 465, 1312, 928, - 0, 468, 929, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 0, 476, 477, 478, 479, 480, 481, 930, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, - 493, 494, 495, 496, 855, 1427, 515, 0, 0, 0, - 1016, 1431, 1432, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, - 0, 116, 117, 0, 118, 119, 120, 856, 122, 123, - 124, 857, 858, 859, 860, 861, 0, 130, 131, 132, - 133, 134, 135, 0, 0, 136, 137, 862, 863, 140, - 0, 141, 142, 143, 144, 864, 0, 865, 0, 866, - 148, 149, 150, 151, 152, 867, 154, 155, 156, 0, - 157, 158, 159, 160, 161, 162, 0, 868, 164, 165, - 166, 869, 870, 871, 872, 0, 0, 873, 172, 173, - 174, 175, 176, 177, 178, 874, 875, 181, 0, 182, - 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, - 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 876, 210, 211, 212, 213, 214, 877, - 1428, 216, 0, 217, 218, 878, 220, 0, 221, 0, - 222, 879, 0, 880, 225, 226, 881, 882, 229, 0, - 230, 0, 883, 884, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 885, 242, 243, 244, 245, 0, 246, - 247, 248, 249, 250, 251, 0, 252, 886, 887, 255, - 256, 257, 258, 259, 888, 889, 0, 890, 0, 263, - 891, 892, 266, 893, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 894, 276, 895, 0, 278, 279, 280, - 0, 0, 281, 282, 283, 284, 285, 896, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 897, 898, 899, 308, - 309, 310, 900, 0, 312, 313, 901, 315, 0, 902, - 317, 903, 319, 320, 321, 0, 322, 323, 1429, 0, - 324, 325, 326, 0, 0, 327, 904, 905, 330, 906, - 907, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 908, 909, 347, 348, 910, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 911, 363, 364, 365, 366, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 912, 383, 384, 385, 913, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 914, 404, 915, - 406, 407, 408, 916, 410, 411, 917, 413, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 918, 427, 919, 429, 0, 430, 431, 0, 432, - 920, 434, 435, 436, 437, 438, 0, 921, 922, 0, - 0, 441, 442, 923, 444, 924, 1430, 446, 447, 925, - 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 926, 0, 461, 462, 463, 464, 465, - 1312, 928, 0, 468, 929, 470, 471, 472, 473, 474, - 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, - 481, 930, 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 493, 494, 495, 496, 0, 0, 1565, 0, - 0, 1566, 0, 1431, 1432, 1567, 1568, 1569, 1570, 1571, - 1572, 1565, 0, 0, 1566, 0, 0, 0, 1567, 1568, - 1569, 1570, 1571, 1572, 0, 1573, 0, 0, 0, 2079, - 0, 0, 0, 1575, 0, 0, 0, 0, 1573, 0, - 1576, 0, 0, 0, 0, 0, 1575, 1565, 0, 0, - 1566, 0, 0, 1576, 1567, 1568, 1569, 1570, 1571, 1572, - 1565, 0, 0, 1566, 0, 1577, 0, 1567, 1568, 1569, - 1570, 1571, 1572, 0, 1573, 0, 0, 0, 1577, 0, - 0, 0, 1575, 0, 0, 0, 0, 1573, 0, 1576, - 1853, 0, 0, 0, 0, 1575, 1565, 0, 0, 1566, - 0, 0, 1576, 1567, 1568, 1569, 1570, 1571, 1572, 0, - 0, 0, 0, 0, 1577, 0, 2080, 0, 0, 0, - 0, 0, 0, 1573, 0, 0, 0, 1577, 0, 0, - 0, 1575, 0, 0, 0, 0, 0, 0, 1576, 0, - 0, 1565, 0, 0, 1566, 0, 0, 0, 1567, 1568, - 1569, 1570, 1571, 1572, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1577, 0, 0, 1578, 0, 1573, 1892, - 0, 1898, 0, 0, 1893, 0, 1575, 0, 0, 1578, - 0, 0, 1579, 1576, 0, 0, 0, 1580, 0, 0, - 0, 0, 0, 0, 0, 1579, 0, 0, 0, 0, - 1580, 0, 0, 0, 3254, 0, 0, 0, 1577, 1581, - 1582, 0, 0, 0, 0, 1578, 0, 0, 0, 0, - 0, 0, 1581, 1582, 1583, 0, 0, 0, 1578, 0, - 0, 1579, 0, 0, 0, 0, 1580, 1583, 0, 0, - 0, 0, 0, 0, 1579, 0, 0, 0, 0, 1580, - 0, 0, 0, 0, 0, 0, 0, 0, 1581, 1582, - 0, 0, 1584, 0, 1578, 1585, 0, 0, 0, 0, - 0, 1581, 1582, 1583, 0, 1584, 0, 0, 1585, 1586, - 1579, 0, 1587, 0, 0, 1580, 1583, 0, 0, 0, - 0, 0, 1586, 0, 0, 1587, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1581, 1582, 1578, - 0, 1584, 0, 0, 1585, 0, 0, 0, 0, 0, - 0, 0, 1583, 0, 1584, 1579, 0, 1585, 1586, 0, - 1580, 1587, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1586, 0, 0, 1587, 0, 0, 0, 0, 0, - 0, 0, 1581, 1582, 0, 3255, 0, 0, 0, 0, - 1584, 0, 0, 1585, 0, 0, 0, 1583, 0, 0, - 0, 0, 1588, 0, 0, 0, 0, 1586, 0, 0, - 1587, 0, 0, 0, 0, 1588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1864, 0, - 0, 0, 0, 0, 0, 1584, 0, 0, 1585, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1588, 1586, 0, 0, 1587, 0, 0, 0, 0, - 0, 0, 0, 2084, 1588, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1588, 0, 0, 0, 0, 1589, 0, 0, 1590, 1591, - 1592, 0, 1593, 1594, 1595, 1596, 1597, 1598, 1589, 0, - 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, - 1598, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1588, 0, 0, 0, 0, - 0, 0, 0, 0, 1589, 0, 0, 1590, 1591, 1592, - 0, 1593, 1594, 1595, 1596, 1597, 1598, 1589, 0, 0, - 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, 1598, - 0, 0, 1565, 0, 0, 1566, 0, 0, 0, 1567, - 1568, 1569, 1570, 1571, 1572, 0, 0, 0, 0, 0, - 0, 0, 0, 1589, 0, 0, 1590, 1591, 1592, 1573, - 1593, 1594, 1595, 1596, 1597, 1598, 0, 1575, 0, 0, - 0, 0, 0, 0, 1576, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1589, 1577, - 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, - 1598, 1565, 0, 0, 1566, 0, 0, 0, 1567, 1568, - 1569, 1570, 1571, 1572, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1573, 0, - 0, 1905, 0, 0, 0, 0, 1575, 0, 0, 0, - 0, 0, 0, 1576, 0, 0, 1565, 0, 0, 1566, - 0, 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1577, 0, - 0, 0, 0, 1573, 0, 0, 0, 0, 0, 0, - 0, 1575, 0, 0, 0, 1903, 0, 0, 1576, 0, - 1578, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1579, 0, 0, 0, - 0, 1580, 0, 1577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1581, 1582, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1583, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1565, 0, 0, 1566, 1578, - 0, 0, 1567, 1568, 1569, 1570, 1571, 1572, 0, 0, - 0, 0, 0, 0, 0, 1579, 1584, 0, 0, 1585, - 1580, 0, 1573, 0, 0, 0, 0, 0, 0, 0, - 1575, 0, 0, 1586, 1981, 0, 1587, 1576, 0, 0, - 0, 0, 1581, 1582, 1578, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1583, 0, 0, - 1579, 0, 1577, 0, 0, 1580, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1581, 1582, 0, - 0, 0, 0, 0, 0, 1584, 0, 0, 1585, 0, - 0, 0, 1583, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1586, 0, 0, 1587, 0, 0, 0, 0, - 1565, 0, 0, 1566, 0, 0, 1588, 1567, 1568, 1569, - 1570, 1571, 1572, 0, 0, 0, 0, 0, 0, 0, - 1584, 0, 0, 1585, 0, 0, 0, 1573, 0, 0, - 2611, 0, 0, 0, 0, 1575, 0, 1586, 0, 0, - 1587, 0, 1576, 1578, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1579, - 0, 0, 1565, 0, 1580, 1566, 0, 1577, 0, 1567, - 1568, 1569, 1570, 1571, 1572, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1588, 1581, 1582, 0, 1573, - 0, 0, 0, 0, 0, 0, 0, 1575, 0, 0, - 0, 1583, 0, 0, 1576, 0, 0, 0, 0, 1589, - 0, 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, - 1597, 1598, 0, 0, 0, 0, 0, 0, 0, 1577, - 1588, 0, 0, 0, 0, 0, 0, 0, 0, 1584, - 0, 0, 1585, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1586, 0, 0, 1587, - 0, 0, 0, 0, 0, 0, 0, 0, 1578, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1579, 0, 0, 0, 1589, 1580, - 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, - 1598, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1581, 1582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1583, 0, 0, 0, - 1578, 0, 0, 1589, 0, 0, 1590, 1591, 1592, 0, - 1593, 1594, 1595, 1596, 1597, 1598, 1579, 0, 0, 1588, - 1565, 1580, 0, 1566, 0, 0, 0, 1567, 1568, 1569, - 1570, 1571, 1572, 0, 1584, 0, 0, 1585, 0, 0, - 0, 0, 0, 1581, 1582, 0, 0, 1573, 0, 0, - 0, 1586, 2601, 0, 1587, 1575, 0, 0, 1583, 0, - 0, 0, 1576, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1577, 0, 0, - 0, 0, 0, 0, 0, 0, 1584, 0, 0, 1585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1586, 0, 0, 1587, 0, 0, 0, - 0, 0, 1589, 0, 0, 1590, 1591, 1592, 0, 1593, - 1594, 1595, 1596, 1597, 1598, 0, 0, 0, 1565, 0, - 0, 1566, 0, 0, 1588, 1567, 0, 0, 1570, 1571, - 1572, 0, 0, 0, 0, 0, 1565, 0, 0, 1566, - 0, 0, 0, 1567, 0, 1573, 1570, 1571, 1572, 0, - 0, 0, 0, 1575, 0, 0, 0, 0, 0, 0, - 1576, 0, 0, 0, 0, 0, 0, 0, 1578, 0, - 0, 1575, 0, 0, 0, 0, 0, 0, 1576, 0, - 0, 0, 0, 0, 1579, 1577, 1588, 0, 0, 1580, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1577, 0, 0, 0, 0, 0, 0, - 0, 1581, 1582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1583, 1589, 0, 0, - 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 1597, 1598, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1584, 0, 0, 1585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1586, 0, 0, 1587, 0, 1578, 0, 0, 1589, - 0, 0, 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, - 1597, 1598, 1579, 0, 1578, 0, 0, 1580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1579, 0, 0, 0, 0, 1580, 0, 0, 0, 1581, - 1582, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1583, 0, 0, 1581, 1582, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1583, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1588, 0, 0, 0, 0, 0, - 0, 0, 1584, 0, 0, 1585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1586, - 1584, 0, 1587, 1585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1586, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1589, 0, 0, - 1590, 1591, 1592, 0, 1593, 1594, 1595, 1596, 2101, 1598, - 0, 0, 1588, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1589, 0, 0, 1590, 1591, - 1592, 0, 1593, 1594, 1595, 1596, 1597, 1598, 1244, 0, - 2000, 0, 0, 1589, 0, 0, 1590, 1591, 1592, 0, - 1593, 1594, 1595, 1596, 1597, 1598, 105, 106, 107, 108, - 109, 110, 111, 112, 1245, 113, 114, 115, 1246, 1247, - 1248, 1249, 1250, 1251, 1252, 116, 117, 1253, 118, 119, - 120, 856, 122, 123, 124, 857, 858, 859, 860, 861, - 1254, 130, 131, 132, 133, 134, 135, 1255, 1256, 136, - 137, 862, 863, 140, 1257, 141, 142, 143, 144, 864, - 1258, 865, 1259, 866, 148, 149, 150, 151, 152, 867, - 154, 155, 156, 1260, 157, 158, 159, 160, 161, 162, - 1261, 868, 164, 165, 166, 869, 870, 871, 872, 1262, - 1263, 873, 172, 173, 174, 175, 176, 177, 178, 874, - 875, 181, 1264, 182, 1265, 183, 184, 185, 186, 187, - 188, 1266, 189, 190, 191, 192, 193, 1267, 1268, 194, - 195, 196, 197, 198, 1269, 199, 200, 201, 1270, 202, - 203, 204, 1271, 205, 206, 207, 208, 876, 210, 211, - 212, 213, 214, 877, 1272, 216, 1273, 217, 218, 878, - 220, 1274, 221, 1275, 222, 879, 1276, 880, 225, 226, - 881, 882, 229, 1277, 230, 1278, 883, 884, 233, 1279, - 234, 235, 236, 237, 238, 239, 240, 885, 242, 243, - 244, 245, 1280, 246, 247, 248, 249, 250, 251, 1281, - 252, 886, 887, 255, 256, 257, 258, 259, 888, 889, - 1282, 890, 1283, 263, 891, 892, 266, 893, 268, 269, - 270, 271, 272, 273, 1284, 1285, 274, 894, 276, 895, - 1286, 278, 279, 280, 1287, 1288, 281, 282, 283, 284, - 285, 896, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 897, 898, 899, 308, 309, 310, 900, 1289, 312, 313, - 901, 315, 1290, 902, 317, 903, 319, 320, 321, 1291, - 322, 323, 1292, 1293, 324, 325, 326, 1294, 1295, 327, - 904, 905, 330, 906, 907, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 1296, 343, 344, 908, 909, - 347, 348, 910, 350, 351, 352, 1297, 353, 354, 355, - 356, 357, 358, 1298, 359, 360, 361, 911, 363, 364, - 365, 366, 1299, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 1300, 380, 381, 912, - 383, 384, 385, 913, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 1301, 398, 399, 400, 401, - 402, 914, 404, 915, 406, 407, 408, 916, 410, 411, - 917, 413, 1302, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 918, 427, 919, 429, 1303, - 430, 431, 1304, 432, 920, 434, 435, 436, 437, 438, - 1305, 921, 922, 1306, 1307, 441, 442, 923, 444, 924, - 1308, 446, 447, 925, 449, 450, 451, 452, 453, 1309, - 1310, 454, 455, 456, 457, 458, 459, 926, 1311, 461, - 462, 463, 464, 465, 1312, 928, 1313, 468, 929, 470, - 471, 472, 473, 474, 1314, 1315, 475, 1316, 1317, 476, - 477, 478, 479, 480, 481, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 493, 494, 495, 496, - 1244, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 1245, 113, 114, 115, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 116, 117, 1253, - 118, 119, 120, 856, 122, 123, 124, 857, 858, 859, - 860, 861, 1254, 130, 131, 132, 133, 134, 135, 1255, - 1256, 136, 137, 862, 863, 140, 1257, 141, 142, 143, - 144, 864, 1258, 865, 1259, 866, 148, 149, 150, 151, - 152, 867, 154, 155, 156, 1260, 157, 158, 159, 160, - 161, 162, 1261, 868, 164, 165, 166, 869, 870, 871, - 872, 1262, 1263, 873, 172, 173, 174, 175, 176, 177, - 178, 874, 875, 181, 1264, 182, 1265, 183, 184, 185, - 186, 187, 188, 1266, 189, 190, 191, 192, 193, 1267, - 1268, 194, 195, 196, 197, 198, 1269, 199, 200, 201, - 1270, 202, 203, 204, 1271, 205, 206, 207, 208, 876, - 210, 211, 212, 213, 214, 877, 1272, 216, 1273, 217, - 218, 878, 220, 1274, 221, 1275, 222, 879, 1276, 880, - 225, 226, 881, 882, 229, 1277, 230, 1278, 883, 884, - 233, 1279, 234, 235, 236, 237, 238, 239, 240, 885, - 242, 243, 244, 245, 1280, 246, 247, 248, 249, 250, - 251, 1281, 252, 886, 887, 255, 256, 257, 258, 259, - 888, 889, 1282, 890, 1283, 263, 891, 892, 266, 893, - 268, 269, 270, 271, 272, 273, 1284, 1285, 274, 894, - 276, 895, 1286, 278, 279, 280, 1287, 1288, 281, 282, - 283, 284, 285, 896, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 897, 898, 899, 308, 309, 310, 900, 1289, - 312, 313, 901, 315, 1290, 902, 317, 903, 319, 320, - 321, 1291, 322, 323, 1292, 1293, 324, 325, 326, 1294, - 1295, 327, 904, 905, 330, 906, 907, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 1296, 343, 344, - 908, 909, 347, 348, 910, 350, 351, 352, 1297, 353, - 354, 355, 356, 357, 358, 1298, 359, 360, 361, 911, - 363, 364, 365, 366, 1299, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1300, 380, - 381, 912, 383, 384, 385, 913, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 1301, 398, 399, - 400, 401, 402, 914, 404, 915, 406, 407, 408, 916, - 410, 411, 917, 413, 1302, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 918, 427, 919, - 429, 1303, 430, 431, 1304, 432, 920, 434, 435, 436, - 437, 438, 1305, 921, 922, 1306, 1307, 441, 442, 923, - 444, 924, 1308, 446, 447, 925, 449, 450, 451, 452, - 453, 1309, 1310, 454, 455, 456, 457, 458, 459, 926, - 1311, 461, 462, 463, 464, 465, 1312, 928, 1313, 468, - 929, 470, 471, 472, 473, 474, 1314, 1315, 475, 1316, - 1317, 476, 477, 478, 479, 480, 481, 930, 931, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 493, 494, - 495, 496, 1244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 2137, 110, 111, 112, 1245, 113, - 114, 115, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 116, - 117, 1253, 118, 119, 120, 856, 122, 123, 124, 857, - 858, 859, 860, 861, 1254, 130, 131, 132, 133, 134, - 135, 1255, 1256, 136, 137, 862, 863, 140, 1257, 141, - 142, 143, 144, 864, 1258, 865, 1259, 866, 148, 149, - 150, 151, 152, 867, 154, 155, 156, 1260, 157, 158, - 159, 160, 161, 162, 1261, 868, 164, 165, 166, 869, - 870, 871, 872, 1262, 1263, 873, 172, 173, 174, 175, - 176, 177, 178, 874, 875, 181, 1264, 182, 1265, 183, - 184, 185, 186, 187, 188, 1266, 189, 190, 191, 192, - 193, 1267, 1268, 194, 195, 196, 2138, 198, 1269, 199, - 200, 201, 1270, 202, 203, 204, 1271, 205, 206, 207, - 208, 876, 210, 211, 212, 213, 214, 877, 1272, 216, - 1273, 217, 218, 878, 220, 1274, 221, 1275, 222, 879, - 1276, 880, 225, 226, 881, 882, 229, 1277, 230, 1278, - 883, 884, 233, 1279, 234, 235, 236, 237, 238, 239, - 240, 885, 242, 243, 244, 245, 1280, 246, 247, 248, - 249, 250, 251, 1281, 252, 886, 887, 255, 256, 257, - 258, 259, 888, 889, 1282, 890, 1283, 263, 891, 892, - 266, 893, 268, 269, 270, 271, 272, 273, 1284, 1285, - 274, 894, 276, 895, 1286, 278, 279, 280, 1287, 1288, - 281, 282, 283, 284, 285, 896, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 897, 898, 899, 308, 309, 310, - 900, 1289, 312, 313, 901, 315, 1290, 902, 317, 903, - 319, 320, 321, 1291, 322, 323, 1292, 1293, 324, 325, - 326, 1294, 1295, 327, 904, 905, 330, 906, 907, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 1296, - 343, 344, 908, 909, 347, 348, 910, 350, 351, 352, - 1297, 353, 354, 355, 356, 357, 358, 1298, 359, 360, - 361, 911, 363, 364, 365, 366, 1299, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 1300, 380, 381, 912, 383, 384, 385, 913, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 1301, - 398, 399, 400, 401, 402, 914, 2139, 915, 406, 407, - 408, 916, 410, 411, 917, 413, 1302, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 918, - 427, 919, 429, 1303, 430, 431, 1304, 432, 920, 434, - 435, 436, 437, 438, 1305, 921, 922, 1306, 1307, 441, - 442, 923, 444, 924, 1308, 446, 447, 925, 449, 450, - 451, 452, 453, 1309, 1310, 454, 455, 456, 457, 458, - 459, 926, 1311, 461, 462, 463, 464, 465, 1312, 928, - 1313, 468, 929, 470, 471, 472, 473, 474, 1314, 1315, - 475, 1316, 1317, 476, 477, 478, 479, 480, 481, 930, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, - 493, 494, 495, 496, 104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, - 0, 116, 117, 0, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 0, 130, 131, 132, - 133, 134, 135, 0, 606, 136, 137, 138, 139, 140, - 0, 141, 142, 143, 144, 607, 0, 608, 0, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, - 157, 158, 159, 160, 161, 162, 0, 163, 164, 165, - 166, 609, 610, 611, 612, 613, 614, 615, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, - 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, - 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 616, - 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, - 222, 223, 0, 224, 225, 226, 227, 228, 229, 0, - 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 0, 246, - 247, 248, 249, 250, 251, 0, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 275, 276, 277, 0, 278, 279, 280, - 618, 619, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 312, 313, 314, 315, 0, 620, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, - 324, 325, 326, 0, 0, 327, 328, 329, 330, 331, - 622, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 623, 346, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 625, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 626, 429, 0, 430, 431, 0, 432, - 433, 434, 435, 436, 437, 438, 0, 439, 440, 0, - 0, 441, 442, 627, 444, 628, 0, 446, 447, 629, - 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 630, 0, 461, 462, 463, 464, 465, - 466, 467, 0, 468, 469, 470, 471, 472, 473, 474, - 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 855, 0, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 0, 0, 0, 116, 117, 0, 118, 119, 120, 856, - 122, 123, 124, 857, 858, 859, 860, 861, 0, 130, - 131, 132, 133, 134, 135, 0, 0, 136, 137, 862, - 863, 140, 0, 141, 142, 143, 144, 864, 0, 865, - 0, 866, 148, 149, 150, 151, 152, 867, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 868, - 164, 165, 166, 869, 870, 871, 872, 0, 0, 873, - 172, 173, 174, 175, 176, 177, 178, 874, 875, 181, - 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, - 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 876, 210, 211, 212, 213, - 214, 877, 1428, 216, 0, 217, 218, 878, 220, 0, - 221, 0, 222, 879, 0, 880, 225, 226, 881, 882, - 229, 0, 230, 0, 883, 884, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 885, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 886, - 887, 255, 256, 257, 258, 259, 888, 889, 0, 890, - 0, 263, 891, 892, 266, 893, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 894, 276, 895, 0, 278, - 279, 280, 0, 0, 281, 282, 283, 284, 285, 896, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 897, 898, - 899, 308, 309, 310, 900, 0, 312, 313, 901, 315, - 0, 902, 317, 903, 319, 320, 321, 0, 322, 323, - 1429, 0, 324, 325, 326, 0, 0, 327, 904, 905, - 330, 906, 907, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 908, 909, 347, 348, - 910, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 911, 363, 364, 365, 366, - 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 912, 383, 384, - 385, 913, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 914, - 404, 915, 406, 407, 408, 916, 410, 411, 917, 413, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 918, 427, 919, 429, 0, 430, 431, - 0, 432, 920, 434, 435, 436, 437, 438, 0, 921, - 922, 0, 0, 441, 442, 923, 444, 924, 1430, 446, - 447, 925, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 926, 0, 461, 462, 463, - 464, 465, 1312, 928, 0, 468, 929, 470, 471, 472, - 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, - 479, 480, 481, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 493, 494, 495, 496, 855, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, - 109, 110, 111, 112, 0, 113, 114, 115, 3, 4, - 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, - 120, 856, 122, 123, 124, 857, 858, 859, 860, 861, - 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, - 137, 862, 863, 140, 0, 141, 142, 143, 144, 864, - 0, 865, 0, 866, 148, 149, 150, 151, 152, 867, - 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 868, 164, 165, 166, 869, 870, 871, 872, 0, - 0, 873, 172, 173, 174, 175, 176, 177, 178, 874, - 875, 181, 0, 182, 0, 183, 184, 185, 186, 187, - 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, - 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, - 203, 204, 0, 205, 206, 207, 208, 876, 210, 211, - 212, 213, 214, 877, 0, 216, 0, 217, 218, 878, - 220, 0, 221, 0, 222, 879, 0, 880, 225, 226, - 881, 882, 229, 0, 230, 0, 883, 884, 233, 0, - 234, 235, 236, 237, 238, 239, 240, 885, 242, 243, - 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 886, 887, 255, 256, 257, 258, 259, 888, 889, - 0, 890, 0, 263, 891, 892, 266, 893, 268, 269, - 270, 271, 272, 273, 0, 0, 274, 894, 276, 895, - 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, - 285, 896, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 897, 898, 899, 308, 309, 310, 900, 0, 312, 313, - 901, 315, 0, 902, 317, 903, 319, 320, 321, 0, - 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, - 904, 905, 330, 906, 907, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 0, 343, 344, 908, 909, - 347, 348, 910, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 0, 359, 360, 361, 911, 363, 364, - 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 912, - 383, 384, 385, 913, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 914, 404, 915, 406, 407, 408, 916, 410, 411, - 917, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 918, 427, 919, 429, 0, - 430, 431, 0, 432, 920, 434, 435, 436, 437, 438, - 0, 921, 922, 0, 0, 441, 442, 923, 444, 924, - 0, 446, 447, 925, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 926, 0, 461, - 462, 463, 464, 465, 1312, 928, 0, 468, 929, 470, - 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, - 477, 478, 479, 480, 481, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 493, 494, 495, 496, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, + 107, 108, 109, 110, 111, 112, 531, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 0, 146, 0, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 163, 164, 165, 166, 167, 168, 169, - 170, 0, 0, 171, 172, 173, 174, 175, 176, 177, + 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, + 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, + 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, - 218, 219, 220, 0, 221, 0, 222, 223, 0, 224, - 225, 226, 227, 228, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 241, + 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, + 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 0, 262, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 275, - 276, 277, 0, 278, 279, 280, 0, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, + 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, + 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, + 276, 0, 0, 278, 279, 280, 0, 0, 281, 282, + 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 312, 313, 314, 315, 0, 316, 317, 318, 319, 320, + 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, + 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, - 0, 327, 328, 329, 330, 331, 332, 333, 334, 335, + 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 0, 353, + 345, 0, 347, 348, 349, 532, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 0, 430, 431, 0, 432, 433, 434, 435, 436, + 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, + 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 460, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, - 469, 470, 471, 472, 473, 474, 0, 0, 475, 0, + 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, + 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 138, 139, 140, 1690, 141, - 142, 143, 144, 145, 0, 0, 1691, 147, 148, 149, - 150, 151, 152, 0, 154, 155, 156, 1692, 157, 158, + 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, + 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, + 150, 151, 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, @@ -315560,9 +315001,9 @@ static const yytype_int16 yytable[] = 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, - 0, 217, 218, 219, 220, 0, 221, 1693, 222, 0, + 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 1694, + 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, @@ -315572,11 +315013,11 @@ static const yytype_int16 yytable[] = 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, - 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, + 319, 320, 321, 0, 322, 323, 0, 619, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, - 1695, 353, 354, 355, 356, 357, 358, 0, 359, 360, + 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, @@ -315587,252 +315028,17 @@ static const yytype_int16 yytable[] = 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, - 451, 452, 453, 0, 1696, 454, 455, 456, 457, 458, + 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, + 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, - 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, - 1690, 141, 142, 143, 144, 145, 0, 0, 0, 147, - 148, 149, 150, 151, 152, 0, 154, 155, 156, 1692, - 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, - 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, - 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, - 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 0, 216, 0, 217, 218, 219, 220, 0, 221, 1693, - 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, - 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, - 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, - 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 0, 276, 2210, 0, 278, 279, 280, - 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, - 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, - 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, - 351, 352, 1695, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 0, 404, 405, - 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, - 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, - 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, - 449, 450, 451, 452, 453, 0, 1696, 454, 455, 456, - 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, - 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, - 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 766, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 0, -700, 0, 116, 117, 0, 118, 119, 120, 767, - 122, 123, 124, 0, 768, 769, 770, 771, 0, 130, - 131, 132, 133, 134, 135, 0, 0, 136, 137, 772, - 773, 140, 0, 141, 142, 143, 144, 0, 0, 774, - 0, 775, 148, 149, 150, 151, 152, 776, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 777, - 164, 165, 166, 778, 779, 780, 781, 0, 0, 782, - 172, 173, 174, 175, 176, 177, 178, 783, 784, 181, - 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 785, - 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 0, 210, 211, 212, 213, - 214, 0, 0, 216, 0, 217, 218, 786, 220, 0, - 221, 0, 222, 787, 0, 788, 225, 226, -700, 789, - 229, 0, 230, 0, 0, 0, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 791, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 792, - 0, 255, 256, 257, 258, 259, 793, 794, 0, 795, - 0, 263, 796, 797, 266, 798, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 799, 276, 800, 0, 278, - 279, 280, 0, 0, 281, 282, 283, 284, 285, 801, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 802, 803, - 804, 308, 309, 310, 0, 0, 312, 313, 805, 315, - 0, 0, 317, 806, 319, 320, 321, 0, 322, 323, - 0, 0, 324, 325, 326, 0, 0, 327, 0, 807, - 330, 808, 0, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 0, 809, 347, 348, - 0, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 810, 363, 364, 365, 366, - 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 811, 383, 384, - 385, 812, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 813, - 404, 814, 406, 407, 408, 815, 410, 411, 816, 413, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 817, 427, 0, 429, 0, 430, 431, - 0, 432, 818, 434, 435, 436, 437, 438, 0, 819, - 820, 0, 0, 441, 442, 0, 444, 0, 0, 446, - 447, 821, 449, 450, 451, 452, 453, 822, 0, 454, - 455, 456, 457, 458, 459, 823, 0, 461, 462, 463, - 464, 465, 0, 824, 0, 468, 825, 470, 471, 472, - 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, - 479, 480, 481, 766, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 493, 494, 495, 496, 0, 0, - 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, - 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, - 116, 117, 0, 118, 119, 120, 767, 122, 123, 124, - 0, 768, 769, 770, 771, 0, 130, 131, 132, 133, - 134, 135, 0, 0, 136, 137, 772, 773, 140, 0, - 141, 142, 143, 144, 0, 0, 774, 0, 775, 148, - 149, 150, 151, 152, 776, 154, 155, 156, 0, 157, - 158, 159, 160, 161, 162, 0, 777, 164, 165, 166, - 778, 779, 780, 781, 0, 0, 782, 172, 173, 174, - 175, 176, 177, 178, 783, 784, 181, 0, 182, 0, - 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, - 192, 193, 0, 0, 194, 195, 785, 197, 198, 0, - 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, - 207, 208, 0, 210, 211, 212, 213, 214, 0, 0, - 216, 0, 217, 218, 786, 220, 0, 221, 0, 222, - 787, 0, 788, 225, 226, 0, 789, 229, 0, 230, - 0, 0, 0, 233, 0, 234, 235, 236, 237, 238, - 790, 240, 791, 242, 243, 244, 245, 0, 246, 247, - 248, 249, 250, 251, 0, 252, 792, 0, 255, 256, - 257, 258, 259, 793, 794, 0, 795, 0, 263, 796, - 797, 266, 798, 268, 269, 270, 271, 272, 273, 0, - 0, 274, 799, 276, 800, 0, 278, 279, 280, 0, - 0, 281, 282, 283, 284, 285, 801, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 802, 803, 804, 308, 309, - 310, 0, 0, 312, 313, 805, 315, 0, 0, 317, - 806, 319, 320, 321, 0, 322, 323, 0, 0, 324, - 325, 326, 0, 0, 327, 0, 807, 330, 808, 0, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 0, 343, 344, 0, 809, 347, 348, 0, 350, 351, - 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, - 360, 361, 810, 363, 364, 365, 366, 0, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 811, 383, 384, 385, 812, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 813, 404, 814, 406, - 407, 408, 815, 410, 411, 816, 413, 0, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 817, 427, 0, 429, 0, 430, 431, 0, 432, 818, - 434, 435, 436, 437, 438, 0, 819, 820, 0, 0, - 441, 442, 0, 444, 0, 0, 446, 447, 821, 449, - 450, 451, 452, 453, 822, 0, 454, 455, 456, 457, - 458, 459, 823, 0, 461, 462, 463, 464, 465, 0, - 824, 0, 468, 825, 470, 471, 472, 473, 474, 0, - 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, - 766, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 493, 494, 495, 496, 0, 0, 0, 105, 106, - 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, - 118, 119, 120, 767, 122, 123, 124, 0, 768, 769, - 770, 771, 0, 130, 131, 132, 133, 134, 135, 0, - 0, 136, 137, 772, 773, 140, 0, 141, 142, 143, - 144, 0, 0, 774, 0, 775, 148, 149, 150, 151, - 152, 776, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 777, 164, 165, 166, 778, 779, 780, - 781, 0, 0, 782, 172, 173, 174, 175, 176, 177, - 178, 783, 784, 181, 0, 182, 0, 183, 184, 185, - 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 785, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 0, - 210, 211, 212, 213, 214, 0, 0, 216, 0, 217, - 218, 786, 220, 0, 221, 0, 222, 787, 0, 788, - 225, 226, 0, 789, 229, 0, 230, 0, 0, 0, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 791, - 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, - 251, 0, 252, 792, 0, 255, 256, 257, 258, 259, - 793, 794, 0, 795, 0, 263, 796, 797, 266, 798, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 799, - 276, 800, 0, 278, 279, 280, 0, 0, 281, 282, - 283, 284, 285, 801, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 802, 803, 804, 308, 309, 310, 0, 0, - 312, 313, 805, 315, 0, 0, 317, 806, 319, 320, - 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, - 0, 327, 0, 807, 330, 808, 0, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 0, 809, 347, 348, 0, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 810, - 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 811, 383, 384, 385, 812, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 813, 404, 814, 406, 407, 408, 815, - 410, 411, 816, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 817, 427, 0, - 429, 0, 430, 431, 0, 432, 818, 434, 435, 436, - 437, 438, 0, 819, 820, 0, 0, 441, 442, 0, - 444, 0, 0, 446, 447, 821, 449, 450, 451, 452, - 453, 822, 0, 454, 455, 456, 457, 458, 459, 823, - 0, 461, 462, 463, 464, 465, 0, 824, 0, 468, - 825, 470, 471, 472, 473, 474, 0, 0, 475, 0, - 0, 476, 477, 478, 479, 480, 481, 766, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 493, 494, - 495, 496, 0, 0, 0, 105, 106, 107, 108, 109, - 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, - 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, - 767, 122, 123, 124, 0, 768, 769, 770, 771, 0, - 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, - 772, 773, 140, 0, 141, 142, 143, 144, 0, 0, - 774, 0, 775, 148, 149, 150, 151, 152, 776, 154, - 155, 156, 0, 157, 158, 159, 160, 161, 162, 0, - 777, 164, 165, 166, 778, 779, 780, 781, 0, 0, - 782, 172, 173, 174, 175, 176, 177, 178, 783, 784, - 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, - 0, 189, 190, 191, 192, 193, 0, 0, 194, 195, - 785, 197, 198, 0, 199, 200, 201, 0, 1776, 203, - 204, 0, 205, 206, 207, 208, 0, 210, 211, 212, - 213, 214, 0, 0, 216, 0, 217, 218, 786, 220, - 0, 221, 0, 222, 787, 0, 788, 225, 226, 0, - 789, 229, 0, 230, 0, 0, 0, 233, 0, 234, - 235, 236, 237, 238, 239, 240, 791, 242, 243, 244, - 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, - 792, 0, 255, 256, 257, 258, 259, 793, 794, 0, - 795, 0, 263, 796, 797, 266, 798, 268, 269, 270, - 271, 272, 273, 0, 0, 274, 799, 276, 800, 0, - 278, 279, 280, 0, 0, 281, 282, 283, 284, 285, - 801, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 802, - 803, 804, 308, 309, 310, 0, 0, 312, 313, 805, - 315, 0, 0, 317, 806, 319, 320, 321, 0, 322, - 323, 0, 0, 324, 325, 326, 0, 0, 327, 0, - 807, 330, 808, 0, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 0, 343, 344, 0, 809, 347, - 348, 0, 350, 351, 352, 0, 353, 354, 355, 356, - 357, 358, 0, 359, 360, 361, 810, 363, 364, 365, - 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 0, 380, 381, 811, 383, - 384, 385, 812, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, - 813, 404, 814, 406, 407, 408, 815, 410, 411, 816, - 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 817, 427, 0, 429, 0, 430, - 431, 0, 432, 818, 434, 435, 436, 437, 438, 0, - 819, 820, 0, 0, 441, 442, 0, 444, 0, 0, - 446, 447, 821, 449, 450, 451, 452, 453, 822, 0, - 454, 455, 456, 457, 458, 459, 823, 0, 461, 462, - 463, 464, 465, 0, 824, 0, 468, 825, 470, 471, - 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, - 478, 479, 480, 481, 504, 0, 530, 0, 0, 0, - 0, 0, 0, 0, 0, 493, 494, 495, 496, 0, - 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 3, 4, 0, 0, 0, 0, - 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, - 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, 0, @@ -315846,7 +315052,7 @@ static const yytype_int16 yytable[] = 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, + 238, 719, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, @@ -315855,7 +315061,7 @@ static const yytype_int16 yytable[] = 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, + 317, 318, 319, 320, 321, 0, 322, 323, 0, 619, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, @@ -315878,7 +315084,7 @@ static const yytype_int16 yytable[] = 491, 492, 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 531, 113, 114, 115, 0, 0, 0, 0, + 111, 112, 750, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, @@ -315907,7 +315113,7 @@ static const yytype_int16 yytable[] = 0, 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, - 349, 532, 351, 352, 0, 353, 354, 355, 356, 357, + 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, @@ -315923,8 +315129,8 @@ static const yytype_int16 yytable[] = 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, - 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 489, 490, 491, 492, 493, 494, 495, 496, 504, 1904, + 0, 0, 0, 0, 1905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, @@ -315952,7 +315158,7 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, - 322, 323, 0, 621, 324, 325, 326, 0, 0, 327, + 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, @@ -315989,18 +315195,18 @@ static const yytype_int16 yytable[] = 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, - 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 721, 240, 0, + 225, 226, 505, 0, 1913, 0, 230, 0, 231, 232, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, - 276, 0, 0, 278, 279, 280, 0, 0, 281, 282, + 276, 0, 0, 278, 279, 1914, 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, - 321, 0, 322, 323, 0, 621, 324, 325, 326, 0, + 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, @@ -316012,17 +315218,17 @@ static const yytype_int16 yytable[] = 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, - 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, - 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, + 429, 0, 430, 431, 1915, 432, 0, 434, 1916, 436, + 1917, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, + 453, 0, 0, 454, 455, 1918, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 752, 113, + 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, @@ -316068,8 +315274,8 @@ static const yytype_int16 yytable[] = 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 504, 1908, 0, 0, 0, 0, - 1909, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 493, 494, 495, 496, 504, 0, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, @@ -316116,10 +315322,10 @@ static const yytype_int16 yytable[] = 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 504, 0, 530, 0, + 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, + 111, 112, 651, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, @@ -316134,13 +315340,13 @@ static const yytype_int16 yytable[] = 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, - 1917, 0, 230, 0, 231, 232, 233, 0, 234, 235, + 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, 276, 0, 0, 278, - 279, 1918, 0, 0, 281, 282, 283, 284, 285, 506, + 279, 280, 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, 0, 315, @@ -316157,10 +315363,10 @@ static const yytype_int16 yytable[] = 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, - 1919, 432, 0, 434, 1920, 436, 1921, 438, 0, 439, - 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, + 0, 432, 0, 434, 435, 436, 437, 438, 0, 652, + 440, 0, 0, 653, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 1922, 457, 458, 459, 0, 0, 461, 462, 463, + 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, @@ -316198,7 +315404,7 @@ static const yytype_int16 yytable[] = 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, - 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, + 685, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, @@ -316213,7 +315419,7 @@ static const yytype_int16 yytable[] = 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 504, 0, 515, 0, 0, 0, 0, 0, 0, 0, + 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, @@ -316231,7 +315437,7 @@ static const yytype_int16 yytable[] = 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, + 233, 0, 234, 235, 236, 237, 238, 714, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, @@ -316261,9 +315467,9 @@ static const yytype_int16 yytable[] = 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, + 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 653, 113, + 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, @@ -316279,7 +315485,7 @@ static const yytype_int16 yytable[] = 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, + 231, 232, 233, 0, 234, 235, 236, 237, 238, 717, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, @@ -316302,7 +315508,7 @@ static const yytype_int16 yytable[] = 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, - 435, 436, 437, 438, 0, 654, 440, 0, 0, 655, + 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, @@ -316328,7 +315534,7 @@ static const yytype_int16 yytable[] = 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, + 238, 721, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, @@ -316342,7 +315548,7 @@ static const yytype_int16 yytable[] = 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 362, 363, 364, 687, 366, 0, 367, + 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, @@ -316376,7 +315582,7 @@ static const yytype_int16 yytable[] = 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, - 236, 237, 238, 716, 240, 0, 242, 243, 244, 245, + 236, 237, 238, 731, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, @@ -316424,7 +315630,7 @@ static const yytype_int16 yytable[] = 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, - 234, 235, 236, 237, 238, 719, 240, 0, 242, 243, + 234, 235, 236, 237, 238, 738, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, @@ -316472,7 +315678,7 @@ static const yytype_int16 yytable[] = 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 723, 240, 0, + 233, 0, 234, 235, 236, 237, 238, 843, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, @@ -316520,7 +315726,7 @@ static const yytype_int16 yytable[] = 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 733, + 231, 232, 233, 0, 234, 235, 236, 237, 238, 846, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, @@ -316550,10 +315756,10 @@ static const yytype_int16 yytable[] = 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, + 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, + 0, 113, 114, 115, 0, 0, 0, 0, 0, 974, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, @@ -316569,7 +315775,7 @@ static const yytype_int16 yytable[] = 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 740, 240, 0, 242, 243, 244, 245, 0, 246, + 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, @@ -316598,11 +315804,11 @@ static const yytype_int16 yytable[] = 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 504, 0, 530, 0, + 491, 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, + 0, 992, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, 0, 0, @@ -316617,7 +315823,7 @@ static const yytype_int16 yytable[] = 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, - 236, 237, 238, 846, 240, 0, 242, 243, 244, 245, + 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, @@ -316665,7 +315871,7 @@ static const yytype_int16 yytable[] = 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, - 234, 235, 236, 237, 238, 849, 240, 0, 242, 243, + 234, 235, 236, 237, 238, 1332, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, @@ -316695,10 +315901,10 @@ static const yytype_int16 yytable[] = 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, - 0, 0, 0, 0, 0, 977, 0, 116, 117, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, @@ -316713,7 +315919,7 @@ static const yytype_int16 yytable[] = 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, + 233, 0, 234, 235, 236, 237, 238, 1334, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, @@ -316743,10 +315949,10 @@ static const yytype_int16 yytable[] = 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, + 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 0, 995, 0, 116, + 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, @@ -316761,7 +315967,7 @@ static const yytype_int16 yytable[] = 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 239, + 231, 232, 233, 0, 234, 235, 236, 237, 238, 1337, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, @@ -316810,7 +316016,7 @@ static const yytype_int16 yytable[] = 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 1336, 240, 0, 242, 243, 244, 245, 0, 246, + 238, 1339, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, @@ -316858,7 +316064,7 @@ static const yytype_int16 yytable[] = 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, - 236, 237, 238, 1338, 240, 0, 242, 243, 244, 245, + 236, 237, 238, 2129, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, @@ -316906,7 +316112,7 @@ static const yytype_int16 yytable[] = 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, - 234, 235, 236, 237, 238, 1341, 240, 0, 242, 243, + 234, 235, 236, 237, 238, 2797, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, @@ -316936,296 +316142,55 @@ static const yytype_int16 yytable[] = 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 504, 0, 530, 0, 0, 0, 0, 0, 0, 0, + 2720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, - 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, - 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, - 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, - 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, - 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, - 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, - 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, + 118, 119, 120, 2721, 122, 123, 124, 0, 763, 2722, + 765, 766, 0, 130, 131, 132, 133, 134, 135, 0, + 0, 136, 137, 767, 768, 140, 0, 141, 142, 143, + 144, 0, 0, 2723, 0, 2724, 148, 149, 150, 151, + 152, 2725, 154, 155, 156, 0, 157, 158, 159, 160, + 161, 162, 0, 2726, 164, 165, 166, 2727, 2728, 2729, + 2730, 0, 0, 2731, 172, 173, 174, 175, 176, 177, + 178, 778, 779, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, - 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, - 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, - 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, - 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, - 233, 0, 234, 235, 236, 237, 238, 1343, 240, 0, + 0, 194, 195, 780, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 0, + 210, 211, 212, 213, 214, 0, 0, 216, 0, 217, + 218, 781, 220, 0, 221, 0, 222, 2732, 0, 2733, + 225, 226, 2734, 2735, 229, 0, 230, 0, 0, 0, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 2736, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, - 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, - 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, - 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, - 276, 0, 0, 278, 279, 280, 0, 0, 281, 282, - 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, + 251, 0, 252, 2737, 0, 255, 256, 257, 258, 259, + 788, 789, 0, 790, 0, 263, 2738, 2739, 266, 2740, + 268, 269, 270, 271, 272, 273, 0, 0, 274, 2741, + 276, 2742, 0, 278, 279, 280, 0, 0, 281, 282, + 283, 284, 285, 2937, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, - 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, + 303, 304, 797, 2744, 799, 308, 309, 310, 0, 0, + 312, 313, 2746, 315, 0, 0, 317, 801, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, - 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, + 0, 327, 0, 2748, 330, 2749, 0, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, 344, - 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, - 354, 355, 356, 357, 358, 0, 359, 360, 361, 362, + 0, 2750, 347, 348, 0, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 360, 361, 805, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, - 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, + 381, 2751, 383, 384, 385, 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, - 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, - 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, - 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, - 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, - 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, - 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, - 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, - 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, - 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 504, 0, 530, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, - 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, - 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, - 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, - 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, - 142, 143, 144, 145, 0, 0, 0, 147, 148, 149, - 150, 151, 152, 0, 154, 155, 156, 0, 157, 158, - 159, 160, 161, 162, 0, 0, 164, 165, 166, 0, - 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 182, 0, 183, - 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, - 193, 0, 0, 194, 195, 196, 197, 198, 0, 199, - 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, - 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, - 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, - 231, 232, 233, 0, 234, 235, 236, 237, 238, 2133, - 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, - 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, - 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, - 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, - 274, 0, 276, 0, 0, 278, 279, 280, 0, 0, - 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, - 311, 0, 312, 313, 0, 315, 0, 316, 317, 318, - 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, - 326, 0, 0, 327, 328, 0, 330, 0, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, - 343, 344, 345, 0, 347, 348, 349, 350, 351, 352, - 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, - 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, - 398, 399, 400, 401, 402, 0, 404, 405, 406, 407, - 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, - 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, - 435, 436, 437, 438, 0, 439, 440, 0, 0, 441, - 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, - 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, - 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, - 0, 468, 0, 470, 471, 472, 473, 474, 0, 0, - 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 504, 0, 530, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, - 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, - 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, - 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, - 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, - 0, 141, 142, 143, 144, 145, 0, 0, 0, 147, - 148, 149, 150, 151, 152, 0, 154, 155, 156, 0, - 157, 158, 159, 160, 161, 162, 0, 0, 164, 165, - 166, 0, 0, 0, 0, 0, 0, 0, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 182, - 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, - 191, 192, 193, 0, 0, 194, 195, 196, 197, 198, - 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, - 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, - 230, 0, 231, 232, 233, 0, 234, 235, 236, 237, - 238, 2801, 240, 0, 242, 243, 244, 245, 0, 246, - 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, - 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, - 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, - 0, 0, 274, 0, 276, 0, 0, 278, 279, 280, - 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, - 309, 310, 311, 0, 312, 313, 0, 315, 0, 316, - 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, - 324, 325, 326, 0, 0, 327, 328, 0, 330, 0, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 0, 343, 344, 345, 0, 347, 348, 349, 350, - 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, - 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 0, 398, 399, 400, 401, 402, 0, 404, 405, - 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, - 0, 434, 435, 436, 437, 438, 0, 439, 440, 0, - 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, - 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, - 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, - 466, 467, 0, 468, 0, 470, 471, 472, 473, 474, - 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 2725, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, - 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, - 0, 0, 0, 116, 117, 0, 118, 119, 120, 2726, - 122, 123, 124, 0, 768, 2727, 770, 771, 0, 130, - 131, 132, 133, 134, 135, 0, 0, 136, 137, 772, - 773, 140, 0, 141, 142, 143, 144, 0, 0, 2728, - 0, 2729, 148, 149, 150, 151, 152, 2730, 154, 155, - 156, 0, 157, 158, 159, 160, 161, 162, 0, 2731, - 164, 165, 166, 2732, 2733, 2734, 2735, 0, 0, 2736, - 172, 173, 174, 175, 176, 177, 178, 783, 784, 181, - 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, - 189, 190, 191, 192, 193, 0, 0, 194, 195, 785, - 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, - 0, 205, 206, 207, 208, 0, 210, 211, 212, 213, - 214, 0, 0, 216, 0, 217, 218, 786, 220, 0, - 221, 0, 222, 2737, 0, 2738, 225, 226, 2739, 2740, - 229, 0, 230, 0, 0, 0, 233, 0, 234, 235, - 236, 237, 238, 239, 240, 2741, 242, 243, 244, 245, - 0, 246, 247, 248, 249, 250, 251, 0, 252, 2742, - 0, 255, 256, 257, 258, 259, 793, 794, 0, 795, - 0, 263, 2743, 2744, 266, 2745, 268, 269, 270, 271, - 272, 273, 0, 0, 274, 2746, 276, 2747, 0, 278, - 279, 280, 0, 0, 281, 282, 283, 284, 285, 2941, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 802, 2749, - 804, 308, 309, 310, 0, 0, 312, 313, 2751, 315, - 0, 0, 317, 806, 319, 320, 321, 0, 322, 323, - 0, 0, 324, 325, 326, 0, 0, 327, 0, 2753, - 330, 2754, 0, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 0, 343, 344, 0, 2755, 347, 348, - 0, 350, 351, 352, 0, 353, 354, 355, 356, 357, - 358, 0, 359, 360, 361, 810, 363, 364, 365, 366, - 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 0, 380, 381, 2756, 383, 384, - 385, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 0, 398, 399, 400, 401, 402, 2757, - 404, 0, 406, 407, 408, 2759, 410, 411, 816, 413, - 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 2942, 427, 0, 429, 0, 430, 431, - 0, 432, 2761, 434, 435, 436, 437, 438, 0, 819, - 820, 0, 0, 441, 442, 0, 444, 0, 0, 446, - 447, 2762, 449, 450, 451, 452, 453, 0, 0, 454, - 455, 456, 457, 458, 459, 2764, 0, 461, 462, 463, - 464, 465, 0, 824, 0, 468, 2765, 470, 471, 472, - 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, - 479, 480, 481, 504, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 493, 494, 495, 496, 0, 0, - 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, - 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, - 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, - 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, - 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, - 141, 142, 143, 144, 145, 0, 0, 0, 147, 148, - 149, 150, 151, 152, 0, 154, 155, 156, 0, 157, - 158, 159, 160, 161, 162, 0, 0, 164, 165, 166, - 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 182, 0, - 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, - 192, 193, 0, 0, 194, 195, 196, 197, 198, 0, - 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, - 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, - 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, - 0, 231, 232, 233, 0, 234, 235, 236, 237, 238, - 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, - 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, - 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, - 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, - 0, 274, 0, 276, 0, 0, 278, 279, 280, 0, - 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, - 310, 311, 0, 312, 313, 0, 315, 0, 316, 317, - 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, - 325, 326, 0, 0, 327, 328, 0, 330, 0, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 0, 343, 344, 345, 0, 347, 348, 349, 350, 351, - 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, - 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 0, 404, 405, 406, - 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, - 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, - 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, - 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, - 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, - 467, 0, 468, 0, 470, 471, 472, 473, 474, 0, - 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 504, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, - 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, - 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, - 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, - 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, - 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, - 147, 148, 149, 150, 151, 152, 0, 154, 155, 156, - 0, 157, 158, 159, 160, 161, 162, 0, 0, 164, - 165, 166, 0, 0, 0, 0, 0, 0, 0, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, - 190, 191, 192, 193, 0, 0, 194, 195, 196, 197, - 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, - 0, 222, 0, 0, 0, 225, 226, 505, 0, 665, - 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, - 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, - 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, - 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, - 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, - 273, 0, 0, 274, 0, 276, 0, 0, 278, 279, - 666, 0, 0, 281, 282, 283, 284, 285, 506, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, - 308, 309, 310, 311, 0, 312, 313, 0, 315, 0, - 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, - 0, 324, 325, 326, 0, 0, 327, 328, 0, 330, - 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 0, 343, 344, 345, 0, 347, 348, 349, - 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, - 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, - 386, 387, 388, 389, 390, 667, 392, 393, 394, 395, - 396, 397, 0, 398, 399, 400, 401, 668, 0, 404, - 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, - 432, 0, 434, 435, 436, 437, 438, 0, 669, 440, - 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, - 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, - 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, - 465, 466, 467, 0, 468, 0, 470, 471, 472, 473, - 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 504, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, + 400, 401, 402, 2752, 404, 0, 406, 407, 408, 2754, + 410, 411, 811, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 2938, 427, 0, + 429, 0, 430, 431, 0, 432, 2756, 434, 435, 436, + 437, 438, 0, 814, 815, 0, 0, 441, 442, 0, + 444, 0, 0, 446, 447, 2757, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 2759, + 0, 461, 462, 463, 464, 465, 0, 819, 0, 468, + 2760, 470, 471, 472, 473, 474, 0, 0, 475, 0, + 0, 476, 477, 478, 479, 480, 481, 504, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 493, 494, + 495, 496, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, @@ -317242,7 +316207,7 @@ static const yytype_int16 yytable[] = 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, - 235, 236, 237, 238, 754, 240, 0, 242, 243, 244, + 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, @@ -317289,13 +316254,13 @@ static const yytype_int16 yytable[] = 202, 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, - 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, - 0, 234, 235, 236, 237, 238, 844, 240, 0, 242, + 226, 505, 0, 663, 0, 230, 0, 231, 232, 233, + 0, 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, 276, - 0, 0, 278, 279, 280, 0, 0, 281, 282, 283, + 0, 0, 278, 279, 664, 0, 0, 281, 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, 312, @@ -317307,13 +316272,13 @@ static const yytype_int16 yytable[] = 355, 356, 357, 358, 0, 359, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, - 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 0, 383, 384, 385, 386, 387, 388, 389, 390, 665, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, - 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, + 401, 666, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, 437, - 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, + 438, 0, 667, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, 0, @@ -317338,7 +316303,7 @@ static const yytype_int16 yytable[] = 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, - 232, 233, 0, 234, 235, 236, 237, 238, 239, 240, + 232, 233, 0, 234, 235, 236, 237, 238, 839, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, @@ -317356,12 +316321,12 @@ static const yytype_int16 yytable[] = 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, - 390, 667, 392, 393, 394, 395, 396, 397, 0, 398, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, - 436, 437, 438, 0, 669, 440, 0, 0, 441, 442, + 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, @@ -317371,7 +316336,7 @@ static const yytype_int16 yytable[] = 494, 495, 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, - 113, 114, 115, 0, 0, 0, 0, 0, 1629, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, @@ -317404,12 +316369,12 @@ static const yytype_int16 yytable[] = 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 0, 398, 399, 400, 401, 402, 0, 0, 405, 406, + 388, 389, 390, 665, 392, 393, 394, 395, 396, 397, + 0, 398, 399, 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, 432, 0, - 434, 435, 436, 437, 438, 0, 439, 440, 0, 0, + 434, 435, 436, 437, 438, 0, 667, 440, 0, 0, 441, 442, 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, 462, 463, 464, 465, 466, @@ -317420,7 +316385,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, - 0, 0, 116, 117, 0, 118, 119, 120, 0, 122, + 1625, 0, 116, 117, 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, 0, 0, 0, @@ -317435,7 +316400,7 @@ static const yytype_int16 yytable[] = 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, 235, 236, - 237, 238, 1791, 240, 0, 242, 243, 244, 245, 0, + 237, 238, 239, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, 271, 272, @@ -317453,7 +316418,7 @@ static const yytype_int16 yytable[] = 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 0, 398, 399, 400, 401, 402, 0, 404, + 396, 397, 0, 398, 399, 400, 401, 402, 0, 0, 405, 406, 407, 408, 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, 430, 431, 0, @@ -317483,7 +316448,7 @@ static const yytype_int16 yytable[] = 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, 234, - 235, 236, 237, 238, 2120, 240, 0, 242, 243, 244, + 235, 236, 237, 238, 1787, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, 270, @@ -317531,7 +316496,7 @@ static const yytype_int16 yytable[] = 211, 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, 233, - 0, 234, 235, 236, 237, 238, 2135, 240, 0, 242, + 0, 234, 235, 236, 237, 238, 2116, 240, 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, 268, @@ -317561,1136 +316526,1013 @@ static const yytype_int16 yytable[] = 470, 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 766, 0, 0, 0, 0, 0, 0, 0, 0, + 496, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, - 0, 118, 119, 120, 767, 122, 123, 124, 0, 768, - 769, 770, 771, 0, 130, 131, 132, 133, 134, 135, - 0, 0, 136, 137, 772, 773, 140, 0, 141, 142, - 143, 144, 0, 0, 774, 0, 775, 148, 149, 150, - 151, 152, 776, 154, 155, 156, 0, 157, 158, 159, - 160, 161, 162, 0, 777, 164, 165, 166, 778, 779, - 780, 781, 0, 0, 782, 172, 173, 174, 175, 176, - 177, 178, 783, 784, 181, 0, 182, 0, 183, 184, + 0, 118, 119, 120, 0, 122, 123, 124, 125, 126, + 0, 128, 129, 0, 130, 131, 132, 133, 134, 135, + 0, 0, 136, 137, 138, 139, 140, 0, 141, 142, + 143, 144, 145, 0, 0, 0, 147, 148, 149, 150, + 151, 152, 0, 154, 155, 156, 0, 157, 158, 159, + 160, 161, 162, 0, 0, 164, 165, 166, 0, 0, + 0, 0, 0, 0, 0, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, 192, 193, - 0, 0, 194, 195, 785, 197, 198, 0, 199, 200, + 0, 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, 207, 208, - 0, 210, 211, 212, 213, 214, 0, 0, 216, 0, - 217, 218, 786, 220, 0, 221, 0, 222, 787, 0, - 788, 225, 226, 0, 789, 229, 0, 230, 0, 0, - 0, 233, 0, 234, 235, 236, 237, 238, 239, 240, - 791, 242, 243, 244, 245, 0, 246, 247, 248, 249, - 250, 251, 0, 252, 792, 0, 255, 256, 257, 258, - 259, 793, 794, 0, 795, 0, 263, 796, 797, 266, - 798, 268, 269, 270, 271, 272, 273, 0, 0, 274, - 799, 276, 800, 0, 278, 279, 280, 0, 0, 281, - 282, 283, 284, 285, 0, 287, 288, 289, 290, 291, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 0, + 217, 218, 219, 220, 0, 221, 0, 222, 0, 0, + 0, 225, 226, 505, 0, 229, 0, 230, 0, 231, + 232, 233, 0, 234, 235, 236, 237, 238, 2131, 240, + 0, 242, 243, 244, 245, 0, 246, 247, 248, 249, + 250, 251, 0, 252, 0, 254, 255, 256, 257, 258, + 259, 260, 261, 0, 262, 0, 263, 0, 0, 266, + 0, 268, 269, 270, 271, 272, 273, 0, 0, 274, + 0, 276, 0, 0, 278, 279, 280, 0, 0, 281, + 282, 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 802, 803, 804, 308, 309, 310, 0, - 0, 312, 313, 805, 315, 0, 0, 317, 806, 319, + 302, 303, 304, 305, 0, 307, 308, 309, 310, 311, + 0, 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, 323, 0, 0, 324, 325, 326, - 0, 0, 327, 0, 807, 330, 808, 0, 333, 334, + 0, 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 0, 343, - 344, 0, 809, 347, 348, 0, 350, 351, 352, 0, + 344, 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 361, - 810, 363, 364, 365, 366, 0, 367, 368, 369, 370, + 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 0, - 380, 381, 811, 383, 384, 385, 0, 387, 388, 389, + 380, 381, 0, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, 398, - 399, 400, 401, 402, 813, 404, 0, 406, 407, 408, - 815, 410, 411, 816, 413, 0, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 0, 427, - 0, 429, 0, 430, 431, 0, 432, 818, 434, 435, - 436, 437, 438, 0, 819, 820, 0, 0, 441, 442, - 0, 444, 0, 0, 446, 447, 821, 449, 450, 451, + 399, 400, 401, 402, 0, 404, 405, 406, 407, 408, + 0, 410, 411, 412, 413, 0, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 507, 427, + 428, 429, 0, 430, 431, 0, 432, 0, 434, 435, + 436, 437, 438, 0, 439, 440, 0, 0, 441, 442, + 443, 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, 458, 459, - 823, 0, 461, 462, 463, 464, 465, 0, 824, 0, - 468, 825, 470, 471, 472, 473, 474, 0, 0, 475, - 0, 0, 476, 477, 478, 479, 480, 481, 504, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, - 494, 495, 496, 0, 0, 0, 105, 106, 107, 108, - 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, - 0, 0, 0, 0, 0, 116, 117, 0, 118, 119, - 120, 0, 122, 123, 124, 125, 126, 0, 128, 129, - 0, 130, 131, 132, 133, 134, 135, 0, 0, 136, - 137, 138, 139, 140, 0, 141, 142, 143, 144, 145, - 0, 0, 0, 147, 148, 149, 150, 151, 152, 0, - 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, - 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, - 0, 0, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 0, 182, 0, 183, 184, 185, 186, 187, - 188, 0, 189, 190, 191, 192, 193, 0, 0, 194, - 195, 196, 197, 198, 0, 199, 200, 201, 0, 202, - 203, 204, 0, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 0, 216, 0, 217, 218, 219, - 220, 0, 221, 0, 222, 0, 0, 0, 225, 226, - 505, 0, 229, 0, 230, 0, 231, 232, 233, 0, - 234, 235, 236, 237, 238, 239, 240, 0, 242, 243, - 244, 245, 0, 246, 247, 248, 249, 250, 251, 0, - 252, 0, 254, 255, 256, 257, 258, 259, 260, 261, - 0, 262, 0, 263, 0, 0, 266, 0, 268, 269, - 270, 271, 272, 273, 0, 0, 274, 0, 276, 0, - 0, 278, 279, 280, 0, 0, 281, 282, 283, 284, - 285, 506, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 0, 307, 308, 309, 310, 311, 0, 312, 313, - 0, 315, 0, 316, 317, 318, 319, 320, 321, 0, - 322, 323, 0, 0, 324, 325, 326, 0, 0, 327, - 328, 0, 330, 0, 332, 333, 334, 335, 336, 337, - 338, 0, 340, 341, 342, 0, 343, 344, 345, 0, - 347, 348, 349, 350, 351, 352, 0, 353, 354, 355, - 356, 357, 358, 0, 359, 0, 361, 362, 363, 364, - 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 0, 380, 381, 0, - 383, 384, 385, 386, 0, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 0, 398, 399, 400, 401, - 402, 0, 404, 405, 406, 407, 408, 0, 410, 411, - 412, 413, 0, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 507, 427, 428, 429, 0, - 430, 431, 0, 432, 0, 434, 435, 436, 437, 438, - 0, 439, 440, 0, 0, 441, 442, 443, 444, 445, - 0, 446, 447, 448, 449, 450, 451, 452, 453, 0, - 0, 454, 455, 456, 457, 458, 459, 0, 0, 461, - 462, 463, 464, 465, 466, 467, 0, 468, 0, 470, - 471, 472, 473, 474, 0, 0, 475, 0, 0, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 2, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 10, 568, 568, 0, 0, 0, 0, + 0, 0, 461, 462, 463, 464, 465, 466, 467, 0, + 468, 0, 470, 471, 472, 473, 474, 0, 0, 475, + 0, 0, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 761, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 120, 762, 122, 123, 124, + 0, 763, 764, 765, 766, 0, 130, 131, 132, 133, + 134, 135, 0, 0, 136, 137, 767, 768, 140, 0, + 141, 142, 143, 144, 0, 0, 769, 0, 770, 148, + 149, 150, 151, 152, 771, 154, 155, 156, 0, 157, + 158, 159, 160, 161, 162, 0, 772, 164, 165, 166, + 773, 774, 775, 776, 0, 0, 777, 172, 173, 174, + 175, 176, 177, 178, 778, 779, 181, 0, 182, 0, + 183, 184, 185, 186, 187, 188, 0, 189, 190, 191, + 192, 193, 0, 0, 194, 195, 780, 197, 198, 0, + 199, 200, 201, 0, 202, 203, 204, 0, 205, 206, + 207, 208, 0, 210, 211, 212, 213, 214, 0, 0, + 216, 0, 217, 218, 781, 220, 0, 221, 0, 222, + 782, 0, 783, 225, 226, 0, 784, 229, 0, 230, + 0, 0, 0, 233, 0, 234, 235, 236, 237, 238, + 239, 240, 786, 242, 243, 244, 245, 0, 246, 247, + 248, 249, 250, 251, 0, 252, 787, 0, 255, 256, + 257, 258, 259, 788, 789, 0, 790, 0, 263, 791, + 792, 266, 793, 268, 269, 270, 271, 272, 273, 0, + 0, 274, 794, 276, 795, 0, 278, 279, 280, 0, + 0, 281, 282, 283, 284, 285, 0, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 797, 798, 799, 308, 309, + 310, 0, 0, 312, 313, 800, 315, 0, 0, 317, + 801, 319, 320, 321, 0, 322, 323, 0, 0, 324, + 325, 326, 0, 0, 327, 0, 802, 330, 803, 0, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 0, 343, 344, 0, 804, 347, 348, 0, 350, 351, + 352, 0, 353, 354, 355, 356, 357, 358, 0, 359, + 360, 361, 805, 363, 364, 365, 366, 0, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 0, 380, 381, 806, 383, 384, 385, 0, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 398, 399, 400, 401, 402, 808, 404, 0, 406, + 407, 408, 810, 410, 411, 811, 413, 0, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 0, 427, 0, 429, 0, 430, 431, 0, 432, 813, + 434, 435, 436, 437, 438, 0, 814, 815, 0, 0, + 441, 442, 0, 444, 0, 0, 446, 447, 816, 449, + 450, 451, 452, 453, 0, 0, 454, 455, 456, 457, + 458, 459, 818, 0, 461, 462, 463, 464, 465, 0, + 819, 0, 468, 820, 470, 471, 472, 473, 474, 0, + 0, 475, 0, 0, 476, 477, 478, 479, 480, 481, + 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 493, 494, 495, 496, 0, 0, 0, 105, 106, + 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, + 118, 119, 120, 0, 122, 123, 124, 125, 126, 0, + 128, 129, 0, 130, 131, 132, 133, 134, 135, 0, + 0, 136, 137, 138, 139, 140, 0, 141, 142, 143, + 144, 145, 0, 0, 0, 147, 148, 149, 150, 151, + 152, 0, 154, 155, 156, 0, 157, 158, 159, 160, + 161, 162, 0, 0, 164, 165, 166, 0, 0, 0, + 0, 0, 0, 0, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 0, 182, 0, 183, 184, 185, + 186, 187, 188, 0, 189, 190, 191, 192, 193, 0, + 0, 194, 195, 196, 197, 198, 0, 199, 200, 201, + 0, 202, 203, 204, 0, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 0, 216, 0, 217, + 218, 219, 220, 0, 221, 0, 222, 0, 0, 0, + 225, 226, 505, 0, 229, 0, 230, 0, 231, 232, + 233, 0, 234, 235, 236, 237, 238, 239, 240, 0, + 242, 243, 244, 245, 0, 246, 247, 248, 249, 250, + 251, 0, 252, 0, 254, 255, 256, 257, 258, 259, + 260, 261, 0, 262, 0, 263, 0, 0, 266, 0, + 268, 269, 270, 271, 272, 273, 0, 0, 274, 0, + 276, 0, 0, 278, 279, 280, 0, 0, 281, 282, + 283, 284, 285, 506, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 0, 307, 308, 309, 310, 311, 0, + 312, 313, 0, 315, 0, 316, 317, 318, 319, 320, + 321, 0, 322, 323, 0, 0, 324, 325, 326, 0, + 0, 327, 328, 0, 330, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 340, 341, 342, 0, 343, 344, + 345, 0, 347, 348, 349, 350, 351, 352, 0, 353, + 354, 355, 356, 357, 358, 0, 359, 0, 361, 362, + 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 0, 380, + 381, 0, 383, 384, 385, 386, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 398, 399, + 400, 401, 402, 0, 404, 405, 406, 407, 408, 0, + 410, 411, 412, 413, 0, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 507, 427, 428, + 429, 0, 430, 431, 0, 432, 0, 434, 435, 436, + 437, 438, 0, 439, 440, 0, 0, 441, 442, 443, + 444, 445, 0, 446, 447, 448, 449, 450, 451, 452, + 453, 0, 0, 454, 455, 456, 457, 458, 459, 0, + 0, 461, 462, 463, 464, 465, 466, 467, 0, 468, + 0, 470, 471, 472, 473, 474, 0, 0, 475, 0, + 0, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 15, 0, 0, - 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, - 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 20, 0, 0, - 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 0, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 27, 0, 0, - 0, 0, 0, 0, 0, 28, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 29, 0, 0, 0, 0, 0, 30, 30, 0, 0, - 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 33, 0, 0, 34, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 37, 0, 0, 0, 38, 38, - 0, 0, 569, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 570, 41 + 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, + 38, 0, 0, 0, 567, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 568 }; static const yytype_int16 yycheck[] = { - 7, 7, 41, 66, 0, 0, 0, 0, 720, 570, - 686, 0, 728, 706, 21, 21, 945, 969, 814, 1181, - 730, 732, 945, 632, 1348, 1537, 1192, 1179, 18, 7, - 739, 1090, 1154, 820, 2131, 1121, 958, 68, 2054, 1608, - 1231, 2057, 68, 21, 33, 958, 1368, 0, 0, 0, - 2082, 1159, 1156, 2085, 1373, 0, 21, 1517, 34, 1648, - 1150, 563, 1651, 634, 561, 569, 561, 958, 639, 570, - 720, 644, 722, 18, 724, 663, 958, 1085, 2513, 564, - 1184, 0, 0, 561, 1092, 1562, 1563, 1005, 1478, 0, - 0, 0, 0, 845, 0, 847, 2511, 0, 1422, 0, - 89, 0, 0, 1055, 0, 0, 679, 0, 0, 40, - 0, 0, 2022, 2127, 2526, 0, 2533, 0, 0, 0, - 0, 0, 24, 99, 2073, 593, 18, 5, 0, 21, - 21, 2482, 2482, 2175, 2176, 2177, 2364, 1615, 0, 772, - 773, 33, 5, 11, 56, 1766, 703, 15, 5, 41, - 13, 14, 5, 1349, 5, 52, 703, 5, 698, 13, - 14, 1669, 5, 5, 5, 5, 5, 9, 5, 1098, - 5, 804, 13, 14, 5, 851, 68, 5, 13, 14, - 5, 2190, 13, 14, 5, 13, 14, 5, 13, 14, - 9, 5, 5, 2207, 5, 13, 14, 89, 2797, 13, - 14, 5, 13, 14, 1894, 13, 14, 1671, 5, 13, - 14, 5, 2201, 5, 2813, 5, 13, 14, 5, 13, - 14, 5, 9, 95, 4, 42, 60, 5, 5, 9, - 60, 5, 5, 95, 5, 5, 5, 5, 5, 1168, - 109, 29, 1171, 1172, 42, 638, 171, 29, 36, 3, - 4, 5, 172, 1577, 36, 9, 189, 122, 119, 171, - 1047, 2275, 2276, 287, 2278, 11, 285, 309, 3, 15, - 9, 293, 139, 2810, 60, 244, 1194, 171, 954, 8, - 224, 2699, 11, 171, 60, 2945, 15, 1361, 1206, 18, - 19, 20, 1002, 171, 244, 293, 122, 43, 33, 34, - 2639, 124, 288, 2642, 3052, 29, 35, 273, 172, 224, - 309, 137, 36, 2329, 3021, 191, 191, 359, 69, 814, - 2403, 358, 276, 2406, 77, 70, 270, 379, 3083, 75, - 2774, 2450, 335, 77, 4, 88, 814, 161, 3, 9, - 61, 2886, 85, 2888, 88, 75, 8, 109, 69, 11, - 165, 117, 2449, 15, 119, 270, 18, 19, 20, 161, - 443, 117, 2404, 117, 3147, 784, 38, 2966, 5, 443, - 2805, 1167, 132, 122, 983, 967, 11, 110, 1054, 988, - 3012, 2816, 3014, 406, 945, 3133, 129, 806, 3136, 960, - 1023, 1024, 2807, 1103, 363, 110, 38, 172, 1865, 108, - 2432, 2358, 1726, 974, 407, 1038, 132, 1731, 2758, 13, - 14, 235, 370, 363, 110, 287, 331, 168, 501, 442, - 407, 163, 841, 189, 2543, 287, 1956, 501, 1895, 561, - 384, 206, 2446, 235, 2448, 170, 380, 172, 3193, 501, - 75, 305, 3225, 1004, 948, 110, 2991, 222, 2405, 501, - 29, 2361, 455, 0, 496, 3087, 1530, 232, 370, 11, - 284, 210, 216, 15, 501, 380, 211, 11, 11, 438, - 345, 15, 348, 1149, 440, 3223, 370, 501, 1938, 351, - 23, 24, 501, 505, 238, 3192, 2904, 1060, 438, 351, - 219, 43, 370, 418, 320, 407, 440, 496, 2837, 2943, - 11, 316, 2585, 175, 15, 2923, 272, 505, 270, 3169, - 2022, 1006, 277, 407, 3051, 501, 350, 238, 1091, 383, - 350, 277, 282, 75, 513, 440, 2056, 269, 1006, 407, - 418, 570, 501, 175, 504, 197, 3135, 449, 407, 1100, - 1101, 250, 2954, 1236, 505, 1118, 272, 505, 2562, 258, - 2539, 501, 60, 132, 561, 449, 282, 219, 1749, 102, - 289, 304, 166, 570, 350, 490, 959, 453, 501, 1691, - 321, 449, 2084, 2670, 350, 440, 66, 67, 503, 354, - 570, 501, 2059, 2091, 445, 463, 1126, 404, 2209, 501, - 1147, 463, 459, 632, 2945, 2945, 2286, 3134, 2076, 387, - 1147, 463, 1798, 1098, 501, 387, 404, 501, 1027, 487, - 617, 617, 465, 452, 465, 3050, 1920, 1921, 1922, 1781, - 443, 513, 1041, 501, 569, 632, 632, 289, 2092, 497, - 502, 1342, 504, 1349, 487, 2863, 487, 494, 501, 617, - 502, 3058, 504, 706, 675, 3057, 1114, 501, 501, 675, - 501, 499, 617, 501, 632, 503, 663, 664, 501, 501, - 501, 501, 501, 387, 501, 418, 501, 632, 2677, 412, - 501, 505, 1167, 501, 418, 505, 501, 569, 570, 686, - 501, 500, 814, 501, 435, 1361, 1852, 501, 501, 1167, - 501, 440, 1610, 501, 684, 29, 149, 501, 244, 695, - 695, 695, 695, 605, 501, 681, 695, 501, 3143, 501, - 2659, 501, 492, 493, 501, 1424, 3131, 501, 453, 726, - 727, 728, 698, 501, 501, 617, 1442, 501, 501, 505, - 501, 501, 501, 501, 501, 50, 1369, 1370, 492, 493, - 632, 632, 695, 695, 695, 198, 3229, 120, 5, 2791, - 695, 497, 1943, 492, 493, 2665, 687, 394, 395, 488, - 489, 490, 270, 492, 493, 494, 495, 496, 497, 499, - 3185, 490, 39, 503, 120, 163, 695, 695, 501, 397, - 3263, 2795, 501, 675, 695, 695, 695, 695, 411, 695, - 413, 1720, 695, 463, 695, 420, 695, 695, 132, 695, - 695, 1730, 695, 695, 1733, 695, 695, 814, 1484, 2906, - 695, 3246, 695, 695, 695, 695, 695, 487, 3169, 3169, - 193, 1907, 492, 493, 13, 14, 488, 489, 490, 132, - 492, 493, 494, 495, 496, 497, 1333, 119, 1333, 457, - 228, 466, 350, 171, 851, 1347, 25, 193, 1558, 2361, - 981, 463, 1938, 1529, 1530, 1333, 159, 349, 1574, 126, - 345, 176, 1538, 994, 11, 1426, 997, 147, 15, 377, - 1367, 1789, 1367, 1368, 1006, 487, 32, 192, 69, 1471, - 1472, 244, 197, 1559, 1476, 377, 1383, 117, 1383, 1367, - 1368, 1977, 438, 1603, 1503, 2372, 43, 1613, 1820, 1508, - 56, 1510, 1612, 1512, 1614, 1383, 496, 1915, 1821, 1838, - 1498, 4, 465, 503, 1416, 1838, 9, 2307, 2237, 234, - 1491, 1425, 204, 490, 2243, 1426, 117, 2246, 75, 3026, - 1821, 1822, 1823, 1418, 487, 215, 503, 2261, 945, 1821, - 1822, 171, 494, 495, 496, 497, 953, 954, 492, 493, - 494, 495, 496, 497, 200, 501, 963, 29, 137, 966, - 967, 244, 969, 970, 971, 972, 330, 110, 171, 272, - 2482, 2061, 300, 200, 277, 1548, 983, 983, 77, 282, - 77, 988, 988, 494, 495, 496, 497, 2178, 270, 88, - 272, 88, 1708, 2155, 2704, 359, 110, 1004, 1005, 1006, - 363, 272, 2712, 948, 1716, 983, 277, 4, 80, 505, - 988, 132, 9, 293, 1606, 1022, 1055, 89, 983, 2078, - 411, 423, 413, 988, 496, 11, 2330, 2331, 2332, 2333, - 251, 503, 1039, 499, 177, 1167, 407, 503, 159, 1689, - 256, 257, 370, 1050, 1051, 1052, 118, 1054, 1055, 455, - 1802, 499, 1745, 1746, 1747, 503, 948, 43, 329, 2163, - 603, 1770, 605, 2385, 366, 1657, 1716, 382, 501, 1566, - 300, 1566, 1824, 1825, 1081, 438, 1828, 501, 25, 407, - 363, 272, 1798, 501, 31, 1735, 277, 166, 1566, 75, - 1740, 983, 983, 1100, 1101, 238, 988, 988, 2050, 25, - 501, 1132, 1133, 646, 1135, 31, 1132, 1133, 161, 1135, - 2218, 1843, 291, 166, 501, 1847, 2224, 189, 1850, 2579, - 244, 449, 425, 1799, 667, 501, 1018, 1134, 244, 201, - 321, 1138, 1139, 436, 173, 463, 363, 1029, 501, 96, - 370, 3238, 1149, 499, 371, 501, 337, 3163, 3100, 3101, - 1126, 367, 368, 2665, 434, 438, 277, 4, 501, 487, - 1167, 282, 9, 1055, 4, 173, 465, 370, 347, 9, - 349, 177, 502, 501, 161, 505, 2656, 407, 3194, 166, - 407, 2661, 235, 1483, 501, 1485, 1486, 1194, 487, 499, - 137, 501, 501, 503, 25, 3227, 3228, 3149, 377, 1206, - 31, 1333, 501, 1700, 407, 1700, 245, 1183, 501, 665, - 666, 137, 668, 502, 501, 172, 505, 25, 501, 449, - 171, 3237, 1700, 31, 1231, 487, 502, 1903, 455, 505, - 3262, 284, 238, 463, 494, 1367, 1368, 245, 501, 363, - 1132, 1133, 501, 1135, 435, 3261, 449, 363, 235, 206, - 502, 1383, 443, 505, 2576, 502, 2342, 487, 505, 502, - 463, 502, 505, 502, 505, 222, 505, 501, 411, 335, - 413, 501, 484, 502, 2598, 232, 505, 1838, 1870, 1871, - 1872, 1873, 1874, 501, 487, 1877, 1878, 1879, 1880, 1881, - 1882, 1883, 1884, 1885, 1886, 438, 335, 284, 501, 989, - 2622, 2463, 992, 501, 425, 371, 137, 13, 14, 266, - 2462, 25, 287, 25, 438, 436, 1813, 31, 1813, 31, - 221, 393, 438, 1932, 396, 2447, 1333, 335, 502, 137, - 287, 505, 371, 503, 2010, 1813, 1332, 1332, 1332, 1332, - 484, 407, 1349, 2266, 291, 492, 493, 494, 495, 496, - 497, 503, 2504, 2461, 1361, 2463, 1853, 314, 1853, 465, - 1367, 1368, 2055, 170, 502, 291, 2690, 505, 407, 463, - 505, 465, 1869, 25, 1869, 1853, 1383, 501, 501, 31, - 1941, 487, 2134, 502, 2136, 501, 505, 502, 171, 455, - 505, 1869, 411, 502, 413, 501, 343, 354, 502, 407, - 347, 1898, 945, 1898, 292, 411, 502, 413, 1905, 505, - 1905, 56, 2364, 2005, 2006, 958, 455, 343, 501, 1426, - 1898, 347, 411, 137, 413, 137, 502, 1905, 502, 505, - 377, 505, 438, 2945, 1566, 1442, 1426, 2137, 484, 2139, - 1937, 1448, 1937, 1940, 221, 1940, 3015, 455, 1945, 152, - 1945, 377, 343, 502, 2241, 2242, 505, 13, 14, 1937, - 291, 1004, 1940, 561, 1471, 1472, 2446, 1945, 2448, 1476, - 502, 1478, 1478, 505, 13, 14, 1483, 1484, 1485, 1486, - 1425, 502, 152, 291, 505, 137, 443, 502, 152, 2200, - 505, 1498, 1499, 13, 14, 502, 1503, 1503, 505, 446, - 1478, 1508, 1508, 1510, 1510, 1512, 1512, 502, 502, 2831, - 505, 505, 343, 1478, 6, 152, 347, 9, 502, 1062, - 446, 505, 1529, 1530, 16, 1503, 502, 38, 1071, 505, - 1508, 1538, 1510, 1425, 1512, 343, 28, 1526, 1503, 347, - 32, 13, 14, 1508, 1087, 1510, 377, 1512, 2264, 2671, - 13, 14, 1559, 2482, 1561, 1098, 2718, 1100, 1101, 1566, - 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1700, 377, - 502, 1578, 1579, 1526, 1526, 1526, 1583, 291, 501, 291, - 1587, 1526, 177, 1590, 1591, 1592, 1593, 1594, 1595, 1596, - 1597, 1598, 2982, 502, 1601, 2654, 505, 502, 272, 502, - 505, 1608, 505, 1610, 502, 200, 1613, 505, 3197, 171, - 3199, 1503, 1503, 13, 14, 446, 1508, 1508, 1510, 1510, - 1512, 1512, 700, 1654, 702, 151, 2792, 1634, 1654, 343, - 272, 3021, 38, 347, 1526, 347, 13, 14, 446, 291, - 147, 147, 1632, 238, 502, 171, 502, 505, 84, 505, - 1657, 13, 14, 455, 161, 161, 152, 3169, 3247, 166, - 166, 1668, 1669, 377, 505, 377, 5, 13, 14, 13, - 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, - 14, 1813, 13, 14, 13, 14, 13, 14, 1580, 13, - 14, 343, 503, 1700, 3, 347, 467, 292, 452, 1706, - 501, 1708, 13, 14, 317, 2266, 501, 8, 215, 215, - 11, 13, 14, 152, 15, 2425, 814, 18, 19, 20, - 2217, 1853, 2217, 13, 14, 377, 358, 359, 235, 235, - 152, 38, 446, 501, 446, 358, 359, 1869, 501, 2217, - 367, 368, 1749, 260, 261, 1752, 1753, 152, 1755, 501, - 57, 358, 359, 37, 3144, 501, 12, 358, 359, 151, - 287, 17, 1654, 1100, 1101, 2481, 1898, 2483, 363, 152, - 26, 110, 345, 1905, 501, 418, 501, 284, 284, 171, - 2709, 38, 1789, 39, 40, 1328, 293, 293, 9, 502, - 501, 1798, 1799, 409, 446, 222, 1785, 2389, 2390, 2951, - 57, 108, 3192, 2555, 2497, 1937, 1813, 2516, 1940, 501, - 217, 296, 222, 1945, 222, 501, 411, 294, 413, 38, - 233, 3145, 3146, 3147, 501, 2536, 5, 5, 501, 501, - 501, 1838, 501, 5, 429, 5, 501, 5, 177, 501, - 435, 97, 5, 438, 370, 148, 1853, 9, 3, 464, - 501, 108, 1859, 298, 99, 1862, 505, 1864, 505, 217, - 284, 200, 1869, 1870, 1871, 1872, 1873, 1874, 175, 502, - 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, - 38, 407, 3048, 377, 1776, 1892, 1893, 187, 188, 1896, - 2385, 1898, 199, 1785, 166, 2847, 1903, 166, 1905, 238, - 282, 3225, 1445, 233, 2827, 501, 418, 2385, 1006, 501, - 418, 88, 505, 56, 56, 418, 263, 418, 1925, 502, - 171, 1928, 511, 449, 152, 1932, 1932, 434, 434, 418, - 1937, 463, 152, 1940, 1941, 95, 1943, 463, 1945, 272, - 272, 501, 199, 250, 38, 503, 1953, 272, 501, 272, - 501, 258, 37, 292, 1932, 416, 256, 257, 416, 499, - 502, 487, 2758, 270, 499, 418, 418, 1932, 418, 2721, - 2722, 2010, 1979, 502, 418, 501, 171, 1984, 370, 502, - 1987, 2573, 460, 502, 502, 2482, 502, 2482, 289, 502, - 505, 1534, 499, 250, 301, 502, 503, 502, 2005, 2006, - 8, 258, 502, 2010, 2482, 502, 501, 15, 3170, 502, - 18, 19, 20, 270, 502, 407, 2945, 2024, 222, 501, - 2027, 505, 2029, 11, 363, 459, 345, 1471, 1472, 2638, - 500, 505, 1476, 501, 505, 52, 511, 510, 416, 277, - 1932, 1932, 349, 2050, 301, 501, 2053, 2053, 418, 180, - 162, 171, 443, 502, 2551, 501, 2551, 449, 505, 215, - 263, 288, 2069, 2069, 371, 505, 380, 367, 368, 1167, - 224, 463, 411, 2551, 413, 2053, 2083, 1620, 309, 2068, - 97, 2576, 2071, 309, 391, 2217, 505, 502, 2053, 501, - 429, 2069, 349, 2100, 2101, 487, 435, 224, 2576, 438, - 2692, 272, 224, 293, 2069, 285, 123, 171, 326, 501, - 455, 501, 2119, 501, 371, 2068, 2068, 2068, 2010, 370, - 152, 152, 152, 2068, 141, 152, 463, 2622, 145, 38, - 2137, 2138, 2139, 272, 391, 287, 2028, 502, 502, 499, - 287, 484, 38, 484, 2622, 502, 502, 502, 502, 56, - 167, 171, 2044, 170, 11, 38, 407, 166, 180, 171, - 418, 2053, 2053, 155, 460, 38, 2205, 502, 185, 288, - 486, 2178, 288, 440, 502, 426, 2068, 2069, 2069, 2071, - 502, 501, 503, 501, 2894, 502, 501, 488, 489, 490, - 502, 492, 493, 494, 495, 496, 497, 96, 449, 484, - 505, 7, 8, 500, 502, 3157, 12, 502, 502, 502, - 2217, 17, 463, 2924, 501, 21, 490, 23, 24, 25, - 26, 27, 2229, 2720, 30, 2720, 501, 33, 34, 505, - 36, 501, 243, 39, 40, 1333, 487, 501, 2830, 272, - 3169, 501, 2720, 418, 152, 502, 200, 152, 152, 418, - 501, 418, 418, 2385, 418, 561, 279, 2264, 279, 2266, - 277, 502, 501, 2758, 500, 171, 2827, 38, 285, 1367, - 1368, 345, 502, 172, 287, 285, 532, 463, 38, 177, - 2758, 289, 505, 89, 38, 1383, 152, 502, 500, 306, - 96, 97, 98, 99, 100, 1838, 277, 502, 500, 1842, - 2307, 2307, 200, 57, 171, 501, 56, 206, 501, 565, - 502, 3027, 329, 2205, 502, 502, 2992, 75, 2994, 184, - 143, 502, 197, 222, 69, 2364, 502, 171, 501, 2307, - 75, 297, 351, 232, 2397, 449, 2831, 502, 287, 152, - 238, 288, 2307, 88, 505, 502, 505, 175, 2355, 502, - 2482, 501, 501, 2831, 108, 501, 2395, 2364, 502, 429, - 38, 967, 502, 38, 502, 502, 2373, 266, 502, 2376, - 505, 2378, 117, 501, 119, 81, 443, 2416, 2385, 2386, - 505, 171, 2389, 2390, 501, 500, 462, 2394, 2395, 502, - 448, 2398, 502, 502, 292, 3106, 502, 505, 1941, 502, - 502, 86, 490, 3115, 502, 2412, 3099, 502, 463, 202, - 117, 38, 501, 224, 83, 314, 190, 2424, 277, 2551, - 503, 277, 503, 503, 503, 503, 1870, 1871, 1872, 1873, - 1874, 687, 503, 1877, 1878, 1879, 1880, 1881, 1882, 1883, - 1884, 1885, 1886, 503, 2576, 199, 8, 503, 2945, 11, - 2945, 503, 3168, 15, 503, 354, 18, 19, 20, 204, - 503, 503, 503, 503, 503, 503, 503, 2945, 1566, 503, - 2477, 38, 2364, 35, 2481, 2482, 2483, 503, 503, 503, - 488, 489, 490, 490, 492, 493, 494, 495, 496, 497, - 2622, 418, 418, 272, 109, 463, 250, 503, 503, 503, - 503, 503, 503, 2395, 258, 503, 503, 503, 814, 503, - 503, 501, 503, 411, 503, 413, 270, 503, 503, 2515, - 2515, 2515, 2515, 2512, 2416, 502, 38, 272, 287, 501, - 9, 501, 277, 1139, 344, 190, 501, 435, 505, 328, - 438, 505, 502, 337, 2551, 501, 38, 301, 152, 2538, - 502, 124, 2541, 152, 38, 359, 502, 359, 38, 502, - 501, 2005, 2006, 501, 38, 505, 2573, 443, 306, 2576, - 88, 501, 133, 277, 248, 189, 321, 429, 501, 443, - 69, 290, 69, 9, 75, 502, 2593, 2594, 2720, 502, - 501, 361, 337, 56, 2601, 349, 490, 448, 270, 287, - 2143, 38, 1700, 429, 501, 2612, 290, 290, 501, 2616, - 2617, 502, 502, 377, 2621, 2622, 202, 371, 502, 2626, - 2512, 287, 2629, 2630, 287, 122, 2758, 2634, 440, 358, - 24, 2638, 2638, 35, 695, 2464, 561, 391, 2132, 2646, - 2893, 1714, 3017, 2422, 2477, 2188, 2538, 3210, 3144, 2541, - 2714, 2522, 3121, 2196, 3218, 2917, 3171, 219, 3180, 3211, - 2638, 2968, 2205, 1154, 2125, 2138, 3178, 2527, 3168, 2481, - 2122, 2456, 3169, 2638, 3169, 3166, 1367, 2684, 2194, 2264, - 1330, 2827, 1120, 982, 2083, 2692, 1685, 2507, 1142, 2327, - 435, 3169, 3155, 982, 1657, 2100, 1684, 3089, 443, 2831, - 1006, 2996, 1144, 21, 2711, 960, 1141, 2069, 514, 990, - 516, 632, 1934, 2720, 520, 1813, 617, 523, 2307, 2306, - 2346, 2938, 1385, 2266, 958, 958, 532, 289, 2271, 958, - 2273, 537, 3092, 958, 2277, 3093, 2279, 1985, 2028, 3206, - 2084, 1954, 1755, 1499, 2025, 2068, 2638, 2638, 2202, 3078, - 604, 2758, 1632, 1941, 36, 1853, 2423, 563, 564, 565, - 1426, 1633, 2646, 758, 27, 89, -1, -1, -1, -1, - -1, 1869, -1, -1, -1, -1, -1, -1, -1, -1, + 7, 0, 41, 7, 726, 0, 0, 0, 561, 0, + 701, 684, 942, 718, 21, 51, 568, 21, 809, 730, + 559, 728, 0, 966, 7, 942, 1533, 0, 1189, 737, + 0, 0, 1177, 630, 1176, 1087, 53, 815, 21, 21, + 33, 1639, 53, 1361, 1642, 18, 1604, 1474, 1151, 2050, + 21, 2068, 2053, 1118, 2071, 718, 2127, 720, 1156, 722, + 1153, 642, 18, 1145, 1228, 1366, 59, 1513, 34, 955, + 632, 1467, 1468, 955, 955, 637, 1472, 661, 842, 1002, + 844, 955, 567, 1082, 568, 1558, 1559, 0, 1181, 562, + 1089, 0, 0, 2123, 0, 0, 677, 2509, 40, 0, + 0, 0, 0, 2476, 2018, 0, 24, 0, 2507, 1052, + 0, 2522, 0, 0, 2107, 0, 0, 0, 0, 0, + 0, 0, 0, 2171, 2172, 2173, 2529, 52, 582, 1611, + 4, 2476, 5, 99, 2360, 9, 0, 13, 14, 5, + 5, 0, 56, 11, 698, 767, 768, 1762, 9, 75, + 5, 698, 5, 5, 5, 23, 24, 5, 13, 14, + 1410, 13, 14, 1660, 5, 1095, 1890, 5, 9, 713, + 5, 9, 1662, 2203, 2186, 848, 5, 799, 13, 14, + 5, 11, 5, 5, 5, 15, 5, 2197, 13, 14, + 13, 14, 13, 14, 13, 14, 5, 5, 69, 5, + 5, 5, 13, 14, 13, 14, 2806, 13, 14, 13, + 14, 5, 5, 5, 5, 5, 42, 2793, 5, 13, + 14, 13, 14, 171, 60, 5, 5, 5, 171, 5, + 119, 95, 124, 2809, 102, 1165, 95, 172, 1168, 1169, + 5, 2271, 2272, 60, 2274, 42, 5, 122, 5, 5, + 5, 636, 5, 60, 287, 177, 2766, 171, 60, 60, + 189, 171, 4, 109, 109, 273, 1044, 9, 1191, 1354, + 147, 11, 11, 2941, 224, 15, 15, 3, 951, 77, + 1203, 3018, 11, 3, 4, 5, 15, 9, 293, 9, + 88, 122, 999, 2695, 29, 119, 224, 168, 108, 285, + 288, 36, 117, 43, 43, 171, 29, 33, 34, 293, + 1952, 397, 172, 36, 132, 29, 238, 77, 358, 309, + 270, 38, 36, 29, 2325, 61, 122, 2446, 88, 2635, + 38, 407, 2638, 69, 3048, 75, 75, 2399, 215, 3141, + 2402, 137, 270, 11, 309, 3077, 119, 15, 85, 11, + 443, 139, 2400, 15, 256, 257, 2700, 13, 14, 2354, + 463, 3008, 499, 3010, 2708, 779, 503, 117, 39, 359, + 501, 457, 330, 1164, 2445, 43, 110, 172, 1051, 210, + 2753, 331, 0, 980, 487, 70, 2962, 801, 985, 2801, + 942, 29, 129, 1100, 132, 957, 2413, 117, 1020, 1021, + 2812, 359, 370, 165, 2803, 110, 2401, 75, 501, 971, + 2052, 206, 2442, 1035, 2444, 3129, 293, 191, 3132, 3221, + 2539, 835, 370, 287, 270, 191, 132, 222, 287, 2939, + 380, 204, 440, 1916, 1917, 1918, 3083, 232, 110, 189, + 250, 1526, 276, 2357, 170, 305, 172, 3047, 258, 1001, + 321, 3188, 380, 277, 272, 126, 370, 3189, 175, 407, + 945, 501, 277, 270, 282, 367, 368, 175, 501, 1142, + 1866, 1867, 1868, 1869, 1870, 418, 1057, 1873, 1874, 1875, + 1876, 1877, 1878, 1879, 1880, 1881, 1882, 351, 1934, 411, + 440, 413, 351, 407, 132, 3163, 216, 270, 2900, 272, + 505, 449, 238, 25, 370, 3219, 496, 1088, 418, 31, + 166, 2018, 440, 501, 350, 501, 438, 2919, 238, 2581, + 513, 505, 272, 383, 320, 2535, 211, 2833, 2558, 568, + 3130, 496, 110, 350, 1115, 449, 149, 505, 163, 2950, + 443, 407, 1233, 350, 282, 1097, 1098, 490, 350, 350, + 384, 443, 559, 501, 316, 3131, 445, 434, 2282, 354, + 503, 568, 407, 2070, 435, 440, 501, 304, 2941, 1819, + 377, 956, 501, 499, 348, 505, 501, 503, 404, 345, + 2077, 1745, 2055, 449, 1687, 198, 1140, 501, 2078, 463, + 2205, 630, 465, 1140, 567, 2666, 2941, 463, 501, 463, + 465, 452, 1146, 228, 463, 2001, 2002, 404, 615, 440, + 1024, 615, 568, 487, 487, 137, 394, 395, 492, 493, + 418, 487, 487, 630, 1038, 501, 630, 1338, 501, 2111, + 5, 1776, 615, 2859, 3046, 501, 501, 504, 502, 500, + 504, 494, 3053, 502, 615, 504, 501, 630, 630, 501, + 501, 3054, 387, 501, 661, 662, 673, 1111, 418, 630, + 501, 2673, 673, 501, 387, 701, 501, 497, 2661, 505, + 499, 459, 501, 387, 503, 412, 501, 684, 501, 501, + 501, 1354, 501, 1606, 2882, 603, 2884, 1848, 1410, 120, + 501, 244, 501, 501, 693, 501, 501, 501, 693, 693, + 693, 120, 693, 505, 505, 453, 349, 501, 501, 501, + 501, 501, 1420, 679, 501, 693, 1438, 724, 725, 726, + 693, 501, 501, 693, 693, 501, 682, 453, 3127, 2643, + 3142, 163, 50, 601, 377, 603, 501, 465, 501, 2787, + 1362, 1363, 501, 685, 501, 501, 501, 713, 501, 379, + 492, 493, 492, 493, 494, 495, 496, 497, 497, 487, + 110, 2791, 193, 492, 493, 494, 495, 496, 497, 291, + 492, 493, 492, 493, 193, 1939, 644, 244, 502, 335, + 693, 505, 3181, 0, 693, 693, 1716, 693, 693, 2987, + 3163, 1330, 693, 693, 693, 693, 1726, 665, 693, 1729, + 693, 18, 809, 693, 21, 693, 693, 1480, 693, 693, + 693, 693, 693, 693, 693, 693, 33, 420, 3163, 161, + 11, 1360, 345, 244, 41, 347, 494, 495, 496, 497, + 3242, 2902, 494, 495, 496, 497, 53, 269, 1903, 3096, + 3097, 848, 59, 2326, 2327, 2328, 2329, 1554, 1570, 272, + 2357, 407, 1525, 1526, 277, 377, 1409, 11, 176, 1412, + 5, 1534, 1785, 466, 38, 1418, 32, 1861, 1407, 1934, + 1422, 501, 986, 200, 192, 989, 2303, 406, 161, 197, + 110, 161, 1555, 57, 75, 438, 166, 1609, 3145, 43, + 56, 200, 1599, 235, 190, 2368, 363, 1891, 69, 455, + 147, 1608, 1499, 1610, 1834, 490, 329, 1504, 1973, 1506, + 1494, 1508, 1911, 442, 161, 3225, 234, 1834, 503, 166, + 1479, 75, 1481, 1482, 446, 1487, 25, 1813, 1814, 1815, + 1812, 2232, 1813, 1814, 108, 942, 1421, 2238, 1422, 1813, + 2241, 1414, 363, 950, 951, 117, 117, 177, 501, 3259, + 244, 3022, 235, 960, 499, 235, 963, 964, 503, 966, + 967, 968, 969, 1544, 3, 110, 244, 244, 215, 2476, + 465, 438, 945, 980, 4, 2057, 980, 496, 985, 9, + 25, 985, 1704, 171, 503, 244, 31, 25, 235, 2385, + 2386, 151, 487, 31, 1001, 1002, 1003, 980, 980, 171, + 251, 284, 985, 985, 284, 2150, 501, 1712, 238, 980, + 2174, 171, 1019, 1052, 985, 490, 77, 438, 502, 77, + 1573, 505, 1685, 1562, 423, 199, 501, 88, 161, 1036, + 88, 1795, 177, 166, 501, 407, 496, 284, 137, 465, + 1047, 1048, 1049, 503, 1051, 1052, 293, 66, 67, 1712, + 1741, 1742, 1743, 1817, 363, 200, 2108, 1821, 1766, 25, + 1824, 487, 371, 2381, 382, 31, 2159, 4, 1731, 363, + 455, 1078, 9, 1736, 942, 501, 250, 25, 2659, 29, + 501, 366, 2663, 31, 258, 363, 363, 955, 501, 4, + 1097, 1098, 137, 238, 9, 4, 270, 1819, 407, 137, + 9, 272, 235, 2046, 363, 501, 277, 502, 1125, 1126, + 505, 1128, 13, 14, 1125, 1126, 2214, 1128, 502, 1792, + 1127, 505, 2220, 173, 1131, 1132, 166, 301, 300, 2575, + 80, 8, 501, 1001, 11, 1142, 2643, 502, 15, 89, + 505, 18, 19, 20, 438, 1839, 455, 292, 501, 1843, + 321, 284, 1846, 411, 1693, 413, 173, 1164, 3159, 502, + 438, 438, 505, 3234, 663, 664, 337, 666, 118, 1722, + 151, 137, 501, 2569, 1727, 349, 411, 335, 413, 438, + 1146, 411, 370, 413, 1191, 502, 501, 434, 505, 137, + 171, 1059, 291, 3194, 501, 245, 1203, 371, 370, 502, + 1068, 502, 505, 559, 505, 3222, 3223, 501, 438, 978, + 370, 13, 14, 371, 1180, 171, 1084, 391, 363, 407, + 501, 1228, 991, 501, 501, 994, 1899, 1095, 245, 1097, + 1098, 502, 3233, 8, 505, 407, 11, 501, 426, 189, + 15, 3258, 501, 18, 19, 20, 291, 407, 347, 407, + 349, 201, 501, 291, 2572, 499, 3257, 501, 501, 503, + 35, 449, 502, 171, 435, 505, 411, 1806, 413, 501, + 25, 502, 443, 2338, 505, 463, 31, 449, 377, 499, + 502, 501, 1834, 505, 429, 335, 463, 501, 465, 449, + 435, 463, 2688, 438, 13, 14, 513, 455, 343, 487, + 2618, 502, 347, 463, 505, 343, 411, 501, 413, 347, + 1849, 25, 501, 501, 2459, 487, 2458, 31, 335, 502, + 197, 371, 505, 1330, 487, 291, 1865, 487, 502, 501, + 1329, 1928, 377, 2006, 1329, 1329, 13, 14, 1329, 377, + 2443, 501, 219, 291, 300, 2262, 502, 1354, 494, 505, + 567, 568, 501, 1360, 1361, 1894, 484, 407, 2500, 2457, + 2051, 2459, 1901, 221, 502, 132, 2130, 505, 2132, 503, + 502, 502, 171, 505, 505, 502, 502, 343, 505, 505, + 502, 347, 137, 505, 502, 1937, 503, 505, 502, 370, + 407, 505, 159, 502, 1933, 343, 505, 1936, 615, 347, + 1407, 446, 1941, 1410, 502, 455, 6, 505, 446, 9, + 484, 377, 289, 630, 370, 1422, 16, 2360, 502, 502, + 287, 505, 505, 137, 502, 170, 407, 505, 28, 377, + 2826, 1438, 32, 502, 2941, 505, 505, 1444, 455, 502, + 13, 14, 505, 393, 219, 501, 396, 411, 1421, 413, + 695, 407, 697, 809, 3012, 502, 673, 1325, 2236, 2237, + 1467, 1468, 2133, 56, 2135, 1472, 1422, 1474, 449, 2442, + 1474, 2444, 1479, 1480, 1481, 1482, 693, 13, 14, 502, + 446, 501, 463, 13, 14, 2196, 484, 1494, 1495, 13, + 14, 1474, 1499, 449, 221, 1499, 171, 1504, 446, 1506, + 1504, 1508, 1506, 1474, 1508, 272, 487, 463, 292, 2827, + 277, 13, 14, 152, 289, 282, 1499, 1499, 1525, 1526, + 501, 1504, 1504, 1506, 1506, 1508, 1508, 1534, 1499, 1522, + 343, 487, 152, 1504, 152, 1506, 291, 1508, 2260, 13, + 14, 13, 14, 152, 1522, 501, 2476, 38, 1555, 1522, + 1557, 2978, 1522, 1522, 501, 1562, 1563, 1564, 1565, 1566, + 1567, 1568, 1569, 1570, 2667, 13, 14, 1574, 1575, 2714, + 502, 370, 1579, 1441, 272, 96, 1583, 291, 272, 1586, + 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 343, 171, + 1597, 3018, 347, 38, 3192, 3193, 455, 1604, 132, 1606, + 13, 14, 1609, 2655, 13, 14, 13, 14, 407, 13, + 14, 488, 489, 490, 84, 492, 493, 494, 495, 496, + 497, 152, 377, 1630, 467, 159, 452, 2788, 1645, 343, + 13, 14, 501, 347, 1645, 317, 187, 188, 13, 14, + 501, 1648, 13, 14, 152, 3243, 501, 1003, 13, 14, + 449, 172, 1659, 1660, 13, 14, 3163, 501, 425, 13, + 14, 501, 1530, 377, 463, 37, 13, 14, 2207, 436, + 13, 14, 1628, 358, 359, 358, 359, 260, 261, 367, + 368, 501, 358, 359, 152, 206, 1693, 503, 487, 358, + 359, 446, 1097, 1098, 152, 1702, 152, 1704, 287, 345, + 501, 222, 501, 418, 2257, 256, 257, 501, 9, 501, + 2262, 232, 502, 488, 489, 490, 3143, 492, 493, 494, + 495, 496, 497, 409, 501, 12, 222, 2434, 945, 217, + 17, 296, 446, 222, 294, 222, 501, 501, 1745, 26, + 38, 1748, 1749, 277, 1751, 266, 5, 1615, 282, 233, + 559, 147, 39, 40, 5, 2477, 5, 2479, 501, 501, + 501, 3188, 501, 980, 5, 161, 287, 501, 985, 5, + 166, 501, 5, 501, 148, 2705, 3, 38, 1785, 9, + 464, 298, 505, 99, 69, 1792, 38, 2551, 1781, 505, + 75, 502, 284, 314, 233, 217, 57, 166, 1015, 1806, + 166, 282, 2493, 88, 2512, 2947, 377, 418, 1164, 1026, + 97, 501, 1819, 88, 501, 418, 367, 368, 56, 215, + 418, 2532, 56, 263, 505, 463, 418, 1834, 502, 177, + 418, 511, 117, 354, 119, 1052, 272, 152, 152, 235, + 95, 272, 1849, 501, 38, 272, 272, 108, 1855, 501, + 3, 1858, 200, 1860, 501, 37, 499, 416, 1865, 1866, + 1867, 1868, 1869, 1870, 416, 96, 1873, 1874, 1875, 1876, + 1877, 1878, 1879, 1880, 1881, 1882, 499, 418, 418, 418, + 418, 1888, 1889, 3044, 503, 1892, 502, 1894, 284, 502, + 238, 425, 1899, 171, 1901, 559, 502, 293, 502, 501, + 2843, 502, 436, 502, 460, 502, 2823, 502, 1125, 1126, + 177, 1128, 502, 222, 1921, 502, 502, 1924, 502, 204, + 505, 1928, 443, 501, 1928, 505, 1933, 459, 11, 1936, + 1937, 345, 1939, 200, 1941, 505, 500, 2476, 199, 505, + 416, 172, 1949, 510, 292, 1928, 1928, 501, 511, 277, + 162, 501, 418, 2717, 2718, 180, 171, 1928, 505, 502, + 505, 215, 2753, 263, 501, 380, 1834, 2006, 1975, 288, + 1838, 238, 309, 1980, 1330, 206, 1983, 224, 309, 505, + 502, 443, 501, 272, 224, 224, 293, 272, 326, 250, + 285, 222, 277, 171, 2001, 2002, 455, 258, 501, 2006, + 809, 232, 501, 152, 1360, 1361, 152, 152, 2547, 270, + 463, 2941, 152, 2020, 38, 363, 2023, 8, 2025, 272, + 11, 3166, 287, 502, 15, 292, 499, 18, 19, 20, + 484, 502, 484, 502, 38, 266, 321, 2634, 434, 2046, + 301, 2594, 2049, 287, 56, 2049, 171, 8, 11, 38, + 11, 1407, 337, 502, 15, 16, 17, 18, 19, 20, + 502, 502, 2069, 411, 166, 413, 2049, 2049, 502, 1937, + 502, 2064, 502, 501, 35, 180, 501, 501, 2049, 2086, + 2087, 429, 43, 314, 502, 502, 2064, 435, 349, 50, + 438, 2064, 500, 503, 2064, 2064, 2103, 502, 484, 2103, + 502, 502, 502, 499, 171, 418, 502, 503, 2115, 501, + 371, 501, 501, 2106, 75, 155, 501, 288, 486, 288, + 2103, 2103, 440, 354, 505, 243, 2133, 2134, 2135, 38, + 391, 460, 2103, 2686, 490, 505, 418, 7, 8, 272, + 501, 152, 12, 200, 411, 809, 413, 17, 418, 152, + 435, 21, 152, 23, 24, 25, 26, 27, 443, 279, + 30, 418, 2201, 33, 34, 279, 36, 2174, 435, 39, + 40, 438, 418, 418, 500, 502, 171, 2716, 501, 38, + 345, 502, 2889, 505, 285, 38, 463, 287, 152, 59, + 502, 277, 500, 171, 1003, 500, 502, 501, 501, 56, + 2207, 184, 75, 502, 1421, 502, 1562, 143, 502, 2920, + 3153, 502, 197, 171, 502, 176, 502, 501, 2225, 297, + 288, 502, 505, 502, 351, 501, 96, 97, 98, 99, + 100, 192, 449, 3163, 287, 152, 197, 8, 502, 505, + 11, 501, 175, 429, 15, 532, 502, 18, 19, 20, + 38, 38, 502, 2260, 502, 2262, 81, 171, 219, 220, + 502, 462, 505, 443, 35, 448, 501, 86, 505, 501, + 2138, 2823, 500, 234, 490, 501, 563, 202, 502, 502, + 502, 117, 1499, 502, 505, 38, 1095, 1504, 502, 1506, + 463, 1508, 502, 502, 502, 501, 2303, 8, 289, 2303, + 11, 3023, 224, 83, 15, 1522, 190, 18, 19, 20, + 277, 272, 277, 503, 275, 2988, 2184, 2990, 503, 503, + 2303, 2360, 503, 490, 2192, 418, 503, 503, 289, 503, + 418, 292, 2303, 2201, 502, 111, 112, 1693, 38, 1003, + 503, 503, 503, 503, 2351, 503, 503, 503, 503, 38, + 501, 503, 2391, 2360, 272, 1164, 503, 2393, 109, 1576, + 503, 503, 2369, 38, 503, 2372, 503, 2374, 57, 503, + 9, 503, 503, 503, 2381, 2382, 463, 503, 2385, 2386, + 503, 503, 503, 2390, 2391, 287, 503, 2394, 503, 501, + 2429, 3102, 503, 503, 2262, 503, 503, 503, 685, 2267, + 344, 2269, 2941, 501, 3095, 2273, 3111, 2275, 505, 501, + 505, 187, 188, 328, 337, 190, 501, 2424, 502, 108, + 38, 382, 152, 502, 152, 124, 8, 38, 1645, 11, + 2437, 502, 359, 15, 38, 359, 18, 19, 20, 502, + 501, 501, 38, 3165, 443, 306, 505, 88, 219, 133, + 1806, 501, 248, 35, 277, 8, 189, 443, 429, 501, + 964, 69, 15, 290, 69, 18, 19, 20, 2475, 2476, + 2477, 9, 2479, 75, 502, 502, 252, 253, 254, 255, + 256, 257, 501, 361, 260, 261, 175, 56, 448, 490, + 287, 270, 429, 1849, 38, 501, 290, 488, 489, 490, + 1164, 492, 493, 494, 495, 496, 497, 290, 219, 1865, + 199, 501, 2511, 377, 502, 2508, 2511, 2511, 289, 202, + 2511, 1330, 502, 287, 485, 287, 502, 488, 489, 490, + 122, 492, 493, 494, 495, 496, 497, 440, 1894, 500, + 2547, 2534, 358, 24, 2537, 1901, 35, 2260, 2190, 693, + 2823, 1360, 1361, 2069, 2503, 1772, 1117, 1676, 979, 979, + 1135, 250, 2569, 3151, 1781, 2572, 1134, 1648, 2086, 258, + 3085, 2323, 2992, 1675, 21, 1137, 2103, 1933, 289, 630, + 1936, 270, 2589, 2590, 957, 1941, 3139, 2303, 987, 1930, + 2597, 367, 368, 615, 2934, 2302, 2342, 955, 1407, 3088, + 1374, 2608, 955, 955, 955, 2612, 2613, 3089, 2476, 3202, + 2617, 2618, 301, 1981, 2070, 2622, 2024, 1950, 2625, 2626, + 2021, 1751, 1495, 2630, 3163, 2648, 27, 2634, 1132, 59, + 2634, 2710, 3214, 2913, 3117, 2503, 2504, 219, 3167, 3176, + 3207, 2648, 1151, 2964, 514, 2121, 516, 2134, 3165, 2452, + 520, 2634, 2634, 523, 2523, 3174, 2118, 3162, 14, 2479, + 349, 2198, 532, 2634, 1422, 1409, 1330, 1360, 1710, 2128, + 2064, 2460, 3074, 2680, 1628, 2475, 1937, 1327, 2436, 2518, + 2891, 2688, 371, 602, 2435, 3143, 3014, 1629, 3206, -1, + -1, 561, 562, 563, -1, -1, 1360, 1361, -1, -1, + 2707, -1, 391, -1, -1, 481, 482, 289, -1, 2716, + -1, 1928, -1, -1, -1, -1, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, -1, -1, -1, + -1, 601, 602, 603, -1, -1, 289, -1, -1, -1, + -1, -1, -1, 1407, -1, 615, 2753, -1, -1, 619, + -1, -1, -1, 1562, -1, 52, -1, -1, -1, -1, + 630, 631, 632, -1, -1, -1, 636, 637, -1, -1, + -1, 2639, -1, -1, -1, -1, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, -1, 2795, 2006, + -1, 661, 662, 663, 664, -1, 666, -1, -1, -1, + 97, -1, -1, -1, 2843, -1, -1, 2024, -1, 679, + -1, 2804, -1, -1, -1, 685, 2823, -1, -1, 2826, + 2827, -1, -1, 2040, -1, -1, 123, -1, -1, -1, + 1117, -1, 2049, -1, -1, -1, 2843, -1, -1, -1, + 710, -1, -1, 713, 141, -1, -1, 2064, 145, -1, + -1, 2207, 2859, -1, -1, -1, -1, 36, -1, -1, + -1, -1, -1, 2870, 2871, -1, -1, 2874, -1, -1, + 167, -1, -1, 170, 744, 745, 746, 747, 748, -1, + -1, 559, -1, -1, 1693, -1, 2103, 2894, 185, 2106, + -1, -1, -1, -1, -1, 2888, -1, 2890, 1562, -1, + -1, -1, -1, -1, 2911, -1, 488, 489, 490, -1, + 492, 493, 494, 495, 496, 497, -1, 96, -1, 98, + -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2800, -1, 2941, 488, 489, 490, -1, 492, + 493, 494, 495, 496, 497, -1, 8, -1, -1, 11, + -1, -1, -1, 15, -1, 2823, 18, 19, 20, 2952, + 2953, -1, -1, 1467, 1468, -1, -1, 2974, 1472, -1, + -1, 2978, -1, 12, 2978, -1, -1, -1, 17, -1, + 277, 2988, -1, 2990, 2201, 2992, -1, 26, 285, 2996, + -1, -1, -1, 3000, -1, 2978, -1, 1806, -1, -1, + 39, 40, -1, -1, -1, 3012, -1, 2978, -1, 306, + -1, 3018, -1, -1, 3018, 2883, 3023, -1, -1, -1, + -1, 3028, -1, -1, -1, 2381, -1, -1, -1, 1693, + 8, -1, 329, 11, -1, 3018, -1, 15, -1, -1, + 1849, -1, -1, -1, -1, -1, -1, 3018, -1, -1, + -1, -1, -1, -1, -1, -1, 1865, -1, 97, 3052, + -1, -1, -1, -1, -1, 43, -1, -1, 3075, -1, + -1, -1, 50, 2941, -1, 3068, -1, -1, 3085, 3072, + -1, -1, -1, -1, -1, 1894, 956, 957, -1, -1, + -1, 961, 1901, -1, -1, -1, -1, 75, -1, -1, + 970, 971, -1, -1, 974, -1, -1, -1, -1, -1, + 980, 3118, -1, -1, -1, 985, -1, -1, -1, -1, + 2476, -1, 992, -1, 1933, -1, -1, 1936, 1415, -1, + 1417, 809, 1941, -1, -1, -1, 3143, 1007, -1, 3143, + -1, -1, 1806, 2360, 1648, -1, 3153, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3163, 219, 3165, -1, + 3143, -1, -1, -1, 3157, -1, -1, 145, -1, -1, + -1, -1, 3143, -1, 2391, -1, -1, 3045, -1, -1, + -1, 3188, 964, -1, 3188, 1849, 1056, 3180, -1, -1, + -1, 2547, -1, -1, 3201, 3202, -1, -1, 176, -1, + -1, 1865, -1, -1, -1, 3188, 111, 112, -1, -1, + -1, -1, 2429, -1, 192, -1, 2572, 3188, 3225, 197, + -1, -1, -1, -1, -1, -1, -1, 289, -1, 1099, + 1894, 1101, -1, -1, -1, -1, -1, 1901, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1117, 1118, -1, + -1, -1, 3259, -1, -1, -1, 234, -1, -1, -1, + -1, -1, 2618, -1, -1, -1, -1, -1, -1, 1933, + -1, -1, 1936, -1, -1, -1, 1146, 1941, -1, -1, + 1150, 1151, 187, 188, -1, -1, -1, -1, -1, -1, + -1, 2508, -1, 1163, -1, 3163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2799, -1, -1, -1, -1, 603, 604, 605, - 1898, -1, -1, -1, -1, -1, -1, 1905, 2847, -1, - -1, 617, -1, 2945, 96, 621, 98, -1, 100, 2808, - 2827, -1, -1, 2830, 2831, -1, 632, 633, 634, -1, - -1, -1, 638, 639, -1, -1, -1, -1, -1, 1937, - 2847, -1, 1940, -1, -1, -1, -1, 1945, -1, -1, - -1, -1, -1, -1, -1, -1, 2863, 663, 664, 665, - 666, 1167, 668, -1, 1120, 1471, 1472, 2874, 2875, -1, - 1476, 2878, -1, -1, -1, 681, -1, -1, -1, -1, - -1, 687, -1, -1, -1, -1, -1, -1, -1, 814, - 2897, -1, 698, -1, 3, -1, 5, -1, -1, -1, - -1, -1, 2891, 2892, 710, -1, -1, 561, 2915, -1, - -1, -1, -1, -1, -1, -1, 2808, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, -1, 743, 2945, 2482, - -1, 747, 748, 749, 750, 2389, 2390, -1, -1, -1, - -1, -1, -1, -1, -1, 2847, -1, -1, -1, -1, - -1, -1, -1, -1, 2507, 2508, -1, 2956, 2957, -1, - -1, 2978, -1, -1, -1, 2982, 2982, -1, -1, -1, - -1, -1, -1, -1, -1, 2992, -1, 2994, -1, 2996, - -1, -1, -1, 3000, -1, -1, -1, 3004, -1, 2891, - 2892, -1, 111, 112, 2982, -1, -1, -1, 3015, -1, - -1, -1, -1, -1, 3021, 3021, -1, 2982, -1, -1, - 3027, -1, -1, -1, -1, 3032, -1, 1333, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3169, -1, -1, - -1, -1, -1, 3021, -1, -1, -1, -1, -1, -1, - -1, 1657, -1, -1, -1, -1, 3021, -1, -1, -1, - -1, 1367, 1368, -1, 2956, 2957, -1, 3056, -1, -1, - -1, -1, 3079, -1, -1, -1, -1, 1383, 187, 188, - -1, 1006, 3089, 3072, 12, -1, -1, 3076, -1, 17, - -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, - 2643, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 39, 40, -1, -1, 3122, -1, -1, -1, 2217, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2573, - -1, -1, -1, -1, -1, -1, -1, 3144, 3144, -1, - -1, -1, -1, 252, 253, 254, 255, 256, 257, -1, - 3157, 260, 261, 959, 960, -1, -1, -1, 964, -1, - 814, 3168, 3169, 1419, 3056, 1421, 3144, 973, 974, 97, - -1, 977, 3161, -1, -1, -1, -1, 983, -1, 3144, - 3072, -1, 988, -1, 3076, 3192, 3192, -1, -1, 995, - -1, -1, -1, -1, -1, 3184, -1, -1, 3205, 3206, - -1, -1, -1, -1, 1010, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3192, -1, -1, -1, -1, -1, - -1, -1, 3229, -1, -1, -1, -1, 3192, -1, -1, - -1, -1, 514, -1, 516, -1, -1, -1, 520, -1, - -1, 523, 1167, -1, -1, -1, -1, -1, 2692, -1, - -1, -1, -1, 1059, -1, -1, 3263, -1, 367, 368, - 1566, 2804, -1, -1, 1870, 1871, 1872, 1873, 1874, 3161, - -1, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, - 1886, -1, -1, -1, 2827, -1, -1, 2385, -1, -1, - -1, -1, 3184, -1, -1, -1, 1102, -1, 1104, -1, + 1180, 289, -1, -1, 1184, -1, -1, 2534, 1188, -1, + 2537, -1, -1, -1, -1, 1003, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 514, -1, 516, -1, 38, + -1, 520, -1, -1, 523, -1, -1, 252, 253, 254, + 255, 256, 257, -1, -1, 260, 261, -1, 57, -1, + 2716, -1, 1866, 1867, 1868, 1869, 1870, -1, -1, 1873, + 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1120, 1121, -1, -1, -1, -1, - 1126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, -1, -1, 621, - -1, -1, -1, -1, 2887, -1, -1, 1153, 1154, -1, - -1, -1, 1006, -1, -1, -1, -1, -1, -1, -1, - 1166, -1, -1, -1, -1, -1, -1, -1, 8, -1, - -1, 11, 481, 482, -1, 15, -1, 1183, 18, 19, - 20, 1187, -1, -1, 2482, 1191, 2830, -1, -1, -1, - -1, -1, -1, -1, 1700, -1, -1, -1, -1, 2005, - 2006, -1, 2945, 43, -1, -1, -1, -1, 1333, -1, - 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 95, -1, -1, 710, -1, - -1, -1, -1, -1, -1, 75, 1692, -1, -1, -1, - -1, -1, 1367, 1368, -1, -1, 1702, -1, 1704, -1, - -1, 1707, -1, 2551, -1, -1, -1, 1713, 1383, 1715, - -1, 743, -1, -1, -1, 747, 748, 749, 750, -1, - -1, 1727, -1, -1, -1, -1, 1732, 147, 2576, -1, - 1736, 1737, 1738, 1739, -1, 1741, 1742, -1, -1, -1, - -1, 161, -1, -1, -1, -1, 166, -1, -1, -1, - -1, 171, -1, -1, -1, -1, 3049, 1813, -1, -1, - 180, -1, -1, 1167, 184, -1, -1, -1, -1, 1325, - -1, -1, -1, 1329, 2622, -1, -1, -1, -1, 1335, - -1, -1, -1, -1, -1, -1, 176, -1, -1, -1, - 1346, 1347, 1348, -1, -1, 215, -1, 1853, -1, -1, - -1, -1, 192, -1, -1, -1, -1, 197, -1, -1, - -1, -1, -1, 1869, -1, 235, -1, -1, -1, -1, - -1, -1, -1, -1, 1380, -1, -1, -1, -1, 1385, + -1, -1, -1, -1, -1, -1, -1, 2753, 2207, -1, + -1, 1688, -1, -1, 382, -1, -1, -1, -1, 108, + 109, 1698, -1, 1700, -1, -1, 1703, 2634, 117, -1, + -1, -1, 1709, -1, 1711, -1, 488, 489, 490, -1, + 492, 493, 494, 495, 496, 497, 1723, -1, -1, -1, + 619, 1728, -1, -1, -1, 1732, 1733, 1734, 1735, -1, + 1737, 1738, 1322, -1, -1, -1, 1326, -1, -1, -1, + -1, 1331, 367, 368, -1, -1, -1, -1, -1, -1, + -1, 2827, -1, 1343, -1, -1, 175, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1164, -1, -1, -1, + -1, -1, -1, 532, -1, -1, -1, 2001, 2002, -1, + 199, -1, -1, 1373, 1374, -1, -1, 485, -1, -1, + -1, -1, -1, -1, 492, 493, 494, 495, 496, 497, + -1, -1, -1, 562, 563, -1, -1, -1, -1, -1, + -1, 710, -1, -1, -1, -1, -1, 559, -1, 1409, + -1, 559, 1412, 2207, 1414, 1415, -1, 1417, 1418, -1, + -1, 250, -1, 8, -1, -1, 11, -1, -1, 258, + 15, -1, -1, -1, -1, 744, 745, 746, 747, 748, + -1, 270, 2381, 272, -1, -1, 481, 482, -1, -1, + -1, -1, -1, -1, -1, 2941, -1, 2804, 43, -1, + -1, -1, -1, -1, -1, 50, 501, -1, -1, -1, + -1, -1, 301, -1, 1474, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1487, -1, 1489, + 75, -1, 1492, -1, 1494, 1495, 2843, 1497, -1, 1499, + -1, -1, -1, -1, 1504, -1, 1506, -1, 1508, -1, + 1510, -1, -1, 1513, -1, -1, 685, -1, -1, -1, + 349, -1, 1330, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1533, -1, 559, -1, 2476, 1538, -1, + -1, 2888, 371, 2890, -1, -1, -1, -1, -1, -1, + -1, -1, 1360, 1361, -1, 1467, 1468, -1, 8, -1, + 1472, 11, 391, -1, 393, 15, -1, 396, 18, 19, + 20, -1, -1, 1573, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 35, -1, 2381, -1, -1, + -1, 176, -1, -1, -1, -1, -1, -1, -1, 1407, + -1, -1, -1, -1, 1604, 2952, 2953, 192, 2547, -1, + -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1625, -1, 1627, -1, 1629, + -1, -1, -1, 2572, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2062, -1, -1, -1, 234, + -1, -1, 961, -1, 0, -1, -1, 809, -1, -1, + -1, 809, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 501, 1673, -1, -1, -1, 3163, -1, 2618, + -1, -1, 2476, 1683, 1684, -1, -1, 1687, 1688, -1, + 1602, -1, -1, -1, -1, -1, -1, -1, 1698, 1699, + 1700, 1701, -1, 1703, 289, 3052, -1, -1, -1, 1709, + -1, 1711, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 3068, 1722, 1723, -1, 3072, -1, 1727, 1728, -1, + -1, -1, 1732, 1733, 1734, 1735, 1648, 1737, 1738, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 43, 95, + -1, 2385, 2386, 2547, 1562, 50, -1, -1, 1758, -1, + -1, -1, 1762, 1763, 1764, 1765, -1, -1, -1, 219, + -1, -1, -1, -1, -1, -1, -1, 2716, 2572, 1779, + 75, -1, -1, -1, -1, 809, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, + 2217, 147, -1, -1, -1, 974, -1, -1, -1, -1, + 3157, -1, -1, -1, 2753, 161, -1, -1, -1, -1, + 166, -1, -1, 992, 2618, 171, -1, -1, -1, -1, + -1, -1, -1, 3180, 180, -1, -1, -1, 184, 289, + -1, 1150, -1, -1, -1, -1, -1, -1, -1, -1, + 145, 1003, -1, -1, 1163, 1003, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, + -1, -1, -1, -1, -1, 1184, -1, -1, -1, -1, + -1, 176, -1, -1, -1, 1693, -1, 1056, 2827, 235, + -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, + 485, -1, 197, 1903, -1, -1, -1, 492, 493, 494, + 495, 496, 497, -1, -1, 1915, 3, -1, 5, -1, + -1, -1, 2716, -1, -1, -1, -1, -1, 1928, -1, + -1, -1, -1, -1, 1934, 2569, -1, -1, 284, 234, + -1, 287, -1, -1, -1, -1, -1, 293, 1117, 1118, + -1, -1, -1, -1, 1866, 1867, 1868, 1869, 1870, 2753, + -1, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, + 1882, -1, -1, 1973, 2608, -1, -1, 1977, -1, 1003, + -1, 1981, 328, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 289, -1, -1, -1, 1806, -1, + -1, -1, 2941, -1, -1, 351, -1, -1, -1, -1, + -1, -1, 1164, -1, -1, -1, 1164, 1326, 2018, -1, + -1, 2438, 1331, -1, 111, 112, -1, -1, -1, -1, + -1, -1, -1, 2827, -1, -1, -1, -1, 488, 489, + 490, 1849, 492, 493, 494, 495, 496, 497, 2465, 2049, + -1, -1, -1, -1, 2688, -1, -1, 1865, -1, -1, + -1, 407, 2062, 2480, 2481, 2482, 2483, 2484, 2485, 2486, + 2487, 2488, 2489, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1894, 382, 434, 2001, + 2002, -1, -1, 1901, -1, -1, -1, 443, -1, -1, + 187, 188, -1, 2103, -1, -1, -1, 2107, -1, -1, + -1, -1, -1, -1, 460, -1, 462, 463, -1, -1, + -1, -1, -1, 2123, -1, 1933, -1, -1, 1936, -1, + -1, -1, -1, 1941, -1, -1, -1, -1, -1, -1, + 1164, -1, -1, -1, -1, -1, -1, 2941, -1, -1, + -1, -1, -1, 499, -1, -1, 502, 503, 504, -1, + -1, -1, -1, -1, -1, 252, 253, 254, 255, 256, + 257, -1, -1, 260, 261, -1, -1, -1, 1330, -1, + -1, -1, 1330, -1, -1, -1, 2186, -1, 1497, -1, + 485, -1, 2826, 2193, -1, -1, -1, 492, 493, 494, + 495, 496, 497, 2203, 2204, 2205, 2206, -1, 1360, 1361, + -1, -1, 1360, 1361, -1, -1, -1, 2217, -1, 2219, + -1, -1, 2222, -1, 3163, -1, -1, 2227, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2239, + -1, -1, -1, -1, -1, 1414, 1415, -1, 1417, -1, + -1, -1, -1, -1, -1, 1407, -1, 2257, -1, 1407, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1898, -1, 234, -1, 0, -1, -1, 1905, - -1, -1, 23, -1, 532, -1, -1, -1, -1, -1, - 1416, -1, 1418, 1419, 284, 1421, 1422, 287, -1, -1, - -1, -1, 2720, 293, -1, -1, 3169, -1, -1, -1, - -1, 1937, -1, -1, 1940, -1, 564, 565, -1, 1945, - -1, 1566, -1, -1, -1, -1, -1, -1, -1, 289, - -1, -1, -1, -1, -1, 76, 8, -1, 328, 11, - 2758, -1, -1, 15, -1, -1, 18, 19, 20, -1, - -1, 92, 1478, -1, -1, -1, -1, -1, -1, 1333, - -1, 351, 964, 35, -1, 1491, -1, 1493, -1, 110, - 1496, 95, 1498, 1499, -1, 1501, -1, 1503, -1, -1, - -1, -1, 1508, -1, 1510, -1, 1512, -1, 1514, -1, - -1, 1517, -1, 1367, 1368, -1, -1, -1, -1, 8, - -1, -1, 11, -1, -1, 146, 15, -1, -1, 1383, - -1, 1537, -1, 2831, -1, 156, 1542, 407, -1, -1, - -1, -1, 382, 147, -1, -1, -1, 168, -1, -1, - -1, -1, 173, -1, 43, -1, -1, 161, -1, 687, - -1, 50, 166, -1, 434, -1, -1, 171, -1, -1, - -1, 1577, -1, 443, -1, 1700, 180, -1, -1, 200, - 184, -1, -1, 2389, 2390, -1, 75, -1, -1, -1, - 460, -1, 462, 463, -1, -1, -1, -1, -1, -1, - -1, -1, 1608, -1, -1, -1, -1, -1, -1, -1, - 2066, 215, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1629, 245, 1631, -1, 1633, 249, 499, - -1, 235, 502, 503, 504, -1, -1, 1643, 1644, -1, - -1, -1, -1, -1, -1, 485, -1, 2945, 488, 489, - 490, -1, 492, 493, 494, 495, 496, 497, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, - -1, 1153, -1, -1, -1, -1, 1682, -1, -1, -1, - 284, -1, -1, 287, 1166, 1691, 1692, 176, 1813, 293, - -1, 312, -1, -1, -1, -1, 1702, 1703, 1704, 1705, - -1, 1707, -1, 192, -1, 1187, 327, 1713, 197, 1715, - -1, 2217, 1566, -1, -1, -1, -1, -1, -1, -1, - 1726, 1727, -1, -1, 328, 1731, 1732, -1, 1853, -1, - 1736, 1737, 1738, 1739, -1, 1741, 1742, 289, -1, 360, - -1, -1, 363, -1, 1869, 234, -1, 351, -1, -1, - 371, -1, -1, 374, -1, -1, 1762, -1, -1, -1, - 1766, 1767, 1768, 1769, -1, 2221, -1, 2573, -1, -1, - -1, -1, 393, 1898, -1, -1, -1, 1783, -1, -1, - 1905, -1, -1, -1, -1, -1, 407, -1, -1, -1, - -1, -1, -1, 414, -1, -1, -1, -1, -1, -1, - 289, -1, 423, 407, -1, -1, 2612, -1, 429, -1, - -1, -1, 1937, 25, -1, 1940, -1, -1, -1, 31, - 1945, -1, -1, -1, -1, -1, 38, -1, -1, -1, - 434, -1, -1, -1, 455, -1, -1, -1, -1, 443, - -1, -1, -1, -1, -1, 57, 1700, 1329, -1, 977, - -1, -1, -1, 1335, -1, -1, 460, -1, 462, 463, - -1, -1, -1, -1, -1, -1, -1, 995, -1, -1, - -1, 3169, -1, -1, -1, -1, -1, -1, -1, 2385, - -1, -1, -1, -1, -1, 8, 2692, -1, 11, -1, - -1, -1, 15, 382, -1, 499, 108, -1, 502, 503, - 504, 1907, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 8, 1919, -1, 11, -1, -1, -1, 15, - 43, -1, 18, 19, 20, 137, 1932, 50, -1, -1, - -1, 1059, 1938, -1, -1, -1, 488, 489, 490, 35, - 492, 493, 494, 495, 496, 497, -1, -1, -1, -1, - -1, -1, 75, -1, -1, -1, -1, -1, -1, 1813, + 2687, 2271, 2272, -1, 2274, -1, -1, -1, -1, -1, + 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1977, -1, -1, -1, 1981, 2482, -1, -1, 1985, - -1, -1, -1, -1, -1, -1, 2442, 199, -1, -1, - -1, -1, 1120, 1121, -1, -1, 485, -1, -1, 1853, - -1, -1, -1, 492, 493, 494, 495, 496, 497, -1, - -1, -1, -1, 2469, -1, 1869, 2022, -1, -1, 1501, - -1, -1, 145, -1, 2830, -1, -1, -1, 2484, 2485, - 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 250, -1, - -1, -1, -1, -1, 1898, 2551, 258, 2053, -1, -1, - -1, 1905, -1, 176, -1, -1, -1, -1, 270, -1, - 2066, -1, -1, 2069, -1, -1, -1, 2073, -1, 192, - 2576, -1, -1, 8, 197, -1, 11, -1, -1, 291, - 15, -1, -1, 1937, -1, -1, 1940, 111, 112, 301, - -1, 1945, 2217, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 111, 112, -1, -1, 43, -1, - -1, 234, -1, -1, -1, 50, 2622, -1, -1, -1, - -1, 2127, -1, 219, -1, -1, -1, -1, -1, -1, - -1, 343, -1, -1, -1, 347, -1, 349, -1, -1, - 75, -1, -1, -1, -1, -1, -1, -1, -1, 1631, - -1, 1633, -1, -1, -1, -1, -1, 945, -1, 371, - -1, 1643, -1, 187, 188, 377, 289, -1, 956, 957, - -1, -1, -1, 961, 962, -1, -1, -1, -1, 391, - 187, 188, -1, -1, 2190, -1, -1, -1, -1, -1, - -1, 2197, -1, 289, -1, -1, -1, -1, -1, -1, - 1682, 2207, 2208, 2209, 2210, -1, -1, -1, -1, -1, - 145, -1, -1, -1, 2720, 2221, 1004, 2223, -1, -1, - 2226, -1, -1, -1, -1, 2231, -1, -1, 252, 253, - 254, 255, 256, 257, 446, 2691, 260, 261, 2244, -1, - -1, 176, -1, -1, -1, 252, 253, 254, 255, 256, - 257, -1, 2758, 260, 261, 2261, -1, 192, -1, 382, - 2385, -1, 197, -1, -1, -1, -1, -1, -1, 2275, - 2276, -1, 2278, -1, -1, -1, -1, -1, -1, -1, - 1762, -1, -1, 1071, 1766, 1767, 1768, 1769, -1, -1, - 1418, 1419, -1, 1421, -1, -1, -1, -1, -1, 234, - -1, 2307, -1, -1, -1, -1, -1, -1, -1, -1, - 1098, -1, 1100, 1101, -1, -1, -1, -1, -1, -1, - 2326, -1, -1, -1, -1, 2831, -1, -1, -1, 2335, - 2336, 2337, -1, -1, -1, -1, 2342, -1, -1, -1, - 2346, -1, -1, 367, 368, -1, -1, -1, 663, 664, - -1, -1, -1, -1, 289, 2361, -1, 2482, -1, -1, - 367, 368, 485, 2217, -1, -1, -1, -1, 1496, 492, - 493, 494, 495, 496, 497, -1, -1, -1, -1, -1, - 1168, -1, -1, 1171, 1172, -1, 1514, -1, -1, 1517, - -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, -1, -1, -1, -1, -1, -1, -1, -1, - 2416, 726, 727, 2419, -1, -1, 2422, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2551, -1, -1, -1, - -1, -1, -1, -1, 2440, -1, 2442, 1919, -1, 2945, - 2446, 2447, 2448, -1, 2450, -1, -1, 382, -1, -1, - -1, 2576, -1, -1, -1, -1, -1, 481, 482, -1, - -1, -1, -1, 2469, -1, 2471, -1, -1, -1, -1, - 2926, -1, -1, -1, 481, 482, -1, 501, 2484, 2485, - 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, -1, -1, - 2946, 2947, -1, -1, -1, -1, -1, 2622, -1, -1, - -1, -1, -1, -1, -1, 2511, -1, -1, -1, 2965, - -1, 2517, 8, -1, -1, 11, -1, -1, -1, 15, - -1, 2527, 18, 19, 20, -1, -1, -1, -1, -1, - -1, 2385, -1, -1, -1, -1, 8, 2543, -1, 11, - -1, -1, -1, 15, -1, -1, 18, 19, 20, -1, - 485, -1, -1, -1, -1, -1, 2562, 492, 493, 494, - 495, 496, 497, 35, 1692, -1, -1, -1, -1, -1, - -1, 43, -1, 2579, 1702, -1, 1704, 1365, 50, 1707, - 2586, 2587, 2588, 2589, -1, 1713, 8, 1715, 1376, 11, - 1378, -1, 2598, 15, -1, 2720, 18, 19, 20, 1727, - 1388, -1, -1, 75, 1732, 2611, -1, -1, 1736, 1737, - 1738, 1739, -1, 1741, 1742, -1, -1, 1405, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2482, -1, - 2636, -1, 2638, 2758, -1, -1, -1, -1, 953, -1, - 2646, -1, -1, 1431, 1432, -1, -1, 3103, 963, -1, - -1, 966, -1, 2659, 969, 970, 971, 972, -1, 2665, - -1, -1, -1, 3169, -1, 2671, -1, -1, -1, -1, - -1, 2677, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2690, 2691, -1, -1, -1, -1, - 1005, -1, 2698, -1, -1, -1, -1, 2551, -1, 38, - -1, -1, -1, -1, 176, -1, 2831, 1022, -1, 2715, - 8, -1, -1, 11, -1, 2197, -1, 15, 57, -1, - 192, -1, 2576, 219, 1039, 197, 2208, 2209, 2210, -1, - -1, -1, -1, -1, -1, 1050, 1051, 1052, -1, 1054, - 1055, 2223, -1, -1, 2226, 43, -1, 219, 220, 2231, - -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 234, -1, -1, -1, 1081, -1, 2622, 108, - 109, -1, -1, -1, -1, -1, -1, 75, 117, 1907, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2795, - -1, -1, -1, 289, -1, -1, -1, 219, -1, -1, - 272, 2807, -1, 275, -1, -1, -1, -1, -1, -1, - 1938, -1, -1, -1, -1, 2821, -1, 289, -1, 1134, - 2945, -1, -1, 1138, 1139, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 145, -1, 1977, - -1, 2857, -1, 2335, 2336, 2337, -1, 1985, -1, -1, - 199, -1, -1, -1, -1, -1, 2720, 289, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2883, 176, 1194, - 1668, 1669, -1, -1, -1, -1, -1, 2893, -1, -1, - -1, 1206, -1, 8, 192, -1, 11, -1, -1, 197, - 15, -1, -1, -1, 2758, -1, -1, -1, -1, -1, - 382, 250, -1, -1, -1, -1, 1231, -1, -1, 258, - 2926, -1, -1, -1, -1, -1, -1, -1, 43, -1, - -1, 270, 1720, 272, -1, 50, 234, -1, 2066, -1, - 2946, 2947, 1730, -1, -1, 1733, -1, -1, -1, -1, - -1, -1, -1, 2959, -1, 2961, -1, -1, 2440, 2965, - 75, -1, 301, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2979, -1, -1, 2982, 2831, -1, -1, + -1, -1, -1, 2303, -1, -1, 1330, -1, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 1627, -1, + 1629, -1, 2322, 1492, -1, -1, -1, -1, -1, -1, + -1, 2331, 2332, 2333, -1, -1, 1360, 1361, 2338, -1, + -1, 1510, 2342, -1, 1513, 43, -1, -1, -1, -1, + -1, -1, 50, -1, -1, -1, -1, 2357, -1, -1, + -1, -1, -1, -1, 1673, -1, -1, -1, -1, 3163, + -1, -1, -1, -1, 1683, -1, -1, 75, 8, -1, + -1, 11, -1, 1407, -1, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 481, 482, -1, -1, -1, 2207, + -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, + 1562, -1, -1, 43, 1562, -1, -1, -1, -1, -1, + 50, 2421, -1, -1, -1, -1, 2426, -1, -1, 2429, + -1, -1, -1, -1, -1, 2435, -1, -1, 2438, -1, + -1, -1, 2442, 2443, 2444, 75, 2446, 145, -1, 1758, + -1, -1, -1, 1762, 1763, 1764, 1765, -1, -1, -1, + -1, -1, -1, -1, -1, 2465, -1, 2467, -1, -1, + -1, -1, -1, 2385, 2386, -1, -1, -1, 176, -1, + 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, + -1, -1, -1, -1, 192, -1, -1, -1, -1, 197, + -1, -1, -1, -1, -1, 2922, -1, 2507, -1, -1, + -1, -1, -1, 2513, -1, -1, -1, -1, -1, 1688, + -1, -1, -1, 2523, -1, 2942, 2943, -1, -1, 1698, + -1, 1700, -1, -1, 1703, -1, 234, -1, 1562, 2539, + 1709, 1693, 1711, 0, 2961, 1693, 176, -1, -1, -1, + -1, -1, -1, -1, 1723, -1, -1, -1, 2558, 1728, + -1, -1, 192, 1732, 1733, 1734, 1735, 197, 1737, 1738, + -1, -1, -1, 2381, -1, 2575, -1, -1, -1, -1, + -1, -1, 2582, 2583, 2584, 2585, -1, -1, -1, 219, + 220, 289, -1, -1, 2594, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 234, -1, 1915, 2607, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 289, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, -1, -1, -1, -1, -1, -1, -1, 3015, - 349, -1, -1, 485, -1, 3021, 488, 489, 490, 3025, - 492, 493, 494, 495, 496, 497, -1, -1, 1816, 1817, - 145, -1, 371, -1, -1, 2517, -1, -1, -1, -1, - -1, -1, -1, -1, 3169, -1, -1, -1, -1, 3055, - 1838, -1, 391, -1, 393, -1, -1, 396, -1, -1, - -1, 176, -1, -1, -1, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, -1, 192, -1, -1, - -1, -1, 197, -1, 382, -1, 3092, -1, -1, -1, - -1, 2945, -1, 2221, -1, -1, -1, 3103, -1, -1, - -1, -1, -1, -1, 2586, 2587, 2588, 2589, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 234, - -1, -1, -1, -1, -1, 3131, -1, -1, -1, -1, - -1, -1, -1, 1448, -1, -1, -1, -1, 3144, 3145, - 3146, 3147, -1, -1, -1, -1, -1, -1, -1, 3155, - -1, -1, 0, 1941, -1, -1, -1, -1, -1, -1, - -1, -1, 501, -1, -1, -1, -1, -1, 1483, -1, - 1485, 1486, -1, -1, 289, -1, -1, -1, -1, 3185, - -1, -1, -1, 1498, 1499, -1, 3192, 485, -1, -1, - -1, -1, -1, -1, 492, 493, 494, 495, 496, 497, - -1, -1, -1, -1, 3210, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2342, -1, 2698, -1, 2346, 3225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2632, -1, 2634, -1, -1, -1, 95, -1, + -1, -1, 272, 2643, -1, 275, -1, -1, 2648, -1, + -1, -1, -1, -1, 1806, -1, -1, 2569, 1806, 289, + -1, 2661, 292, -1, -1, -1, -1, 2667, 2476, 1693, + -1, -1, -1, 2673, -1, -1, -1, -1, -1, -1, + -1, -1, 3099, -1, 382, -1, 2686, 2687, -1, -1, + 147, -1, -1, -1, 2694, -1, -1, 1849, -1, -1, + -1, 1849, -1, -1, 161, -1, -1, -1, -1, 166, + -1, 2711, -1, 1865, 171, -1, -1, 1865, -1, -1, + -1, -1, -1, 180, -1, -1, -1, 184, -1, -1, + -1, -1, -1, -1, 1903, -1, -1, -1, -1, 2547, + -1, -1, 1894, -1, -1, -1, 1894, -1, -1, 1901, + -1, -1, 382, 1901, -1, -1, -1, -1, 215, -1, + -1, -1, -1, -1, 2572, 1934, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2688, -1, 235, -1, + -1, 1933, 1806, -1, 1936, 1933, -1, 485, 1936, 1941, + -1, 2791, -1, 1941, 492, 493, 494, 495, 496, 497, + -1, -1, -1, 2803, 1973, -1, -1, -1, -1, -1, + 2618, -1, 1981, -1, -1, 8, -1, 2817, 11, -1, + -1, -1, 15, -1, -1, 1849, -1, 284, -1, -1, + 287, -1, -1, -1, -1, -1, 293, -1, -1, -1, + -1, 1865, -1, -1, -1, -1, -1, -1, -1, -1, + 43, -1, -1, 2853, -1, 485, -1, 50, 488, 489, + 490, -1, 492, 493, 494, 495, 496, 497, -1, -1, + 1894, 328, -1, -1, -1, 505, -1, 1901, -1, 2879, + -1, -1, 75, -1, 2193, -1, -1, -1, -1, -1, + -1, 2891, -1, 2062, 351, 2204, 2205, 2206, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2716, 1933, + 2219, -1, 1936, 2222, 2826, -1, -1, 1941, 2227, -1, + -1, -1, 2922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1561, 95, -1, -1, - -1, -1, 1567, 1568, 1569, 1570, 1571, 1572, 1573, -1, - -1, -1, -1, 1578, 1579, -1, -1, 382, 1583, -1, - 2058, -1, 1587, -1, -1, 1590, 1591, 1592, 1593, 1594, - 1595, 1596, 1597, 1598, -1, -1, 1601, -1, -1, -1, - -1, -1, -1, 1608, -1, 1610, -1, -1, -1, 147, - -1, -1, 2090, 2091, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 161, 2442, 3169, -1, -1, 166, 1634, - -1, 967, -1, 171, -1, -1, -1, -1, -1, -1, - -1, -1, 180, -1, -1, -1, 184, -1, -1, -1, - -1, 2469, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1668, 1669, -1, 2484, 2485, 2486, 2487, - 2488, 2489, 2490, 2491, 2492, 2493, -1, 215, -1, -1, - 485, 0, -1, -1, -1, -1, -1, 492, 493, 494, - 495, 496, 497, -1, -1, -1, -1, 235, -1, -1, - -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 31, -1, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, - 49, -1, -1, -1, -1, -1, 1072, -1, -1, 58, - -1, -1, -1, -1, 1749, -1, 284, 1752, 1753, 287, - 1755, 70, -1, -1, -1, 293, -1, -1, -1, -1, - 2238, 2579, 81, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, 95, -1, -1, 1115, - -1, -1, -1, -1, 1789, -1, -1, 2959, -1, -1, - 328, -1, -1, -1, 113, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2979, 127, 128, - -1, -1, -1, 351, -1, -1, -1, -1, 137, -1, - -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, - -1, -1, 151, -1, 153, 154, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, - -1, -1, 171, 3025, 1859, -1, -1, 1862, -1, 1864, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 407, - -1, -1, -1, 2691, -1, -1, -1, 196, -1, -1, - -1, -1, -1, 3055, -1, -1, -1, 1892, 1893, -1, - -1, 1896, 211, -1, -1, -1, 434, -1, -1, 1235, - -1, -1, -1, -1, -1, 443, 1242, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 237, -1, - 1925, -1, 460, 1928, 462, 463, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1943, -1, - -1, -1, -1, -1, 25, -1, -1, -1, 1953, -1, - 31, -1, -1, -1, -1, -1, -1, 38, -1, -1, - -1, 499, -1, -1, 502, 503, 504, -1, -1, -1, - -1, -1, -1, -1, 1979, -1, 57, -1, -1, 1984, - -1, -1, 1987, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 315, -1, -1, 318, - -1, -1, -1, 8, 2482, -1, 11, -1, -1, -1, - 15, 16, 17, 18, 19, 20, -1, -1, -1, 2024, - -1, -1, 2027, -1, 2029, -1, -1, 108, 347, -1, - 35, -1, -1, -1, -1, -1, -1, 356, 43, -1, - -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, - -1, 370, -1, -1, -1, -1, 137, -1, 377, -1, - -1, -1, 381, -1, -1, -1, -1, -1, -1, -1, - 75, -1, 391, -1, -1, -1, -1, -1, 2083, -1, - -1, -1, -1, -1, 403, -1, -1, -1, 407, -1, - -1, -1, -1, -1, -1, 2100, 2101, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 426, 2926, -1, - 1446, -1, -1, -1, 2119, -1, -1, -1, 199, -1, - -1, -1, 441, -1, -1, 444, -1, -1, 2946, 2947, - 449, 1467, -1, 1469, -1, 1471, 1472, 1473, -1, -1, - 1476, -1, -1, 1479, 463, -1, 1482, 2965, -1, -1, - -1, 1487, -1, -1, 1490, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 487, 250, - -1, 176, -1, 2178, -1, -1, -1, 258, -1, -1, - -1, -1, 501, -1, -1, 504, -1, 192, -1, 270, - -1, -1, 197, -1, -1, -1, 1532, -1, -1, -1, - 1536, -1, -1, 1539, 1540, 1541, -1, -1, -1, 1545, - 291, -1, -1, 1549, 219, 220, -1, -1, -1, -1, - 301, -1, -1, -1, 2229, -1, -1, -1, -1, 234, - -1, 2709, -1, -1, 8, -1, 2714, 11, -1, -1, - -1, 15, 16, 17, 18, 19, 20, -1, -1, -1, + -1, -1, 2942, 2943, -1, 2753, -1, 661, 662, -1, + 407, -1, 145, -1, -1, 2955, -1, 2957, -1, -1, + -1, 2961, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2975, -1, 434, 2978, -1, + -1, -1, -1, 176, -1, -1, 443, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, + -1, -1, -1, 460, 197, 462, 463, -1, -1, -1, + 724, 725, 3012, -1, -1, -1, -1, -1, 3018, 2827, + -1, 3021, 2331, 2332, 2333, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 343, -1, 38, -1, 347, 272, 349, 43, - 275, 1607, -1, -1, -1, -1, 50, -1, -1, -1, - -1, -1, -1, -1, 289, 3103, -1, 292, 2766, 2767, - 371, -1, 3, -1, -1, -1, 377, 8, -1, -1, - 11, 75, -1, -1, 15, 16, 17, 18, 19, 20, - 391, -1, -1, -1, -1, 1651, -1, -1, -1, -1, - -1, -1, -1, -1, 35, -1, -1, 38, -1, -1, - -1, 1667, 43, -1, -1, -1, 1672, -1, -1, 50, + -1, 234, 499, -1, -1, 502, 503, 504, 2217, -1, + -1, 3051, -1, -1, -1, 2207, -1, -1, -1, 2207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2355, -1, -1, -1, -1, -1, -1, -1, -1, 2364, - -1, -1, -1, -1, 75, 446, -1, -1, 2373, -1, - -1, 2376, -1, 2378, -1, -1, -1, 382, -1, -1, - -1, 2386, -1, -1, -1, -1, -1, -1, -1, 2394, - 2395, -1, -1, 2398, -1, -1, -1, -1, -1, -1, - -1, -1, 176, -1, -1, -1, -1, 2412, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 192, 2424, - -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3088, -1, + -1, -1, -1, 21, -1, -1, 289, -1, -1, 3099, + -1, -1, -1, 31, -1, 33, 34, -1, -1, -1, + -1, -1, 2421, -1, -1, -1, 44, -1, -1, -1, + -1, 49, -1, -1, -1, -1, -1, 3127, -1, -1, + 58, -1, -1, 2941, -1, -1, -1, -1, -1, 3139, + 3140, 3141, 70, 3143, -1, -1, -1, -1, -1, -1, + -1, 3151, -1, 81, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, 95, -1, 2338, + -1, -1, -1, 2342, -1, -1, -1, -1, -1, -1, + -1, 3181, -1, 2207, -1, 113, -1, -1, 3188, 382, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, + 128, -1, -1, -1, 2513, -1, 3206, -1, -1, 137, + -1, -1, -1, -1, -1, 143, -1, -1, -1, -1, + -1, 3221, -1, 151, -1, 153, 154, -1, -1, 2381, + -1, -1, -1, 2381, -1, -1, 950, -1, -1, 167, + -1, -1, -1, 171, -1, -1, 960, -1, -1, 963, + -1, -1, 966, 967, 968, 969, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 25, -1, 196, 2438, + -1, -1, 31, 2582, 2583, 2584, 2585, -1, -1, 38, + -1, -1, -1, 211, -1, -1, -1, -1, 1002, -1, + -1, -1, 485, -1, -1, -1, 2465, -1, 57, 492, + 493, 494, 495, 496, 497, 1019, -1, -1, -1, 237, + -1, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, + 2489, -1, 1036, -1, 2476, -1, -1, -1, 2476, -1, + -1, -1, -1, 1047, 1048, 1049, -1, 1051, 1052, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, + -1, -1, -1, -1, -1, 3163, -1, 2381, -1, -1, + -1, -1, -1, -1, 1078, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, + -1, -1, -1, -1, -1, 2694, -1, 315, -1, -1, + 318, -1, -1, -1, -1, 2547, -1, -1, -1, 2547, + -1, -1, -1, -1, -1, -1, 2575, -1, -1, -1, + 942, -1, -1, 1127, -1, -1, -1, 1131, 1132, 347, + 2572, 953, 954, -1, 2572, -1, 958, 959, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 219, 220, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2934, 2935, -1, -1, - 234, -1, -1, -1, -1, 176, -1, 2945, -1, -1, + 199, -1, 370, -1, -1, -1, -1, -1, -1, 377, + 0, -1, 2476, 381, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 391, -1, -1, 2618, -1, -1, 1001, + 2618, -1, -1, -1, -1, 403, -1, 1191, -1, 407, + 3, -1, -1, -1, -1, 8, -1, -1, 11, 1203, + -1, 250, 15, 16, 17, 18, 19, 20, 426, 258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 485, 192, -1, 488, 489, 490, 197, 492, 493, 494, - 495, 496, 497, -1, -1, -1, -1, -1, 272, -1, - 505, 275, -1, -1, -1, -1, -1, -1, 219, 220, - -1, -1, -1, -1, -1, 289, -1, -1, 292, 1855, - -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, - -1, 1867, 1868, -1, 1870, 1871, 1872, 1873, 1874, -1, - -1, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, - 1886, 1887, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, - -1, 292, -1, -1, -1, -1, -1, -1, 2593, 2594, - -1, -1, -1, -1, -1, -1, 2601, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2612, 382, -1, - -1, 2616, 2617, -1, -1, -1, 2621, -1, -1, -1, - -1, 2626, -1, -1, 2629, 2630, -1, -1, -1, 2634, + -1, 270, 35, 441, 1228, 38, 444, -1, 2687, -1, + 43, 449, -1, 2547, -1, -1, -1, 50, -1, -1, + -1, -1, 291, -1, -1, 463, 1068, -1, -1, -1, + -1, -1, 301, -1, -1, 95, -1, -1, 2572, -1, + -1, -1, 75, -1, -1, -1, -1, -1, -1, 487, + -1, -1, -1, 1095, 2716, 1097, 1098, -1, 2716, -1, + -1, -1, -1, 501, -1, -1, 504, -1, -1, -1, + -1, -1, -1, -1, 343, -1, -1, -1, 347, -1, + 349, -1, -1, -1, 2618, -1, -1, 147, -1, -1, + -1, 2753, -1, -1, -1, 2753, -1, -1, -1, -1, + -1, 161, 371, -1, -1, -1, 166, -1, 377, -1, + -1, 171, -1, -1, -1, -1, -1, -1, -1, -1, + 180, -1, 391, 1165, 184, -1, 1168, 1169, -1, -1, + -1, -1, -1, -1, -1, -1, 2955, -1, -1, -1, + -1, -1, -1, 176, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 215, 2975, -1, -1, 192, + -1, -1, -1, -1, 197, 2827, -1, -1, -1, 2827, + -1, -1, -1, -1, -1, 235, -1, 446, -1, -1, + -1, -1, 2716, -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2646, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1989, -1, -1, -1, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, -1, -1, -1, -1, -1, 2005, - 2006, 382, 2008, 2009, -1, -1, -1, -1, -1, 2684, - -1, -1, -1, -1, 2020, -1, -1, 2023, -1, -1, - -1, 3169, -1, -1, -1, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 2039, 2040, -1, 2711, -1, -1, -1, - -1, 485, -1, -1, 488, 489, 490, -1, 492, 493, - 494, 495, 496, 497, -1, -1, -1, -1, 502, 2065, + 964, 234, 3021, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2753, + 1444, -1, -1, -1, 284, -1, -1, 287, -1, -1, + -1, -1, 3051, 293, -1, -1, -1, -1, -1, 272, + -1, -1, 275, 2922, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1479, 289, 1481, 1482, 292, + -1, -1, -1, 2942, 2943, -1, -1, -1, 328, -1, + 1494, 1495, -1, -1, -1, -1, -1, -1, -1, 2941, + -1, -1, 2961, 2941, -1, -1, -1, -1, -1, -1, + -1, 351, -1, 2827, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1069, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1358, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1369, -1, 1371, + -1, -1, -1, 1557, -1, 1377, -1, -1, -1, 1563, + 1564, 1565, 1566, 1567, 1568, 1569, -1, 407, 1112, 382, + 1574, 1575, 1394, -1, -1, 1579, -1, -1, -1, 1583, + -1, -1, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, + 1594, -1, -1, 1597, 434, -1, -1, -1, -1, -1, + 1604, -1, 1606, 443, -1, 1427, 1428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 460, -1, 462, 463, -1, -1, 1630, 2941, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3099, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 8, -1, -1, 11, 1659, 1660, -1, 15, 499, + -1, -1, 502, 503, 504, -1, -1, -1, -1, -1, + -1, -1, 485, -1, -1, 488, 489, 490, -1, 492, + 493, 494, 495, 496, 497, -1, 43, 8, 1232, -1, + 11, -1, -1, 50, 15, 1239, -1, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, + -1, 3163, 43, -1, -1, 3163, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 485, -1, -1, 488, 489, 490, - -1, 492, 493, 494, 495, 496, 497, -1, -1, -1, - -1, -1, -1, -1, 2799, -1, -1, -1, -1, -1, + -1, 1745, -1, -1, 1748, 1749, -1, 1751, -1, -1, + -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1785, -1, 8, -1, -1, 11, -1, 145, -1, + 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8, -1, -1, 11, -1, -1, -1, - 15, -1, 2847, 18, 19, 20, -1, 2183, 2184, 2185, - -1, -1, 8, -1, -1, 11, -1, -1, 2863, 15, - 16, 17, 18, 19, 20, -1, -1, -1, 43, 2874, - 2875, -1, -1, 2878, -1, 50, -1, -1, -1, 35, - -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, 2897, -1, 50, -1, -1, -1, -1, -1, - 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2915, -1, -1, -1, -1, 8, -1, -1, 11, 75, - -1, -1, 15, 16, 17, 18, 19, 20, -1, -1, + 35, -1, -1, 38, -1, -1, -1, -1, 43, 176, + -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 192, -1, 1659, 1660, -1, + 197, -1, -1, -1, -1, -1, -1, -1, -1, 3163, + 75, 1855, -1, -1, 1858, 176, 1860, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, -1, -1, -1, -1, 2283, 2284, 2285, - 43, -1, 2288, 2289, 2290, 2291, 2292, 50, -1, -1, - 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, - -1, -1, -1, 2978, 2310, 2311, -1, -1, -1, -1, - -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, - -1, 2996, -1, -1, -1, 3000, -1, -1, -1, 3004, - -1, 176, 2338, -1, -1, 2341, -1, -1, -1, -1, - 3015, -1, -1, -1, -1, -1, -1, 192, 2354, -1, - 176, -1, 197, -1, -1, -1, -1, 3032, -1, 2365, - -1, -1, 2368, -1, 2370, -1, 192, -1, 2374, 2375, - -1, 197, -1, -1, 219, 220, -1, -1, -1, -1, - -1, -1, 2388, 2389, 2390, 2391, -1, 2393, -1, 234, - -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3079, -1, -1, -1, 234, -1, - -1, -1, -1, 176, 3089, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, 18, 19, 20, 192, - 275, -1, -1, -1, 197, -1, -1, 2443, -1, -1, - -1, -1, -1, 35, 289, -1, 272, 3122, -1, 275, - -1, 43, -1, -1, -1, -1, 219, 220, 50, -1, - -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, - -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, + -1, 192, -1, -1, -1, -1, 197, 234, -1, -1, + -1, -1, -1, -1, 1888, 1889, -1, -1, 1892, -1, + -1, -1, -1, -1, 1716, -1, -1, -1, 1442, -1, + -1, -1, -1, -1, 1726, -1, -1, 1729, 8, -1, + -1, 11, -1, 234, -1, 15, -1, 1921, -1, 1463, + 1924, 1465, -1, 1467, 1468, 1469, -1, -1, 1472, -1, + -1, 1475, 289, -1, 1478, 1939, -1, -1, -1, 1483, + -1, -1, 1486, 43, -1, 1949, -1, -1, -1, -1, + 50, 176, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 192, 289, -1, + -1, 1975, 197, -1, -1, 75, 1980, -1, -1, 1983, + -1, -1, -1, -1, 1528, -1, 1808, 1809, 1532, -1, + -1, 1535, 1536, 1537, 219, 220, -1, 1541, -1, -1, + -1, 1545, -1, -1, -1, -1, -1, -1, -1, 234, + -1, -1, 1834, -1, -1, -1, 2020, -1, -1, 2023, + -1, 2025, -1, -1, -1, 382, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, 18, 19, 20, + -1, -1, -1, -1, -1, 145, -1, 272, -1, -1, + 275, -1, -1, -1, 35, -1, -1, -1, -1, 1603, + -1, 382, 43, -1, 289, 2069, -1, 292, -1, 50, + -1, -1, -1, -1, -1, -1, 176, -1, -1, -1, + -1, -1, 2086, 2087, -1, -1, -1, -1, -1, -1, + -1, -1, 192, -1, 75, -1, -1, 197, 1642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, - -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, 289, 15, -1, 292, - 3205, 3206, -1, -1, -1, 8, 2542, 382, 11, -1, - -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3229, 43, 382, -1, -1, -1, - -1, -1, 50, -1, -1, -1, -1, 2573, -1, -1, - 43, -1, -1, -1, -1, -1, -1, 50, -1, -1, - -1, -1, -1, -1, 176, -1, -1, 75, 3263, -1, - -1, -1, -1, -1, -1, -1, 2602, -1, -1, -1, - 192, 2607, 75, -1, -1, 197, -1, -1, -1, 2615, - -1, -1, 2618, -1, 2620, -1, -1, -1, 2624, 382, - -1, 2627, 2628, -1, -1, 2631, 2632, 219, 220, 2635, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2645, - 485, -1, 234, 488, 489, 490, -1, 492, 493, 494, - 495, 496, 497, -1, -1, -1, 2662, 145, -1, 485, - -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, 145, -1, -1, -1, 502, -1, -1, -1, - 272, -1, -1, 275, -1, -1, 2692, -1, 176, -1, - -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, - 292, -1, -1, 176, 192, -1, -1, -1, -1, 197, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, - -1, -1, 485, -1, 197, 488, 489, 490, -1, 492, - 493, 494, 495, 496, 497, -1, -1, -1, -1, 502, - -1, -1, -1, -1, -1, -1, 234, -1, -1, -1, + -1, 2115, -1, -1, 1658, 1937, -1, -1, -1, 1663, + -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, + -1, -1, -1, -1, 234, 492, 493, 494, 495, 496, + 497, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, + -1, -1, -1, -1, 485, -1, -1, 488, 489, 490, + 2174, 492, 493, 494, 495, 496, 497, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, + -1, -1, -1, -1, -1, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 192, -1, -1, -1, -1, 197, -1, -1, -1, + -1, 2225, -1, -1, -1, -1, -1, -1, -1, 25, + -1, -1, 2054, -1, -1, 31, -1, -1, 219, 220, + -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 234, 2076, 2077, -1, -1, -1, -1, + 485, 57, -1, 488, 489, 490, -1, 492, 493, 494, + 495, 496, 497, -1, -1, -1, -1, 502, -1, -1, + -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, + -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1851, 289, -1, + -1, 292, 108, -1, -1, -1, -1, -1, -1, 1863, + 1864, -1, 1866, 1867, 1868, 1869, 1870, -1, -1, 1873, + 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, + -1, 137, -1, -1, -1, -1, -1, 2351, -1, -1, + -1, -1, -1, -1, -1, -1, 2360, -1, -1, -1, + -1, -1, -1, -1, -1, 2369, -1, -1, 2372, -1, + 2374, -1, -1, -1, -1, -1, -1, -1, 2382, -1, + -1, -1, -1, -1, -1, 485, 2390, 2391, -1, -1, + 2394, -1, 492, 493, 494, 495, 496, 497, -1, -1, + -1, 382, -1, 199, -1, -1, -1, -1, -1, -1, + -1, 2233, -1, -1, -1, -1, -1, -1, -1, -1, + 2424, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2437, -1, -1, -1, -1, -1, -1, + -1, 1985, -1, -1, -1, 1989, 1990, 1991, 1992, 1993, + 1994, 1995, -1, -1, 250, -1, -1, 2001, 2002, -1, + 2004, 2005, 258, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2016, -1, 270, 2019, -1, -1, -1, -1, + -1, -1, -1, 2027, 2028, 2029, 2030, 2031, 2032, 2033, + 2034, 2035, 2036, -1, -1, 291, -1, -1, -1, -1, + -1, -1, -1, -1, 485, 301, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, 2061, -1, -1, + -1, 502, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8, -1, -1, 11, -1, -1, + -1, 15, 16, 17, 18, 19, 20, 343, -1, -1, + -1, 347, -1, 349, -1, -1, -1, -1, -1, -1, + -1, 35, -1, -1, -1, -1, -1, -1, -1, 43, + -1, -1, -1, -1, -1, 371, 50, -1, -1, -1, + -1, 377, -1, -1, -1, 2589, 2590, -1, -1, -1, + -1, -1, -1, 2597, -1, 391, -1, -1, -1, -1, + -1, 75, -1, -1, 2608, -1, -1, -1, 2612, 2613, + -1, -1, -1, 2617, -1, -1, -1, -1, 2622, -1, + -1, 2625, 2626, -1, -1, -1, 2630, -1, -1, -1, + -1, -1, -1, -1, -1, 2179, 2180, 2181, -1, -1, + -1, -1, -1, -1, 2648, -1, -1, -1, -1, -1, + 446, -1, -1, -1, 2476, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2680, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, - -1, -1, -1, 2829, 2830, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2855, - 2856, -1, -1, -1, -1, 2861, -1, -1, -1, -1, - 2866, -1, 2868, 2869, 2870, -1, -1, 2873, -1, -1, - 2876, 2877, -1, -1, -1, 2881, -1, -1, -1, -1, + -1, -1, 176, 2707, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 192, -1, + -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2279, 2280, 2281, -1, -1, + 2284, 2285, 2286, 2287, 2288, 219, 220, -1, 2292, 2293, + 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, -1, -1, + 234, -1, 2306, 2307, -1, 8, -1, -1, 11, -1, + -1, -1, 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 485, 382, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, 2912, -1, -1, 382, - 502, -1, 2918, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2931, -1, -1, -1, -1, + 2334, 2795, 35, 2337, -1, -1, -1, -1, 272, -1, + 43, 275, -1, -1, -1, -1, 2350, 50, -1, -1, + -1, -1, -1, -1, -1, 289, -1, 2361, 292, -1, + 2364, -1, 2366, -1, -1, -1, 2370, 2371, -1, 23, + -1, -1, 75, -1, -1, -1, -1, -1, -1, 2843, + 2384, 2385, 2386, 2387, -1, 2389, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 2859, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2870, 2871, -1, -1, + 2874, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 76, 2705, -1, -1, -1, -1, 2710, -1, + 2894, -1, -1, -1, -1, 2439, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, 2911, 382, -1, + -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 176, -1, -1, -1, -1, -1, 2761, + 2762, -1, -1, -1, -1, -1, -1, -1, -1, 192, + -1, -1, 146, -1, 197, -1, -1, -1, -1, -1, + -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, + 2974, -1, -1, -1, 168, -1, 219, 220, -1, 173, + -1, -1, -1, -1, -1, -1, -1, -1, 2992, -1, + -1, 234, 2996, -1, 2538, -1, 3000, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 200, -1, 3012, -1, + -1, 485, -1, -1, 488, 489, 490, -1, 492, 493, + 494, 495, 496, 497, 3028, 2569, -1, -1, 502, 272, + -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 289, -1, -1, 292, + -1, 245, -1, -1, 2598, 249, -1, -1, -1, 2603, + -1, -1, -1, -1, -1, -1, -1, 2611, -1, -1, + 2614, 3075, 2616, -1, -1, -1, 2620, -1, -1, 2623, + 2624, 3085, -1, 2627, 2628, -1, -1, 2631, -1, -1, + 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, + 18, 19, 20, 2647, -1, -1, -1, -1, 2930, 2931, + -1, -1, -1, -1, 3118, -1, -1, 35, 312, 2941, + 2664, -1, -1, -1, -1, 43, -1, -1, -1, -1, + -1, -1, 50, 327, -1, -1, -1, -1, -1, 382, + -1, -1, -1, -1, 2688, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, + -1, -1, -1, -1, -1, -1, 360, -1, -1, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + 374, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3201, 3202, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2958, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 407, -1, -1, -1, -1, -1, -1, + 414, 3225, -1, -1, -1, -1, -1, -1, -1, 423, + -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 485, -1, -1, 488, 489, 490, -1, 492, + 493, 494, 495, 496, 497, 3259, -1, -1, 176, 502, + -1, 455, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 192, -1, -1, -1, -1, 197, + -1, 2825, 2826, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2984, -1, + -1, 219, 220, -1, -1, -1, -1, 2851, 2852, -1, + -1, -1, -1, 2857, -1, -1, 234, -1, 2862, -1, + 2864, 2865, 2866, -1, -1, 2869, -1, -1, 2872, 2873, + -1, -1, -1, 2877, -1, -1, -1, -1, -1, -1, + -1, 3163, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 272, -1, -1, 275, -1, -1, + -1, -1, -1, -1, 2908, -1, -1, -1, -1, -1, + 2914, 289, -1, -1, 292, -1, -1, -1, -1, -1, + -1, -1, -1, 2927, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, - 3006, 3007, 3008, -1, 492, 493, 494, 495, 496, 497, - -1, -1, 485, -1, -1, -1, -1, 3023, -1, 492, - 493, 494, 495, 496, 497, -1, -1, 3033, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2954, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2980, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3002, 3003, + 3004, -1, -1, -1, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3020, -1, -1, -1, + -1, -1, -1, -1, -1, 3029, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3077, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3094, -1, - -1, 3097, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3142, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, - 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, - 32, -1, -1, -1, -1, 37, 3182, -1, 40, 41, - -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, - 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 3232, 89, 90, 91, - 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, - 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, - -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, - 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, - 162, 163, 164, 165, -1, 167, -1, 169, 170, 171, - 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, - 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, - 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, - 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, - -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, - 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, - 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, -1, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, - 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, - 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, - -1, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, -1, 487, -1, -1, -1, -1, - 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, - 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, - 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, - -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, - -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, - -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, 132, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, - 165, -1, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, 216, -1, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, - -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, - 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, - 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, - 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, - -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, - -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, -1, -1, -1, -1, -1, -1, 492, 493, 494, - -1, -1, -1, -1, 499, -1, 501, 502, -1, -1, - -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, - 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, - 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, - -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, - -1, 169, 170, 171, 172, 173, 174, 175, 176, 177, - -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, - 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, - -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, - 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, - 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, - 458, -1, -1, 461, -1, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, -1, 487, - -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, - -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, - 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3073, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, - 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, - 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, - 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, - 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, - 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, -1, 230, - 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, - 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, - 411, 412, 413, 414, -1, 416, 417, -1, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, - 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, - -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, - 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, - -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, - 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, + -1, -1, -1, -1, -1, -1, 3090, -1, -1, 3093, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 485, -1, 3113, + 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, + -1, -1, -1, -1, 502, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3138, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - -1, -1, 36, 37, -1, -1, 40, 41, -1, 43, + 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, + -1, -1, -1, 37, 3178, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 84, 85, 86, 87, 3228, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, @@ -318698,7 +317540,7 @@ static const yytype_int16 yycheck[] = 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, - 164, 165, -1, 167, -1, 169, 170, -1, 172, 173, + 164, 165, -1, 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, @@ -318718,20 +317560,20 @@ static const yytype_int16 yycheck[] = 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, + -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, - 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, + 454, 455, 456, 457, 458, -1, -1, 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, - -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, + 484, 485, -1, 487, -1, -1, -1, -1, 492, 493, + -1, -1, -1, -1, -1, 499, -1, 501, 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, @@ -318745,7 +317587,7 @@ static const yytype_int16 yycheck[] = 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, + 127, 128, 129, 130, 131, 132, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, @@ -318777,15 +317619,15 @@ static const yytype_int16 yycheck[] = 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, 494, -1, -1, - -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, + -1, -1, 499, -1, 501, 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, + -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, @@ -318800,7 +317642,7 @@ static const yytype_int16 yycheck[] = 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, + 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, @@ -318820,26 +317662,26 @@ static const yytype_int16 yycheck[] = 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, + 400, 401, 402, 403, -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, - -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, + -1, 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, - -1, -1, 492, 493, 494, -1, -1, -1, -1, 499, + 480, 481, 482, 483, 484, 485, -1, 487, -1, -1, + -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, @@ -318850,13 +317692,13 @@ static const yytype_int16 yycheck[] = -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, - 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, + 163, 164, 165, -1, 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, + 223, 224, 225, 226, 227, 228, -1, 230, 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, @@ -318875,7 +317717,7 @@ static const yytype_int16 yycheck[] = 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, - 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, + 413, 414, -1, 416, 417, -1, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, @@ -318883,12 +317725,12 @@ static const yytype_int16 yycheck[] = -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, - 493, 494, -1, -1, -1, -1, 499, -1, 501, -1, + 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, - -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, + 36, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, @@ -318923,7 +317765,7 @@ static const yytype_int16 yycheck[] = 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, @@ -318938,7 +317780,7 @@ static const yytype_int16 yycheck[] = 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, + 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, @@ -318952,7 +317794,7 @@ static const yytype_int16 yycheck[] = -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, 170, 171, 172, 173, 174, 175, 176, 177, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, @@ -318984,11 +317826,11 @@ static const yytype_int16 yycheck[] = -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, - -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, + -1, -1, -1, 492, 493, 494, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, - 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, @@ -319035,8 +317877,8 @@ static const yytype_int16 yycheck[] = -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, - 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, - 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, + 492, 493, 494, -1, -1, -1, -1, 499, -1, 501, + -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, @@ -319081,16 +317923,16 @@ static const yytype_int16 yycheck[] = -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, + 485, -1, -1, -1, -1, -1, -1, 492, 493, 494, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, - 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, + 28, 29, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, @@ -319137,7 +317979,7 @@ static const yytype_int16 yycheck[] = 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, - -1, 499, -1, 501, 502, -1, -1, -1, 506, 507, + -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, @@ -319155,7 +317997,7 @@ static const yytype_int16 yycheck[] = 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, - -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, + 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, @@ -319178,7 +318020,7 @@ static const yytype_int16 yycheck[] = 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, 407, 408, 409, 410, + 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, @@ -319234,11 +318076,11 @@ static const yytype_int16 yycheck[] = 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, - 454, 455, 456, 457, 458, -1, 460, 461, -1, -1, + 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, - -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, + -1, -1, -1, -1, -1, 499, -1, 501, 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, @@ -319280,11 +318122,11 @@ static const yytype_int16 yycheck[] = 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, + -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, @@ -319330,7 +318172,7 @@ static const yytype_int16 yycheck[] = -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, -1, 405, 406, 407, 408, 409, + 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, @@ -319340,7 +318182,7 @@ static const yytype_int16 yycheck[] = 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, - -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, + -1, 501, 502, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, @@ -319381,7 +318223,7 @@ static const yytype_int16 yycheck[] = 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, + 403, -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, @@ -319437,7 +318279,7 @@ static const yytype_int16 yycheck[] = 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, - 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, + 456, 457, 458, -1, 460, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, @@ -319482,7 +318324,7 @@ static const yytype_int16 yycheck[] = 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, + 399, 400, 401, 402, 403, -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, @@ -319533,7 +318375,7 @@ static const yytype_int16 yycheck[] = 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 402, 403, -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, @@ -319758,7 +318600,7 @@ static const yytype_int16 yycheck[] = 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, + 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, @@ -319773,7 +318615,7 @@ static const yytype_int16 yycheck[] = 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, @@ -319794,10 +318636,10 @@ static const yytype_int16 yycheck[] = 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, -1, -1, + 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, - 507, 508, 509, 3, 4, 5, 6, 7, -1, 9, + 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, @@ -319808,7 +318650,7 @@ static const yytype_int16 yycheck[] = 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, + 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, @@ -319824,7 +318666,7 @@ static const yytype_int16 yycheck[] = 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, @@ -319845,7 +318687,7 @@ static const yytype_int16 yycheck[] = 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, -1, -1, -1, -1, -1, + 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, @@ -319859,7 +318701,7 @@ static const yytype_int16 yycheck[] = 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, + 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, @@ -319869,12 +318711,12 @@ static const yytype_int16 yycheck[] = 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, 216, -1, 218, -1, 220, 221, 222, + 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, @@ -319896,7 +318738,7 @@ static const yytype_int16 yycheck[] = 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, -1, -1, -1, -1, -1, -1, -1, 492, + 483, 484, 485, -1, -1, -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, @@ -319920,12 +318762,12 @@ static const yytype_int16 yycheck[] = 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, + 216, -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, -1, 273, 274, -1, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, @@ -319954,29 +318796,29 @@ static const yytype_int16 yycheck[] = -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, - 49, -1, 51, 52, 53, 54, -1, 56, 57, 58, + 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, -1, 146, -1, 148, + -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, 170, -1, 172, 173, 174, 175, -1, 177, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, -1, 198, + 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, - -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, -1, 273, 274, -1, 276, 277, 278, + 269, 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, @@ -319987,7 +318829,7 @@ static const yytype_int16 yycheck[] = 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, + 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, @@ -319998,132 +318840,189 @@ static const yytype_int16 yycheck[] = -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, -1, -1, -1, -1, - -1, -1, -1, 492, 493, 3, -1, -1, -1, -1, + -1, -1, -1, 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, 508, - 509, -1, -1, 21, 22, 23, 24, 25, 26, 27, - 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, - 38, -1, 40, 41, -1, 43, 44, 45, -1, 47, - 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, - 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, - 68, -1, 70, 71, 72, 73, 74, -1, -1, -1, - 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, - 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, + 509, 3, 4, 5, 6, 7, -1, 9, 10, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 32, -1, -1, -1, -1, 37, -1, -1, 40, 41, + -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, + 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, + 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, + 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, + 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, + -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, + 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, + 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, -1, -1, -1, -1, -1, -1, -1, + 492, 493, -1, -1, -1, -1, -1, 499, -1, 501, + -1, -1, -1, -1, 506, 507, 508, 509, 3, 4, + 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, + 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, + -1, -1, 37, -1, -1, 40, 41, -1, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, + -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, + 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, + 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, + 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, + 165, -1, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, 216, -1, 218, -1, 220, 221, 222, 223, 224, + 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, + -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, -1, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, -1, + 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, + -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, + -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, + 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, + 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + -1, -1, -1, -1, -1, -1, -1, 492, 493, -1, + -1, -1, -1, -1, 499, -1, 501, -1, -1, -1, + -1, 506, 507, 508, 509, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, + 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, + -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, 147, + 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, -1, 160, 161, 162, 163, 164, 165, 166, 167, - -1, 169, -1, -1, -1, 173, 174, 175, -1, 177, + 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, + -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, -1, - 198, 199, 200, 201, 202, 203, -1, 205, -1, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, -1, - 218, -1, -1, 221, -1, 223, 224, 225, 226, 227, - 228, -1, -1, 231, -1, 233, -1, 235, 236, 237, - 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, + 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, + 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, + 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, - 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, 284, 285, 286, -1, - -1, 289, 290, 291, -1, 293, 294, 295, -1, 297, - -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, -1, 273, 274, -1, 276, 277, + 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, + -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, + 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, + 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, - 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, - -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, 434, -1, 436, 437, - 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, - 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, + 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, + -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, + 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, + 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 3, -1, 5, + 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, + -1, -1, -1, -1, 492, 493, -1, -1, -1, -1, + -1, 499, -1, 501, -1, -1, -1, -1, 506, 507, + 508, 509, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 502, 21, 22, 23, 24, 25, - 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, - 56, 57, 58, 59, 60, 61, -1, 63, 64, 65, - 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, - 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, - -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, - 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, - 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, -1, 160, -1, 162, 163, 164, 165, - -1, 167, -1, 169, 170, 171, 172, 173, 174, 175, - 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, - 216, -1, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, -1, 231, 232, 233, 234, -1, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, -1, 273, 274, 275, - 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, - 286, -1, 288, 289, 290, 291, -1, -1, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, -1, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, - 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, - 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, - 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, - 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, - 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, - 456, 457, 458, -1, -1, 461, -1, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, -1, - -1, 487, 3, 4, 5, -1, -1, -1, 9, -1, - -1, -1, -1, -1, -1, 501, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, + 31, 32, -1, -1, -1, -1, 37, -1, -1, 40, + 41, -1, 43, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, - 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, + 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, - 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, + 141, 142, -1, 144, -1, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, - -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, + -1, 172, 173, 174, 175, -1, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, + 191, -1, 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, + 211, 212, 213, 214, -1, 216, -1, 218, -1, -1, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, - 231, 232, 233, 234, -1, 236, 237, 238, -1, -1, + 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, - 281, 282, 283, -1, 285, 286, 287, -1, 289, 290, + 271, -1, 273, 274, -1, 276, 277, 278, 279, 280, + 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, @@ -320133,7 +319032,7 @@ static const yytype_int16 yycheck[] = -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, + 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, @@ -320143,119 +319042,167 @@ static const yytype_int16 yycheck[] = -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, - -1, 492, 493, 494, -1, -1, -1, -1, -1, -1, - 501, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, - -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - -1, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, - 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, -1, 231, 232, 233, 234, -1, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, - 279, 280, 281, 282, 283, -1, 285, 286, -1, 288, - 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, - 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, - 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, - -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, + 481, 482, 483, 484, -1, -1, -1, -1, -1, -1, + -1, 492, 493, 3, -1, -1, -1, -1, 499, -1, + 501, -1, -1, -1, -1, 506, 507, 508, 509, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + -1, 51, 52, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, -1, -1, 76, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, + 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 150, 151, -1, 153, 154, 155, 156, 157, -1, -1, + 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, + 170, -1, 172, 173, 174, -1, 176, 177, -1, 179, + -1, -1, -1, 183, -1, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, 206, -1, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, + -1, 231, 232, 233, 234, -1, 236, 237, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, -1, 273, 274, 275, 276, -1, -1, 279, + 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, + 290, 291, -1, -1, 294, -1, 296, 297, 298, -1, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + -1, 311, 312, -1, 314, 315, 316, -1, 318, 319, + 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, -1, 403, -1, 405, 406, -1, 408, 409, + 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, + 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, + 430, 431, 432, 433, 434, -1, 436, 437, 438, 439, + 440, 441, 442, -1, 444, 445, 446, 447, 448, -1, + 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, + -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 481, 482, 483, 484, -1, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 32, -1, 502, -1, -1, 505, 38, -1, 40, 41, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, + -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, -1, -1, -1, 78, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, + 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, -1, 160, 161, + 162, 163, 164, 165, 166, 167, -1, 169, -1, -1, + -1, 173, 174, 175, -1, 177, -1, 179, -1, 181, + 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, -1, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, -1, 218, -1, -1, 221, + -1, 223, 224, 225, 226, 227, 228, -1, -1, 231, + -1, 233, -1, 235, 236, 237, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, + -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, + 282, 283, 284, 285, 286, -1, -1, 289, 290, 291, + -1, 293, 294, 295, -1, 297, -1, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, + 312, 313, -1, 315, 316, 317, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, + 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, -1, 408, -1, 410, 411, + 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, + 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, + 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, + -1, -1, 444, 445, 446, 447, 448, 449, 450, -1, + 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, - 97, 98, 99, 100, 101, 102, 103, -1, -1, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, - 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, - 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, - -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, - -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, - 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, - 457, 458, -1, -1, 461, -1, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, - 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 501, -1, 21, 22, 23, 24, + 502, 21, 22, 23, 24, 25, 26, 27, 28, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, 63, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, + 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, + 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, + 170, 171, 172, 173, 174, 175, 176, 177, -1, 179, + -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, -1, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, -1, 285, 286, -1, 288, 289, + 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, + 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, + 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, + 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, + 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, + -1, 461, -1, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, -1, -1, 487, 3, 4, + 5, -1, -1, -1, 9, -1, -1, -1, -1, -1, + -1, 501, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, 59, 60, 61, -1, 63, 64, + -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, - -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + -1, 96, 97, 98, 99, 100, 101, 102, 103, -1, + -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, + 155, 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, @@ -320263,12 +319210,12 @@ static const yytype_int16 yycheck[] = 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, - -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, + -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, -1, - 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, + 285, 286, 287, -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, @@ -320282,13 +319229,13 @@ static const yytype_int16 yycheck[] = 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, + 425, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, -1, 5, -1, -1, -1, -1, 492, 493, 494, -1, -1, -1, -1, -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, @@ -320310,13 +319257,13 @@ static const yytype_int16 yycheck[] = 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, + 223, 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, - 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, + 283, -1, 285, 286, -1, 288, 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, @@ -320338,103 +319285,344 @@ static const yytype_int16 yycheck[] = 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 501, -1, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, + 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, + 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, + 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, - 71, 72, 73, 74, -1, -1, -1, 78, 79, 80, - 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, + 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, 160, - -1, 162, 163, 164, 165, -1, 167, -1, 169, -1, - 171, -1, 173, 174, 175, -1, 177, -1, 179, -1, + -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, + 171, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, -1, 198, 199, 200, - 201, 202, 203, -1, 205, -1, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, -1, -1, - 221, -1, 223, 224, 225, 226, 227, 228, -1, -1, - 231, -1, 233, -1, -1, 236, 237, 238, -1, -1, + 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, + 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, + 231, 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, - 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, - 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, + 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, + -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, 407, 408, -1, 410, + 401, 402, 403, -1, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, - 441, -1, -1, 444, 445, 446, 447, 448, 449, 450, - -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, + 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, + -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, - 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, - -1, 70, 71, 72, 73, 74, -1, -1, -1, 78, - 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, + 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, + -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, -1, 171, -1, 173, 174, 175, -1, 177, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, -1, 207, 208, + 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, + 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - -1, -1, 221, -1, 223, 224, 225, 226, 227, 228, - -1, -1, 231, -1, 233, -1, -1, 236, 237, 238, - -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, - 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, - 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, + 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, + 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, + 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, + 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, 407, 408, - -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, + 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, + 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, - 439, 440, 441, -1, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, - -1, -1, 461, -1, 463, 464, 465, 466, 467, 468, + 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, + 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, + -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, -1, 3, 487, 5, + 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 501, -1, -1, 21, 22, 23, 24, 25, + -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, + 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, + 57, 58, 59, 60, 61, -1, 63, 64, 65, 66, + 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, + -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, + 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, + 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, + -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, + -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, + -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, + -1, -1, 289, 290, 291, -1, -1, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, + 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, + -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, + 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, + 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, + 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, + 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 501, -1, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, + -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, + 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, + -1, -1, -1, 78, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, + 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, + 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, + 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, + 165, -1, 167, -1, 169, -1, 171, -1, 173, 174, + 175, -1, 177, -1, 179, -1, 181, 182, 183, -1, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, + 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, + -1, 216, -1, 218, -1, -1, 221, -1, 223, 224, + 225, 226, 227, 228, -1, -1, 231, -1, 233, -1, + -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, + 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, + 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, + 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, + 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, 407, 408, -1, 410, 411, 412, 413, 414, + -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, + -1, 436, 437, 438, 439, 440, 441, -1, -1, 444, + 445, 446, 447, 448, 449, 450, -1, 452, -1, 454, + 455, 456, 457, 458, -1, -1, 461, -1, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 3, -1, 487, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 501, -1, 21, 22, + 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, + -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, + 73, 74, -1, -1, -1, 78, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, + 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, + -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, + -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, -1, 160, -1, 162, + 163, 164, 165, -1, 167, -1, 169, -1, 171, -1, + 173, 174, 175, -1, 177, -1, 179, -1, 181, 182, + 183, -1, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, + 203, -1, 205, -1, 207, 208, 209, 210, 211, 212, + 213, 214, -1, 216, -1, 218, -1, -1, 221, -1, + 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, + 233, -1, -1, 236, 237, 238, -1, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, + -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, + 313, -1, 315, 316, 317, 318, 319, 320, -1, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, + 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, + 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, 407, 408, -1, 410, 411, 412, + 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, + 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, + -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, + -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, -1, 3, 487, 5, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 501, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, -1, -1, -1, 78, 79, + 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, + 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, + 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, + -1, -1, -1, 173, 174, 175, -1, 177, -1, 179, + -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, -1, 207, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, -1, + -1, 221, -1, 223, 224, 225, 226, 227, 228, -1, + -1, 231, -1, 233, -1, -1, 236, 237, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, + 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, + 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, + 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, + 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, -1, 408, -1, + 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, + 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, + 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, + 440, 441, -1, -1, 444, 445, 446, 447, 448, 449, + 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, + -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, + 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, + -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, + 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, + 68, -1, 70, 71, 72, 73, 74, -1, -1, -1, + 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, + 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, + 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, + 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, + -1, 169, -1, -1, -1, 173, 174, 175, -1, 177, + -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, -1, + 198, 199, 200, 201, 202, 203, -1, 205, -1, 207, + 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, + 218, -1, -1, 221, -1, 223, 224, 225, 226, 227, + 228, -1, -1, 231, -1, 233, -1, -1, 236, 237, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, + 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, + 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, + -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, + 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, + 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, + -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, + 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, + 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, + 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, + 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, @@ -320481,7 +319669,7 @@ static const yytype_int16 yycheck[] = 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, - -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, @@ -320577,450 +319765,57 @@ static const yytype_int16 yycheck[] = 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 501, - -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, - 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, - 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, - 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, - 70, 71, 72, 73, 74, -1, -1, -1, 78, 79, - 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, - -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, - 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, - -1, -1, -1, 173, 174, 175, -1, 177, -1, 179, - -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, -1, 198, 199, - 200, 201, 202, 203, -1, 205, -1, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, -1, 218, -1, - -1, 221, -1, 223, 224, 225, 226, 227, 228, -1, - -1, 231, -1, 233, -1, -1, 236, 237, 238, -1, - -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, - 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, - 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, - 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, -1, 405, 406, -1, 408, -1, - 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, - 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, - 440, 441, -1, -1, 444, 445, 446, 447, 448, 449, - 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, - -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 501, -1, 21, 22, 23, 24, 25, 26, 27, - 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, - -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, - 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, - 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, - 68, -1, 70, 71, 72, 73, 74, -1, -1, -1, - 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, - 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, - -1, 169, -1, -1, -1, 173, 174, 175, -1, 177, - -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, -1, - 198, 199, 200, 201, 202, 203, -1, 205, -1, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, - 218, -1, -1, 221, -1, 223, 224, 225, 226, 227, - 228, -1, -1, 231, -1, 233, -1, -1, 236, 237, - 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 482, 483, 484, -1, -1, 3, 4, 5, -1, -1, + 8, 9, -1, -1, -1, -1, -1, 15, -1, 501, + 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, -1, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, -1, 153, 154, 155, 156, 157, + -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, -1, -1, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, -1, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, - 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, - -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, - -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, - 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, -1, 296, 297, + 298, -1, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, -1, 314, 315, 316, -1, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, - 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, - -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, - 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, - 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, - 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, -1, -1, 3, - 4, 5, -1, -1, 8, 9, -1, -1, -1, -1, - -1, 15, -1, 501, 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, -1, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - -1, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, -1, 153, - 154, 155, 156, 157, -1, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, -1, -1, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, -1, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, -1, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, -1, 296, 297, 298, -1, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, -1, - 314, 315, 316, -1, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, 423, - -1, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, -1, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, - 484, -1, 3, -1, 488, 489, 490, 8, 492, 493, - 494, 495, 496, 497, 15, -1, -1, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, - 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, - 71, 72, 73, 74, -1, -1, -1, 78, 79, 80, - 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, -1, 160, - -1, 162, 163, 164, 165, -1, 167, -1, 169, -1, - -1, -1, 173, 174, 175, -1, 177, -1, 179, -1, - 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, -1, 198, 199, 200, - 201, 202, 203, -1, 205, -1, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, -1, -1, - 221, -1, 223, 224, 225, 226, 227, 228, -1, -1, - 231, -1, 233, -1, -1, 236, 237, 238, -1, -1, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, - 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, - 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, - -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, - 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, -1, 408, -1, 410, - 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, - 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, - 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, - 441, -1, -1, 444, 445, 446, 447, 448, 449, 450, - -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, - 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, -1, -1, -1, 488, 489, 490, - -1, 492, 493, 494, 495, 496, 497, 8, -1, -1, - 11, -1, -1, -1, 15, 16, 17, 18, 19, 20, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 35, -1, 8, -1, -1, 11, - -1, -1, 43, 15, 16, 17, 18, 19, 20, 50, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, - -1, 43, 8, -1, 75, 11, -1, -1, 50, 15, - 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, - -1, 8, -1, 75, 11, -1, -1, 43, 15, 16, - 17, 18, 19, 20, 50, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, - -1, -1, -1, -1, -1, -1, 43, -1, -1, 75, - -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, - -1, -1, -1, -1, -1, 176, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 192, -1, -1, -1, -1, 197, -1, -1, -1, - -1, -1, -1, -1, 176, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 219, 220, - 192, -1, -1, -1, -1, 197, -1, -1, -1, -1, - -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, - 176, -1, -1, -1, -1, -1, -1, 219, 220, -1, - -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, - -1, 197, 234, -1, -1, -1, -1, -1, -1, 176, - -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, - -1, -1, -1, 219, 220, 192, -1, -1, 289, -1, - 197, 292, -1, -1, -1, -1, -1, -1, 234, -1, - 272, -1, -1, 275, -1, -1, -1, -1, -1, -1, - -1, -1, 219, 220, -1, -1, -1, 289, -1, -1, - 292, -1, -1, -1, -1, -1, -1, 234, -1, -1, - -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, 289, 11, -1, 292, -1, 15, 16, - 17, 18, 19, 20, -1, 272, -1, -1, 275, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, - 8, 382, 289, 11, -1, 292, 43, 15, 16, 17, - 18, 19, 20, 50, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, - 382, -1, -1, -1, -1, 43, 8, -1, 75, 11, - -1, -1, 50, 15, 16, 17, 18, 19, 20, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 35, -1, -1, 382, 75, -1, -1, - -1, 43, -1, -1, -1, -1, -1, -1, 50, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, - -1, -1, -1, 75, 485, -1, -1, 488, 489, 490, - -1, 492, 493, 494, 495, 496, 497, -1, -1, -1, - -1, 502, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 485, -1, -1, 488, 489, 490, 176, - 492, 493, 494, 495, 496, 497, -1, -1, -1, -1, - 502, -1, -1, -1, -1, 192, -1, -1, -1, -1, - 197, -1, -1, -1, -1, -1, -1, -1, 176, 485, - -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, 219, 220, 192, -1, 502, -1, -1, 197, - -1, -1, -1, -1, -1, -1, -1, 234, 485, -1, - -1, 488, 489, 490, 176, 492, 493, 494, 495, 496, - 497, 219, 220, -1, -1, 502, -1, -1, -1, -1, - 192, -1, -1, -1, -1, 197, 234, -1, -1, -1, - -1, -1, -1, -1, -1, 272, -1, -1, 275, -1, - -1, -1, -1, -1, -1, -1, -1, 219, 220, -1, - -1, -1, 289, -1, -1, 292, -1, -1, -1, -1, - -1, -1, 234, -1, 272, -1, -1, 275, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, 289, 11, -1, 292, -1, 15, 16, 17, 18, - 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, - 272, -1, -1, 275, -1, -1, 35, -1, -1, -1, - -1, -1, -1, -1, 43, 8, -1, 289, 11, -1, - 292, 50, 15, 16, 17, 18, 19, 20, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 35, -1, 8, 382, 75, 11, -1, -1, - 43, 15, 16, 17, 18, 19, 20, 50, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, -1, -1, 382, -1, -1, -1, -1, 43, - -1, -1, 75, -1, -1, -1, 50, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 382, 75, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 176, 485, -1, - -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, - 497, -1, -1, 192, -1, 502, -1, -1, 197, -1, - -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, - 488, 489, 490, 176, 492, 493, 494, 495, 496, 497, - 219, 220, -1, -1, 502, -1, -1, -1, -1, 192, - -1, -1, -1, -1, 197, 234, -1, -1, -1, -1, - -1, -1, 176, 485, -1, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, 219, 220, 192, -1, - 502, -1, -1, 197, -1, -1, -1, -1, -1, -1, - -1, 234, -1, 272, -1, -1, 275, -1, -1, -1, - -1, -1, -1, -1, -1, 219, 220, -1, -1, -1, - 289, -1, -1, 292, -1, -1, -1, -1, -1, -1, - 234, -1, -1, -1, -1, -1, -1, -1, -1, 272, - -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, 289, 11, -1, 292, - -1, 15, 16, 17, 18, 19, 20, -1, 272, -1, - -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, -1, 8, -1, 289, 11, -1, 292, 43, - 15, 16, 17, 18, 19, 20, 50, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 35, -1, -1, 382, -1, -1, -1, -1, 43, 8, - -1, 75, 11, -1, -1, 50, 15, 16, 17, 18, - 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 35, -1, -1, 382, - 75, -1, -1, -1, 43, -1, -1, -1, -1, -1, - -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, - -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 485, -1, -1, 488, - 489, 490, 176, 492, 493, 494, 495, 496, 497, -1, - -1, -1, -1, 502, -1, -1, -1, -1, 192, -1, - -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, - -1, 176, 485, -1, -1, 488, 489, 490, -1, 492, - 493, 494, 495, 496, 497, 219, 220, 192, -1, 502, - -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, - 234, 485, -1, -1, 488, 489, 490, 176, 492, 493, - 494, 495, 496, 497, 219, 220, -1, -1, 502, -1, - -1, -1, -1, 192, -1, -1, -1, -1, 197, 234, - -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, - -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, - 219, 220, -1, -1, -1, 289, -1, -1, 292, -1, - -1, -1, -1, -1, -1, 234, -1, 272, -1, -1, - 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 289, -1, -1, 292, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, -1, -1, 275, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 289, -1, -1, 292, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 485, -1, -1, 488, 489, 490, -1, 492, 493, - 494, 495, 496, 497, -1, -1, 500, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, - 495, 496, 497, -1, -1, 500, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 3, -1, 485, -1, -1, 488, - 489, 490, -1, 492, 493, 494, 495, 496, 497, -1, - -1, 500, 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, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, - -1, -1, -1, -1, -1, 494, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, - 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, - 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, 74, -1, -1, - -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, -1, -1, -1, 173, 174, 175, -1, - 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, -1, - 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, -1, -1, 221, -1, 223, 224, 225, 226, - 227, 228, -1, -1, 231, -1, 233, -1, -1, 236, - 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, - -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, - 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, - 437, 438, 439, 440, 441, -1, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, -1, 454, 455, 456, - 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, - -1, -1, -1, -1, -1, -1, -1, 494, -1, -1, - -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, -1, 423, -1, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, -1, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 481, 482, 483, 484, -1, 3, -1, + 488, 489, 490, 8, 492, 493, 494, 495, 496, 497, + 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, @@ -321067,905 +319862,1078 @@ static const yytype_int16 yycheck[] = 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 3, 4, 5, -1, -1, -1, 9, -1, -1, 494, - -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, - 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, - -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, - 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, - 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, 120, 121, 122, - 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, -1, 162, - 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, - 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, - 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, - 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, - 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, - 283, -1, 285, 286, 287, -1, 289, 290, 291, -1, - -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, - 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, - 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, - -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, - 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, - -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 3, 4, 5, -1, -1, -1, 9, 492, - 493, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, - 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, - 71, 72, 73, 74, -1, 76, -1, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, - 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, - 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, 120, - 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - -1, 162, 163, 164, 165, -1, 167, -1, 169, 170, - -1, 172, 173, 174, 175, 176, 177, -1, 179, -1, - 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, -1, 198, 199, 200, - 201, 202, 203, -1, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, -1, -1, - 231, 232, 233, 234, -1, 236, 237, 238, -1, -1, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, -1, 273, 274, 275, 276, -1, 278, 279, 280, - 281, 282, 283, -1, 285, 286, 287, -1, 289, 290, - 291, -1, -1, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, -1, 408, 409, 410, - 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, - 441, 442, -1, 444, 445, 446, 447, 448, 449, 450, - -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, - 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, 4, 5, -1, -1, -1, - 9, 492, 493, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, - -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, - 99, 100, 101, 102, 103, -1, -1, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, - 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, - -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, - 279, 280, 281, 282, 283, -1, 285, 286, 287, -1, - 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, - 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, - -1, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, - 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, - -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, -1, -1, 8, -1, - -1, 11, -1, 492, 493, 15, 16, 17, 18, 19, - 20, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, 18, 19, 20, -1, 35, -1, -1, -1, 39, + -1, -1, -1, 488, 489, 490, -1, 492, 493, 494, + 495, 496, 497, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 35, -1, 8, -1, -1, 11, -1, -1, 43, 15, + 16, 17, 18, 19, 20, 50, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + -1, -1, -1, -1, -1, -1, -1, 43, 8, -1, + 75, 11, -1, -1, 50, 15, 16, 17, 18, 19, + 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 35, -1, 8, -1, 75, + 11, -1, -1, 43, 15, 16, 17, 18, 19, 20, + 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, + -1, -1, 43, -1, -1, 75, -1, -1, -1, 50, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, + -1, 176, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, + -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, + 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 219, 220, 192, -1, -1, -1, + -1, 197, -1, -1, -1, -1, -1, -1, -1, 234, + -1, -1, -1, -1, -1, -1, 176, -1, -1, -1, + -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, + -1, -1, 192, -1, -1, -1, -1, 197, 234, -1, + -1, -1, -1, -1, -1, 176, -1, 272, -1, -1, + 275, -1, -1, -1, -1, -1, -1, -1, -1, 219, + 220, 192, -1, -1, 289, -1, 197, 292, -1, -1, + -1, -1, -1, -1, 234, -1, 272, -1, -1, 275, + -1, -1, -1, -1, -1, -1, -1, -1, 219, 220, + -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, + -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, 272, -1, -1, 275, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, 289, + 11, -1, 292, -1, 15, 16, 17, 18, 19, 20, + -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 35, -1, 8, 382, 289, 11, + -1, 292, 43, 15, 16, 17, 18, 19, 20, 50, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 35, -1, -1, 382, -1, -1, -1, + -1, 43, 8, -1, 75, 11, -1, -1, 50, 15, + 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + -1, -1, 382, 75, -1, -1, -1, 43, -1, -1, + -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 382, -1, -1, -1, -1, -1, -1, -1, 75, + 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, + 495, 496, 497, -1, -1, -1, -1, 502, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, + -1, -1, 488, 489, 490, 176, 492, 493, 494, 495, + 496, 497, -1, -1, -1, -1, 502, -1, -1, -1, + -1, 192, -1, -1, -1, -1, 197, -1, -1, -1, + -1, -1, -1, -1, 176, 485, -1, -1, 488, 489, + 490, -1, 492, 493, 494, 495, 496, 497, 219, 220, + 192, -1, 502, -1, -1, 197, -1, -1, -1, -1, + -1, -1, -1, 234, 485, -1, -1, 488, 489, 490, + 176, 492, 493, 494, 495, 496, 497, 219, 220, -1, + -1, 502, -1, -1, -1, -1, 192, -1, -1, -1, + -1, 197, 234, -1, -1, -1, -1, -1, -1, -1, + -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, + -1, -1, -1, 219, 220, -1, -1, -1, 289, -1, + -1, 292, -1, -1, -1, -1, -1, -1, 234, -1, + 272, -1, -1, 275, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 8, -1, 289, 11, -1, + 292, -1, 15, 16, 17, 18, 19, 20, -1, -1, + -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, + -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, + 43, 8, -1, 289, 11, -1, 292, 50, 15, 16, + 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, + 8, 382, 75, 11, -1, -1, 43, 15, 16, 17, + 18, 19, 20, 50, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, + 382, -1, -1, -1, -1, 43, -1, -1, 75, -1, + -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 382, 75, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 176, 485, -1, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, -1, -1, 192, + -1, 502, -1, -1, 197, -1, -1, -1, -1, -1, + -1, -1, -1, 485, -1, -1, 488, 489, 490, 176, + 492, 493, 494, 495, 496, 497, 219, 220, -1, -1, + 502, -1, -1, -1, -1, 192, -1, -1, -1, -1, + 197, 234, -1, -1, -1, -1, -1, -1, 176, 485, + -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, + 496, 497, 219, 220, 192, -1, 502, -1, -1, 197, + -1, -1, -1, -1, -1, -1, -1, 234, -1, 272, + -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, + -1, 219, 220, -1, 21, -1, 289, -1, -1, 292, + -1, -1, -1, -1, 31, -1, 234, -1, -1, -1, + -1, -1, -1, -1, -1, 272, -1, -1, 275, -1, + -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, + 8, 58, 289, 11, -1, 292, -1, 15, 16, 17, + 18, 19, 20, 70, 272, -1, -1, 275, -1, -1, + -1, -1, -1, -1, 81, -1, -1, 35, -1, -1, + -1, 289, -1, -1, 292, 43, 93, -1, 95, -1, + -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 113, -1, -1, 382, + -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, + 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, -1, -1, -1, -1, -1, 143, -1, -1, -1, + -1, -1, -1, -1, 151, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 167, -1, -1, -1, 171, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 211, -1, -1, -1, -1, -1, + -1, -1, 485, -1, -1, 488, 489, 490, 176, 492, + 493, 494, 495, 496, 497, -1, -1, -1, -1, 502, + 237, -1, -1, -1, 192, -1, -1, -1, -1, 197, + -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, + -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, + 497, 219, 220, -1, -1, 502, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 234, 485, -1, -1, + 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, + -1, -1, 500, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 315, -1, + -1, 318, -1, -1, 272, -1, -1, 275, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 289, -1, -1, 292, -1, -1, -1, -1, -1, + 347, -1, -1, -1, -1, -1, -1, -1, -1, 356, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 370, -1, -1, -1, -1, -1, -1, + 377, -1, -1, -1, 381, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 391, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 403, -1, -1, -1, + 407, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 426, + -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 444, -1, -1, + -1, -1, 449, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 463, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 501, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, -1, 485, -1, -1, + 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, + -1, -1, 500, 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, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, + -1, -1, -1, -1, -1, -1, 494, -1, -1, -1, + -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, + 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, + -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, + -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, + 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, + 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, + -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, + -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, + -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, + 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, + 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, -1, 160, -1, 162, 163, 164, 165, + -1, 167, -1, 169, -1, -1, -1, 173, 174, 175, + -1, 177, -1, 179, -1, 181, 182, 183, -1, 185, + 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, + 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, + -1, 207, 208, 209, 210, 211, 212, 213, 214, -1, + 216, -1, 218, -1, -1, 221, -1, 223, 224, 225, + 226, 227, 228, -1, -1, 231, -1, 233, -1, -1, + 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + -1, 267, 268, 269, 270, 271, -1, 273, 274, -1, + 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, + 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, + -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, -1, 311, 312, 313, -1, 315, + 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, + -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, + 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, -1, 408, -1, 410, 411, 412, 413, 414, -1, + 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, + 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, + 436, 437, 438, 439, 440, 441, -1, -1, 444, 445, + 446, 447, 448, 449, 450, -1, 452, -1, 454, 455, + 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, + -1, -1, -1, -1, -1, -1, -1, -1, 494, -1, + -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, + 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, + -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, + 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, + 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, -1, -1, -1, 78, 79, 80, 81, 82, 83, + -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, + 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, + 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, + 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, -1, 160, -1, 162, 163, + 164, 165, -1, 167, -1, 169, -1, -1, -1, 173, + 174, 175, -1, 177, -1, 179, -1, 181, 182, 183, + -1, 185, 186, 187, 188, 189, 190, 191, -1, 193, + 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, + -1, 205, -1, 207, 208, 209, 210, 211, 212, 213, + 214, -1, 216, -1, 218, -1, -1, 221, -1, 223, + 224, 225, 226, 227, 228, -1, -1, 231, -1, 233, + -1, -1, 236, 237, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, -1, 267, 268, 269, 270, 271, -1, 273, + 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, + -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, + 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, + -1, 315, 316, 317, 318, 319, 320, -1, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, + -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, + 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, + 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, -1, 408, -1, 410, 411, 412, 413, + 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, + 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, + -1, -1, 436, 437, 438, 439, 440, 441, -1, -1, + 444, 445, 446, 447, 448, 449, 450, -1, 452, -1, + 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 3, 4, 5, -1, -1, -1, 9, -1, -1, + 494, -1, -1, -1, -1, -1, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, + -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, + -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, -1, 120, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, + 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, -1, + 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, + 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, + 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, + 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, -1, 285, 286, 287, -1, 289, 290, 291, + -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, + 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, + 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 3, 4, 5, -1, -1, -1, 9, + 492, 493, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, 74, -1, 76, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, -1, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, + 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, + 170, -1, 172, 173, 174, 175, 176, 177, -1, 179, + -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, + -1, 231, 232, 233, 234, -1, 236, 237, 238, -1, + -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, -1, 273, 274, 275, 276, -1, 278, 279, + 280, 281, 282, 283, -1, 285, 286, 287, -1, 289, + 290, 291, -1, -1, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + -1, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, -1, 405, 406, -1, 408, 409, + 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, + 440, 441, 442, -1, 444, 445, 446, 447, 448, 449, + 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, + -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 3, 4, 5, -1, -1, + -1, 9, 492, 493, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, + 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, + -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, + 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, 100, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, + 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, + 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, + 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, -1, 162, 163, 164, 165, -1, 167, + -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, + -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, + 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, -1, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, + -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, + 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, + -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, + 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, + 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, + 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, -1, -1, 8, + -1, -1, 11, -1, 492, 493, 15, 16, 17, 18, + 19, 20, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, 18, 19, 20, -1, 35, -1, -1, -1, + 39, -1, -1, -1, 43, -1, -1, -1, -1, 35, + -1, 50, -1, -1, -1, -1, -1, 43, 8, -1, + -1, 11, -1, -1, 50, 15, 16, 17, 18, 19, + 20, 8, -1, -1, 11, -1, 75, -1, 15, 16, + 17, 18, 19, 20, -1, 35, -1, -1, -1, 75, -1, -1, -1, 43, -1, -1, -1, -1, 35, -1, - 50, -1, -1, -1, -1, -1, 43, 8, -1, -1, + 50, 38, -1, -1, -1, -1, 43, 8, -1, -1, 11, -1, -1, 50, 15, 16, 17, 18, 19, 20, - 8, -1, -1, 11, -1, 75, -1, 15, 16, 17, - 18, 19, 20, -1, 35, -1, -1, -1, 75, -1, - -1, -1, 43, -1, -1, -1, -1, 35, -1, 50, - 38, -1, -1, -1, -1, 43, 8, -1, -1, 11, - -1, -1, 50, 15, 16, 17, 18, 19, 20, -1, - -1, -1, -1, -1, 75, -1, 126, -1, -1, -1, - -1, -1, -1, 35, -1, -1, -1, 75, -1, -1, - -1, 43, -1, -1, -1, -1, -1, -1, 50, -1, - -1, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 75, -1, -1, 176, -1, 35, 166, - -1, 38, -1, -1, 171, -1, 43, -1, -1, 176, - -1, -1, 192, 50, -1, -1, -1, 197, -1, -1, + -1, -1, -1, -1, -1, 75, -1, 126, -1, -1, + -1, -1, -1, -1, 35, -1, -1, -1, 75, -1, + -1, -1, 43, -1, -1, -1, -1, -1, -1, 50, + -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, -1, -1, 176, -1, 35, + 166, -1, 38, -1, -1, 171, -1, 43, -1, -1, + 176, -1, -1, 192, 50, -1, -1, -1, 197, -1, + -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, + -1, 197, -1, -1, -1, 165, -1, -1, -1, 75, + 219, 220, -1, -1, -1, -1, 176, -1, -1, -1, + -1, -1, -1, 219, 220, 234, -1, -1, -1, 176, + -1, -1, 192, -1, -1, -1, -1, 197, 234, -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, -1, - 197, -1, -1, -1, 165, -1, -1, -1, 75, 219, - 220, -1, -1, -1, -1, 176, -1, -1, -1, -1, - -1, -1, 219, 220, 234, -1, -1, -1, 176, -1, - -1, 192, -1, -1, -1, -1, 197, 234, -1, -1, - -1, -1, -1, -1, 192, -1, -1, -1, -1, 197, + 197, -1, -1, -1, -1, -1, -1, -1, -1, 219, + 220, -1, -1, 272, -1, 176, 275, -1, -1, -1, + -1, -1, 219, 220, 234, -1, 272, -1, -1, 275, + 289, 192, -1, 292, -1, -1, 197, 234, -1, -1, + -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 219, 220, - -1, -1, 272, -1, 176, 275, -1, -1, -1, -1, - -1, 219, 220, 234, -1, 272, -1, -1, 275, 289, - 192, -1, 292, -1, -1, 197, 234, -1, -1, -1, + 176, -1, 272, -1, -1, 275, -1, -1, -1, -1, + -1, -1, -1, 234, -1, 272, 192, -1, 275, 289, + -1, 197, 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 219, 220, 176, - -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, - -1, -1, 234, -1, 272, 192, -1, 275, 289, -1, - 197, 292, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 289, -1, -1, 292, -1, -1, -1, -1, -1, - -1, -1, 219, 220, -1, 316, -1, -1, -1, -1, - 272, -1, -1, 275, -1, -1, -1, 234, -1, -1, - -1, -1, 382, -1, -1, -1, -1, 289, -1, -1, - 292, -1, -1, -1, -1, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 310, -1, - -1, -1, -1, -1, -1, 272, -1, -1, 275, -1, + -1, -1, -1, 219, 220, -1, 316, -1, -1, -1, + -1, 272, -1, -1, 275, -1, -1, -1, 234, -1, + -1, -1, -1, 382, -1, -1, -1, -1, 289, -1, + -1, 292, -1, -1, -1, -1, 382, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 310, + -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 382, 289, -1, -1, 292, -1, -1, -1, -1, - -1, -1, -1, 443, 382, -1, -1, -1, -1, -1, + -1, -1, 382, 289, -1, -1, 292, -1, -1, -1, + -1, -1, -1, -1, 443, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 382, -1, -1, -1, -1, 485, -1, -1, 488, 489, + -1, 382, -1, -1, -1, -1, 485, -1, -1, 488, + 489, 490, -1, 492, 493, 494, 495, 496, 497, 485, + -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, + 496, 497, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, + -1, -1, -1, -1, -1, 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, - 497, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, + 497, -1, -1, 8, -1, -1, 11, -1, -1, -1, + 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, 488, 489, 490, - -1, 492, 493, 494, 495, 496, 497, 485, -1, -1, - 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, - -1, -1, 8, -1, -1, 11, -1, -1, -1, 15, + 35, 492, 493, 494, 495, 496, 497, -1, 43, -1, + -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, + 75, -1, 488, 489, 490, -1, 492, 493, 494, 495, + 496, 497, 8, -1, -1, 11, -1, -1, -1, 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, 485, -1, -1, 488, 489, 490, 35, - 492, 493, 494, 495, 496, 497, -1, 43, -1, -1, - -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + -1, -1, 38, -1, -1, -1, -1, 43, -1, -1, + -1, -1, -1, -1, 50, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 16, 17, 18, 19, 20, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, + -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, + -1, -1, 43, -1, -1, -1, 171, -1, -1, 50, + -1, 176, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, + -1, -1, 197, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 485, 75, - -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, - 497, 8, -1, -1, 11, -1, -1, -1, 15, 16, - 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, - -1, 38, -1, -1, -1, -1, 43, -1, -1, -1, - -1, -1, -1, 50, -1, -1, 8, -1, -1, 11, - -1, -1, -1, 15, 16, 17, 18, 19, 20, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, - -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, - -1, 43, -1, -1, -1, 171, -1, -1, 50, -1, - 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, - -1, 197, -1, 75, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 219, 220, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, + 176, -1, -1, 15, 16, 17, 18, 19, 20, -1, + -1, -1, -1, -1, -1, -1, 192, 272, -1, -1, + 275, 197, -1, 35, -1, -1, -1, -1, -1, -1, + -1, 43, -1, -1, 289, 166, -1, 292, 50, -1, + -1, -1, -1, 219, 220, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 234, -1, + -1, 192, -1, 75, -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, 11, 176, - -1, -1, 15, 16, 17, 18, 19, 20, -1, -1, - -1, -1, -1, -1, -1, 192, 272, -1, -1, 275, - 197, -1, 35, -1, -1, -1, -1, -1, -1, -1, - 43, -1, -1, 289, 166, -1, 292, 50, -1, -1, - -1, -1, 219, 220, 176, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 219, 220, + -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, + -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, + -1, 8, -1, -1, 11, -1, -1, 382, 15, 16, + 17, 18, 19, 20, -1, -1, -1, -1, -1, -1, + -1, 272, -1, -1, 275, -1, -1, -1, 35, -1, + -1, 38, -1, -1, -1, -1, 43, -1, 289, -1, + -1, 292, -1, 50, 176, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 192, -1, -1, 8, -1, 197, 11, -1, 75, -1, + 15, 16, 17, 18, 19, 20, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 382, 219, 220, -1, + 35, -1, -1, -1, -1, -1, -1, -1, 43, -1, + -1, -1, 234, -1, -1, 50, -1, -1, -1, -1, + 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, + 495, 496, 497, -1, -1, -1, -1, -1, -1, -1, + 75, 382, -1, -1, -1, -1, -1, -1, -1, -1, + 272, -1, -1, 275, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, + 292, -1, -1, -1, -1, -1, -1, -1, -1, 176, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 192, -1, -1, -1, 485, + 197, -1, 488, 489, 490, -1, 492, 493, 494, 495, + 496, 497, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, - 192, -1, 75, -1, -1, 197, -1, -1, -1, -1, + -1, 176, -1, -1, 485, -1, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, 192, -1, -1, + 382, 8, 197, -1, 11, -1, -1, -1, 15, 16, + 17, 18, 19, 20, -1, 272, -1, -1, 275, -1, + -1, -1, -1, -1, 219, 220, -1, -1, 35, -1, + -1, -1, 289, 415, -1, 292, 43, -1, -1, 234, + -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 219, 220, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, + -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, + 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 289, -1, -1, 292, -1, -1, + -1, -1, -1, 485, -1, -1, 488, 489, 490, -1, + 492, 493, 494, 495, 496, 497, -1, -1, -1, 8, + -1, -1, 11, -1, -1, 382, 15, -1, -1, 18, + 19, 20, -1, -1, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, -1, 35, 18, 19, 20, + -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, + -1, 50, -1, -1, 35, -1, -1, -1, -1, 176, + -1, -1, 43, -1, -1, -1, -1, -1, -1, 50, + -1, -1, -1, -1, -1, 192, 75, 382, -1, -1, + 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, + -1, -1, 219, 220, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 234, 485, -1, + -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, + 497, -1, 8, -1, -1, 11, -1, -1, -1, 15, + -1, -1, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, -1, - -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 289, -1, -1, 292, -1, -1, -1, -1, - 8, -1, -1, 11, -1, -1, 382, 15, 16, 17, - 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, - 272, -1, -1, 275, -1, -1, -1, 35, -1, -1, - 38, -1, -1, -1, -1, 43, -1, 289, -1, -1, - 292, -1, 50, 176, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, - -1, -1, 8, -1, 197, 11, -1, 75, -1, 15, - 16, 17, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 382, 219, 220, -1, 35, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, - -1, 234, -1, -1, 50, -1, -1, -1, -1, 485, - -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, -1, -1, -1, -1, -1, -1, -1, 75, - 382, -1, -1, -1, -1, -1, -1, -1, -1, 272, - -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 289, -1, -1, 292, - -1, -1, -1, -1, -1, -1, -1, -1, 176, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 192, -1, -1, -1, 485, 197, - -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, - 497, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 234, -1, -1, -1, - 176, -1, -1, 485, -1, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, 192, -1, -1, 382, - 8, 197, -1, 11, -1, -1, -1, 15, 16, 17, - 18, 19, 20, -1, 272, -1, -1, 275, -1, -1, - -1, -1, -1, 219, 220, -1, -1, 35, -1, -1, - -1, 289, 415, -1, 292, 43, -1, -1, 234, -1, - -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, - -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 289, -1, -1, 292, -1, -1, -1, - -1, -1, 485, -1, -1, 488, 489, 490, -1, 492, - 493, 494, 495, 496, 497, -1, -1, -1, 8, -1, - -1, 11, -1, -1, 382, 15, -1, -1, 18, 19, - 20, -1, -1, -1, -1, -1, 8, -1, -1, 11, - -1, -1, -1, 15, -1, 35, 18, 19, 20, -1, - -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, - 50, -1, -1, -1, -1, -1, -1, -1, 176, -1, - -1, 43, -1, -1, -1, -1, -1, -1, 50, -1, - -1, -1, -1, -1, 192, 75, 382, -1, -1, 197, + -1, -1, 289, -1, 50, 292, -1, 176, -1, -1, + 485, -1, -1, 488, 489, 490, -1, 492, 493, 494, + 495, 496, 497, 192, -1, 176, -1, -1, 197, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, - -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 234, 485, -1, -1, - 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, + -1, 192, -1, -1, -1, -1, 197, -1, -1, -1, + 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 234, -1, -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 234, -1, -1, -1, 8, -1, -1, + 11, -1, -1, -1, 15, 382, -1, 18, 19, 20, + -1, -1, -1, 272, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, -1, -1, 275, -1, -1, + 289, 272, 43, 292, 275, -1, -1, -1, -1, 50, + 176, -1, -1, -1, -1, -1, -1, -1, 289, -1, + -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, + -1, 197, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 289, -1, -1, 292, -1, 176, -1, -1, 485, - -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, - 496, 497, 192, -1, 176, -1, -1, 197, -1, -1, + -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 234, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 485, -1, + -1, 488, 489, 490, -1, 492, 493, 494, 495, 496, + 497, -1, -1, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 272, -1, -1, 275, + -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 192, -1, -1, -1, -1, 197, -1, -1, -1, 219, - 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 234, -1, -1, 219, 220, -1, + -1, 192, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, - -1, -1, 272, -1, -1, 275, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, - 272, -1, 292, 275, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 219, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 234, -1, -1, 485, -1, -1, 488, + 489, 490, -1, 492, 493, 494, 495, 496, 497, -1, + -1, -1, -1, -1, 485, -1, 382, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, -1, -1, -1, + -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 485, -1, -1, - 488, 489, 490, -1, 492, 493, 494, 495, 496, 497, - -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 485, + -1, -1, 488, 489, 490, -1, 492, 493, 494, 495, + 496, 497, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 485, -1, -1, 488, 489, - 490, -1, 492, 493, 494, 495, 496, 497, 3, -1, - 5, -1, -1, 485, -1, -1, 488, 489, 490, -1, - 492, 493, 494, 495, 496, 497, 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, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 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, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 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, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, - -1, 70, 71, 72, 73, 74, -1, 76, -1, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - -1, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, -1, - 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, -1, 273, 274, 275, 276, -1, 278, - 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, - 289, 290, 291, -1, -1, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, - 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, - 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, 453, 454, 455, 456, 457, 458, - -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + -1, 5, -1, -1, 485, -1, -1, 488, 489, 490, + -1, 492, 493, 494, 495, 496, 497, 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, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, 74, -1, 76, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, - 97, 98, 99, 100, 101, 102, 103, -1, -1, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, - 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, -1, 273, 274, 275, 276, - -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, - 287, -1, 289, 290, 291, -1, -1, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, - 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, 453, 454, 455, 456, - 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, + -1, 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, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, - 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, - -1, 76, -1, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, - -1, 96, 97, 98, 99, 100, 101, 102, 103, -1, - -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, - 165, -1, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, -1, 179, -1, 181, 182, 183, -1, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - -1, 216, -1, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, - -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, -1, 273, 274, - 275, 276, -1, 278, 279, 280, 281, 282, 283, -1, - 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, -1, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, - 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, - 405, 406, -1, 408, 409, 410, 411, 412, 413, 414, - -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, - -1, 436, 437, 438, 439, 440, 441, 442, -1, 444, - 445, 446, 447, 448, 449, 450, -1, 452, 453, 454, - 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, - 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, - -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, - 73, 74, -1, 76, -1, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, - 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, -1, 160, -1, 162, - 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, - 173, 174, 175, 176, 177, -1, 179, -1, 181, 182, - 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, - 203, -1, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, - 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, -1, - 273, 274, 275, 276, -1, 278, 279, 280, 281, 282, - 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, - -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, - 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, - 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, - 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, - 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, - -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, - 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, - -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, + 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, + -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, 59, 60, 61, -1, 63, 64, 65, 66, 67, + 68, -1, 70, 71, 72, 73, 74, -1, 76, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, + 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, + 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, + 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, + -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, + -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, -1, + 198, 199, 200, 201, 202, 203, -1, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, -1, -1, 231, 232, 233, 234, -1, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, -1, 273, 274, 275, 276, -1, + 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, + -1, 289, 290, 291, -1, -1, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, -1, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, -1, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, -1, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, + 408, 409, 410, 411, 412, 413, 414, -1, 416, 417, + -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, + 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, + 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, + 448, 449, 450, -1, 452, 453, 454, 455, 456, 457, + 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, - 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, - 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, -1, 77, 78, 79, 80, - 81, 82, 83, -1, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, - -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, - 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, - 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, - 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, -1, 160, - -1, 162, 163, 164, 165, -1, 167, 168, 169, -1, - -1, -1, 173, 174, 175, -1, 177, -1, 179, -1, - 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, - 191, -1, 193, 194, 195, 196, -1, 198, 199, 200, - 201, 202, 203, -1, 205, -1, 207, 208, 209, 210, - 211, 212, 213, 214, -1, 216, -1, 218, -1, -1, - 221, -1, 223, 224, 225, 226, 227, 228, -1, -1, - 231, -1, 233, -1, -1, 236, 237, 238, -1, -1, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, - 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, - 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, - 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, - 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, - 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, -1, 405, 406, -1, 408, -1, 410, - 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, - 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, - 431, 432, 433, -1, 435, 436, 437, 438, 439, 440, - 441, -1, -1, 444, 445, 446, 447, 448, 449, 450, - -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, - 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, + 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, + -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, + 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, + 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, + 76, -1, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, + 96, 97, 98, 99, 100, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, + -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, + 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, + 146, -1, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, -1, 162, 163, 164, 165, + -1, 167, -1, 169, 170, -1, 172, 173, 174, 175, + 176, 177, -1, 179, -1, 181, 182, 183, -1, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, -1, 198, 199, 200, 201, 202, 203, -1, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, -1, + 216, -1, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, -1, -1, 231, 232, 233, 234, -1, + 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, -1, 273, 274, 275, + 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, + 286, 287, -1, 289, 290, 291, -1, -1, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, -1, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, + 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, + 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, -1, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, + 406, -1, 408, 409, 410, 411, 412, 413, 414, -1, + 416, 417, -1, -1, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, + 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, + 446, 447, 448, 449, 450, -1, 452, 453, 454, 455, + 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, - 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, -1, -1, -1, 78, - 79, 80, 81, 82, 83, -1, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, - -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, - 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, - -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - -1, 160, -1, 162, 163, 164, 165, -1, 167, 168, - 169, -1, -1, -1, 173, 174, 175, -1, 177, -1, - 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, -1, 207, 208, - 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - -1, -1, 221, -1, 223, 224, 225, 226, 227, 228, - -1, -1, 231, -1, 233, 234, -1, 236, 237, 238, - -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, - 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, - 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, - -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - 429, 430, 431, 432, 433, -1, 435, 436, 437, 438, - 439, 440, 441, -1, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, - -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, + 24, 25, 26, 27, 28, -1, 30, 31, 32, 33, + 34, -1, -1, -1, -1, -1, 40, 41, -1, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, + 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, + 74, -1, 76, -1, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, + 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, + 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, + 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, + 144, 145, 146, -1, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, -1, 160, -1, 162, 163, + 164, 165, -1, 167, -1, 169, 170, -1, 172, 173, + 174, 175, 176, 177, -1, 179, -1, 181, 182, 183, + -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, -1, 198, 199, 200, 201, 202, 203, + -1, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, -1, 216, -1, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, -1, -1, 231, 232, 233, + 234, -1, 236, 237, 238, -1, -1, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, -1, 273, + 274, 275, 276, -1, 278, 279, 280, 281, 282, 283, + -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, + 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, + 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, -1, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + -1, 405, 406, -1, 408, 409, 410, 411, 412, 413, + 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, + 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, + -1, -1, 436, 437, 438, 439, 440, 441, 442, -1, + 444, 445, 446, 447, 448, 449, 450, -1, 452, 453, + 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, + 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, + -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, + -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, 74, -1, 76, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, + 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, -1, 160, -1, + 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, + 172, 173, 174, 175, 176, 177, -1, 179, -1, 181, + 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, + 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + -1, 273, 274, 275, 276, -1, 278, 279, 280, 281, + 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, + -1, -1, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, + 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, + 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, + 442, -1, 444, 445, 446, 447, 448, 449, 450, -1, + 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, 38, -1, 40, 41, -1, 43, 44, 45, 46, - 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, - 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, -1, -1, 76, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, - 97, 98, 99, 100, 101, 102, 103, -1, -1, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, -1, 153, 154, 155, 156, - 157, -1, -1, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, -1, 179, -1, -1, -1, 183, -1, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, - 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, -1, -1, 273, 274, 275, 276, - -1, -1, 279, 280, 281, 282, 283, -1, 285, 286, - -1, -1, 289, 290, 291, -1, -1, 294, -1, 296, - 297, 298, -1, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, -1, 314, 315, 316, - -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, -1, 403, -1, 405, 406, - -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, - 427, 428, 429, 430, 431, 432, 433, 434, -1, 436, - 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, -1, 450, -1, 452, 453, 454, 455, 456, - 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, - 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 481, 482, 483, 484, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, - -1, 51, 52, 53, 54, -1, 56, 57, 58, 59, - 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, - 70, 71, 72, 73, -1, -1, 76, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, - 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, + 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, -1, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, -1, -1, 77, 78, 79, + 80, 81, 82, 83, -1, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, -1, 153, 154, 155, 156, 157, -1, -1, - 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, - 170, -1, 172, 173, 174, -1, 176, 177, -1, 179, - -1, -1, -1, 183, -1, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, - 200, 201, 202, 203, -1, 205, 206, -1, 208, 209, - 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, - -1, 231, 232, 233, 234, -1, 236, 237, 238, -1, + 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, + 160, -1, 162, 163, 164, 165, -1, 167, 168, 169, + -1, -1, -1, 173, 174, 175, -1, 177, -1, 179, + -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, + 190, 191, -1, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, -1, 207, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, -1, + -1, 221, -1, 223, 224, 225, 226, 227, 228, -1, + -1, 231, -1, 233, -1, -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, -1, -1, 273, 274, 275, 276, -1, -1, 279, + 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, + 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, - 290, 291, -1, -1, 294, -1, 296, 297, 298, -1, + 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - -1, 311, 312, -1, 314, 315, 316, -1, 318, 319, - 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, + 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, + 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, -1, 403, -1, 405, 406, -1, 408, 409, + 400, 401, 402, 403, -1, 405, 406, -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, - 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, - 430, 431, 432, 433, 434, -1, 436, 437, 438, 439, - 440, 441, 442, -1, 444, 445, 446, 447, 448, -1, - 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, + 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, + 430, 431, 432, 433, -1, 435, 436, 437, 438, 439, + 440, 441, -1, -1, 444, 445, 446, 447, 448, 449, + 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 481, 482, 483, 484, -1, -1, -1, 21, 22, - 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, 44, 45, 46, 47, 48, 49, -1, 51, 52, - 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, - -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, - 73, -1, -1, 76, -1, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, - 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, - 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, - 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, - -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, - -1, 144, 145, 146, -1, 148, 149, 150, 151, -1, - 153, 154, 155, 156, 157, -1, -1, 160, -1, 162, - 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, - 173, 174, -1, 176, 177, -1, 179, -1, -1, -1, - 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, - 203, -1, 205, 206, -1, 208, 209, 210, 211, 212, - 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, - 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, -1, -1, - 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, - 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, - -1, 294, -1, 296, 297, 298, -1, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, - -1, 314, 315, 316, -1, 318, 319, 320, -1, 322, - 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, - 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, - 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, - 413, 414, -1, 416, 417, -1, -1, 420, 421, -1, - 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, - 433, 434, -1, 436, 437, 438, 439, 440, 441, 442, - -1, 444, 445, 446, 447, 448, -1, 450, -1, 452, - 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, - -1, 464, 465, 466, 467, 468, 469, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, - 483, 484, -1, -1, -1, 21, 22, 23, 24, 25, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, + 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, + -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, + 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, + 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, + 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, -1, -1, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, + 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, + 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, + 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, + 168, 169, -1, -1, -1, 173, 174, 175, -1, 177, + -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, + 188, 189, 190, 191, -1, 193, 194, 195, 196, -1, + 198, 199, 200, 201, 202, 203, -1, 205, -1, 207, + 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, + 218, -1, -1, 221, -1, 223, 224, 225, 226, 227, + 228, -1, -1, 231, -1, 233, 234, -1, 236, 237, + 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, + 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, + 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, + -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, + -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, + 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, + 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, + -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, + 428, 429, 430, 431, 432, 433, -1, 435, 436, 437, + 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, + 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, + 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, -1, @@ -322010,106 +320978,103 @@ static const yytype_int16 yycheck[] = 436, 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, -1, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, - 466, 467, 468, 469, 3, -1, 5, -1, -1, -1, + 466, 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, 484, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, - 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, + -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, + -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, + 49, -1, 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, - -1, 70, 71, 72, 73, 74, -1, -1, -1, 78, - 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, - 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, - 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, + -1, 70, 71, 72, 73, -1, -1, 76, -1, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 149, 150, 151, -1, 153, 154, 155, 156, 157, -1, -1, 160, -1, 162, 163, 164, 165, -1, 167, -1, - 169, -1, -1, -1, 173, 174, 175, -1, 177, -1, - 179, -1, 181, 182, 183, -1, 185, 186, 187, 188, - 189, 190, 191, -1, 193, 194, 195, 196, -1, 198, - 199, 200, 201, 202, 203, -1, 205, -1, 207, 208, + 169, 170, -1, 172, 173, 174, -1, 176, 177, -1, + 179, -1, -1, -1, 183, -1, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, -1, 198, + 199, 200, 201, 202, 203, -1, 205, 206, -1, 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, 218, - -1, -1, 221, -1, 223, 224, 225, 226, 227, 228, - -1, -1, 231, -1, 233, -1, -1, 236, 237, 238, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + -1, -1, 231, 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, - 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, -1, -1, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, - 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, + 289, 290, 291, -1, -1, 294, -1, 296, 297, 298, + -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, -1, 311, 312, -1, 314, 315, 316, -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, + 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, -1, 371, 372, 373, 374, 375, -1, 377, 378, - 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, + 369, -1, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, - -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, - 439, 440, 441, -1, -1, 444, 445, 446, 447, 448, - 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, + 399, 400, 401, -1, 403, -1, 405, 406, -1, 408, + 409, 410, 411, 412, 413, 414, -1, 416, 417, -1, + -1, 420, 421, -1, 423, -1, -1, 426, 427, 428, + 429, 430, 431, 432, 433, 434, -1, 436, 437, 438, + 439, 440, 441, 442, -1, 444, 445, 446, 447, 448, + -1, 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, - 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, - 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, 74, -1, -1, - -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, - 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, - 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, -1, -1, -1, 173, 174, 175, -1, - 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, - 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, -1, - 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, -1, -1, 221, -1, 223, 224, 225, 226, - 227, 228, -1, -1, 231, -1, 233, -1, -1, 236, - 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, - -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, - -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, - 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, - 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, - 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, - 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, - 437, 438, 439, 440, 441, -1, -1, 444, 445, 446, - 447, 448, 449, 450, -1, 452, -1, 454, 455, 456, - 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, + 469, 3, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 481, 482, 483, 484, -1, -1, -1, 21, + 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, + 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, + -1, 43, 44, 45, 46, 47, 48, 49, -1, 51, + 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, + -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, + 72, 73, -1, -1, 76, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, + 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, + -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, + 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, + -1, 153, 154, 155, 156, 157, -1, -1, 160, -1, + 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, + 172, 173, 174, -1, 176, 177, -1, 179, -1, -1, + -1, 183, -1, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, 206, -1, 208, 209, 210, 211, + 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, + 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, + -1, 273, 274, 275, 276, -1, -1, 279, 280, 281, + 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, + -1, -1, 294, -1, 296, 297, 298, -1, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, + 312, -1, 314, 315, 316, -1, 318, 319, 320, -1, + 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, + 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + -1, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, + -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, + 432, 433, 434, -1, 436, 437, 438, 439, 440, 441, + 442, -1, 444, 445, 446, 447, 448, -1, 450, -1, + 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, 481, + 482, 483, 484, -1, -1, -1, 21, 22, 23, 24, + 25, 26, 27, 28, -1, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, @@ -322135,7 +321100,7 @@ static const yytype_int16 yycheck[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, - 285, 286, -1, 288, 289, 290, 291, -1, -1, 294, + 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, @@ -322157,7 +321122,7 @@ static const yytype_int16 yycheck[] = 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, - 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, @@ -322183,7 +321148,7 @@ static const yytype_int16 yycheck[] = 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, - 283, -1, 285, 286, -1, 288, 289, 290, 291, -1, + 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, -1, 322, @@ -322205,7 +321170,7 @@ static const yytype_int16 yycheck[] = 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, @@ -322231,7 +321196,7 @@ static const yytype_int16 yycheck[] = 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, 280, - 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, + 281, 282, 283, -1, 285, 286, -1, 288, 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, 320, @@ -322251,8 +321216,8 @@ static const yytype_int16 yycheck[] = -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, 4, -1, -1, -1, -1, - 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, @@ -322279,7 +321244,7 @@ static const yytype_int16 yycheck[] = 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, 278, - 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, + 279, 280, 281, 282, 283, -1, 285, 286, -1, 288, 289, 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, 318, @@ -322302,7 +321267,7 @@ static const yytype_int16 yycheck[] = 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, @@ -322340,15 +321305,15 @@ static const yytype_int16 yycheck[] = 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, - 407, 408, -1, 410, 411, 412, 413, 414, -1, 416, + -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, - 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 477, 478, 479, 480, 481, 482, 483, 484, 3, 4, + -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, @@ -322436,7 +321401,7 @@ static const yytype_int16 yycheck[] = 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, -1, 405, 406, -1, 408, -1, 410, 411, 412, + 403, -1, 405, 406, 407, 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, @@ -322444,9 +321409,9 @@ static const yytype_int16 yycheck[] = -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, + 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, @@ -322540,10 +321505,10 @@ static const yytype_int16 yycheck[] = 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, + 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, - 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, + 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, @@ -322878,10 +321843,10 @@ static const yytype_int16 yycheck[] = 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, - -1, -1, -1, -1, -1, 38, -1, 40, 41, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, @@ -322926,10 +321891,10 @@ static const yytype_int16 yycheck[] = -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, + 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, 38, -1, 40, + 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, @@ -322974,10 +321939,10 @@ static const yytype_int16 yycheck[] = -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, + 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, + -1, 30, 31, 32, -1, -1, -1, -1, -1, 38, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, @@ -323022,11 +321987,11 @@ static const yytype_int16 yycheck[] = 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, + 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, + -1, 38, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, -1, @@ -323263,152 +322228,152 @@ static const yytype_int16 yycheck[] = 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 3, -1, -1, -1, + 479, 480, 481, 482, 483, 484, 3, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, 44, 45, 46, - 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, + -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, + 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, - 67, 68, -1, 70, 71, 72, 73, -1, -1, 76, - -1, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, - 97, 98, 99, 100, 101, 102, 103, -1, -1, 106, + 67, 68, -1, 70, 71, 72, 73, 74, -1, -1, + -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, - -1, 148, 149, 150, 151, -1, 153, 154, 155, 156, - 157, -1, -1, 160, -1, 162, 163, 164, 165, -1, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, -1, 179, -1, -1, -1, 183, -1, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - -1, 198, 199, 200, 201, 202, 203, -1, 205, 206, - -1, 208, 209, 210, 211, 212, 213, 214, -1, 216, - -1, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, -1, -1, 231, 232, 233, 234, -1, 236, + -1, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, -1, 160, -1, 162, 163, 164, 165, -1, + 167, -1, 169, -1, -1, -1, 173, 174, 175, -1, + 177, -1, 179, -1, 181, 182, 183, -1, 185, 186, + 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, + -1, 198, 199, 200, 201, 202, 203, -1, 205, -1, + 207, 208, 209, 210, 211, 212, 213, 214, -1, 216, + -1, 218, -1, -1, 221, -1, 223, 224, 225, 226, + 227, 228, -1, -1, 231, -1, 233, -1, -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, -1, -1, 273, 274, 275, 276, - -1, -1, 279, 280, 281, 282, 283, -1, 285, 286, - -1, -1, 289, 290, 291, -1, -1, 294, -1, 296, - 297, 298, -1, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, -1, 311, 312, -1, 314, 315, 316, - -1, 318, 319, 320, -1, 322, 323, 324, 325, 326, + 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, + 267, 268, 269, 270, 271, -1, 273, 274, -1, 276, + -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, + -1, -1, 289, 290, 291, -1, -1, 294, 295, -1, + 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, -1, 311, 312, 313, -1, 315, 316, + 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, - 357, -1, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, -1, 371, 372, 373, 374, 375, 376, - 377, -1, 379, 380, 381, 382, 383, 384, 385, 386, + 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, -1, 371, 372, 373, 374, 375, -1, + 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, -1, 403, -1, 405, 406, - -1, 408, 409, 410, 411, 412, 413, 414, -1, 416, - 417, -1, -1, 420, 421, -1, 423, -1, -1, 426, + 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, + -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, + 417, -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, - 437, 438, 439, 440, 441, 442, -1, 444, 445, 446, - 447, 448, -1, 450, -1, 452, 453, 454, 455, 456, + 437, 438, 439, 440, 441, -1, -1, 444, 445, 446, + 447, 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, 465, 466, - 467, 468, 469, 3, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 481, 482, 483, 484, -1, -1, - -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, - 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, - 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, - 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, - 70, 71, 72, 73, 74, -1, -1, -1, 78, 79, - 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, - 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, - -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, - 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, - 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, - 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, -1, - 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, - -1, -1, -1, 173, 174, 175, -1, 177, -1, 179, - -1, 181, 182, 183, -1, 185, 186, 187, 188, 189, - 190, 191, -1, 193, 194, 195, 196, -1, 198, 199, - 200, 201, 202, 203, -1, 205, -1, 207, 208, 209, - 210, 211, 212, 213, 214, -1, 216, -1, 218, -1, - -1, 221, -1, 223, 224, 225, 226, 227, 228, -1, - -1, 231, -1, 233, -1, -1, 236, 237, 238, -1, - -1, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, -1, 267, 268, 269, - 270, 271, -1, 273, 274, -1, 276, -1, 278, 279, - 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, - 290, 291, -1, -1, 294, 295, -1, 297, -1, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - -1, 311, 312, 313, -1, 315, 316, 317, 318, 319, - 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, - 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, -1, 405, 406, -1, 408, -1, - 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, - 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, - 440, 441, -1, -1, 444, 445, 446, 447, 448, 449, - 450, -1, 452, -1, 454, 455, 456, 457, 458, -1, - -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, - 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, - -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, - 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, - 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, - 68, -1, 70, 71, 72, 73, 74, -1, -1, -1, - 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, - -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, - 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, - 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, -1, 160, -1, 162, 163, 164, 165, -1, 167, - -1, 169, -1, -1, -1, 173, 174, 175, -1, 177, - -1, 179, -1, 181, 182, 183, -1, 185, 186, 187, - 188, 189, 190, 191, -1, 193, 194, 195, 196, -1, - 198, 199, 200, 201, 202, 203, -1, 205, -1, 207, - 208, 209, 210, 211, 212, 213, 214, -1, 216, -1, - 218, -1, -1, 221, -1, 223, 224, 225, 226, 227, - 228, -1, -1, 231, -1, 233, -1, -1, 236, 237, - 238, -1, -1, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, -1, 267, - 268, 269, 270, 271, -1, 273, 274, -1, 276, -1, - 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, - -1, 289, 290, 291, -1, -1, 294, 295, -1, 297, - -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, -1, 311, 312, 313, -1, 315, 316, 317, - 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, - -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, - 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, - 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, - -1, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, - 438, 439, 440, 441, -1, -1, 444, 445, 446, 447, - 448, 449, 450, -1, 452, -1, 454, 455, 456, 457, - 458, -1, -1, 461, -1, -1, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 3, -1, + 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, + 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, + 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, + -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, + 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, + -1, -1, -1, 78, 79, 80, 81, 82, 83, -1, + 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, + 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, + 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, + 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, + 165, -1, 167, -1, 169, -1, -1, -1, 173, 174, + 175, -1, 177, -1, 179, -1, 181, 182, 183, -1, + 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, + 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, + 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, + -1, 216, -1, 218, -1, -1, 221, -1, 223, 224, + 225, 226, 227, 228, -1, -1, 231, -1, 233, -1, + -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, + -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, + 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, + 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, -1, 311, 312, 313, -1, + 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, + 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, + 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, + 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, + 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, + 405, 406, -1, 408, -1, 410, 411, 412, 413, 414, + -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, + -1, 436, 437, 438, 439, 440, 441, -1, -1, 444, + 445, 446, 447, 448, 449, 450, -1, 452, -1, 454, + 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, + 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, 44, 45, 46, 47, 48, 49, -1, 51, 52, + 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, + -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, + 73, -1, -1, 76, -1, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, + 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, + -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, + -1, 144, 145, 146, -1, 148, 149, 150, 151, -1, + 153, 154, 155, 156, 157, -1, -1, 160, -1, 162, + 163, 164, 165, -1, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, -1, 179, -1, -1, -1, + 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, + 203, -1, 205, 206, -1, 208, 209, 210, 211, 212, + 213, 214, -1, 216, -1, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, -1, -1, 231, 232, + 233, 234, -1, 236, 237, 238, -1, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, -1, -1, + 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, + 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, + -1, 294, -1, 296, 297, 298, -1, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, -1, 311, 312, + -1, 314, 315, 316, -1, 318, 319, 320, -1, 322, + 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, + 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, + 353, 354, 355, 356, 357, -1, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, + 373, 374, 375, 376, 377, -1, 379, 380, 381, 382, + 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, + 403, -1, 405, 406, -1, 408, 409, 410, 411, 412, + 413, 414, -1, 416, 417, -1, -1, 420, 421, -1, + 423, -1, -1, 426, 427, 428, 429, 430, 431, 432, + 433, -1, -1, 436, 437, 438, 439, 440, 441, 442, + -1, 444, 445, 446, 447, 448, -1, 450, -1, 452, + 453, 454, 455, 456, 457, 458, -1, -1, 461, -1, + -1, 464, 465, 466, 467, 468, 469, 3, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, + 483, 484, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, @@ -323554,7 +322519,7 @@ static const yytype_int16 yycheck[] = 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, - 30, 31, 32, -1, -1, -1, -1, -1, 38, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, @@ -323588,7 +322553,7 @@ static const yytype_int16 yycheck[] = 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - -1, 371, 372, 373, 374, 375, -1, -1, 378, 379, + -1, 371, 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, 408, -1, @@ -323603,7 +322568,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, - -1, -1, 40, 41, -1, 43, 44, 45, -1, 47, + 38, -1, 40, 41, -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, -1, -1, -1, @@ -323636,7 +322601,7 @@ static const yytype_int16 yycheck[] = 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, -1, 371, 372, 373, 374, 375, -1, 377, + 368, 369, -1, 371, 372, 373, 374, 375, -1, -1, 378, 379, 380, 381, -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, -1, @@ -323748,163 +322713,211 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, - -1, 43, 44, 45, 46, 47, 48, 49, -1, 51, - 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, + -1, 43, 44, 45, -1, 47, 48, 49, 50, 51, + -1, 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, 70, 71, - 72, 73, -1, -1, 76, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, - 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, - 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + 72, 73, 74, -1, -1, -1, 78, 79, 80, 81, + 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, 150, 151, - -1, 153, 154, 155, 156, 157, -1, -1, 160, -1, - 162, 163, 164, 165, -1, 167, -1, 169, 170, -1, - 172, 173, 174, -1, 176, 177, -1, 179, -1, -1, - -1, 183, -1, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, -1, 198, 199, 200, 201, - 202, 203, -1, 205, 206, -1, 208, 209, 210, 211, - 212, 213, 214, -1, 216, -1, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, -1, -1, 231, - 232, 233, 234, -1, 236, 237, 238, -1, -1, 241, - 242, 243, 244, 245, -1, 247, 248, 249, 250, 251, + 152, 153, 154, 155, 156, 157, 158, -1, 160, -1, + 162, 163, 164, 165, -1, 167, -1, 169, -1, -1, + -1, 173, 174, 175, -1, 177, -1, 179, -1, 181, + 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, + -1, 193, 194, 195, 196, -1, 198, 199, 200, 201, + 202, 203, -1, 205, -1, 207, 208, 209, 210, 211, + 212, 213, 214, -1, 216, -1, 218, -1, -1, 221, + -1, 223, 224, 225, 226, 227, 228, -1, -1, 231, + -1, 233, -1, -1, 236, 237, 238, -1, -1, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, -1, - -1, 273, 274, 275, 276, -1, -1, 279, 280, 281, + 262, 263, 264, 265, -1, 267, 268, 269, 270, 271, + -1, 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, 290, 291, - -1, -1, 294, -1, 296, 297, 298, -1, 300, 301, + -1, -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, -1, 311, - 312, -1, 314, 315, 316, -1, 318, 319, 320, -1, + 312, 313, -1, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, -1, - 352, 353, 354, 355, 356, 357, -1, 359, 360, 361, + 352, 353, -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, -1, 371, - 372, 373, 374, 375, 376, 377, -1, 379, 380, 381, - 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, -1, 401, - -1, 403, -1, 405, 406, -1, 408, 409, 410, 411, + 372, 373, 374, 375, -1, 377, 378, 379, 380, 381, + -1, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, -1, 405, 406, -1, 408, -1, 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, 420, 421, - -1, 423, -1, -1, 426, 427, 428, 429, 430, 431, + 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, 440, 441, - 442, -1, 444, 445, 446, 447, 448, -1, 450, -1, - 452, 453, 454, 455, 456, 457, 458, -1, -1, 461, - -1, -1, 464, 465, 466, 467, 468, 469, 3, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 481, - 482, 483, 484, -1, -1, -1, 21, 22, 23, 24, - 25, 26, 27, 28, -1, 30, 31, 32, -1, -1, - -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, - 45, -1, 47, 48, 49, 50, 51, -1, 53, 54, - -1, 56, 57, 58, 59, 60, 61, -1, -1, 64, - 65, 66, 67, 68, -1, 70, 71, 72, 73, 74, - -1, -1, -1, 78, 79, 80, 81, 82, 83, -1, - 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, - -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, - -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, -1, 118, -1, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, -1, -1, 134, - 135, 136, 137, 138, -1, 140, 141, 142, -1, 144, - 145, 146, -1, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, -1, 160, -1, 162, 163, 164, - 165, -1, 167, -1, 169, -1, -1, -1, 173, 174, - 175, -1, 177, -1, 179, -1, 181, 182, 183, -1, - 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, - 195, 196, -1, 198, 199, 200, 201, 202, 203, -1, - 205, -1, 207, 208, 209, 210, 211, 212, 213, 214, - -1, 216, -1, 218, -1, -1, 221, -1, 223, 224, - 225, 226, 227, 228, -1, -1, 231, -1, 233, -1, - -1, 236, 237, 238, -1, -1, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, -1, 267, 268, 269, 270, 271, -1, 273, 274, - -1, 276, -1, 278, 279, 280, 281, 282, 283, -1, - 285, 286, -1, -1, 289, 290, 291, -1, -1, 294, - 295, -1, 297, -1, 299, 300, 301, 302, 303, 304, - 305, -1, 307, 308, 309, -1, 311, 312, 313, -1, - 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, - 325, 326, 327, -1, 329, -1, 331, 332, 333, 334, - 335, 336, -1, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, -1, 352, 353, -1, - 355, 356, 357, 358, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, -1, 371, 372, 373, 374, - 375, -1, 377, 378, 379, 380, 381, -1, 383, 384, - 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, - 405, 406, -1, 408, -1, 410, 411, 412, 413, 414, - -1, 416, 417, -1, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, 429, 430, 431, 432, 433, -1, - -1, 436, 437, 438, 439, 440, 441, -1, -1, 444, - 445, 446, 447, 448, 449, 450, -1, 452, -1, 454, - 455, 456, 457, 458, -1, -1, 461, -1, -1, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 21, 21, -1, -1, -1, -1, -1, -1, -1, -1, - 31, 31, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 49, 49, - -1, -1, -1, -1, -1, -1, -1, 58, 58, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 81, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 93, 95, 95, -1, -1, -1, -1, + -1, -1, 444, 445, 446, 447, 448, 449, 450, -1, + 452, -1, 454, 455, 456, 457, 458, -1, -1, 461, + -1, -1, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 3, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 21, 22, 23, 24, 25, 26, 27, 28, -1, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, 46, 47, 48, 49, + -1, 51, 52, 53, 54, -1, 56, 57, 58, 59, + 60, 61, -1, -1, 64, 65, 66, 67, 68, -1, + 70, 71, 72, 73, -1, -1, 76, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, + 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, + 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, -1, 118, -1, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, -1, -1, 134, 135, 136, 137, 138, -1, + 140, 141, 142, -1, 144, 145, 146, -1, 148, 149, + 150, 151, -1, 153, 154, 155, 156, 157, -1, -1, + 160, -1, 162, 163, 164, 165, -1, 167, -1, 169, + 170, -1, 172, 173, 174, -1, 176, 177, -1, 179, + -1, -1, -1, 183, -1, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, -1, 198, 199, + 200, 201, 202, 203, -1, 205, 206, -1, 208, 209, + 210, 211, 212, 213, 214, -1, 216, -1, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, -1, + -1, 231, 232, 233, 234, -1, 236, 237, 238, -1, + -1, 241, 242, 243, 244, 245, -1, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, -1, -1, 273, 274, 275, 276, -1, -1, 279, + 280, 281, 282, 283, -1, 285, 286, -1, -1, 289, + 290, 291, -1, -1, 294, -1, 296, 297, 298, -1, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + -1, 311, 312, -1, 314, 315, 316, -1, 318, 319, + 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, + 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, -1, 352, 353, 354, 355, 356, 357, -1, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + -1, 371, 372, 373, 374, 375, 376, 377, -1, 379, + 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + -1, 401, -1, 403, -1, 405, 406, -1, 408, 409, + 410, 411, 412, 413, 414, -1, 416, 417, -1, -1, + 420, 421, -1, 423, -1, -1, 426, 427, 428, 429, + 430, 431, 432, 433, -1, -1, 436, 437, 438, 439, + 440, 441, 442, -1, 444, 445, 446, 447, 448, -1, + 450, -1, 452, 453, 454, 455, 456, 457, 458, -1, + -1, 461, -1, -1, 464, 465, 466, 467, 468, 469, + 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 481, 482, 483, 484, -1, -1, -1, 21, 22, + 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + 43, 44, 45, -1, 47, 48, 49, 50, 51, -1, + 53, 54, -1, 56, 57, 58, 59, 60, 61, -1, + -1, 64, 65, 66, 67, 68, -1, 70, 71, 72, + 73, 74, -1, -1, -1, 78, 79, 80, 81, 82, + 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, -1, 118, -1, 120, 121, 122, + 123, 124, 125, -1, 127, 128, 129, 130, 131, -1, + -1, 134, 135, 136, 137, 138, -1, 140, 141, 142, + -1, 144, 145, 146, -1, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, -1, 160, -1, 162, + 163, 164, 165, -1, 167, -1, 169, -1, -1, -1, + 173, 174, 175, -1, 177, -1, 179, -1, 181, 182, + 183, -1, 185, 186, 187, 188, 189, 190, 191, -1, + 193, 194, 195, 196, -1, 198, 199, 200, 201, 202, + 203, -1, 205, -1, 207, 208, 209, 210, 211, 212, + 213, 214, -1, 216, -1, 218, -1, -1, 221, -1, + 223, 224, 225, 226, 227, 228, -1, -1, 231, -1, + 233, -1, -1, 236, 237, 238, -1, -1, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, -1, 267, 268, 269, 270, 271, -1, + 273, 274, -1, 276, -1, 278, 279, 280, 281, 282, + 283, -1, 285, 286, -1, -1, 289, 290, 291, -1, + -1, 294, 295, -1, 297, -1, 299, 300, 301, 302, + 303, 304, 305, -1, 307, 308, 309, -1, 311, 312, + 313, -1, 315, 316, 317, 318, 319, 320, -1, 322, + 323, 324, 325, 326, 327, -1, 329, -1, 331, 332, + 333, 334, 335, 336, -1, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, -1, 352, + 353, -1, 355, 356, 357, 358, -1, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, -1, 371, 372, + 373, 374, 375, -1, 377, 378, 379, 380, 381, -1, + 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, -1, 405, 406, -1, 408, -1, 410, 411, 412, + 413, 414, -1, 416, 417, -1, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, + 433, -1, -1, 436, 437, 438, 439, 440, 441, -1, + -1, 444, 445, 446, 447, 448, 449, 450, -1, 452, + -1, 454, 455, 456, 457, 458, -1, -1, 461, -1, + -1, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 21, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 31, -1, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 113, 113, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 127, 127, -1, -1, - -1, -1, -1, -1, -1, -1, 137, 137, -1, -1, - -1, -1, 143, 143, -1, -1, -1, -1, -1, -1, - 151, 151, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 167, 167, -1, -1, - 171, 171, -1, -1, -1, -1, -1, -1, -1, -1, + 49, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, + -1, -1, -1, -1, 143, -1, -1, -1, -1, -1, + -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, + -1, -1, 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 211, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 237, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 315, 315, -1, 318, 318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 347, 347, -1, -1, - -1, -1, -1, -1, -1, 356, 356, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 370, -1, -1, -1, -1, -1, 377, 377, -1, -1, - 381, 381, -1, -1, -1, -1, -1, -1, -1, -1, - 391, 391, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 403, 403, -1, -1, 407, 407, -1, -1, + -1, -1, -1, -1, -1, -1, 315, -1, -1, 318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 426, 426, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 444, 444, -1, -1, -1, 449, 449, - -1, -1, 453, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 463, 463, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 347, -1, + -1, -1, -1, -1, -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 487, 487, -1, -1, + -1, 370, -1, -1, -1, -1, -1, -1, 377, -1, + -1, -1, 381, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 391, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 403, -1, -1, -1, 407, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 426, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 444, -1, -1, -1, -1, + 449, -1, -1, -1, 453, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 463, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 501, 501 + -1, -1, -1, -1, -1, -1, -1, -1, 487, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 501 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_int16 yystos[] = { 0, 21, 31, 33, 34, 44, 49, 58, 70, 81, 93, 95, 113, 127, 128, 137, 143, 151, 153, 154, 167, 171, 196, 211, 237, 315, 318, 347, 356, 370, 377, 381, 391, 403, 407, 426, 441, 444, 449, 463, - 487, 501, 513, 514, 515, 516, 527, 528, 530, 534, - 550, 553, 554, 556, 558, 560, 567, 569, 570, 618, - 625, 628, 629, 646, 647, 648, 649, 651, 652, 704, - 705, 853, 856, 859, 866, 867, 869, 870, 871, 878, - 882, 888, 890, 895, 899, 900, 901, 906, 909, 910, - 913, 914, 916, 420, 466, 568, 200, 363, 371, 407, - 455, 110, 902, 568, 3, 21, 22, 23, 24, 25, + 487, 501, 513, 514, 515, 516, 533, 536, 537, 538, + 539, 540, 542, 543, 595, 596, 744, 745, 748, 749, + 752, 759, 760, 808, 809, 812, 814, 817, 824, 828, + 835, 838, 840, 851, 853, 855, 858, 863, 870, 871, + 872, 876, 878, 884, 886, 888, 890, 893, 894, 895, + 896, 900, 916, 420, 466, 852, 200, 363, 371, 407, + 455, 110, 810, 852, 3, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 64, 65, 66, 67, @@ -323943,351 +322956,770 @@ static const yytype_uint16 yystos[] = 442, 444, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 458, 461, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 764, 837, 841, - 844, 919, 920, 921, 3, 175, 246, 400, 841, 868, - 919, 568, 52, 501, 641, 5, 110, 177, 238, 292, - 363, 411, 413, 429, 435, 438, 555, 616, 840, 865, - 5, 29, 318, 835, 841, 842, 3, 110, 904, 905, - 23, 76, 92, 110, 146, 156, 168, 173, 200, 245, - 249, 312, 327, 360, 363, 371, 374, 393, 407, 414, - 423, 429, 455, 619, 620, 623, 568, 835, 95, 453, - 501, 516, 527, 528, 530, 550, 553, 556, 558, 560, - 567, 570, 618, 625, 628, 629, 646, 853, 856, 859, - 866, 867, 874, 878, 882, 888, 890, 895, 906, 909, - 913, 914, 916, 110, 70, 211, 63, 74, 76, 100, - 101, 102, 103, 104, 105, 106, 158, 229, 239, 240, - 278, 288, 299, 313, 359, 376, 402, 422, 424, 428, - 442, 449, 501, 647, 705, 707, 709, 710, 717, 718, - 764, 766, 767, 832, 841, 842, 110, 840, 841, 889, - 889, 841, 835, 29, 416, 420, 841, 907, 908, 911, - 568, 29, 132, 660, 661, 177, 238, 363, 375, 416, - 883, 884, 911, 568, 646, 652, 841, 912, 717, 841, - 407, 657, 832, 172, 501, 892, 501, 335, 653, 654, - 835, 653, 647, 648, 0, 504, 122, 210, 440, 147, - 215, 293, 434, 663, 664, 647, 649, 651, 505, 453, - 872, 29, 416, 420, 646, 912, 190, 832, 835, 190, - 832, 190, 717, 190, 832, 840, 501, 499, 503, 816, - 818, 646, 832, 190, 832, 411, 413, 411, 413, 345, - 190, 832, 832, 110, 173, 245, 335, 371, 407, 455, - 626, 200, 29, 835, 190, 621, 841, 846, 505, 251, - 423, 109, 407, 407, 455, 366, 3, 46, 51, 52, - 53, 54, 66, 67, 76, 78, 84, 96, 100, 101, - 102, 103, 106, 114, 115, 136, 164, 170, 172, 176, - 190, 192, 206, 213, 214, 216, 219, 220, 222, 232, - 234, 246, 265, 266, 267, 275, 280, 296, 298, 314, - 332, 354, 358, 376, 378, 382, 385, 400, 409, 416, - 417, 428, 434, 442, 450, 453, 624, 728, 730, 732, - 734, 736, 738, 740, 741, 742, 744, 745, 746, 748, - 749, 845, 919, 922, 190, 621, 190, 833, 835, 190, - 835, 501, 559, 292, 874, 3, 46, 50, 51, 52, - 53, 54, 66, 67, 74, 76, 78, 84, 96, 100, - 101, 102, 103, 106, 114, 115, 152, 158, 164, 170, - 172, 175, 176, 181, 182, 192, 206, 207, 213, 214, + 478, 479, 480, 481, 482, 483, 484, 655, 728, 732, + 735, 917, 918, 919, 3, 175, 246, 400, 732, 885, + 917, 852, 52, 501, 528, 5, 110, 177, 238, 292, + 363, 411, 413, 429, 435, 438, 731, 806, 839, 869, + 5, 29, 318, 726, 732, 733, 110, 810, 23, 76, + 92, 110, 146, 156, 168, 173, 200, 245, 249, 312, + 327, 360, 363, 371, 374, 393, 407, 414, 423, 429, + 455, 829, 830, 833, 852, 726, 95, 453, 501, 516, + 533, 536, 537, 744, 745, 748, 752, 759, 760, 812, + 814, 820, 824, 828, 835, 840, 851, 853, 855, 858, + 863, 872, 876, 878, 884, 886, 888, 890, 894, 895, + 896, 110, 70, 211, 63, 74, 76, 100, 101, 102, + 103, 104, 105, 106, 158, 229, 239, 240, 278, 288, + 299, 313, 359, 376, 402, 422, 424, 428, 442, 449, + 501, 538, 596, 598, 600, 601, 608, 609, 655, 657, + 658, 723, 732, 733, 110, 731, 732, 887, 887, 732, + 726, 29, 416, 420, 534, 535, 732, 750, 852, 29, + 132, 551, 552, 177, 238, 363, 375, 416, 750, 879, + 880, 852, 537, 543, 732, 751, 608, 732, 407, 548, + 723, 172, 501, 860, 501, 335, 544, 545, 726, 544, + 538, 539, 0, 504, 147, 215, 293, 434, 554, 555, + 538, 540, 542, 505, 29, 416, 420, 537, 751, 453, + 818, 122, 210, 440, 190, 723, 726, 190, 723, 190, + 608, 190, 723, 731, 501, 499, 503, 707, 709, 537, + 723, 190, 723, 411, 413, 411, 413, 345, 190, 723, + 723, 173, 245, 335, 371, 407, 455, 891, 110, 200, + 29, 726, 190, 3, 251, 423, 109, 407, 407, 455, + 366, 3, 46, 51, 52, 53, 54, 66, 67, 76, + 78, 84, 96, 100, 101, 102, 103, 106, 114, 115, + 136, 164, 170, 172, 176, 190, 192, 206, 213, 214, 216, 219, 220, 222, 232, 234, 246, 265, 266, 267, - 271, 275, 278, 280, 295, 296, 298, 299, 313, 314, - 317, 332, 354, 358, 376, 378, 382, 385, 400, 402, - 409, 416, 417, 422, 424, 428, 442, 449, 450, 453, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 875, 877, 878, 880, 881, 919, 923, 872, 840, - 841, 868, 889, 501, 501, 166, 501, 501, 501, 647, - 718, 501, 501, 501, 501, 832, 501, 501, 171, 501, - 501, 501, 501, 647, 705, 709, 710, 38, 711, 712, - 841, 711, 370, 505, 650, 96, 172, 206, 222, 232, - 266, 314, 354, 714, 712, 38, 711, 713, 841, 487, - 722, 494, 818, 840, 490, 501, 501, 854, 484, 221, - 503, 287, 4, 6, 7, 8, 9, 10, 37, 51, - 53, 54, 62, 66, 67, 78, 114, 115, 117, 152, - 159, 164, 181, 182, 213, 214, 216, 265, 267, 272, - 277, 280, 289, 332, 358, 385, 416, 417, 425, 450, - 485, 492, 493, 494, 499, 501, 506, 507, 508, 509, - 647, 694, 733, 736, 739, 740, 741, 743, 744, 745, - 748, 749, 760, 762, 763, 764, 765, 767, 768, 782, - 783, 790, 810, 815, 822, 823, 824, 837, 838, 839, - 840, 841, 821, 823, 883, 883, 840, 883, 484, 171, - 418, 490, 503, 818, 717, 896, 3, 170, 172, 453, - 878, 891, 893, 170, 894, 760, 794, 795, 841, 653, - 505, 501, 848, 502, 502, 515, 171, 292, 537, 896, - 29, 132, 658, 658, 56, 658, 161, 166, 235, 284, - 669, 671, 672, 697, 699, 700, 701, 663, 664, 501, - 832, 484, 221, 152, 25, 31, 137, 291, 343, 347, - 377, 446, 521, 524, 525, 343, 152, 38, 57, 108, - 199, 250, 258, 270, 301, 343, 349, 371, 377, 391, - 524, 561, 564, 152, 343, 377, 524, 152, 343, 377, - 524, 38, 903, 3, 29, 46, 52, 76, 78, 84, - 96, 100, 101, 102, 103, 106, 132, 170, 172, 175, - 176, 192, 206, 219, 220, 222, 232, 234, 246, 266, - 275, 296, 298, 314, 354, 376, 382, 400, 409, 428, - 442, 451, 453, 494, 502, 760, 797, 798, 843, 849, - 919, 924, 760, 817, 3, 29, 33, 34, 35, 36, - 37, 38, 39, 42, 55, 62, 63, 69, 75, 77, - 88, 95, 104, 105, 117, 119, 126, 132, 133, 139, - 143, 147, 159, 161, 166, 168, 171, 178, 180, 184, - 197, 204, 215, 217, 229, 230, 235, 239, 240, 272, - 277, 284, 287, 288, 292, 293, 310, 321, 328, 337, - 351, 370, 387, 404, 407, 415, 418, 419, 425, 434, - 435, 443, 449, 451, 459, 460, 462, 463, 836, 850, - 919, 923, 925, 816, 502, 501, 605, 272, 171, 110, - 616, 272, 857, 38, 832, 455, 190, 832, 190, 832, - 918, 190, 832, 190, 832, 84, 862, 152, 505, 503, - 847, 904, 467, 85, 129, 304, 412, 452, 747, 747, - 747, 501, 735, 735, 317, 501, 737, 152, 501, 66, - 67, 747, 735, 732, 465, 487, 501, 750, 501, 750, - 501, 60, 350, 505, 622, 501, 37, 731, 501, 111, - 112, 187, 188, 252, 253, 254, 255, 256, 257, 260, - 261, 367, 368, 481, 482, 501, 751, 752, 753, 754, - 755, 756, 757, 758, 759, 735, 152, 622, 152, 505, - 622, 152, 287, 795, 345, 502, 505, 4, 159, 287, - 425, 492, 493, 563, 566, 839, 840, 873, 875, 876, - 879, 874, 501, 636, 640, 418, 760, 795, 501, 839, - 839, 3, 751, 752, 753, 754, 755, 756, 757, 758, - 800, 801, 840, 712, 713, 839, 839, 760, 832, 760, - 802, 492, 493, 761, 762, 783, 790, 804, 501, 760, - 794, 805, 760, 55, 171, 230, 419, 760, 795, 808, - 760, 502, 842, 409, 677, 678, 501, 678, 660, 661, - 709, 217, 655, 222, 296, 715, 709, 715, 222, 714, - 222, 715, 222, 678, 501, 842, 678, 501, 294, 563, - 879, 885, 887, 797, 730, 799, 38, 233, 841, 501, - 499, 647, 760, 814, 501, 647, 760, 501, 501, 760, - 760, 760, 148, 825, 826, 760, 795, 796, 647, 760, - 794, 9, 3, 852, 784, 785, 786, 842, 818, 501, - 840, 501, 839, 840, 3, 8, 11, 15, 16, 17, - 18, 19, 20, 35, 38, 43, 50, 75, 176, 192, - 197, 219, 220, 234, 272, 275, 289, 292, 382, 485, - 488, 489, 490, 492, 493, 494, 495, 496, 497, 788, - 789, 790, 792, 819, 464, 769, 298, 760, 505, 655, - 501, 840, 819, 503, 818, 655, 3, 117, 238, 563, - 749, 840, 886, 99, 117, 887, 117, 887, 841, 38, - 841, 502, 505, 872, 505, 502, 654, 833, 834, 38, - 896, 191, 345, 217, 377, 649, 649, 29, 494, 665, - 666, 760, 56, 649, 659, 163, 269, 685, 224, 270, - 331, 380, 440, 4, 9, 29, 680, 760, 492, 493, - 681, 682, 760, 762, 697, 698, 672, 671, 669, 670, - 166, 700, 282, 702, 669, 697, 795, 848, 233, 832, - 69, 77, 88, 168, 190, 321, 435, 587, 597, 612, - 841, 77, 88, 529, 88, 529, 501, 418, 501, 585, - 244, 438, 585, 88, 505, 418, 832, 732, 563, 56, - 565, 563, 563, 108, 250, 258, 56, 418, 463, 487, - 562, 263, 363, 562, 564, 717, 88, 418, 529, 363, - 832, 418, 363, 841, 636, 797, 797, 798, 502, 505, - 663, 664, 13, 14, 500, 511, 418, 604, 609, 841, - 463, 639, 152, 840, 832, 335, 407, 455, 626, 152, - 95, 556, 570, 858, 859, 914, 144, 730, 832, 272, - 557, 561, 272, 501, 605, 38, 272, 605, 272, 501, - 627, 190, 599, 841, 863, 621, 846, 836, 503, 501, - 796, 839, 624, 799, 747, 747, 37, 731, 416, 416, - 839, 839, 727, 841, 730, 727, 499, 499, 839, 839, - 418, 418, 418, 418, 621, 833, 835, 835, 846, 502, - 874, 880, 4, 839, 4, 839, 638, 645, 850, 52, - 97, 123, 141, 145, 167, 170, 185, 277, 285, 306, - 329, 642, 840, 38, 502, 760, 502, 502, 502, 171, - 502, 502, 505, 502, 310, 803, 502, 761, 761, 11, - 15, 18, 19, 20, 197, 219, 289, 488, 489, 490, - 492, 493, 494, 495, 496, 497, 790, 761, 502, 719, - 720, 766, 166, 171, 806, 807, 505, 502, 38, 808, - 795, 808, 808, 171, 502, 38, 711, 501, 4, 9, - 673, 675, 676, 841, 834, 823, 821, 177, 238, 407, - 411, 413, 438, 656, 832, 460, 723, 709, 287, 443, - 716, 709, 222, 709, 709, 724, 725, 842, 501, 724, - 842, 505, 502, 505, 502, 505, 530, 628, 646, 855, - 895, 795, 796, 459, 811, 812, 494, 840, 8, 15, - 18, 19, 20, 488, 489, 490, 492, 493, 494, 495, - 496, 497, 788, 793, 841, 502, 795, 501, 841, 345, - 830, 166, 500, 502, 505, 505, 510, 511, 795, 760, - 759, 759, 730, 760, 760, 760, 760, 760, 760, 760, - 5, 850, 851, 416, 42, 404, 820, 846, 760, 760, - 501, 647, 809, 132, 159, 272, 277, 282, 425, 436, - 760, 277, 501, 760, 418, 50, 176, 192, 197, 234, - 382, 760, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 29, 36, 387, 787, 816, 180, 162, 770, 358, - 501, 783, 824, 171, 706, 797, 494, 706, 501, 840, - 841, 832, 891, 832, 899, 760, 505, 502, 501, 443, - 898, 532, 832, 501, 536, 546, 547, 549, 841, 39, - 126, 667, 667, 505, 443, 667, 263, 649, 358, 359, - 492, 493, 682, 684, 762, 380, 224, 288, 309, 309, - 505, 496, 4, 683, 839, 683, 358, 359, 684, 831, - 832, 276, 384, 703, 698, 670, 502, 343, 524, 501, - 190, 597, 835, 224, 272, 224, 443, 501, 590, 729, - 730, 835, 841, 190, 835, 190, 841, 25, 137, 377, - 520, 523, 581, 595, 850, 835, 589, 608, 850, 835, - 521, 835, 343, 377, 524, 561, 563, 846, 835, 563, - 846, 835, 563, 343, 377, 524, 835, 835, 835, 835, - 343, 377, 524, 835, 835, 663, 663, 663, 451, 798, - 191, 348, 662, 760, 760, 760, 817, 326, 635, 502, - 505, 285, 171, 418, 630, 832, 171, 455, 832, 918, - 832, 832, 832, 292, 616, 501, 647, 501, 152, 152, - 234, 587, 597, 600, 603, 613, 615, 841, 463, 465, - 592, 151, 646, 152, 463, 864, 152, 502, 797, 38, - 272, 287, 836, 795, 502, 502, 622, 502, 499, 484, - 484, 502, 502, 502, 505, 730, 502, 839, 500, 839, - 502, 502, 752, 754, 755, 756, 755, 756, 756, 622, - 622, 287, 622, 502, 505, 494, 501, 563, 637, 879, - 38, 634, 840, 634, 272, 277, 329, 634, 56, 634, - 636, 730, 502, 760, 760, 760, 806, 730, 761, 761, - 761, 761, 761, 132, 272, 282, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 502, 505, 38, 721, - 760, 760, 807, 806, 730, 502, 502, 502, 795, 730, - 834, 309, 496, 309, 359, 496, 501, 501, 502, 655, - 411, 413, 411, 413, 832, 657, 657, 657, 760, 180, - 686, 760, 501, 709, 716, 502, 505, 730, 724, 502, - 885, 730, 502, 500, 760, 139, 812, 813, 826, 502, - 502, 503, 502, 834, 501, 760, 827, 841, 760, 784, - 760, 502, 502, 484, 761, 761, 145, 795, 171, 132, - 159, 277, 282, 425, 436, 501, 145, 793, 760, 404, - 820, 760, 809, 760, 418, 501, 647, 501, 501, 155, - 771, 707, 708, 723, 663, 826, 723, 839, 759, 848, - 855, 708, 460, 897, 117, 300, 501, 531, 646, 38, - 542, 549, 505, 706, 490, 819, 486, 668, 668, 666, - 289, 788, 791, 668, 4, 839, 684, 288, 440, 681, - 505, 243, 418, 760, 272, 612, 501, 152, 501, 590, - 200, 609, 610, 571, 38, 175, 580, 606, 571, 25, - 137, 347, 349, 377, 517, 518, 519, 525, 526, 152, - 622, 152, 622, 581, 595, 581, 502, 505, 574, 840, - 502, 505, 490, 503, 418, 363, 88, 418, 529, 363, - 418, 418, 418, 363, 662, 662, 662, 798, 279, 279, - 502, 500, 394, 395, 644, 840, 604, 635, 171, 840, - 832, 501, 38, 605, 627, 857, 345, 407, 551, 552, - 840, 609, 832, 832, 918, 832, 502, 505, 285, 585, - 285, 287, 584, 835, 463, 917, 832, 585, 38, 832, - 502, 407, 760, 152, 832, 502, 731, 839, 750, 750, - 731, 841, 731, 500, 500, 846, 638, 632, 643, 879, - 840, 840, 277, 609, 494, 609, 840, 494, 609, 840, - 502, 502, 807, 171, 132, 282, 501, 722, 719, 501, - 502, 502, 502, 841, 673, 723, 657, 657, 657, 657, - 832, 832, 832, 56, 184, 695, 834, 725, 75, 726, - 502, 415, 760, 143, 830, 793, 502, 760, 827, 828, - 829, 38, 197, 502, 759, 760, 35, 35, 760, 502, - 760, 171, 501, 799, 760, 502, 145, 761, 761, 145, - 145, 760, 760, 664, 460, 760, 297, 775, 505, 686, - 662, 830, 686, 502, 502, 760, 351, 540, 449, 406, - 442, 541, 535, 545, 841, 287, 538, 841, 502, 505, - 536, 897, 760, 163, 228, 501, 668, 288, 832, 835, - 502, 152, 610, 597, 610, 571, 599, 505, 502, 119, - 204, 270, 272, 596, 501, 32, 56, 617, 606, 69, - 75, 88, 117, 119, 204, 272, 277, 321, 337, 435, - 443, 576, 577, 591, 175, 117, 189, 272, 585, 562, - 109, 117, 175, 272, 393, 396, 564, 585, 377, 519, - 429, 835, 841, 523, 608, 3, 46, 52, 76, 78, - 84, 96, 100, 101, 102, 103, 106, 170, 172, 175, - 176, 192, 206, 219, 220, 222, 232, 234, 246, 266, - 271, 275, 289, 296, 298, 314, 354, 376, 378, 382, - 400, 409, 428, 434, 442, 453, 492, 493, 563, 572, - 611, 730, 791, 840, 843, 919, 925, 850, 835, 835, - 835, 835, 835, 835, 835, 835, 835, 835, 502, 502, - 502, 663, 562, 644, 840, 501, 603, 646, 864, 38, - 616, 190, 832, 502, 505, 502, 557, 501, 38, 594, - 592, 600, 81, 559, 109, 270, 605, 646, 627, 646, - 599, 443, 861, 500, 730, 622, 502, 505, 609, 761, - 171, 501, 799, 724, 502, 505, 502, 686, 832, 832, - 832, 832, 29, 98, 181, 357, 494, 501, 687, 688, - 689, 690, 691, 692, 693, 760, 760, 462, 772, 502, - 846, 760, 502, 505, 502, 841, 760, 762, 760, 760, - 760, 799, 502, 760, 35, 35, 760, 760, 145, 502, - 502, 760, 502, 501, 776, 841, 695, 502, 695, 840, - 822, 448, 502, 505, 819, 86, 540, 490, 549, 540, - 793, 571, 597, 502, 502, 463, 602, 120, 193, 202, - 119, 445, 760, 117, 38, 501, 846, 835, 761, 120, - 193, 119, 277, 224, 832, 602, 83, 617, 190, 277, - 563, 760, 617, 277, 492, 493, 566, 841, 730, 622, - 622, 246, 400, 843, 847, 490, 418, 418, 662, 636, - 443, 631, 633, 609, 502, 917, 38, 407, 760, 407, - 272, 501, 840, 864, 603, 151, 646, 149, 198, 584, - 122, 137, 320, 917, 109, 864, 463, 915, 38, 287, - 841, 860, 501, 643, 761, 799, 502, 502, 9, 344, - 679, 695, 501, 379, 501, 502, 505, 773, 774, 841, - 328, 696, 827, 500, 190, 502, 760, 760, 760, 502, - 777, 841, 772, 840, 772, 505, 646, 300, 646, 535, - 287, 501, 533, 760, 502, 337, 602, 501, 593, 571, - 502, 189, 501, 760, 272, 577, 602, 605, 835, 38, - 152, 726, 847, 496, 572, 835, 835, 502, 562, 124, - 502, 592, 646, 646, 832, 152, 38, 502, 835, 917, - 29, 80, 89, 118, 189, 201, 393, 396, 588, 588, - 359, 359, 38, 61, 69, 238, 407, 760, 832, 501, - 539, 548, 766, 841, 502, 502, 501, 772, 795, 501, - 795, 689, 505, 38, 760, 443, 674, 760, 306, 778, - 696, 696, 541, 88, 548, 133, 832, 571, 598, 601, - 850, 397, 457, 578, 579, 501, 573, 760, 502, 248, - 614, 189, 443, 522, 496, 429, 636, 840, 864, 584, - 915, 501, 832, 646, 592, 559, 646, 69, 290, 69, - 646, 861, 760, 502, 505, 75, 543, 543, 9, 696, - 502, 688, 502, 774, 776, 361, 500, 56, 663, 674, - 674, 448, 835, 502, 273, 440, 605, 502, 505, 490, - 561, 502, 270, 586, 172, 305, 383, 287, 582, 583, - 607, 573, 760, 429, 38, 501, 915, 584, 917, 915, - 290, 290, 501, 502, 864, 539, 846, 544, 846, 544, - 502, 674, 502, 676, 794, 330, 359, 779, 646, 723, - 377, 614, 601, 572, 502, 579, 202, 122, 440, 287, - 607, 287, 582, 646, 548, 543, 723, 667, 667, 50, - 99, 431, 760, 780, 781, 780, 502, 547, 583, 60, - 270, 350, 377, 575, 575, 915, 502, 544, 668, 668, - 781, 358, 165, 316, 165, 316, 723, 571, 24, 117, - 277, 864, 667, 35, 723, 668, 781 -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab + 275, 280, 296, 298, 314, 332, 354, 358, 376, 378, + 382, 385, 400, 409, 416, 417, 428, 434, 442, 450, + 453, 619, 621, 623, 625, 627, 629, 631, 632, 633, + 635, 636, 637, 639, 640, 736, 834, 917, 920, 190, + 732, 737, 831, 190, 724, 726, 190, 726, 501, 813, + 292, 820, 3, 46, 50, 51, 52, 53, 54, 66, + 67, 74, 76, 78, 84, 96, 100, 101, 102, 103, + 106, 114, 115, 152, 158, 164, 170, 172, 175, 176, + 181, 182, 192, 206, 207, 213, 214, 216, 219, 220, + 222, 232, 234, 246, 265, 266, 267, 271, 275, 278, + 280, 295, 296, 298, 299, 313, 314, 317, 332, 354, + 358, 376, 378, 382, 385, 400, 402, 409, 416, 417, + 422, 424, 428, 442, 449, 450, 453, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 821, 823, + 824, 826, 827, 917, 921, 818, 731, 732, 885, 887, + 501, 501, 166, 501, 501, 501, 538, 609, 501, 501, + 501, 501, 723, 501, 501, 171, 501, 501, 501, 501, + 538, 596, 600, 601, 38, 602, 603, 732, 602, 370, + 505, 541, 96, 172, 206, 222, 232, 266, 314, 354, + 605, 603, 38, 602, 604, 732, 487, 613, 494, 709, + 731, 490, 501, 501, 856, 484, 221, 503, 287, 4, + 6, 7, 8, 9, 10, 37, 51, 53, 54, 62, + 66, 67, 78, 114, 115, 117, 152, 159, 164, 181, + 182, 213, 214, 216, 265, 267, 272, 277, 280, 289, + 332, 358, 385, 416, 417, 425, 450, 485, 492, 493, + 494, 499, 501, 506, 507, 508, 509, 538, 585, 624, + 627, 630, 631, 632, 634, 635, 636, 639, 640, 651, + 653, 654, 655, 656, 658, 659, 673, 674, 681, 701, + 706, 713, 714, 715, 728, 729, 730, 731, 732, 712, + 714, 879, 879, 731, 879, 484, 171, 418, 490, 503, + 709, 608, 873, 3, 170, 172, 453, 824, 859, 861, + 170, 862, 651, 685, 686, 732, 544, 505, 501, 739, + 502, 502, 515, 29, 132, 549, 549, 56, 549, 161, + 166, 235, 284, 560, 562, 563, 588, 590, 591, 592, + 554, 555, 501, 484, 221, 723, 171, 292, 903, 873, + 152, 25, 31, 137, 291, 343, 347, 377, 446, 845, + 848, 849, 343, 152, 38, 57, 108, 199, 250, 258, + 270, 301, 343, 349, 371, 377, 391, 753, 756, 848, + 152, 343, 377, 848, 152, 343, 377, 848, 38, 811, + 3, 29, 46, 52, 76, 78, 84, 96, 100, 101, + 102, 103, 106, 132, 170, 172, 175, 176, 192, 206, + 219, 220, 222, 232, 234, 246, 266, 275, 296, 298, + 314, 354, 376, 382, 400, 409, 428, 442, 451, 453, + 494, 502, 651, 688, 689, 734, 740, 917, 922, 651, + 708, 3, 29, 33, 34, 35, 36, 37, 38, 39, + 42, 55, 62, 63, 69, 75, 77, 88, 95, 104, + 105, 117, 119, 126, 132, 133, 139, 143, 147, 159, + 161, 166, 168, 171, 178, 180, 184, 197, 204, 215, + 217, 229, 230, 235, 239, 240, 272, 277, 284, 287, + 288, 292, 293, 310, 321, 328, 337, 351, 370, 387, + 404, 407, 415, 418, 419, 425, 434, 435, 443, 449, + 451, 459, 460, 462, 463, 727, 741, 917, 921, 923, + 707, 502, 501, 795, 272, 171, 110, 806, 272, 815, + 38, 455, 190, 723, 190, 723, 747, 190, 723, 190, + 723, 723, 84, 866, 152, 467, 85, 129, 304, 412, + 452, 638, 638, 638, 501, 626, 626, 317, 501, 628, + 152, 501, 66, 67, 638, 626, 623, 465, 487, 501, + 641, 501, 641, 501, 501, 37, 622, 501, 111, 112, + 187, 188, 252, 253, 254, 255, 256, 257, 260, 261, + 367, 368, 481, 482, 501, 642, 643, 644, 645, 646, + 647, 648, 649, 650, 626, 60, 350, 505, 832, 152, + 503, 738, 505, 832, 152, 505, 832, 152, 287, 686, + 345, 502, 505, 4, 159, 287, 425, 492, 493, 730, + 731, 755, 758, 819, 821, 822, 825, 820, 501, 523, + 527, 418, 651, 686, 501, 730, 730, 3, 642, 643, + 644, 645, 646, 647, 648, 649, 691, 692, 731, 603, + 604, 730, 730, 651, 723, 651, 693, 492, 493, 652, + 653, 674, 681, 695, 501, 651, 685, 696, 651, 55, + 171, 230, 419, 651, 686, 699, 651, 502, 733, 409, + 568, 569, 501, 569, 551, 552, 600, 217, 546, 222, + 296, 606, 600, 606, 222, 605, 222, 606, 222, 569, + 501, 733, 569, 501, 294, 755, 825, 881, 883, 688, + 621, 690, 38, 233, 732, 501, 499, 538, 651, 705, + 501, 538, 651, 501, 501, 651, 651, 651, 148, 716, + 717, 651, 686, 687, 538, 651, 685, 9, 3, 743, + 675, 676, 677, 733, 709, 501, 731, 501, 730, 731, + 3, 8, 11, 15, 16, 17, 18, 19, 20, 35, + 38, 43, 50, 75, 176, 192, 197, 219, 220, 234, + 272, 275, 289, 292, 382, 485, 488, 489, 490, 492, + 493, 494, 495, 496, 497, 679, 680, 681, 683, 710, + 464, 660, 298, 651, 505, 546, 501, 731, 710, 503, + 709, 546, 3, 117, 238, 640, 731, 755, 882, 99, + 117, 883, 117, 883, 732, 38, 732, 502, 505, 818, + 505, 502, 545, 724, 725, 38, 540, 540, 29, 494, + 556, 557, 651, 56, 540, 550, 163, 269, 576, 224, + 270, 331, 380, 440, 4, 9, 29, 571, 651, 492, + 493, 572, 573, 651, 653, 588, 589, 563, 562, 560, + 561, 166, 591, 282, 593, 560, 588, 686, 233, 739, + 873, 191, 345, 217, 377, 723, 69, 77, 88, 168, + 190, 321, 435, 732, 777, 787, 802, 77, 88, 854, + 88, 854, 501, 418, 501, 775, 244, 438, 775, 88, + 505, 418, 723, 623, 755, 56, 757, 755, 755, 108, + 250, 258, 56, 418, 463, 487, 754, 263, 363, 754, + 756, 608, 88, 418, 854, 363, 723, 418, 363, 732, + 523, 688, 688, 689, 502, 505, 554, 555, 13, 14, + 500, 511, 418, 732, 794, 799, 463, 526, 152, 731, + 723, 335, 407, 455, 891, 152, 95, 760, 816, 863, + 876, 888, 144, 621, 723, 272, 753, 889, 272, 501, + 795, 38, 272, 795, 272, 501, 892, 190, 732, 789, + 867, 3, 501, 687, 730, 834, 690, 638, 638, 37, + 622, 416, 416, 730, 730, 618, 732, 618, 499, 499, + 730, 730, 418, 418, 418, 418, 621, 831, 727, 503, + 737, 724, 726, 726, 737, 502, 820, 826, 4, 730, + 4, 730, 525, 532, 741, 52, 97, 123, 141, 145, + 167, 170, 185, 277, 285, 306, 329, 529, 731, 38, + 502, 651, 502, 502, 502, 171, 502, 502, 505, 502, + 310, 694, 502, 652, 652, 11, 15, 18, 19, 20, + 197, 219, 289, 488, 489, 490, 492, 493, 494, 495, + 496, 497, 681, 652, 502, 610, 611, 657, 166, 171, + 697, 698, 505, 502, 38, 699, 686, 699, 699, 171, + 502, 38, 602, 501, 4, 9, 564, 566, 567, 732, + 725, 714, 712, 177, 238, 407, 411, 413, 438, 547, + 723, 460, 614, 600, 287, 443, 607, 600, 222, 600, + 600, 615, 616, 733, 501, 615, 733, 505, 502, 505, + 502, 505, 537, 857, 872, 895, 896, 686, 687, 459, + 702, 703, 494, 731, 8, 15, 18, 19, 20, 488, + 489, 490, 492, 493, 494, 495, 496, 497, 679, 684, + 732, 502, 686, 501, 732, 345, 721, 166, 500, 502, + 505, 505, 510, 511, 686, 651, 650, 650, 621, 651, + 651, 651, 651, 651, 651, 651, 5, 741, 742, 416, + 42, 404, 711, 737, 651, 651, 501, 538, 700, 132, + 159, 272, 277, 282, 425, 436, 651, 277, 501, 651, + 418, 50, 176, 192, 197, 234, 382, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 29, 36, 387, + 678, 707, 180, 162, 661, 358, 501, 674, 715, 171, + 597, 688, 494, 597, 501, 731, 732, 723, 859, 723, + 916, 651, 505, 502, 501, 39, 126, 558, 558, 505, + 443, 558, 263, 540, 358, 359, 492, 493, 573, 575, + 653, 380, 224, 288, 309, 309, 505, 496, 4, 574, + 730, 574, 358, 359, 575, 722, 723, 276, 384, 594, + 589, 561, 502, 443, 875, 723, 898, 501, 732, 902, + 912, 913, 915, 343, 848, 501, 190, 787, 726, 224, + 272, 224, 443, 501, 780, 620, 621, 726, 732, 190, + 726, 190, 732, 25, 137, 377, 741, 771, 785, 844, + 847, 726, 741, 779, 798, 726, 845, 726, 343, 377, + 753, 848, 755, 737, 726, 755, 737, 726, 755, 343, + 377, 848, 726, 726, 726, 726, 343, 377, 848, 726, + 726, 554, 554, 554, 451, 689, 191, 348, 553, 651, + 651, 651, 708, 326, 522, 502, 505, 285, 171, 418, + 517, 723, 171, 455, 723, 747, 723, 723, 723, 292, + 806, 501, 538, 501, 152, 152, 234, 732, 777, 787, + 790, 793, 803, 805, 463, 465, 782, 151, 537, 152, + 463, 868, 152, 502, 688, 38, 272, 287, 686, 502, + 502, 832, 502, 499, 484, 484, 502, 502, 502, 505, + 621, 502, 730, 500, 730, 502, 502, 643, 645, 646, + 647, 646, 647, 647, 832, 727, 832, 287, 832, 502, + 505, 494, 501, 524, 755, 825, 38, 521, 731, 521, + 272, 277, 329, 521, 56, 521, 523, 621, 502, 651, + 651, 651, 697, 621, 652, 652, 652, 652, 652, 132, + 272, 282, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 502, 505, 38, 612, 651, 651, 698, 697, + 621, 502, 502, 502, 686, 621, 725, 309, 496, 309, + 359, 496, 501, 501, 502, 546, 411, 413, 411, 413, + 723, 548, 548, 548, 651, 180, 577, 651, 501, 600, + 607, 502, 505, 621, 615, 502, 881, 621, 502, 500, + 651, 139, 703, 704, 717, 502, 502, 503, 502, 725, + 501, 651, 718, 732, 651, 675, 651, 502, 502, 484, + 652, 652, 145, 686, 171, 132, 159, 277, 282, 425, + 436, 501, 145, 684, 651, 404, 711, 651, 700, 651, + 418, 501, 538, 501, 501, 155, 662, 598, 599, 614, + 554, 717, 614, 730, 650, 739, 857, 486, 559, 559, + 557, 289, 679, 682, 559, 4, 730, 575, 288, 440, + 572, 505, 243, 599, 460, 874, 38, 117, 300, 501, + 537, 897, 908, 915, 710, 505, 597, 490, 418, 651, + 272, 802, 501, 152, 501, 780, 200, 799, 800, 761, + 38, 175, 770, 796, 761, 25, 137, 347, 349, 377, + 841, 842, 843, 849, 850, 152, 832, 152, 832, 771, + 785, 771, 731, 764, 502, 505, 490, 503, 502, 505, + 418, 363, 88, 418, 854, 363, 418, 418, 418, 363, + 553, 553, 553, 689, 279, 279, 502, 500, 394, 395, + 531, 731, 794, 522, 171, 731, 723, 501, 38, 795, + 892, 815, 345, 407, 731, 836, 837, 799, 723, 723, + 747, 723, 502, 505, 285, 775, 285, 287, 774, 726, + 463, 746, 723, 775, 38, 723, 502, 407, 651, 152, + 723, 502, 622, 730, 641, 641, 622, 732, 622, 500, + 500, 737, 525, 519, 530, 825, 731, 731, 277, 799, + 494, 799, 731, 494, 799, 731, 502, 502, 698, 171, + 132, 282, 501, 613, 610, 501, 502, 502, 502, 732, + 564, 614, 548, 548, 548, 548, 723, 723, 723, 56, + 184, 586, 725, 616, 75, 617, 502, 415, 651, 143, + 721, 684, 502, 651, 718, 719, 720, 38, 197, 502, + 650, 651, 35, 35, 651, 502, 651, 171, 501, 690, + 651, 502, 145, 652, 652, 145, 145, 651, 651, 555, + 460, 651, 297, 666, 505, 577, 553, 721, 577, 502, + 502, 163, 228, 501, 559, 288, 723, 651, 351, 906, + 732, 449, 406, 442, 907, 732, 901, 911, 287, 904, + 502, 505, 902, 874, 651, 726, 502, 152, 800, 787, + 800, 761, 789, 505, 502, 119, 204, 270, 272, 786, + 501, 32, 56, 807, 796, 69, 75, 88, 117, 119, + 204, 272, 277, 321, 337, 435, 443, 766, 767, 781, + 175, 117, 189, 272, 775, 754, 109, 117, 175, 272, + 393, 396, 756, 775, 377, 843, 429, 726, 732, 847, + 3, 46, 52, 76, 78, 84, 96, 100, 101, 102, + 103, 106, 170, 172, 175, 176, 192, 206, 219, 220, + 222, 232, 234, 246, 266, 271, 275, 289, 296, 298, + 314, 354, 376, 378, 382, 400, 409, 428, 434, 442, + 453, 492, 493, 621, 682, 731, 734, 755, 762, 801, + 917, 923, 741, 798, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 502, 502, 502, 554, 754, 531, + 731, 501, 793, 537, 868, 38, 806, 190, 723, 502, + 505, 502, 889, 501, 38, 784, 782, 790, 81, 813, + 109, 270, 795, 537, 892, 537, 789, 443, 865, 500, + 621, 832, 502, 505, 799, 652, 171, 501, 690, 615, + 502, 505, 502, 577, 723, 723, 723, 723, 29, 98, + 181, 357, 494, 501, 578, 579, 580, 581, 582, 583, + 584, 651, 651, 462, 663, 502, 737, 651, 502, 505, + 502, 732, 651, 653, 651, 651, 651, 690, 502, 651, + 35, 35, 651, 651, 145, 502, 502, 651, 502, 501, + 667, 732, 586, 502, 586, 731, 684, 713, 448, 710, + 502, 505, 86, 906, 490, 915, 906, 761, 787, 502, + 502, 463, 792, 120, 193, 202, 119, 445, 651, 117, + 38, 501, 737, 726, 652, 120, 193, 119, 277, 224, + 723, 792, 83, 807, 190, 277, 755, 651, 807, 277, + 492, 493, 758, 732, 621, 832, 832, 246, 400, 734, + 738, 490, 418, 418, 553, 523, 443, 518, 520, 799, + 502, 746, 38, 407, 651, 407, 272, 501, 731, 868, + 793, 151, 537, 149, 198, 774, 122, 137, 320, 746, + 109, 868, 463, 877, 38, 287, 732, 864, 501, 530, + 652, 690, 502, 502, 9, 344, 570, 586, 501, 379, + 501, 502, 505, 664, 665, 732, 328, 587, 718, 500, + 190, 502, 651, 651, 651, 502, 668, 732, 663, 731, + 663, 502, 505, 537, 300, 537, 901, 287, 501, 899, + 651, 337, 792, 501, 783, 761, 502, 189, 501, 651, + 272, 767, 792, 795, 726, 38, 152, 617, 738, 496, + 762, 726, 726, 502, 754, 124, 502, 782, 537, 537, + 723, 152, 38, 502, 726, 746, 29, 80, 89, 118, + 189, 201, 393, 396, 778, 778, 359, 359, 38, 61, + 69, 238, 407, 651, 723, 501, 657, 732, 905, 914, + 502, 502, 501, 663, 686, 501, 686, 580, 505, 38, + 651, 443, 565, 651, 306, 669, 587, 587, 907, 88, + 914, 133, 723, 761, 741, 788, 791, 397, 457, 768, + 769, 501, 763, 651, 502, 248, 804, 189, 443, 846, + 496, 429, 523, 731, 868, 774, 877, 501, 723, 537, + 782, 813, 537, 69, 290, 69, 537, 865, 651, 75, + 909, 909, 502, 505, 9, 587, 502, 579, 502, 665, + 667, 361, 500, 56, 554, 565, 565, 448, 726, 502, + 273, 440, 795, 490, 502, 505, 753, 502, 270, 776, + 172, 305, 383, 287, 772, 773, 797, 763, 651, 429, + 38, 501, 877, 774, 746, 877, 290, 290, 501, 502, + 737, 737, 910, 910, 868, 905, 502, 565, 502, 567, + 685, 330, 359, 670, 537, 614, 377, 804, 762, 791, + 502, 769, 202, 122, 440, 287, 797, 287, 772, 537, + 914, 909, 558, 558, 614, 50, 99, 431, 651, 671, + 672, 671, 502, 913, 773, 60, 270, 350, 377, 765, + 765, 877, 502, 910, 559, 559, 672, 358, 165, 316, + 165, 316, 614, 761, 24, 117, 277, 868, 558, 35, + 614, 559, 672 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_int16 yyr1[] = +{ + 0, 512, 513, 514, 514, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 516, 516, 517, 517, 518, 518, + 519, 519, 520, 520, 521, 521, 522, 522, 523, 523, + 524, 524, 524, 524, 524, 525, 526, 526, 527, 527, + 528, 528, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 530, 531, + 531, 531, 532, 532, 533, 534, 534, 535, 535, 535, + 536, 537, 537, 538, 538, 539, 539, 539, 539, 539, + 539, 539, 539, 540, 540, 541, 541, 542, 542, 542, + 542, 542, 542, 542, 542, 542, 542, 543, 543, 543, + 544, 544, 545, 546, 546, 547, 547, 547, 547, 547, + 547, 547, 547, 547, 548, 548, 549, 549, 549, 550, + 551, 551, 552, 552, 553, 553, 553, 554, 554, 555, + 555, 555, 556, 556, 557, 557, 558, 558, 558, 559, + 559, 559, 560, 560, 560, 560, 561, 561, 562, 562, + 562, 562, 563, 563, 564, 564, 564, 564, 564, 564, + 565, 565, 566, 566, 567, 567, 567, 567, 568, 569, + 569, 570, 570, 571, 571, 571, 571, 571, 572, 573, + 573, 573, 574, 574, 575, 575, 576, 576, 577, 577, + 577, 577, 578, 578, 579, 579, 580, 580, 580, 580, + 580, 581, 582, 583, 584, 585, 585, 586, 586, 587, + 587, 588, 588, 589, 589, 590, 590, 591, 592, 592, + 592, 592, 593, 593, 594, 594, 594, 595, 595, 596, + 596, 597, 597, 598, 598, 599, 599, 600, 600, 600, + 600, 600, 600, 600, 600, 601, 601, 601, 601, 601, + 601, 601, 602, 602, 602, 602, 603, 603, 604, 604, + 604, 604, 604, 605, 605, 605, 605, 606, 606, 607, + 607, 608, 608, 608, 608, 609, 609, 610, 611, 611, + 612, 612, 613, 613, 614, 614, 615, 615, 616, 617, + 617, 618, 618, 619, 619, 620, 620, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 622, 622, 622, 623, + 623, 623, 623, 623, 623, 623, 624, 624, 624, 624, + 625, 626, 626, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 627, 627, 628, 628, 629, 629, 630, 630, + 631, 632, 633, 633, 634, 634, 635, 636, 637, 637, + 637, 637, 637, 637, 638, 638, 639, 639, 639, 639, + 640, 641, 641, 641, 642, 642, 643, 643, 644, 644, + 645, 645, 646, 646, 647, 647, 648, 648, 649, 649, + 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, + 650, 650, 650, 650, 650, 650, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 653, 653, + 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, + 653, 653, 653, 654, 654, 654, 654, 654, 655, 655, + 655, 655, 655, 655, 655, 656, 656, 657, 657, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 659, 659, + 660, 660, 661, 661, 661, 662, 662, 663, 663, 664, + 664, 665, 666, 666, 666, 667, 668, 668, 669, 669, + 670, 670, 670, 671, 671, 672, 672, 672, 672, 672, + 673, 673, 674, 674, 675, 676, 676, 677, 677, 678, + 678, 678, 679, 679, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 681, 681, 682, + 682, 683, 683, 683, 683, 683, 683, 683, 683, 684, + 684, 685, 685, 686, 686, 687, 687, 688, 688, 689, + 689, 689, 690, 690, 691, 691, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 693, 693, 694, 695, + 695, 696, 696, 696, 696, 696, 696, 697, 698, 699, + 699, 699, 700, 700, 701, 702, 702, 703, 704, 704, + 705, 705, 706, 706, 707, 707, 707, 708, 708, 709, + 709, 710, 710, 711, 711, 712, 712, 713, 713, 714, + 714, 715, 715, 715, 715, 715, 716, 716, 717, 717, + 718, 719, 719, 720, 720, 721, 721, 721, 722, 722, + 723, 723, 724, 724, 725, 725, 726, 727, 728, 728, + 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 730, 731, 732, 732, 732, 733, + 733, 734, 734, 734, 735, 735, 735, 736, 736, 736, + 737, 737, 738, 738, 739, 739, 740, 741, 741, 741, + 741, 742, 742, 743, 744, 744, 744, 745, 745, 745, + 746, 746, 746, 747, 748, 748, 748, 748, 748, 748, + 748, 748, 749, 749, 750, 750, 751, 751, 752, 752, + 753, 753, 754, 754, 754, 755, 755, 755, 755, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 757, 757, 758, 758, 758, 759, 759, + 759, 759, 760, 760, 760, 761, 761, 762, 762, 762, + 762, 762, 762, 763, 763, 764, 765, 765, 765, 765, + 765, 766, 766, 766, 766, 767, 767, 767, 767, 767, + 767, 767, 767, 768, 768, 769, 769, 770, 770, 770, + 771, 772, 773, 773, 773, 773, 773, 774, 774, 774, + 774, 775, 776, 776, 777, 777, 778, 778, 778, 778, + 778, 778, 778, 778, 779, 779, 780, 781, 781, 781, + 781, 782, 782, 782, 782, 783, 784, 784, 784, 785, + 786, 786, 786, 786, 786, 786, 787, 787, 788, 788, + 789, 790, 790, 790, 791, 791, 792, 792, 793, 793, + 793, 794, 795, 795, 796, 796, 797, 798, 798, 798, + 798, 799, 799, 800, 800, 801, 801, 801, 802, 802, + 802, 802, 802, 802, 803, 803, 804, 804, 804, 804, + 805, 806, 806, 806, 806, 806, 806, 806, 806, 807, + 807, 808, 809, 809, 810, 810, 811, 811, 812, 812, + 812, 813, 813, 814, 814, 815, 815, 816, 816, 816, + 816, 817, 817, 817, 817, 818, 818, 819, 819, 819, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 821, 821, 821, 822, 822, 823, 823, 824, 824, 825, + 825, 825, 825, 826, 827, 827, 828, 828, 828, 828, + 828, 828, 828, 828, 829, 829, 829, 829, 829, 829, + 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, + 829, 829, 830, 830, 830, 830, 830, 830, 831, 831, + 832, 832, 832, 833, 833, 833, 834, 834, 835, 835, + 835, 836, 836, 837, 837, 838, 838, 838, 838, 838, + 838, 838, 839, 840, 840, 840, 840, 840, 840, 840, + 840, 841, 841, 842, 842, 843, 843, 843, 843, 844, + 844, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, + 846, 846, 847, 847, 847, 847, 848, 848, 849, 850, + 850, 850, 851, 851, 851, 851, 851, 851, 852, 852, + 852, 853, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 854, 854, 855, 856, 856, 857, + 857, 857, 857, 858, 858, 858, 858, 858, 859, 859, + 859, 859, 859, 860, 860, 861, 861, 862, 862, 863, + 863, 864, 865, 865, 866, 866, 867, 867, 868, 868, + 869, 869, 870, 870, 871, 872, 872, 873, 873, 873, + 874, 874, 875, 875, 876, 876, 876, 876, 876, 877, + 877, 877, 877, 878, 878, 878, 878, 879, 879, 879, + 879, 880, 880, 880, 880, 881, 881, 882, 882, 882, + 882, 882, 882, 882, 883, 883, 884, 884, 885, 885, + 886, 886, 886, 887, 887, 888, 888, 889, 889, 890, + 890, 890, 890, 890, 890, 891, 891, 892, 892, 893, + 894, 894, 894, 894, 894, 894, 895, 896, 897, 897, + 897, 897, 897, 898, 898, 899, 899, 899, 900, 900, + 901, 902, 902, 903, 903, 903, 904, 904, 904, 905, + 905, 905, 906, 906, 907, 907, 908, 908, 909, 909, + 910, 910, 911, 911, 912, 912, 913, 913, 914, 914, + 915, 916, 916, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 918, 918, 919, 919, 919, 919, 919, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 920, 920, + 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, + 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, + 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, + 920, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 922, 922, 922, 922, + 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, + 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, + 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, + 922, 922, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, + 923, 923, 923, 923 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 11, 9, 1, 1, 3, 0, + 1, 3, 1, 0, 1, 0, 1, 0, 1, 3, + 1, 1, 1, 3, 0, 2, 2, 0, 2, 0, + 1, 0, 1, 1, 1, 3, 3, 1, 1, 3, + 3, 3, 3, 3, 3, 4, 3, 2, 1, 1, + 1, 1, 1, 3, 2, 1, 1, 1, 2, 3, + 2, 1, 1, 3, 3, 1, 2, 4, 4, 2, + 3, 5, 5, 1, 1, 3, 0, 11, 11, 10, + 12, 1, 2, 5, 4, 4, 4, 2, 2, 3, + 1, 3, 6, 2, 0, 3, 3, 4, 4, 4, + 4, 3, 2, 1, 1, 0, 1, 1, 0, 2, + 1, 5, 1, 0, 2, 2, 0, 1, 0, 3, + 5, 5, 1, 3, 4, 3, 1, 1, 0, 2, + 2, 0, 2, 2, 1, 1, 1, 0, 2, 4, + 5, 4, 2, 3, 2, 2, 2, 2, 1, 2, + 3, 0, 1, 0, 5, 1, 4, 6, 2, 1, + 0, 4, 0, 1, 1, 2, 2, 2, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 0, 1, 3, 1, 2, 1, 1, 1, 1, + 1, 2, 4, 4, 5, 1, 1, 2, 0, 2, + 0, 1, 3, 1, 0, 1, 2, 3, 2, 4, + 2, 3, 2, 0, 1, 2, 0, 4, 5, 1, + 2, 2, 0, 1, 3, 1, 2, 3, 3, 3, + 3, 3, 3, 1, 4, 3, 4, 5, 4, 5, + 4, 4, 5, 2, 4, 1, 1, 0, 1, 4, + 5, 4, 0, 2, 2, 2, 1, 1, 0, 4, + 2, 1, 2, 2, 4, 2, 6, 2, 1, 3, + 4, 0, 2, 0, 2, 0, 1, 3, 3, 2, + 0, 2, 4, 1, 1, 1, 0, 2, 3, 5, + 6, 2, 3, 5, 5, 5, 3, 4, 0, 1, + 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, + 2, 3, 0, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 3, 0, 1, 1, 1, 1, + 5, 2, 1, 1, 1, 1, 4, 1, 2, 2, + 1, 3, 3, 2, 1, 0, 5, 2, 5, 2, + 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 0, 1, 3, 3, 5, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, + 2, 2, 3, 3, 5, 4, 6, 3, 5, 4, + 6, 4, 6, 5, 7, 3, 2, 4, 3, 2, + 3, 3, 3, 3, 4, 3, 4, 3, 4, 5, + 6, 6, 7, 6, 7, 6, 7, 3, 4, 4, + 6, 1, 6, 4, 1, 3, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 5, 6, 6, 7, 1, 1, + 2, 2, 2, 1, 3, 1, 2, 4, 1, 1, + 2, 2, 4, 1, 1, 3, 3, 1, 3, 6, + 7, 9, 7, 7, 4, 5, 1, 1, 1, 5, + 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, + 1, 1, 1, 1, 1, 6, 6, 4, 4, 4, + 4, 6, 5, 5, 5, 4, 6, 4, 7, 9, + 5, 0, 5, 4, 0, 1, 0, 2, 0, 1, + 3, 3, 2, 2, 0, 6, 1, 0, 3, 0, + 2, 2, 0, 1, 4, 2, 2, 2, 2, 2, + 4, 3, 1, 5, 3, 1, 3, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 4, 1, 4, 1, 2, 1, 2, 1, 2, 1, + 3, 1, 3, 1, 2, 1, 0, 1, 3, 1, + 3, 3, 1, 3, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 3, 2, 3, + 0, 3, 3, 2, 2, 1, 0, 2, 2, 3, + 2, 1, 1, 3, 5, 1, 2, 4, 2, 0, + 1, 0, 1, 2, 2, 3, 5, 1, 0, 1, + 2, 0, 2, 1, 0, 1, 0, 1, 3, 1, + 2, 3, 2, 1, 3, 5, 4, 2, 1, 0, + 3, 1, 3, 1, 2, 4, 2, 0, 1, 3, + 1, 2, 1, 3, 1, 2, 1, 1, 1, 2, + 1, 1, 2, 1, 1, 2, 7, 2, 5, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 3, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 4, 5, 7, 10, 9, + 2, 3, 0, 4, 2, 2, 2, 2, 3, 4, + 2, 1, 1, 1, 1, 3, 1, 3, 4, 6, + 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, + 2, 1, 2, 3, 2, 2, 2, 2, 3, 3, + 3, 1, 3, 1, 0, 1, 2, 2, 2, 3, + 2, 3, 9, 12, 11, 0, 2, 1, 1, 1, + 1, 1, 1, 3, 0, 1, 2, 1, 1, 2, + 2, 3, 1, 1, 2, 2, 1, 2, 3, 5, + 3, 2, 5, 1, 1, 1, 0, 5, 7, 5, + 2, 3, 1, 1, 2, 2, 0, 3, 4, 4, + 0, 3, 2, 0, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 1, 2, 2, + 2, 2, 2, 2, 0, 3, 3, 3, 0, 1, + 2, 1, 2, 2, 2, 2, 3, 4, 1, 3, + 1, 1, 1, 1, 3, 1, 2, 0, 1, 2, + 0, 1, 3, 0, 2, 0, 3, 3, 1, 5, + 3, 1, 3, 1, 2, 1, 4, 5, 5, 6, + 3, 7, 4, 11, 1, 3, 2, 2, 2, 0, + 3, 1, 1, 2, 2, 2, 2, 1, 0, 1, + 2, 5, 3, 5, 1, 0, 2, 0, 3, 9, + 12, 3, 0, 4, 7, 2, 0, 1, 1, 1, + 1, 2, 4, 3, 5, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 6, 4, 6, 4, + 6, 8, 4, 6, 1, 1, 1, 1, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 1, 3, 3, + 3, 3, 2, 2, 1, 3, 1, 1, 1, 3, + 1, 1, 0, 1, 1, 1, 1, 3, 6, 8, + 5, 1, 0, 1, 3, 3, 4, 6, 5, 5, + 8, 7, 1, 4, 6, 4, 6, 4, 6, 4, + 6, 1, 2, 3, 2, 1, 3, 2, 3, 1, + 3, 2, 5, 3, 6, 4, 6, 6, 6, 5, + 5, 6, 9, 4, 5, 7, 6, 4, 8, 4, + 2, 4, 3, 6, 4, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 2, 2, 1, 3, 4, 2, + 1, 0, 2, 2, 2, 2, 2, 2, 1, 1, + 0, 6, 6, 8, 6, 8, 6, 8, 6, 8, + 8, 10, 8, 10, 1, 0, 5, 3, 0, 1, + 1, 1, 1, 4, 5, 5, 4, 6, 1, 1, + 1, 1, 1, 1, 0, 1, 3, 1, 0, 13, + 16, 1, 2, 0, 1, 0, 1, 0, 2, 0, + 1, 0, 4, 6, 3, 7, 3, 1, 2, 3, + 2, 0, 2, 0, 9, 12, 11, 12, 14, 3, + 4, 4, 0, 2, 3, 3, 3, 1, 3, 3, + 2, 3, 3, 3, 3, 1, 1, 1, 1, 3, + 5, 1, 1, 1, 1, 3, 3, 2, 1, 0, + 2, 2, 3, 1, 1, 5, 8, 1, 0, 8, + 11, 10, 7, 10, 9, 1, 1, 2, 3, 2, + 6, 8, 6, 8, 6, 8, 8, 8, 1, 4, + 4, 7, 2, 1, 3, 4, 3, 0, 1, 0, + 2, 3, 5, 2, 2, 0, 8, 5, 0, 5, + 5, 7, 2, 0, 1, 1, 1, 3, 2, 0, + 1, 0, 1, 3, 1, 3, 1, 2, 1, 3, + 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1 +}; -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define YYTERROR 1 -#define YYERRCODE 256 + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (0) #endif +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know @@ -324295,114 +323727,93 @@ while (YYID (0)) #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) + +/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ + +YY_ATTRIBUTE_UNUSED +static int +yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) +{ + int res = 0; + int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; + if (0 <= yylocp->first_line) + { + res += YYFPRINTF (yyo, "%d", yylocp->first_line); + if (0 <= yylocp->first_column) + res += YYFPRINTF (yyo, ".%d", yylocp->first_column); + } + if (0 <= yylocp->last_line) + { + if (yylocp->first_line < yylocp->last_line) + { + res += YYFPRINTF (yyo, "-%d", yylocp->last_line); + if (0 <= end_col) + res += YYFPRINTF (yyo, ".%d", end_col); + } + else if (0 <= end_col && yylocp->first_column < end_col) + res += YYFPRINTF (yyo, "-%d", end_col); + } + return res; + } + +# define YY_LOCATION_PRINT(File, Loc) \ + yy_location_print_ (File, &(Loc)) + # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif -/* YYLEX -- calling `yylex' with the right arguments. */ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location, yyscanner); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, &yylloc, yyscanner) -#endif -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location, yyscanner); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) -#else static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - core_yyscan_t yyscanner; -#endif +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) { - if (!yyvaluep) - return; + FILE *yyoutput = yyo; + YYUSE (yyoutput); YYUSE (yylocationp); YYUSE (yyscanner); + if (!yyvaluep) + return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - switch (yytype) - { - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; - core_yyscan_t yyscanner; -#endif +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyo, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - YY_LOCATION_PRINT (yyoutput, *yylocationp); - YYFPRINTF (yyoutput, ": "); - yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner); - YYFPRINTF (yyoutput, ")"); + YY_LOCATION_PRINT (yyo, *yylocationp); + YYFPRINTF (yyo, ": "); + yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, yyscanner); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -324410,68 +323821,54 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) -#else static void -yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner) - YYSTYPE *yyvsp; - YYLTYPE *yylsp; - int yyrule; - core_yyscan_t yyscanner; -#endif +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) { + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[+yyssp[yyi + 1 - yynrhs]], + &yyvsp[(yyi + 1) - (yynrhs)] + , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); + YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule, yyscanner); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, yylsp, Rule, yyscanner); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -324485,7 +323882,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -324500,26 +323897,18 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -324533,16 +323922,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -324563,209 +323944,210 @@ yystpcpy (yydest, yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + else + goto append; + + append: + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; } # endif -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - int yyn = yypact[yystate]; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Actual size of YYARG. */ + int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } + } + } + } - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else + switch (yycount) { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + default: /* Avoid compiler warnings. */ + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } - if (yysize_overflow) - return YYSIZE_MAXIMUM; + { + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + ++yyp; + ++yyformat; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, core_yyscan_t yyscanner) -#else -static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - YYLTYPE *yylocationp; - core_yyscan_t yyscanner; -#endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (yyscanner); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (core_yyscan_t yyscanner); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - @@ -324774,214 +324156,211 @@ int yyparse (); | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (core_yyscan_t yyscanner) -#else -int -yyparse (yyscanner) - core_yyscan_t yyscanner; -#endif -#endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; -/* Location data for the look-ahead symbol. */ -YYLTYPE yylloc; +/* The semantic value of the lookahead symbol. */ +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif +/* Location data for the lookahead symbol. */ +static YYLTYPE yyloc_default +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + = { 1, 1, 1, 1 } +# endif +; +YYLTYPE yylloc = yyloc_default; - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. + /* Number of syntax errors so far. */ + int yynerrs; - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + yy_state_fast_t yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + 'yyls': related to locations. - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[2]; + /* The state stack. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls; + YYLTYPE *yylsp; + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[3]; + + YYPTRDIFF_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yylsp = yyls = yylsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; (void)yynerrs; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - yylsp = yyls; -#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - /* Initialize the default location before parsing starts. */ - yylloc.first_line = yylloc.last_line = 1; - yylloc.first_column = yylloc.last_column = 0; -#endif - + yychar = YYEMPTY; /* Cause a token to be read. */ + yylsp[0] = yylloc; goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYPTRDIFF_T yysize = yyssp - yyss + 1; -#ifdef yyoverflow +# if defined yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyls1, yysize * YYSIZEOF (*yylsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + yyls = yyls1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - YYSTACK_RELOCATE (yyls); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (&yylval, &yylloc, yyscanner); } if (yychar <= YYEOF) @@ -325003,30 +324382,27 @@ YYLTYPE yylloc; yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -325041,14 +324417,14 @@ YYLTYPE yylloc; /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -325057,2367 +324433,2267 @@ YYLTYPE yylloc; GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - /* Default location. */ + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); + yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: #line 484 "third_party/libpg_query/grammar/grammar.y" - { - pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); - ;} + { + pg_yyget_extra(yyscanner)->parsetree = (yyvsp[0].list); + } +#line 16415 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 3: #line 500 "third_party/libpg_query/grammar/grammar.y" - { - if ((yyvsp[(1) - (3)].list) != NIL) + { + if ((yyvsp[-2].list) != NIL) { /* update length of previous stmt */ - updateRawStmtEnd(llast_node(PGRawStmt, (yyvsp[(1) - (3)].list)), (yylsp[(2) - (3)])); + updateRawStmtEnd(llast_node(PGRawStmt, (yyvsp[-2].list)), (yylsp[-1])); } - if ((yyvsp[(3) - (3)].node) != NULL) - (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeRawStmt((yyvsp[(3) - (3)].node), (yylsp[(2) - (3)]) + 1)); + if ((yyvsp[0].node) != NULL) + (yyval.list) = lappend((yyvsp[-2].list), makeRawStmt((yyvsp[0].node), (yylsp[-1]) + 1)); else - (yyval.list) = (yyvsp[(1) - (3)].list); - ;} + (yyval.list) = (yyvsp[-2].list); + } +#line 16431 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 4: #line 512 "third_party/libpg_query/grammar/grammar.y" - { - if ((yyvsp[(1) - (1)].node) != NULL) - (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); + { + if ((yyvsp[0].node) != NULL) + (yyval.list) = list_make1(makeRawStmt((yyvsp[0].node), 0)); else (yyval.list) = NIL; - ;} + } +#line 16442 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 43: #line 559 "third_party/libpg_query/grammar/grammar.y" - { (yyval.node) = NULL; ;} + { (yyval.node) = NULL; } +#line 16448 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 44: -#line 10 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_TABLE; - n->missing_ok = false; +#line 3 "third_party/libpg_query/grammar/statements/copy.y" + { + PGCopyStmt *n = makeNode(PGCopyStmt); + n->relation = (yyvsp[-8].range); + n->query = NULL; + n->attlist = (yyvsp[-7].list); + n->is_from = (yyvsp[-5].boolean); + n->is_program = (yyvsp[-4].boolean); + n->filename = (yyvsp[-3].str); + + if (n->is_program && n->filename == NULL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("STDIN/STDOUT not allowed with PROGRAM"), + parser_errposition((yylsp[-3])))); + + n->options = NIL; + /* Concatenate user-supplied flags */ + if ((yyvsp[-9].defelt)) + n->options = lappend(n->options, (yyvsp[-9].defelt)); + if ((yyvsp[-6].defelt)) + n->options = lappend(n->options, (yyvsp[-6].defelt)); + if ((yyvsp[-2].defelt)) + n->options = lappend(n->options, (yyvsp[-2].defelt)); + if ((yyvsp[0].list)) + n->options = list_concat(n->options, (yyvsp[0].list)); (yyval.node) = (PGNode *)n; - ;} + } +#line 16480 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 45: -#line 19 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_TABLE; - n->missing_ok = true; +#line 31 "third_party/libpg_query/grammar/statements/copy.y" + { + PGCopyStmt *n = makeNode(PGCopyStmt); + n->relation = NULL; + n->query = (yyvsp[-6].node); + n->attlist = NIL; + n->is_from = false; + n->is_program = (yyvsp[-3].boolean); + n->filename = (yyvsp[-2].str); + n->options = (yyvsp[0].list); + + if (n->is_program && n->filename == NULL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("STDIN/STDOUT not allowed with PROGRAM"), + parser_errposition((yylsp[-4])))); + (yyval.node) = (PGNode *)n; - ;} + } +#line 16503 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 46: -#line 28 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_INDEX; - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 53 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = true; } +#line 16509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 47: -#line 37 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_INDEX; - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 54 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = false; } +#line 16515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 48: -#line 46 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_SEQUENCE; - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 60 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-1])); + } +#line 16523 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 49: -#line 55 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_SEQUENCE; - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 63 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 16529 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 50: -#line 64 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(3) - (4)].range); - n->cmds = (yyvsp[(4) - (4)].list); - n->relkind = PG_OBJECT_VIEW; - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 69 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 16537 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 51: -#line 73 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableStmt *n = makeNode(PGAlterTableStmt); - n->relation = (yyvsp[(5) - (6)].range); - n->cmds = (yyvsp[(6) - (6)].list); - n->relkind = PG_OBJECT_VIEW; - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 73 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 16545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 52: -#line 86 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 80 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 16551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 53: -#line 88 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 81 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 16557 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 54: -#line 93 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = (yyvsp[(3) - (3)].node); ;} +#line 85 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 16563 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 55: -#line 94 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = NULL; ;} +#line 86 "third_party/libpg_query/grammar/statements/copy.y" + {} +#line 16569 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 56: -#line 100 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); - ;} +#line 91 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = true; } +#line 16575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 57: -#line 104 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 92 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.boolean) = false; } +#line 16581 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 58: -#line 108 "third_party/libpg_query/grammar/statements/alter_table.y" - { - if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || - strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || - strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - ;} +#line 96 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = (yyvsp[0].list); } +#line 16587 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 59: -#line 119 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElem("generated", (PGNode *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); - ;} +#line 97 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 16593 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 60: -#line 127 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 102 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 16599 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 61: -#line 131 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 103 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) (yyvsp[0].value); } +#line 16605 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 62: -#line 140 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(2) - (2)].node); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 104 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeNode(PGAStar); } +#line 16611 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 63: -#line 149 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(5) - (5)].node); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 105 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) (yyvsp[-1].list); } +#line 16617 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 64: -#line 158 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(3) - (3)].node); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 106 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = NULL; } +#line 16623 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 65: -#line 167 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddColumn; - n->def = (yyvsp[(6) - (6)].node); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 112 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 16631 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 66: -#line 176 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ColumnDefault; - n->name = (yyvsp[(3) - (4)].str); - n->def = (yyvsp[(4) - (4)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 120 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[-1])); + } +#line 16639 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 67: -#line 185 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropNotNull; - n->name = (yyvsp[(3) - (6)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 123 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 16645 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 68: -#line 193 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetNotNull; - n->name = (yyvsp[(3) - (6)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 128 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 16651 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 69: -#line 201 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetStatistics; - n->name = (yyvsp[(3) - (6)].str); - n->def = (PGNode *) makeInteger((yyvsp[(6) - (6)].ival)); - (yyval.node) = (PGNode *)n; - ;} +#line 129 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.list) = NIL; } +#line 16657 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 70: -#line 210 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetOptions; - n->name = (yyvsp[(3) - (5)].str); - n->def = (PGNode *) (yyvsp[(5) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 135 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[0])); + } +#line 16665 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 71: -#line 219 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ResetOptions; - n->name = (yyvsp[(3) - (5)].str); - n->def = (PGNode *) (yyvsp[(5) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 138 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.defelt) = NULL; } +#line 16671 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 72: -#line 228 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetStorage; - n->name = (yyvsp[(3) - (6)].str); - n->def = (PGNode *) makeString((yyvsp[(6) - (6)].str)); - (yyval.node) = (PGNode *)n; - ;} +#line 144 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[0])); + } +#line 16679 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 73: -#line 237 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGConstraint *c = makeNode(PGConstraint); - - c->contype = PG_CONSTR_IDENTITY; - c->generated_when = (yyvsp[(6) - (9)].ival); - c->options = (yyvsp[(9) - (9)].list); - c->location = (yylsp[(5) - (9)]); - - n->subtype = PG_AT_AddIdentity; - n->name = (yyvsp[(3) - (9)].str); - n->def = (PGNode *) c; - - (yyval.node) = (PGNode *)n; - ;} +#line 148 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 16687 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 74: -#line 254 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetIdentity; - n->name = (yyvsp[(3) - (4)].str); - n->def = (PGNode *) (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} + case 74: +#line 152 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("freeze", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 16695 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 75: -#line 263 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = AT_DropIdentity; - n->name = (yyvsp[(3) - (5)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 156 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 16703 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 76: -#line 272 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = AT_DropIdentity; - n->name = (yyvsp[(3) - (7)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 160 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("null", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 16711 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 77: -#line 281 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropColumn; - n->name = (yyvsp[(5) - (6)].str); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 164 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("csv"), (yylsp[0])); + } +#line 16719 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 78: -#line 291 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropColumn; - n->name = (yyvsp[(3) - (4)].str); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 168 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("header", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 16727 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 79: -#line 304 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGColumnDef *def = makeNode(PGColumnDef); - n->subtype = PG_AT_AlterColumnType; - n->name = (yyvsp[(3) - (8)].str); - n->def = (PGNode *) def; - /* We only use these fields of the PGColumnDef node */ - def->typeName = (yyvsp[(6) - (8)].typnam); - def->collClause = (PGCollateClause *) (yyvsp[(7) - (8)].node); - def->raw_default = (yyvsp[(8) - (8)].node); - def->location = (yylsp[(3) - (8)]); - (yyval.node) = (PGNode *)n; - ;} +#line 172 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("quote", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 16735 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 80: -#line 319 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AlterColumnGenericOptions; - n->name = (yyvsp[(3) - (4)].str); - n->def = (PGNode *) (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 176 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("escape", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-2])); + } +#line 16743 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 81: -#line 328 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_AddConstraint; - n->def = (yyvsp[(2) - (2)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 180 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_quote", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 16751 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 82: -#line 336 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - PGConstraint *c = makeNode(PGConstraint); - n->subtype = PG_AT_AlterConstraint; - n->def = (PGNode *) c; - c->contype = PG_CONSTR_FOREIGN; /* others not supported, yet */ - c->conname = (yyvsp[(3) - (4)].str); - processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", - &c->deferrable, - &c->initdeferred, - NULL, NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 184 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_quote", (PGNode *)makeNode(PGAStar), (yylsp[-2])); + } +#line 16759 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 83: -#line 351 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ValidateConstraint; - n->name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 188 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("partition_by", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 16767 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 84: -#line 359 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropConstraint; - n->name = (yyvsp[(5) - (6)].str); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 192 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("partition_by", (PGNode *)makeNode(PGAStar), (yylsp[-2])); + } +#line 16775 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 85: -#line 369 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_DropConstraint; - n->name = (yyvsp[(3) - (4)].str); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 196 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_not_null", (PGNode *)(yyvsp[0].list), (yylsp[-3])); + } +#line 16783 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 86: -#line 379 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetLogged; - (yyval.node) = (PGNode *)n; - ;} +#line 200 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("force_null", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 16791 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 87: -#line 386 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetUnLogged; - (yyval.node) = (PGNode *)n; - ;} +#line 204 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.defelt) = makeDefElem("encoding", (PGNode *)makeString((yyvsp[0].str)), (yylsp[-1])); + } +#line 16799 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 88: -#line 393 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_SetRelOptions; - n->def = (PGNode *)(yyvsp[(2) - (2)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 211 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 16805 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 89: -#line 401 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_ResetRelOptions; - n->def = (PGNode *)(yyvsp[(2) - (2)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 217 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = (yyvsp[0].str); } +#line 16811 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 90: -#line 408 "third_party/libpg_query/grammar/statements/alter_table.y" - { - PGAlterTableCmd *n = makeNode(PGAlterTableCmd); - n->subtype = PG_AT_GenericOptions; - n->def = (PGNode *)(yyvsp[(1) - (1)].list); - (yyval.node) = (PGNode *) n; - ;} +#line 218 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = NULL; } +#line 16817 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 91: -#line 418 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 219 "third_party/libpg_query/grammar/statements/copy.y" + { (yyval.str) = NULL; } +#line 16823 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 92: -#line 419 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.node) = NULL; ;} +#line 225 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 16831 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 93: -#line 425 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(1) - (1)].defelt); - ;} +#line 229 "third_party/libpg_query/grammar/statements/copy.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 16839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 94: -#line 429 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - (yyval.defelt)->defaction = PG_DEFELEM_SET; - ;} +#line 2 "third_party/libpg_query/grammar/statements/variable_reset.y" + { (yyval.node) = (PGNode *) (yyvsp[0].vsetstmt); } +#line 16845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 95: -#line 434 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = (yyvsp[(2) - (2)].defelt); - (yyval.defelt)->defaction = PG_DEFELEM_ADD; - ;} +#line 8 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->scope = VAR_SET_SCOPE_GLOBAL; + n->name = (yyvsp[0].str); + (yyval.vsetstmt) = n; + } +#line 16857 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 96: -#line 439 "third_party/libpg_query/grammar/statements/alter_table.y" - { - (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); - ;} +#line 16 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET_ALL; + n->scope = VAR_SET_SCOPE_GLOBAL; + (yyval.vsetstmt) = n; + } +#line 16868 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 97: -#line 446 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 26 "third_party/libpg_query/grammar/statements/variable_reset.y" + { (yyval.vsetstmt) = (yyvsp[0].vsetstmt); } +#line 16874 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 98: -#line 447 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 28 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->name = (char*) "timezone"; + (yyval.vsetstmt) = n; + } +#line 16885 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 99: -#line 452 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 35 "third_party/libpg_query/grammar/statements/variable_reset.y" + { + PGVariableSetStmt *n = makeNode(PGVariableSetStmt); + n->kind = VAR_RESET; + n->name = (char*) "transaction_isolation"; + (yyval.vsetstmt) = n; + } +#line 16896 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 100: -#line 456 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 1; ;} - break; - - case 101: -#line 457 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 0; ;} - break; - - case 102: -#line 458 "third_party/libpg_query/grammar/statements/alter_table.y" - { (yyval.ival) = 0; ;} +#line 7 "third_party/libpg_query/grammar/statements/call.y" + { + PGCallStmt *n = makeNode(PGCallStmt); + n->func = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 16906 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 103: -#line 8 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *) n; - ;} +#line 52 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 16912 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 104: -#line 14 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *) n; - ;} +#line 53 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 16918 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 105: -#line 20 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = NULL; - (yyval.node) = (PGNode *) n; - ;} +#line 68 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 16924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 106: -#line 26 "third_party/libpg_query/grammar/statements/deallocate.y" - { - PGDeallocateStmt *n = makeNode(PGDeallocateStmt); - n->name = NULL; - (yyval.node) = (PGNode *) n; - ;} +#line 70 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + NULL, NULL, NULL, + yyscanner); + (yyval.node) = (yyvsp[-1].node); + } +#line 16935 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 107: -#line 7 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SCHEMA; - n->subname = (yyvsp[(3) - (6)].str); - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 77 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), + (PGNode*) list_nth((yyvsp[0].list), 0), (PGNode*) list_nth((yyvsp[0].list), 1), + NULL, + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16947 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 108: -#line 16 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 85 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), + (PGNode*) list_nth((yyvsp[-1].list), 0), (PGNode*) list_nth((yyvsp[-1].list), 1), + NULL, + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16959 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 109: -#line 26 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 93 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[0].node), NULL, NIL, + NULL, NULL, + (yyvsp[-1].with), + yyscanner); + (yyval.node) = (yyvsp[0].node); + } +#line 16971 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 110: -#line 36 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 101 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-1].node), (yyvsp[0].list), NIL, + NULL, NULL, + (yyvsp[-2].with), + yyscanner); + (yyval.node) = (yyvsp[-1].node); + } +#line 16983 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 111: -#line 46 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 109 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[-1].list), + (PGNode*) list_nth((yyvsp[0].list), 0), (PGNode*) list_nth((yyvsp[0].list), 1), + (yyvsp[-4].with), + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 16995 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 112: -#line 56 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 117 "third_party/libpg_query/grammar/statements/select.y" + { + insertSelectOptions((PGSelectStmt *) (yyvsp[-3].node), (yyvsp[-2].list), (yyvsp[0].list), + (PGNode*) list_nth((yyvsp[-1].list), 0), (PGNode*) list_nth((yyvsp[-1].list), 1), + (yyvsp[-4].with), + yyscanner); + (yyval.node) = (yyvsp[-3].node); + } +#line 17007 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 113: -#line 66 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 127 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17013 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 114: -#line 76 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_INDEX; - n->relation = (yyvsp[(3) - (6)].range); - n->subname = NULL; - n->newname = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 128 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17019 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 115: -#line 86 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_INDEX; - n->relation = (yyvsp[(5) - (8)].range); - n->subname = NULL; - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 156 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 17027 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 116: -#line 96 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_COLUMN; - n->relationType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (8)].range); - n->subname = (yyvsp[(6) - (8)].str); - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 160 "third_party/libpg_query/grammar/statements/select.y" + { + PGAStar *star = makeNode(PGAStar); + (yyval.list) = list_make1(star); + } +#line 17036 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 117: -#line 107 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_COLUMN; - n->relationType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (10)].range); - n->subname = (yyvsp[(8) - (10)].str); - n->newname = (yyvsp[(10) - (10)].str); - n->missing_ok = true; +#line 171 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->targetList = (yyvsp[-8].list); + n->intoClause = (yyvsp[-7].into); + n->fromClause = (yyvsp[-6].list); + n->whereClause = (yyvsp[-5].node); + n->groupClause = (yyvsp[-4].list); + n->havingClause = (yyvsp[-3].node); + n->windowClause = (yyvsp[-2].list); + n->qualifyClause = (yyvsp[-1].node); + n->sampleOptions = (yyvsp[0].node); (yyval.node) = (PGNode *)n; - ;} + } +#line 17054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 118: -#line 118 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[(3) - (8)].range); - n->subname = (yyvsp[(6) - (8)].str); - n->newname = (yyvsp[(8) - (8)].str); - n->missing_ok = false; +#line 187 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->distinctClause = (yyvsp[-9].list); + n->targetList = (yyvsp[-8].list); + n->intoClause = (yyvsp[-7].into); + n->fromClause = (yyvsp[-6].list); + n->whereClause = (yyvsp[-5].node); + n->groupClause = (yyvsp[-4].list); + n->havingClause = (yyvsp[-3].node); + n->windowClause = (yyvsp[-2].list); + n->qualifyClause = (yyvsp[-1].node); + n->sampleOptions = (yyvsp[0].node); (yyval.node) = (PGNode *)n; - ;} + } +#line 17073 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 119: -#line 128 "third_party/libpg_query/grammar/statements/rename.y" - { - PGRenameStmt *n = makeNode(PGRenameStmt); - n->renameType = PG_OBJECT_TABCONSTRAINT; - n->relation = (yyvsp[(5) - (10)].range); - n->subname = (yyvsp[(8) - (10)].str); - n->newname = (yyvsp[(10) - (10)].str); - n->missing_ok = true; +#line 204 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->targetList = (yyvsp[-7].list); + n->fromClause = (yyvsp[-8].list); + n->intoClause = (yyvsp[-6].into); + n->whereClause = (yyvsp[-5].node); + n->groupClause = (yyvsp[-4].list); + n->havingClause = (yyvsp[-3].node); + n->windowClause = (yyvsp[-2].list); + n->qualifyClause = (yyvsp[-1].node); + n->sampleOptions = (yyvsp[0].node); (yyval.node) = (PGNode *)n; - ;} + } +#line 17091 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 120: -#line 140 "third_party/libpg_query/grammar/statements/rename.y" - { (yyval.ival) = COLUMN; ;} +#line 221 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->targetList = (yyvsp[-7].list); + n->distinctClause = (yyvsp[-8].list); + n->fromClause = (yyvsp[-10].list); + n->intoClause = (yyvsp[-6].into); + n->whereClause = (yyvsp[-5].node); + n->groupClause = (yyvsp[-4].list); + n->havingClause = (yyvsp[-3].node); + n->windowClause = (yyvsp[-2].list); + n->qualifyClause = (yyvsp[-1].node); + n->sampleOptions = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 17110 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 121: -#line 141 "third_party/libpg_query/grammar/statements/rename.y" - { (yyval.ival) = 0; ;} +#line 235 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17116 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 122: -#line 11 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(6) - (8)].istmt)->relation = (yyvsp[(5) - (8)].range); - (yyvsp[(6) - (8)].istmt)->onConflictAlias = (yyvsp[(3) - (8)].onconflictshorthand); - (yyvsp[(6) - (8)].istmt)->onConflictClause = (yyvsp[(7) - (8)].onconflict); - (yyvsp[(6) - (8)].istmt)->returningList = (yyvsp[(8) - (8)].list); - (yyvsp[(6) - (8)].istmt)->withClause = (yyvsp[(1) - (8)].with); - (yyval.node) = (PGNode *) (yyvsp[(6) - (8)].istmt); - ;} +#line 237 "third_party/libpg_query/grammar/statements/select.y" + { + /* same as SELECT * FROM relation_expr */ + PGColumnRef *cr = makeNode(PGColumnRef); + PGResTarget *rt = makeNode(PGResTarget); + PGSelectStmt *n = makeNode(PGSelectStmt); + + cr->fields = list_make1(makeNode(PGAStar)); + cr->location = -1; + + rt->name = NULL; + rt->indirection = NIL; + rt->val = (PGNode *)cr; + rt->location = -1; + + n->targetList = list_make1(rt); + n->fromClause = list_make1((yyvsp[0].range)); + (yyval.node) = (PGNode *)n; + } +#line 17139 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 123: -#line 24 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = NIL; - (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); - ;} +#line 256 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_UNION_BY_NAME, (yyvsp[-2].boolean), (yyvsp[-4].node), (yyvsp[0].node)); + } +#line 17147 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 124: -#line 30 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = NIL; - (yyval.istmt)->override = (yyvsp[(2) - (4)].override); - (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); - ;} +#line 260 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_UNION, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 17155 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 125: -#line 37 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); - (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); - ;} +#line 264 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_INTERSECT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 17163 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 126: -#line 43 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); - (yyval.istmt)->override = (yyvsp[(5) - (7)].override); - (yyval.istmt)->selectStmt = (yyvsp[(7) - (7)].node); - ;} +#line 268 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSetOp(PG_SETOP_EXCEPT, (yyvsp[-1].boolean), (yyvsp[-3].node), (yyvsp[0].node)); + } +#line 17171 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 127: -#line 50 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.istmt) = makeNode(PGInsertStmt); - (yyval.istmt)->cols = NIL; - (yyval.istmt)->selectStmt = NULL; - ;} +#line 285 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = false; + (yyval.with)->location = (yylsp[-1]); + } +#line 17182 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 128: -#line 60 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - ;} +#line 292 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = false; + (yyval.with)->location = (yylsp[-1]); + } +#line 17193 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 129: -#line 64 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); - (yyval.range) = (yyvsp[(1) - (3)].range); - ;} +#line 299 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.with) = makeNode(PGWithClause); + (yyval.with)->ctes = (yyvsp[0].list); + (yyval.with)->recursive = true; + (yyval.with)->location = (yylsp[-2]); + } +#line 17204 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 130: -#line 73 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.infer) = makeNode(PGInferClause); - (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); - (yyval.infer)->whereClause = (yyvsp[(4) - (4)].node); - (yyval.infer)->conname = NULL; - (yyval.infer)->location = (yylsp[(1) - (4)]); - ;} +#line 308 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 17210 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 131: -#line 82 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.infer) = makeNode(PGInferClause); - (yyval.infer)->indexElems = NIL; - (yyval.infer)->whereClause = NULL; - (yyval.infer)->conname = (yyvsp[(3) - (3)].str); - (yyval.infer)->location = (yylsp[(1) - (3)]); - ;} +#line 309 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 17216 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 132: -#line 90 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.infer) = NULL; - ;} +#line 313 "third_party/libpg_query/grammar/statements/select.y" + { + PGCommonTableExpr *n = makeNode(PGCommonTableExpr); + n->ctename = (yyvsp[-5].str); + n->aliascolnames = (yyvsp[-4].list); + n->ctequery = (yyvsp[-1].node); + n->location = (yylsp[-5]); + (yyval.node) = (PGNode *) n; + } +#line 17229 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 133: -#line 97 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.with) = (yyvsp[(1) - (1)].with); ;} +#line 325 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.into) = makeNode(PGIntoClause); + (yyval.into)->rel = (yyvsp[0].range); + (yyval.into)->colNames = NIL; + (yyval.into)->options = NIL; + (yyval.into)->onCommit = PG_ONCOMMIT_NOOP; + (yyval.into)->viewQuery = NULL; + (yyval.into)->skipData = false; + } +#line 17243 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 134: -#line 98 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.with) = NULL; ;} +#line 335 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.into) = NULL; } +#line 17249 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 135: -#line 104 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(1) - (2)].str); - (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.target)->val = NULL; - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} +#line 344 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17258 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 136: -#line 116 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyvsp[(1) - (3)].target)->val = (PGNode *) (yyvsp[(3) - (3)].node); - (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); - ;} +#line 349 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17267 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 137: -#line 121 "third_party/libpg_query/grammar/statements/insert.y" - { - int ncolumns = list_length((yyvsp[(2) - (5)].list)); - int i = 1; - PGListCell *col_cell; - - /* Create a PGMultiAssignRef source for each target */ - foreach(col_cell, (yyvsp[(2) - (5)].list)) - { - PGResTarget *res_col = (PGResTarget *) lfirst(col_cell); - PGMultiAssignRef *r = makeNode(PGMultiAssignRef); - - r->source = (PGNode *) (yyvsp[(5) - (5)].node); - r->colno = i; - r->ncolumns = ncolumns; - res_col->val = (PGNode *) r; - i++; - } - - (yyval.list) = (yyvsp[(2) - (5)].list); - ;} +#line 354 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17276 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 138: -#line 146 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_REPLACE; - ;} +#line 359 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17285 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 139: -#line 151 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_IGNORE; - ;} +#line 364 "third_party/libpg_query/grammar/statements/select.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-3])))); + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17297 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 140: -#line 155 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_NONE; - ;} +#line 372 "third_party/libpg_query/grammar/statements/select.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-3])))); + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; + } +#line 17309 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 141: -#line 162 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflict) = makeNode(PGOnConflictClause); - (yyval.onconflict)->action = PG_ONCONFLICT_UPDATE; - (yyval.onconflict)->infer = (yyvsp[(3) - (8)].infer); - (yyval.onconflict)->targetList = (yyvsp[(7) - (8)].list); - (yyval.onconflict)->whereClause = (yyvsp[(8) - (8)].node); - (yyval.onconflict)->location = (yylsp[(1) - (8)]); - ;} +#line 380 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = PG_RELPERSISTENCE_UNLOGGED; + } +#line 17318 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 142: -#line 172 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflict) = makeNode(PGOnConflictClause); - (yyval.onconflict)->action = PG_ONCONFLICT_NOTHING; - (yyval.onconflict)->infer = (yyvsp[(3) - (5)].infer); - (yyval.onconflict)->targetList = NIL; - (yyval.onconflict)->whereClause = NULL; - (yyval.onconflict)->location = (yylsp[(1) - (5)]); - ;} +#line 385 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; + } +#line 17327 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 143: -#line 181 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.onconflict) = NULL; - ;} +#line 390 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = (yyvsp[0].range); + (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; + } +#line 17336 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 144: -#line 188 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.ielem) = makeNode(PGIndexElem); - (yyval.ielem)->name = (yyvsp[(1) - (5)].str); - (yyval.ielem)->expr = NULL; - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].nullorder); - ;} +#line 396 "third_party/libpg_query/grammar/statements/select.y" + {} +#line 17342 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 145: -#line 199 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.ielem) = makeNode(PGIndexElem); - (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(1) - (5)].node); - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(2) - (5)].list); - (yyval.ielem)->opclass = (yyvsp[(3) - (5)].list); - (yyval.ielem)->ordering = (yyvsp[(4) - (5)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].nullorder); - ;} +#line 397 "third_party/libpg_query/grammar/statements/select.y" + {} +#line 17348 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 146: -#line 210 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.ielem) = makeNode(PGIndexElem); - (yyval.ielem)->name = NULL; - (yyval.ielem)->expr = (yyvsp[(2) - (7)].node); - (yyval.ielem)->indexcolname = NULL; - (yyval.ielem)->collation = (yyvsp[(4) - (7)].list); - (yyval.ielem)->opclass = (yyvsp[(5) - (7)].list); - (yyval.ielem)->ordering = (yyvsp[(6) - (7)].sortorder); - (yyval.ielem)->nulls_ordering = (yyvsp[(7) - (7)].nullorder); - ;} +#line 401 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 17354 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 147: -#line 224 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 402 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 17360 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 148: -#line 225 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} +#line 403 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 17366 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 149: -#line 231 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.override) = PG_OVERRIDING_USER_VALUE; ;} +#line 407 "third_party/libpg_query/grammar/statements/select.y" + { } +#line 17372 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 150: -#line 232 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.override) = OVERRIDING_SYSTEM_VALUE; ;} +#line 414 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(NIL); } +#line 17378 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 151: -#line 237 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} +#line 415 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 17384 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 152: -#line 238 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} +#line 419 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL;} +#line 17390 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 153: -#line 244 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 420 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17396 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 154: -#line 245 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} +#line 424 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true;} +#line 17402 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 155: -#line 249 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 425 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false;} +#line 17408 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 156: -#line 250 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = NIL; ;} +#line 426 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 17414 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 157: -#line 256 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} +#line 430 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list);} +#line 17420 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 158: -#line 258 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} +#line 431 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17426 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 159: -#line 263 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 435 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17432 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 160: -#line 264 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} +#line 437 "third_party/libpg_query/grammar/statements/select.y" + { + PGSortBy *sort = makeNode(PGSortBy); + sort->node = (PGNode *) makeNode(PGAStar); + sort->sortby_dir = (yyvsp[-1].sortorder); + sort->sortby_nulls = (yyvsp[0].nullorder); + sort->useOp = NIL; + sort->location = -1; /* no operator */ + (yyval.list) = list_make1(sort); + } +#line 17446 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 161: -#line 268 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 447 "third_party/libpg_query/grammar/statements/select.y" + { + PGSortBy *sort = makeNode(PGSortBy); + sort->node = (PGNode *) makeNode(PGAStar); + sort->sortby_dir = (yyvsp[-1].sortorder); + sort->sortby_nulls = (yyvsp[0].nullorder); + sort->useOp = NIL; + sort->location = -1; /* no operator */ + (yyval.list) = list_make1(sort); + } +#line 17460 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 162: -#line 269 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 459 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].sortby)); } +#line 17466 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 163: -#line 272 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} +#line 460 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].sortby)); } +#line 17472 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 164: -#line 273 "third_party/libpg_query/grammar/statements/insert.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} +#line 464 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.sortby) = makeNode(PGSortBy); + (yyval.sortby)->node = (yyvsp[-3].node); + (yyval.sortby)->sortby_dir = SORTBY_USING; + (yyval.sortby)->sortby_nulls = (yyvsp[0].nullorder); + (yyval.sortby)->useOp = (yyvsp[-1].list); + (yyval.sortby)->location = (yylsp[-1]); + } +#line 17485 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 165: -#line 279 "third_party/libpg_query/grammar/statements/insert.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(1) - (2)].str); - (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.target)->val = NULL; /* upper production sets this */ - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} +#line 473 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.sortby) = makeNode(PGSortBy); + (yyval.sortby)->node = (yyvsp[-2].node); + (yyval.sortby)->sortby_dir = (yyvsp[-1].sortorder); + (yyval.sortby)->sortby_nulls = (yyvsp[0].nullorder); + (yyval.sortby)->useOp = NIL; + (yyval.sortby)->location = -1; /* no operator */ + } +#line 17498 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 166: -#line 8 "third_party/libpg_query/grammar/statements/create_type.y" - { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (6)].range); - n->kind = PG_NEWTYPE_ENUM; - n->query = (yyvsp[(6) - (6)].node); - n->vals = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 483 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_ASC; } +#line 17504 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 167: -#line 17 "third_party/libpg_query/grammar/statements/create_type.y" - { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (8)].range); - n->kind = PG_NEWTYPE_ENUM; - n->vals = (yyvsp[(7) - (8)].list); - n->query = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 484 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_DESC; } +#line 17510 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 168: -#line 26 "third_party/libpg_query/grammar/statements/create_type.y" - { - PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); - n->typeName = (yyvsp[(3) - (5)].range); - n->query = NULL; - auto name = std::string(reinterpret_cast((yyvsp[(5) - (5)].typnam)->names->tail->data.ptr_value)->val.str); - if (name == "enum") { - n->kind = PG_NEWTYPE_ENUM; - n->vals = (yyvsp[(5) - (5)].typnam)->typmods; - } else { - n->kind = PG_NEWTYPE_ALIAS; - n->ofType = (yyvsp[(5) - (5)].typnam); - } - (yyval.node) = (PGNode *)n; - ;} +#line 485 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.sortorder) = PG_SORTBY_DEFAULT; } +#line 17516 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 169: -#line 46 "third_party/libpg_query/grammar/statements/create_type.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 488 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_FIRST; } +#line 17522 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 170: -#line 47 "third_party/libpg_query/grammar/statements/create_type.y" - {(yyval.list) = NIL;;} +#line 489 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_LAST; } +#line 17528 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 171: -#line 51 "third_party/libpg_query/grammar/statements/create_type.y" - { - (yyval.list) = list_make1(makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)]))); - ;} +#line 490 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.nullorder) = PG_SORTBY_NULLS_DEFAULT; } +#line 17534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 172: -#line 55 "third_party/libpg_query/grammar/statements/create_type.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); - ;} +#line 494 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-1].node)); } +#line 17540 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 173: -#line 8 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_NOTHING; - n->name = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 495 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); } +#line 17546 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 174: -#line 15 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_ASSIGNMENT; - n->name = (yyvsp[(2) - (4)].str); - n->args = (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 496 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2(NULL, (yyvsp[0].node)); } +#line 17552 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 175: -#line 23 "third_party/libpg_query/grammar/statements/pragma.y" - { - PGPragmaStmt *n = makeNode(PGPragmaStmt); - n->kind = PG_PRAGMA_TYPE_CALL; - n->name = (yyvsp[(2) - (5)].str); - n->args = (yyvsp[(4) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 497 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), NULL); } +#line 17558 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 176: -#line 10 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(3) - (3)].range); - (yyval.node) = (PGNode *)n; - ;} +#line 501 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17564 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 177: -#line 16 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->extension = (yyvsp[(2) - (4)].str); - n->name = (yyvsp[(4) - (4)].range); - (yyval.node) = (PGNode *)n; - ;} +#line 502 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2(NULL,NULL); } +#line 17570 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 178: -#line 23 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(6) - (6)].range); - (yyval.node) = (PGNode *)n; - ;} +#line 507 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17576 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 179: -#line 29 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(5) - (5)].range); - (yyval.node) = (PGNode *)n; - ;} +#line 509 "third_party/libpg_query/grammar/statements/select.y" + { + /* Disabled because it was too confusing, bjm 2002-02-18 */ + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("LIMIT #,# syntax is not supported"), + errhint("Use separate LIMIT and OFFSET clauses."), + parser_errposition((yylsp[-3])))); + } +#line 17589 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 180: -#line 35 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(3) - (5)].range); - n->path = (yyvsp[(5) - (5)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 525 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-2].node); } +#line 17595 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 181: -#line 42 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(6) - (8)].range); - n->path = (yyvsp[(8) - (8)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 527 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeIntConst(1, -1); } +#line 17601 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 182: -#line 49 "third_party/libpg_query/grammar/statements/create_database.y" - { - PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); - n->name = (yyvsp[(5) - (7)].range); - n->path = (yyvsp[(7) - (7)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 532 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17607 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 183: -#line 59 "third_party/libpg_query/grammar/statements/create_database.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 535 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 17613 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 184: -#line 10 "third_party/libpg_query/grammar/statements/create_sequence.y" - { - PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); - (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); - n->sequence = (yyvsp[(4) - (5)].range); - n->options = (yyvsp[(5) - (5)].list); - n->ownerId = InvalidOid; - n->onconflict = PG_ERROR_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 543 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeFloat((yyvsp[-1].str)), true); + } +#line 17621 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 185: -#line 20 "third_party/libpg_query/grammar/statements/create_sequence.y" - { - PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); - (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); - n->sequence = (yyvsp[(7) - (8)].range); - n->options = (yyvsp[(8) - (8)].list); - n->ownerId = InvalidOid; - n->onconflict = PG_IGNORE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 547 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), true); + } +#line 17629 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 186: -#line 32 "third_party/libpg_query/grammar/statements/create_sequence.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 551 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeFloat((yyvsp[-1].str)), true); + } +#line 17637 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 187: -#line 33 "third_party/libpg_query/grammar/statements/create_sequence.y" - { (yyval.list) = NIL; ;} +#line 555 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), true); + } +#line 17645 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 188: -#line 8 "third_party/libpg_query/grammar/statements/execute.y" - { - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(2) - (3)].str); - n->params = (yyvsp[(3) - (3)].list); - (yyval.node) = (PGNode *) n; - ;} +#line 559 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[0].ival)), false); + } +#line 17653 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 189: -#line 16 "third_party/libpg_query/grammar/statements/execute.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(7) - (9)].str); - n->params = (yyvsp[(8) - (9)].list); - ctas->query = (PGNode *) n; - ctas->into = (yyvsp[(4) - (9)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->onconflict = PG_ERROR_ON_CONFLICT; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(4) - (9)].into)->rel->relpersistence = (yyvsp[(2) - (9)].ival); - (yyvsp[(4) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 563 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleSize(makeInteger((yyvsp[-1].ival)), false); + } +#line 17661 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 190: -#line 33 "third_party/libpg_query/grammar/statements/execute.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - PGExecuteStmt *n = makeNode(PGExecuteStmt); - n->name = (yyvsp[(10) - (12)].str); - n->params = (yyvsp[(11) - (12)].list); - ctas->query = (PGNode *) n; - ctas->into = (yyvsp[(7) - (12)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->onconflict = PG_IGNORE_ON_CONFLICT; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(7) - (12)].into)->rel->relpersistence = (yyvsp[(2) - (12)].ival); - (yyvsp[(7) - (12)].into)->skipData = !((yyvsp[(12) - (12)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 570 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 17669 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 191: -#line 51 "third_party/libpg_query/grammar/statements/execute.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 574 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17675 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 192: -#line 52 "third_party/libpg_query/grammar/statements/execute.y" - { (yyval.list) = NIL; ;} +#line 581 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 17681 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 193: -#line 10 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); - n->sequence = (yyvsp[(3) - (4)].range); - n->options = (yyvsp[(4) - (4)].list); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} +#line 582 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = NULL; } +#line 17687 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 194: -#line 18 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); - n->sequence = (yyvsp[(5) - (6)].range); - n->options = (yyvsp[(6) - (6)].list); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} +#line 587 "third_party/libpg_query/grammar/statements/select.y" + { + int seed = (yyvsp[0].ival); + (yyval.node) = makeSampleOptions((yyvsp[-2].node), (yyvsp[-4].str), &seed, (yylsp[-4])); + } +#line 17696 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 195: -#line 29 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 592 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[0].node), NULL, NULL, (yylsp[0])); + } +#line 17704 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 196: -#line 30 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 596 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSampleOptions((yyvsp[-3].node), (yyvsp[-1].str), NULL, (yylsp[-3])); + } +#line 17712 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 197: -#line 34 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 600 "third_party/libpg_query/grammar/statements/select.y" + { + int seed = (yyvsp[-1].ival); + (yyval.node) = makeSampleOptions((yyvsp[-5].node), (yyvsp[-3].str), &seed, (yylsp[-5])); + } +#line 17721 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 198: -#line 35 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 608 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 17729 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 199: -#line 36 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 614 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17735 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 200: -#line 41 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); ;} +#line 615 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17741 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 201: -#line 42 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); ;} +#line 620 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = (yyvsp[-1].ival); } +#line 17747 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 202: -#line 44 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); - doNegateFloat((yyval.value)); - ;} +#line 621 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = -1; } +#line 17753 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 203: -#line 48 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); ;} +#line 625 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17759 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 204: -#line 53 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("as", (PGNode *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); - ;} +#line 627 "third_party/libpg_query/grammar/statements/select.y" + { + /* LIMIT ALL is represented as a NULL constant */ + (yyval.node) = makeNullAConst((yylsp[0])); + } +#line 17768 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 205: -#line 57 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cache", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); - ;} +#line 632 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeLimitPercent((yyvsp[-1].node)); } +#line 17774 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 206: -#line 61 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 634 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeLimitPercent(makeFloatConst((yyvsp[-1].str),(yylsp[-1]))); } +#line 17780 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 207: -#line 65 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(false), (yylsp[(1) - (2)])); - ;} +#line 636 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeLimitPercent(makeIntConst((yyvsp[-1].ival),(yylsp[-1]))); } +#line 17786 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 208: -#line 69 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("increment", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 640 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17792 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 209: -#line 73 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("maxvalue", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); - ;} +#line 660 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17798 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 210: -#line 77 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("minvalue", (PGNode *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); - ;} +#line 662 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 17804 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 211: -#line 81 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); - ;} +#line 664 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 17810 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 212: -#line 85 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); - ;} +#line 668 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeIntConst((yyvsp[0].ival),(yylsp[0])); } +#line 17816 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 213: -#line 89 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("owned_by", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 669 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeFloatConst((yyvsp[0].str),(yylsp[0])); } +#line 17822 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 214: -#line 93 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - /* not documented, only used by pg_dump */ - (yyval.defelt) = makeDefElem("sequence_name", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 673 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17828 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 215: -#line 98 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("start", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 674 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17834 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 216: -#line 102 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); - ;} +#line 677 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17840 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 217: -#line 106 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { - (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); - ;} +#line 678 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = 0; } +#line 17846 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 218: -#line 112 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 703 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17852 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 219: -#line 113 "third_party/libpg_query/grammar/statements/alter_sequence.y" - {;} +#line 705 "third_party/libpg_query/grammar/statements/select.y" + { + PGNode *node = (PGNode *) makeGroupingSet(GROUPING_SET_ALL, NIL, (yylsp[0])); + (yyval.list) = list_make1(node); + } +#line 17861 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 220: -#line 117 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} +#line 710 "third_party/libpg_query/grammar/statements/select.y" + { + PGNode *node = (PGNode *) makeGroupingSet(GROUPING_SET_ALL, NIL, (yylsp[0])); + (yyval.list) = list_make1(node); + } +#line 17870 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 221: -#line 118 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} +#line 714 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 17876 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 222: -#line 119 "third_party/libpg_query/grammar/statements/alter_sequence.y" - { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} +#line 718 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 17882 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 223: -#line 3 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_ROLLBACK; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 719 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].node)); } +#line 17888 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 224: -#line 10 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_BEGIN; - (yyval.node) = (PGNode *)n; - ;} +#line 723 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 17894 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 225: -#line 16 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_START; - (yyval.node) = (PGNode *)n; - ;} +#line 724 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 17900 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 226: -#line 22 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_COMMIT; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 728 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17906 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 227: -#line 29 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_COMMIT; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 729 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17912 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 228: -#line 36 "third_party/libpg_query/grammar/statements/transaction.y" - { - PGTransactionStmt *n = makeNode(PGTransactionStmt); - n->kind = PG_TRANS_STMT_ROLLBACK; - n->options = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 730 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17918 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 229: -#line 45 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 731 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 230: -#line 46 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 732 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17930 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 231: -#line 47 "third_party/libpg_query/grammar/statements/transaction.y" - {;} +#line 737 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[-1])); + } +#line 17938 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 232: -#line 3 "third_party/libpg_query/grammar/statements/use.y" - { - PGUseStmt *n = makeNode(PGUseStmt); - n->name = (yyvsp[(2) - (2)].range); - (yyval.node) = (PGNode *) n; - ;} +#line 750 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[-1].list), (yylsp[-3])); + } +#line 17946 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 233: -#line 9 "third_party/libpg_query/grammar/statements/create.y" - { - PGCreateStmt *n = makeNode(PGCreateStmt); - (yyvsp[(4) - (9)].range)->relpersistence = (yyvsp[(2) - (9)].ival); - n->relation = (yyvsp[(4) - (9)].range); - n->tableElts = (yyvsp[(6) - (9)].list); - n->ofTypename = NULL; - n->constraints = NIL; - n->options = (yyvsp[(8) - (9)].list); - n->oncommit = (yyvsp[(9) - (9)].oncommit); - n->onconflict = PG_ERROR_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 757 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[-1].list), (yylsp[-3])); + } +#line 17954 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 234: -#line 24 "third_party/libpg_query/grammar/statements/create.y" - { - PGCreateStmt *n = makeNode(PGCreateStmt); - (yyvsp[(7) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); - n->relation = (yyvsp[(7) - (12)].range); - n->tableElts = (yyvsp[(9) - (12)].list); - n->ofTypename = NULL; - n->constraints = NIL; - n->options = (yyvsp[(11) - (12)].list); - n->oncommit = (yyvsp[(12) - (12)].oncommit); - n->onconflict = PG_IGNORE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 764 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[-1].list), (yylsp[-4])); + } +#line 17962 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 235: -#line 39 "third_party/libpg_query/grammar/statements/create.y" - { - PGCreateStmt *n = makeNode(PGCreateStmt); - (yyvsp[(6) - (11)].range)->relpersistence = (yyvsp[(4) - (11)].ival); - n->relation = (yyvsp[(6) - (11)].range); - n->tableElts = (yyvsp[(8) - (11)].list); - n->ofTypename = NULL; - n->constraints = NIL; - n->options = (yyvsp[(10) - (11)].list); - n->oncommit = (yyvsp[(11) - (11)].oncommit); - n->onconflict = PG_REPLACE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 770 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17968 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 236: -#line 56 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = 0; ;} +#line 771 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17974 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 237: -#line 58 "third_party/libpg_query/grammar/statements/create.y" - { - /* - * We must complain about conflicting options. - * We could, but choose not to, complain about redundant - * options (ie, where $2's bit is already set in $1). - */ - int newspec = (yyvsp[(1) - (2)].ival) | (yyvsp[(2) - (2)].ival); - - /* special message for this case */ - if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition((yylsp[(2) - (2)])))); - /* generic message for other conflicts */ - if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || - (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("conflicting constraint properties"), - parser_errposition((yylsp[(2) - (2)])))); - (yyval.ival) = newspec; - ;} +#line 775 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17980 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 238: -#line 84 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].typnam); ;} +#line 776 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17986 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 239: -#line 85 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} +#line 780 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 17992 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 240: -#line 86 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].list); ;} +#line 781 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 17998 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 241: -#line 87 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)(yyvsp[(1) - (1)].value); ;} +#line 785 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 18004 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 242: -#line 88 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString((yyvsp[(1) - (1)].str)); ;} +#line 786 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18010 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 243: -#line 89 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} +#line 790 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 18016 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 244: -#line 93 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 791 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18022 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 245: -#line 94 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 795 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 18028 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 246: -#line 99 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 796 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 18034 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 247: -#line 104 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_NOACTION; ;} +#line 801 "third_party/libpg_query/grammar/statements/select.y" + { + PGLockingClause *n = makeNode(PGLockingClause); + n->lockedRels = (yyvsp[-1].list); + n->strength = (yyvsp[-2].lockstrength); + n->waitPolicy = (yyvsp[0].lockwaitpolicy); + (yyval.node) = (PGNode *) n; + } +#line 18046 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 248: -#line 105 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_RESTRICT; ;} +#line 811 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = LCS_FORUPDATE; } +#line 18052 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 249: -#line 106 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_CASCADE; ;} +#line 812 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORNOKEYUPDATE; } +#line 18058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 250: -#line 107 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_SETNULL; ;} +#line 813 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORSHARE; } +#line 18064 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 251: -#line 108 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_FKCONSTR_ACTION_SETDEFAULT; ;} +#line 814 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockstrength) = PG_LCS_FORKEYSHARE; } +#line 18070 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 252: -#line 114 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); - n->conname = (yyvsp[(2) - (3)].str); - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 818 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 18076 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 253: -#line 120 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 819 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 254: -#line 121 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 824 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = LockWaitError; } +#line 18088 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 255: -#line 123 "third_party/libpg_query/grammar/statements/create.y" - { - /* - * Note: the PGCollateClause is momentarily included in - * the list built by ColQualList, but we split it out - * again in SplitColQualList. - */ - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = NULL; - n->collname = (yyvsp[(2) - (2)].list); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} +#line 825 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = PGLockWaitSkip; } +#line 18094 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 256: -#line 140 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_NOTNULL; - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 826 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.lockwaitpolicy) = PGLockWaitBlock; } +#line 18100 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 257: -#line 147 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_NULL; - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} - break; - - case 258: -#line 154 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (2)]); - n->keys = NULL; - n->options = (yyvsp[(2) - (2)].list); - n->indexname = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 836 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = makeNode(PGSelectStmt); + n->valuesLists = list_make1((yyvsp[-1].list)); + (yyval.node) = (PGNode *) n; + } +#line 18110 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 258: +#line 842 "third_party/libpg_query/grammar/statements/select.y" + { + PGSelectStmt *n = (PGSelectStmt *) (yyvsp[-4].node); + n->valuesLists = lappend(n->valuesLists, (yyvsp[-1].list)); + (yyval.node) = (PGNode *) n; + } +#line 18120 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 259: -#line 164 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (3)]); - n->keys = NULL; - n->options = (yyvsp[(3) - (3)].list); - n->indexname = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 850 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 18126 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 260: -#line 174 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_CHECK; - n->location = (yylsp[(1) - (5)]); - n->is_no_inherit = (yyvsp[(5) - (5)].boolean); - n->raw_expr = (yyvsp[(3) - (5)].node); - n->cooked_expr = NULL; - n->skip_validation = false; - n->initially_valid = true; - (yyval.node) = (PGNode *)n; - ;} +#line 851 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 18132 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 261: -#line 186 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_COMPRESSION; - n->location = (yylsp[(1) - (3)]); - n->compression_name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *)n; - ;} +#line 864 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 18138 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 262: -#line 194 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_DEFAULT; - n->location = (yylsp[(1) - (2)]); - n->raw_expr = (yyvsp[(2) - (2)].node); - n->cooked_expr = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 865 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18144 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 263: -#line 203 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_FOREIGN; - n->location = (yylsp[(1) - (5)]); - n->pktable = (yyvsp[(2) - (5)].range); - n->fk_attrs = NIL; - n->pk_attrs = (yyvsp[(3) - (5)].list); - n->fk_matchtype = (yyvsp[(4) - (5)].ival); - n->fk_upd_action = (char) ((yyvsp[(5) - (5)].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[(5) - (5)].ival) & 0xFF); - n->skip_validation = false; - n->initially_valid = true; - (yyval.node) = (PGNode *)n; - ;} +#line 869 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 18150 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 264: -#line 220 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; ;} +#line 870 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 18156 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 265: -#line 221 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.constr) = PG_CONSTR_GENERATED_STORED; ;} +#line 874 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 18162 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 266: -#line 225 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.constr) = (yyvsp[(1) - (1)].constr); ;} +#line 875 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 18168 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 267: -#line 226 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; ;} +#line 882 "third_party/libpg_query/grammar/statements/select.y" + { + (yyvsp[-2].range)->alias = (yyvsp[-1].alias); + (yyvsp[-2].range)->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) (yyvsp[-2].range); + } +#line 18178 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 268: -#line 231 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_IDENTITY; - n->generated_when = (yyvsp[(2) - (5)].ival); - n->options = (yyvsp[(5) - (5)].list); - n->location = (yylsp[(1) - (5)]); - (yyval.node) = (PGNode *)n; - ;} +#line 888 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = (PGRangeFunction *) (yyvsp[-2].node); + n->alias = (PGAlias*) linitial((yyvsp[-1].list)); + n->coldeflist = (PGList*) lsecond((yyvsp[-1].list)); + n->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 18190 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 269: -#line 240 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = (yyvsp[(7) - (7)].constr); - n->generated_when = (yyvsp[(2) - (7)].ival); - n->raw_expr = (yyvsp[(5) - (7)].node); - n->cooked_expr = NULL; - n->location = (yylsp[(1) - (7)]); - - /* - * Can't do this in the grammar because of shift/reduce - * conflicts. (IDENTITY allows both ALWAYS and BY - * DEFAULT, but generated columns only allow ALWAYS.) We - * can also give a more useful error message and location. - */ - if ((yyvsp[(2) - (7)].ival) != PG_ATTRIBUTE_IDENTITY_ALWAYS) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("for a generated column, GENERATED ALWAYS must be specified"), - parser_errposition((yylsp[(2) - (7)])))); - - (yyval.node) = (PGNode *)n; - ;} +#line 896 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeSubselect *n = makeNode(PGRangeSubselect); + n->lateral = false; + n->subquery = (yyvsp[-2].node); + n->alias = (yyvsp[-1].alias); + n->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 18203 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 270: -#line 263 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = (yyvsp[(5) - (5)].constr); - n->generated_when = PG_ATTRIBUTE_IDENTITY_ALWAYS; - n->raw_expr = (yyvsp[(3) - (5)].node); - n->cooked_expr = NULL; - n->location = (yylsp[(1) - (5)]); - (yyval.node) = (PGNode *)n; - ;} +#line 905 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = (PGRangeFunction *) (yyvsp[-1].node); + n->lateral = true; + n->alias = (PGAlias*) linitial((yyvsp[0].list)); + n->coldeflist = (PGList*) lsecond((yyvsp[0].list)); + (yyval.node) = (PGNode *) n; + } +#line 18215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 271: -#line 277 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 913 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeSubselect *n = makeNode(PGRangeSubselect); + n->lateral = false; + n->subquery = (yyvsp[-2].node); + n->alias = (yyvsp[-1].alias); + n->sample = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 18228 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 272: -#line 283 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} +#line 922 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeSubselect *n = makeNode(PGRangeSubselect); + n->lateral = true; + n->subquery = (yyvsp[-1].node); + n->alias = (yyvsp[0].alias); + n->sample = NULL; + (yyval.node) = (PGNode *) n; + } +#line 18241 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 273: -#line 289 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} +#line 931 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) (yyvsp[0].jexpr); + } +#line 18249 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 274: -#line 291 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); ;} +#line 935 "third_party/libpg_query/grammar/statements/select.y" + { + (yyvsp[-2].jexpr)->alias = (yyvsp[0].alias); + (yyval.node) = (PGNode *) (yyvsp[-2].jexpr); + } +#line 18258 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 275: -#line 293 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); ;} +#line 962 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.jexpr) = (yyvsp[-1].jexpr); + } +#line 18266 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 276: -#line 295 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); ;} +#line 966 "third_party/libpg_query/grammar/statements/select.y" + { + /* CROSS JOIN is same as unqualified inner join */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = false; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; + n->quals = NULL; + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 18283 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 277: -#line 297 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); ;} +#line 979 "third_party/libpg_query/grammar/statements/select.y" + { + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = (yyvsp[-3].jtype); + n->isNatural = false; + n->larg = (yyvsp[-4].node); + n->rarg = (yyvsp[-1].node); + if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), PGList)) + n->usingClause = (PGList *) (yyvsp[0].node); /* USING clause */ + else + n->quals = (yyvsp[0].node); /* ON clause */ + n->location = (yylsp[-3]); + (yyval.jexpr) = n; + } +#line 18301 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 278: -#line 300 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = ONCOMMIT_DROP; ;} +#line 993 "third_party/libpg_query/grammar/statements/select.y" + { + /* letting join_type reduce to empty doesn't work */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = false; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[-1].node); + if ((yyvsp[0].node) != NULL && IsA((yyvsp[0].node), PGList)) + n->usingClause = (PGList *) (yyvsp[0].node); /* USING clause */ + else + n->quals = (yyvsp[0].node); /* ON clause */ + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 18320 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 279: -#line 301 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_DELETE_ROWS; ;} +#line 1008 "third_party/libpg_query/grammar/statements/select.y" + { + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = (yyvsp[-2].jtype); + n->isNatural = true; + n->larg = (yyvsp[-4].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; /* figure out which columns later... */ + n->quals = NULL; /* fill later */ + n->location = (yylsp[-3]); + (yyval.jexpr) = n; + } +#line 18336 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 280: -#line 302 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_PRESERVE_ROWS; ;} +#line 1020 "third_party/libpg_query/grammar/statements/select.y" + { + /* letting join_type reduce to empty doesn't work */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_INNER; + n->isNatural = true; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; /* figure out which columns later... */ + n->quals = NULL; /* fill later */ + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 18353 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 281: -#line 303 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.oncommit) = PG_ONCOMMIT_NOOP; ;} +#line 1033 "third_party/libpg_query/grammar/statements/select.y" + { + /* POSITIONAL JOIN is a coordinated scan */ + PGJoinExpr *n = makeNode(PGJoinExpr); + n->jointype = PG_JOIN_POSITION; + n->isNatural = false; + n->larg = (yyvsp[-3].node); + n->rarg = (yyvsp[0].node); + n->usingClause = NIL; + n->quals = NULL; + n->location = (yylsp[-2]); + (yyval.jexpr) = n; + } +#line 18370 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 282: -#line 308 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 1049 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[-3].str); + (yyval.alias)->colnames = (yyvsp[-1].list); + } +#line 18380 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 283: -#line 312 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.boolean) = true; ;} +#line 1055 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[0].str); + } +#line 18389 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 284: -#line 313 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.boolean) = false; ;} +#line 1060 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[-3].str); + (yyval.alias)->colnames = (yyvsp[-1].list); + } +#line 18399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 285: -#line 319 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = castNode(PGConstraint, (yyvsp[(3) - (3)].node)); - n->conname = (yyvsp[(2) - (3)].str); - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 1066 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.alias) = makeNode(PGAlias); + (yyval.alias)->aliasname = (yyvsp[0].str); + } +#line 18408 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 286: -#line 325 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1072 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.alias) = (yyvsp[0].alias); } +#line 18414 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 287: -#line 330 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_COMMENTS; ;} +#line 1073 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.alias) = NULL; } +#line 18420 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 288: -#line 331 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_CONSTRAINTS; ;} +#line 1082 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2((yyvsp[0].alias), NIL); + } +#line 18428 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 289: -#line 332 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_DEFAULTS; ;} +#line 1086 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(NULL, (yyvsp[-1].list)); + } +#line 18436 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 290: -#line 333 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_IDENTITY; ;} +#line 1090 "third_party/libpg_query/grammar/statements/select.y" + { + PGAlias *a = makeNode(PGAlias); + a->aliasname = (yyvsp[-3].str); + (yyval.list) = list_make2(a, (yyvsp[-1].list)); + } +#line 18446 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 291: -#line 334 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_INDEXES; ;} +#line 1096 "third_party/libpg_query/grammar/statements/select.y" + { + PGAlias *a = makeNode(PGAlias); + a->aliasname = (yyvsp[-3].str); + (yyval.list) = list_make2(a, (yyvsp[-1].list)); + } +#line 18456 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 292: -#line 335 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_STATISTICS; ;} +#line 1102 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(NULL, NIL); + } +#line 18464 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 293: -#line 336 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_STORAGE; ;} +#line 1107 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_FULL; } +#line 18470 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 294: -#line 337 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_CREATE_TABLE_LIKE_ALL; ;} +#line 1108 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_LEFT; } +#line 18476 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 295: -#line 343 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 1109 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_RIGHT; } +#line 18482 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 296: -#line 344 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} +#line 1110 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.jtype) = PG_JOIN_INNER; } +#line 18488 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 297: -#line 348 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(3) - (3)].str); ;} +#line 1114 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 18494 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 298: -#line 354 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_DEFERRABLE; - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 1115 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 18500 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 299: -#line 361 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_NOT_DEFERRABLE; - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 1127 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) (yyvsp[-1].list); } +#line 18506 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 300: -#line 368 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_DEFERRED; - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 1128 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 18512 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 301: -#line 375 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_ATTR_IMMEDIATE; - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 1134 "third_party/libpg_query/grammar/statements/select.y" + { + /* inheritance query, implicitly */ + (yyval.range) = (yyvsp[0].range); + (yyval.range)->inh = true; + (yyval.range)->alias = NULL; + } +#line 18523 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 302: -#line 386 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 1141 "third_party/libpg_query/grammar/statements/select.y" + { + /* inheritance query, explicitly */ + (yyval.range) = (yyvsp[-1].range); + (yyval.range)->inh = true; + (yyval.range)->alias = NULL; + } +#line 18534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 303: -#line 387 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(true), (yylsp[(1) - (2)]))); ;} +#line 1148 "third_party/libpg_query/grammar/statements/select.y" + { + /* no inheritance */ + (yyval.range) = (yyvsp[0].range); + (yyval.range)->inh = false; + (yyval.range)->alias = NULL; + } +#line 18545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 304: -#line 388 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(false), (yylsp[(1) - (2)]))); ;} +#line 1155 "third_party/libpg_query/grammar/statements/select.y" + { + /* no inheritance, SQL99-style syntax */ + (yyval.range) = (yyvsp[-1].range); + (yyval.range)->inh = false; + (yyval.range)->alias = NULL; + } +#line 18556 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 305: -#line 389 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 1187 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = makeNode(PGRangeFunction); + n->lateral = false; + n->ordinality = (yyvsp[0].boolean); + n->is_rowsfrom = false; + n->functions = list_make1(list_make2((yyvsp[-1].node), NIL)); + n->sample = NULL; + /* alias and coldeflist are set by table_ref production */ + (yyval.node) = (PGNode *) n; + } +#line 18571 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 306: -#line 393 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 1198 "third_party/libpg_query/grammar/statements/select.y" + { + PGRangeFunction *n = makeNode(PGRangeFunction); + n->lateral = false; + n->ordinality = (yyvsp[0].boolean); + n->is_rowsfrom = true; + n->functions = (yyvsp[-2].list); + n->sample = NULL; + /* alias and coldeflist are set by table_ref production */ + (yyval.node) = (PGNode *) n; + } +#line 18586 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 307: -#line 398 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} +#line 1211 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].list)); } +#line 18592 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 308: -#line 399 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} +#line 1215 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 18598 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 309: -#line 400 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = 0; ;} +#line 1216 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } +#line 18604 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 310: -#line 405 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 1219 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 18610 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 311: -#line 410 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} +#line 1220 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18616 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 312: -#line 411 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_DEFERRABLE; ;} +#line 1223 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 18622 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 313: -#line 412 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} +#line 1224 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 18628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 314: -#line 413 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} +#line 1229 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 18634 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 315: -#line 414 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NOT_VALID; ;} +#line 1230 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 18640 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 316: -#line 415 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = CAS_NO_INHERIT; ;} +#line 1236 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 18648 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 317: -#line 421 "third_party/libpg_query/grammar/statements/create.y" - { - PGColumnDef *n = makeNode(PGColumnDef); - n->category = COL_STANDARD; - n->colname = (yyvsp[(1) - (3)].str); - n->typeName = (yyvsp[(2) - (3)].typnam); - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; - n->is_from_type = false; - n->storage = 0; - n->raw_default = NULL; - n->cooked_default = NULL; - n->collOid = InvalidOid; - SplitColQualList((yyvsp[(3) - (3)].list), &n->constraints, &n->collClause, - yyscanner); - n->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *)n; - ;} +#line 1240 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 18656 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 318: -#line 441 "third_party/libpg_query/grammar/statements/create.y" - { +#line 1246 "third_party/libpg_query/grammar/statements/select.y" + { PGColumnDef *n = makeNode(PGColumnDef); - n->category = COL_GENERATED; - n->colname = (yyvsp[(1) - (4)].str); - n->typeName = (yyvsp[(2) - (4)].typnam); + n->colname = (yyvsp[-2].str); + n->typeName = (yyvsp[-1].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; @@ -327425,6218 +326701,7514 @@ YYLTYPE yylloc; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; + n->collClause = (PGCollateClause *) (yyvsp[0].node); n->collOid = InvalidOid; - // merge the constraints with the generated column constraint - auto constraints = (yyvsp[(4) - (4)].list); - if (constraints) { - constraints = lappend(constraints, (yyvsp[(3) - (4)].node)); - } else { - constraints = list_make1((yyvsp[(3) - (4)].node)); - } - SplitColQualList(constraints, &n->constraints, &n->collClause, - yyscanner); - n->location = (yylsp[(1) - (4)]); + n->constraints = NIL; + n->location = (yylsp[-2]); (yyval.node) = (PGNode *)n; - ;} + } +#line 18678 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 319: -#line 469 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} +#line 1267 "third_party/libpg_query/grammar/statements/select.y" + { + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = NULL; + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 18690 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 320: -#line 470 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} +#line 1274 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 18696 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 321: -#line 474 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 1287 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(list_make2(makeString((yyvsp[-1].str)), (yyvsp[0].typnam))); + } +#line 18704 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 322: -#line 478 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} - break; - - case 323: -#line 479 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} - break; - - case 324: -#line 480 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 1290 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-3].list), list_make2(makeString((yyvsp[-1].str)), (yyvsp[0].typnam))); + } +#line 18712 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 325: -#line 485 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); - ;} +#line 1297 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18718 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 326: -#line 489 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); - ;} +#line 1298 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = NULL; } +#line 18724 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 327: -#line 496 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 1301 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + } +#line 18733 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 328: -#line 497 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 1306 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->setof = true; + } +#line 18743 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 329: -#line 502 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 1313 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-4].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + } +#line 18752 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 330: -#line 503 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 1318 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-4].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[-1].ival))); + (yyval.typnam)->setof = true; + } +#line 18762 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 331: -#line 504 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 1324 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + } +#line 18771 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 332: -#line 509 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); - ;} +#line 1329 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); + (yyval.typnam)->setof = true; + } +#line 18781 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 333: -#line 516 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 1334 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("struct"); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->typmods = (yyvsp[-2].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18792 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 334: -#line 517 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 1340 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("map"); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->typmods = (yyvsp[-2].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18803 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 335: -#line 522 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 1346 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("union"); + (yyval.typnam)->arrayBounds = (yyvsp[0].list); + (yyval.typnam)->typmods = (yyvsp[-2].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 18814 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 336: -#line 523 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = NIL; ;} +#line 1356 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeInteger(-1)); } +#line 18820 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 337: -#line 527 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} +#line 1358 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-3].list), makeInteger((yyvsp[-1].ival))); } +#line 18826 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 338: -#line 533 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (PGNode *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); - ;} +#line 1360 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18832 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 339: -#line 537 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); - ;} +#line 1364 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18838 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 340: -#line 541 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (PGNode *) (yyvsp[(5) - (5)].node), - PG_DEFELEM_UNSPEC, (yylsp[(1) - (5)])); - ;} +#line 1365 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18844 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 341: -#line 546 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, PG_DEFELEM_UNSPEC, (yylsp[(1) - (3)])); - ;} +#line 1366 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18850 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 342: -#line 553 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 1367 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18856 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 343: -#line 554 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 1368 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18862 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 344: -#line 558 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 1370 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-1].typnam); + (yyval.typnam)->typmods = (yyvsp[0].list); + } +#line 18871 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 345: -#line 559 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 1375 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[-3].typnam); + (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + } +#line 18881 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 346: -#line 563 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 1394 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18887 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 347: -#line 565 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); - (yyval.typnam)->pct_type = true; - (yyval.typnam)->location = (yylsp[(1) - (4)]); - ;} +#line 1395 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18893 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 348: -#line 571 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); - (yyval.typnam)->pct_type = true; - (yyval.typnam)->setof = true; - (yyval.typnam)->location = (yylsp[(2) - (5)]); - ;} +#line 1396 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18899 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 349: -#line 582 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_CHECK; - n->location = (yylsp[(1) - (5)]); - n->raw_expr = (yyvsp[(3) - (5)].node); - n->cooked_expr = NULL; - processCASbits((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), "CHECK", - NULL, NULL, &n->skip_validation, - &n->is_no_inherit, yyscanner); - n->initially_valid = !n->skip_validation; - (yyval.node) = (PGNode *)n; - ;} +#line 1397 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 18905 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 350: -#line 596 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (6)]); - n->keys = (yyvsp[(3) - (6)].list); - n->options = (yyvsp[(5) - (6)].list); - n->indexname = NULL; - processCASbits((yyvsp[(6) - (6)].ival), (yylsp[(6) - (6)]), "UNIQUE", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 1409 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = makeTypeName((yyvsp[-1].str)); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18915 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 351: -#line 609 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_UNIQUE; - n->location = (yylsp[(1) - (3)]); - n->keys = NIL; - n->options = NIL; - n->indexname = (yyvsp[(2) - (3)].str); - n->indexspace = NULL; - processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "UNIQUE", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 1422 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 18921 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 352: -#line 624 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (7)]); - n->keys = (yyvsp[(4) - (7)].list); - n->options = (yyvsp[(6) - (7)].list); - n->indexname = NULL; - processCASbits((yyvsp[(7) - (7)].ival), (yylsp[(7) - (7)]), "PRIMARY KEY", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 1423 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 18927 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 353: -#line 637 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_PRIMARY; - n->location = (yylsp[(1) - (4)]); - n->keys = NIL; - n->options = NIL; - n->indexname = (yyvsp[(3) - (4)].str); - n->indexspace = NULL; - processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "PRIMARY KEY", - &n->deferrable, &n->initdeferred, NULL, - NULL, yyscanner); - (yyval.node) = (PGNode *)n; - ;} +#line 1430 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18936 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 354: -#line 652 "third_party/libpg_query/grammar/statements/create.y" - { - PGConstraint *n = makeNode(PGConstraint); - n->contype = PG_CONSTR_FOREIGN; - n->location = (yylsp[(1) - (11)]); - n->pktable = (yyvsp[(7) - (11)].range); - n->fk_attrs = (yyvsp[(4) - (11)].list); - n->pk_attrs = (yyvsp[(8) - (11)].list); - n->fk_matchtype = (yyvsp[(9) - (11)].ival); - n->fk_upd_action = (char) ((yyvsp[(10) - (11)].ival) >> 8); - n->fk_del_action = (char) ((yyvsp[(10) - (11)].ival) & 0xFF); - processCASbits((yyvsp[(11) - (11)].ival), (yylsp[(11) - (11)]), "FOREIGN KEY", - &n->deferrable, &n->initdeferred, - &n->skip_validation, NULL, - yyscanner); - n->initially_valid = !n->skip_validation; - (yyval.node) = (PGNode *)n; - ;} +#line 1435 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18945 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 355: -#line 674 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 1440 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int2"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18954 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 356: -#line 678 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 1445 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("int8"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18963 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 357: -#line 685 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_FULL; - ;} +#line 1450 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float4"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 18972 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 358: -#line 689 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("MATCH PARTIAL not yet implemented"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_FKCONSTR_MATCH_PARTIAL; - ;} +#line 1455 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18981 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 359: -#line 697 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; - ;} +#line 1460 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float8"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 18990 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 360: -#line 701 "third_party/libpg_query/grammar/statements/create.y" - { - (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; - ;} +#line 1465 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19000 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 361: -#line 709 "third_party/libpg_query/grammar/statements/create.y" - { - PGTableLikeClause *n = makeNode(PGTableLikeClause); - n->relation = (yyvsp[(2) - (3)].range); - n->options = (yyvsp[(3) - (3)].ival); - (yyval.node) = (PGNode *)n; - ;} +#line 1471 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19010 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 362: -#line 718 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 1477 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("numeric"); + (yyval.typnam)->typmods = (yyvsp[0].list); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19020 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 363: -#line 719 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 1483 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("bool"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 19029 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 364: -#line 720 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 1490 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Check FLOAT() precision limits assuming IEEE floating + * types - thomas 1997-09-18 + */ + if ((yyvsp[-1].ival) < 1) + ereport(ERROR, + (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("precision for type float must be at least 1 bit"), + parser_errposition((yylsp[-1])))); + else if ((yyvsp[-1].ival) <= 24) + (yyval.typnam) = SystemTypeName("float4"); + else if ((yyvsp[-1].ival) <= 53) + (yyval.typnam) = SystemTypeName("float8"); + else + ereport(ERROR, + (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("precision for type float must be less than 54 bits"), + parser_errposition((yylsp[-1])))); + } +#line 19054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 365: -#line 721 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_TEMP; ;} +#line 1511 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("float4"); + } +#line 19062 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 366: -#line 723 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_RELPERSISTENCE_TEMP; - ;} +#line 1521 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19070 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 367: -#line 730 "third_party/libpg_query/grammar/statements/create.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (2)])))); - (yyval.ival) = PG_RELPERSISTENCE_TEMP; - ;} +#line 1525 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19078 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 368: -#line 736 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_RELPERSISTENCE_UNLOGGED; ;} +#line 1533 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19086 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 369: -#line 737 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} +#line 1537 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->typmods = NIL; + } +#line 19095 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 370: -#line 742 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = PG_ATTRIBUTE_IDENTITY_ALWAYS; ;} +#line 1545 "third_party/libpg_query/grammar/statements/select.y" + { + const char *typname; + + typname = (yyvsp[-3].boolean) ? "varbit" : "bit"; + (yyval.typnam) = SystemTypeName(typname); + (yyval.typnam)->typmods = (yyvsp[-1].list); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 19108 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 371: -#line 743 "third_party/libpg_query/grammar/statements/create.y" - { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} +#line 1557 "third_party/libpg_query/grammar/statements/select.y" + { + /* bit defaults to bit(1), varbit to no limit */ + if ((yyvsp[0].boolean)) + { + (yyval.typnam) = SystemTypeName("varbit"); + } + else + { + (yyval.typnam) = SystemTypeName("bit"); + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); + } + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19126 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 372: -#line 10 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = true; - n->objects = (yyvsp[(5) - (6)].list); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 1578 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19134 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 373: -#line 20 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = false; - n->objects = (yyvsp[(3) - (4)].list); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 1582 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19142 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 374: -#line 30 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->missing_ok = true; - n->objects = (yyvsp[(5) - (6)].list); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 1588 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = (yyvsp[0].typnam); + } +#line 19150 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 375: -#line 40 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (4)].objtype); - n->missing_ok = false; - n->objects = (yyvsp[(3) - (4)].list); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 1592 "third_party/libpg_query/grammar/statements/select.y" + { + /* Length was not specified so allow to be unrestricted. + * This handles problems with fixed-length (bpchar) strings + * which in column definitions must default to a length + * of one, but should not be constrained if the length + * was not specified. + */ + (yyval.typnam) = (yyvsp[0].typnam); + (yyval.typnam)->typmods = NIL; + } +#line 19165 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 376: -#line 50 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (6)].objtype); - n->objects = list_make1(lappend((yyvsp[(5) - (6)].list), makeString((yyvsp[(3) - (6)].str)))); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->missing_ok = false; - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 1605 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName((yyvsp[-3].conststr)); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-1].ival), (yylsp[-1]))); + (yyval.typnam)->location = (yylsp[-3]); + } +#line 19175 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 377: -#line 60 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = (yyvsp[(2) - (8)].objtype); - n->objects = list_make1(lappend((yyvsp[(7) - (8)].list), makeString((yyvsp[(5) - (8)].str)))); - n->behavior = (yyvsp[(8) - (8)].dbehavior); - n->missing_ok = true; - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 1613 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName((yyvsp[0].conststr)); + /* char defaults to char(1), varchar to no limit */ + if (strcmp((yyvsp[0].conststr), "bpchar") == 0) + (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); + (yyval.typnam)->location = (yylsp[0]); + } +#line 19187 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 378: -#line 70 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = PG_OBJECT_TYPE; - n->missing_ok = false; - n->objects = (yyvsp[(3) - (4)].list); - n->behavior = (yyvsp[(4) - (4)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 1623 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 19193 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 379: -#line 80 "third_party/libpg_query/grammar/statements/drop.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = PG_OBJECT_TYPE; - n->missing_ok = true; - n->objects = (yyvsp[(5) - (6)].list); - n->behavior = (yyvsp[(6) - (6)].dbehavior); - n->concurrent = false; - (yyval.node) = (PGNode *) n; - ;} +#line 1625 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 19199 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 380: -#line 93 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TABLE; ;} +#line 1627 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "varchar"; } +#line 19205 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 381: -#line 94 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_DATABASE; ;} +#line 1629 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 19211 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 382: -#line 95 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_SEQUENCE; ;} +#line 1631 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 19217 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 383: -#line 96 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} +#line 1633 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = (yyvsp[0].boolean) ? "varchar": "bpchar"; } +#line 19223 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 384: -#line 97 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FUNCTION; ;} +#line 1637 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 19229 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 385: -#line 98 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TABLE_MACRO; ;} +#line 1638 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 19235 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 386: -#line 99 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_VIEW; ;} +#line 1646 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timestamptz"); + else + (yyval.typnam) = SystemTypeName("timestamp"); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 19248 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 387: -#line 100 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_MATVIEW; ;} +#line 1655 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timestamptz"); + else + (yyval.typnam) = SystemTypeName("timestamp"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19260 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 388: -#line 101 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_INDEX; ;} +#line 1663 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timetz"); + else + (yyval.typnam) = SystemTypeName("time"); + (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.typnam)->location = (yylsp[-4]); + } +#line 19273 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 389: -#line 102 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FOREIGN_TABLE; ;} +#line 1672 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].boolean)) + (yyval.typnam) = SystemTypeName("timetz"); + else + (yyval.typnam) = SystemTypeName("time"); + (yyval.typnam)->location = (yylsp[-1]); + } +#line 19285 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 390: -#line 103 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_COLLATION; ;} +#line 1683 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.typnam) = SystemTypeName("interval"); + (yyval.typnam)->location = (yylsp[0]); + } +#line 19294 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 391: -#line 104 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_CONVERSION; ;} +#line 1690 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 19300 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 392: -#line 105 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_SCHEMA; ;} +#line 1691 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 19306 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 393: -#line 106 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_STATISTIC_EXT; ;} - break; - - case 394: -#line 107 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSPARSER; ;} - break; - - case 395: -#line 108 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSDICTIONARY; ;} - break; - - case 396: -#line 109 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSTEMPLATE; ;} - break; - - case 397: -#line 110 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TSCONFIGURATION; ;} - break; - - case 398: -#line 115 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_ACCESS_METHOD; ;} - break; - - case 399: -#line 116 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_EVENT_TRIGGER; ;} - break; - - case 400: -#line 117 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_EXTENSION; ;} - break; - - case 401: -#line 118 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FDW; ;} - break; - - case 402: -#line 119 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_PUBLICATION; ;} - break; - - case 403: -#line 120 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_FOREIGN_SERVER; ;} - break; - - case 404: -#line 125 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} - break; - - case 405: -#line 126 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} - break; - - case 406: -#line 131 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_CASCADE; ;} - break; - - case 407: -#line 132 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_RESTRICT; ;} - break; - - case 408: -#line 133 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.dbehavior) = PG_DROP_RESTRICT; /* default */ ;} - break; - - case 409: -#line 138 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_POLICY; ;} +#line 1692 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 19312 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 410: -#line 139 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_RULE; ;} +#line 1721 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[0]))); } +#line 19318 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 411: -#line 140 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.objtype) = PG_OBJECT_TRIGGER; ;} +#line 1723 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[0]))); } +#line 19324 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 412: -#line 143 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} +#line 1725 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[0]))); } +#line 19330 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 413: -#line 144 "third_party/libpg_query/grammar/statements/drop.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} +#line 1727 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[0]))); } +#line 19336 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 414: -#line 9 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(4) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); - n->name = (yyvsp[(4) - (8)].range); - n->params = (yyvsp[(5) - (8)].list); - n->function = NULL; - n->query = (yyvsp[(8) - (8)].node); - n->onconflict = PG_ERROR_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 1729 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[0]))); } +#line 19342 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 415: -#line 21 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(7) - (11)].range)->relpersistence = (yyvsp[(2) - (11)].ival); - n->name = (yyvsp[(7) - (11)].range); - n->params = (yyvsp[(8) - (11)].list); - n->function = NULL; - n->query = (yyvsp[(11) - (11)].node); - n->onconflict = PG_IGNORE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - - ;} +#line 1731 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[0]))); } +#line 19348 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 416: -#line 34 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(6) - (10)].range)->relpersistence = (yyvsp[(4) - (10)].ival); - n->name = (yyvsp[(6) - (10)].range); - n->params = (yyvsp[(7) - (10)].list); - n->function = NULL; - n->query = (yyvsp[(10) - (10)].node); - n->onconflict = PG_REPLACE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - - ;} +#line 1733 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLISECOND), (yylsp[0]))); } +#line 19354 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 417: -#line 47 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(4) - (7)].range)->relpersistence = (yyvsp[(2) - (7)].ival); - n->name = (yyvsp[(4) - (7)].range); - n->params = (yyvsp[(5) - (7)].list); - n->function = (yyvsp[(7) - (7)].node); - n->query = NULL; - n->onconflict = PG_ERROR_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 1735 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MICROSECOND), (yylsp[0]))); } +#line 19360 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 418: -#line 59 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(7) - (10)].range)->relpersistence = (yyvsp[(2) - (10)].ival); - n->name = (yyvsp[(7) - (10)].range); - n->params = (yyvsp[(8) - (10)].list); - n->function = (yyvsp[(10) - (10)].node); - n->query = NULL; - n->onconflict = PG_IGNORE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 1737 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | + INTERVAL_MASK(MONTH), (yylsp[-2]))); + } +#line 19369 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 419: -#line 71 "third_party/libpg_query/grammar/statements/create_function.y" - { - PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); - (yyvsp[(6) - (9)].range)->relpersistence = (yyvsp[(4) - (9)].ival); - n->name = (yyvsp[(6) - (9)].range); - n->params = (yyvsp[(7) - (9)].list); - n->function = (yyvsp[(9) - (9)].node); - n->query = NULL; - n->onconflict = PG_REPLACE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} +#line 1742 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR), (yylsp[-2]))); + } +#line 19378 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 420: +#line 1747 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } +#line 19388 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 421: +#line 1753 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | + INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 19399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 422: -#line 92 "third_party/libpg_query/grammar/statements/create_function.y" - { - (yyval.list) = NIL; - ;} +#line 1760 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE), (yylsp[-2]))); + } +#line 19408 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 423: -#line 96 "third_party/libpg_query/grammar/statements/create_function.y" - { - (yyval.list) = (yyvsp[(2) - (3)].list); - ;} +#line 1765 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | + INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 19418 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 424: -#line 12 "third_party/libpg_query/grammar/statements/update.y" - { - PGUpdateStmt *n = makeNode(PGUpdateStmt); - n->relation = (yyvsp[(3) - (8)].range); - n->targetList = (yyvsp[(5) - (8)].list); - n->fromClause = (yyvsp[(6) - (8)].list); - n->whereClause = (yyvsp[(7) - (8)].node); - n->returningList = (yyvsp[(8) - (8)].list); - n->withClause = (yyvsp[(1) - (8)].with); - (yyval.node) = (PGNode *)n; - ;} +#line 1771 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) | + INTERVAL_MASK(SECOND), (yylsp[-2]))); + } +#line 19427 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 425: -#line 3 "third_party/libpg_query/grammar/statements/copy.y" - { - PGCopyStmt *n = makeNode(PGCopyStmt); - n->relation = (yyvsp[(3) - (11)].range); - n->query = NULL; - n->attlist = (yyvsp[(4) - (11)].list); - n->is_from = (yyvsp[(6) - (11)].boolean); - n->is_program = (yyvsp[(7) - (11)].boolean); - n->filename = (yyvsp[(8) - (11)].str); - - if (n->is_program && n->filename == NULL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[(8) - (11)])))); - - n->options = NIL; - /* Concatenate user-supplied flags */ - if ((yyvsp[(2) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); - if ((yyvsp[(5) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(5) - (11)].defelt)); - if ((yyvsp[(9) - (11)].defelt)) - n->options = lappend(n->options, (yyvsp[(9) - (11)].defelt)); - if ((yyvsp[(11) - (11)].list)) - n->options = list_concat(n->options, (yyvsp[(11) - (11)].list)); - (yyval.node) = (PGNode *)n; - ;} +#line 1776 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 19433 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 426: -#line 31 "third_party/libpg_query/grammar/statements/copy.y" - { - PGCopyStmt *n = makeNode(PGCopyStmt); - n->relation = NULL; - n->query = (yyvsp[(3) - (9)].node); - n->attlist = NIL; - n->is_from = false; - n->is_program = (yyvsp[(6) - (9)].boolean); - n->filename = (yyvsp[(7) - (9)].str); - n->options = (yyvsp[(9) - (9)].list); - - if (n->is_program && n->filename == NULL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("STDIN/STDOUT not allowed with PROGRAM"), - parser_errposition((yylsp[(5) - (9)])))); - - (yyval.node) = (PGNode *)n; - ;} +#line 1807 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 19439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 427: -#line 53 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = true; ;} +#line 1810 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), 0, (yylsp[-1])); } +#line 19445 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 428: -#line 54 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = false; ;} +#line 1812 "third_party/libpg_query/grammar/statements/select.y" + { + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = (yyvsp[-2].node); + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 19457 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 429: -#line 60 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); - ;} +#line 1820 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("timezone"), + list_make2((yyvsp[0].node), (yyvsp[-4].node)), + (yylsp[-3])); + } +#line 19467 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 430: -#line 63 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 1835 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 19473 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 431: -#line 69 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 1837 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 19479 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 432: -#line 73 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 1839 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19485 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 433: -#line 80 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 1841 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19491 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 434: -#line 81 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 1843 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19497 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 435: -#line 85 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 1845 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19503 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 436: -#line 86 "third_party/libpg_query/grammar/statements/copy.y" - {;} +#line 1847 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 437: -#line 91 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = true; ;} +#line 1849 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 438: -#line 92 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.boolean) = false; ;} +#line 1851 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19521 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 439: -#line 96 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 1853 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19527 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 440: -#line 97 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 1855 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19533 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 441: -#line 102 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 1857 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19539 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 442: -#line 103 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} +#line 1859 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 443: -#line 104 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeNode(PGAStar); ;} +#line 1861 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 444: -#line 105 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) (yyvsp[(2) - (3)].list); ;} +#line 1863 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19557 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 445: -#line 106 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = NULL; ;} +#line 1866 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19563 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 446: -#line 112 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 1868 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 19569 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 447: -#line 120 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (2)])); - ;} +#line 1870 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } +#line 19575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 448: -#line 123 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 1873 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeAndExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19581 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 449: -#line 128 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} +#line 1875 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeOrExpr((yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 19587 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 450: -#line 129 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.list) = NIL; ;} +#line 1877 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } +#line 19593 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 451: -#line 135 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); - ;} +#line 1879 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeNotExpr((yyvsp[0].node), (yylsp[-1])); } +#line 19599 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 452: -#line 138 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.defelt) = NULL; ;} +#line 1881 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_GLOB, "~~~", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 19608 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 453: -#line 144 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("binary"), (yylsp[(1) - (1)])); - ;} +#line 1886 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "~~", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 19617 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 454: -#line 148 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("oids", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 1891 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), + list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-3])); + (yyval.node) = (PGNode *) n; + } +#line 19628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 455: -#line 152 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("freeze", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 1898 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "!~~", + (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } +#line 19637 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 456: -#line 156 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("delimiter", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 1903 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), + list_make3((yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) n; + } +#line 19648 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 457: -#line 160 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("null", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 1910 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", + (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 19657 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 458: -#line 164 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("format", (PGNode *)makeString("csv"), (yylsp[(1) - (1)])); - ;} +#line 1915 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("ilike_escape"), + list_make3((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-3])); + (yyval.node) = (PGNode *) n; + } +#line 19668 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 459: -#line 168 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("header", (PGNode *)makeInteger(true), (yylsp[(1) - (1)])); - ;} +#line 1922 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", + (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } +#line 19677 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 460: -#line 172 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("quote", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 1927 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("not_ilike_escape"), + list_make3((yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) n; + } +#line 19688 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 461: -#line 176 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("escape", (PGNode *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); - ;} +#line 1935 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[0].node), makeNullAConst(-1)), + (yylsp[-2])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", + (yyvsp[-3].node), (PGNode *) n, (yylsp[-2])); + } +#line 19700 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 462: -#line 180 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_quote", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 1943 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", + (yyvsp[-5].node), (PGNode *) n, (yylsp[-4])); + } +#line 19712 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 463: -#line 184 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_quote", (PGNode *)makeNode(PGAStar), (yylsp[(1) - (3)])); - ;} +#line 1951 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[0].node), makeNullAConst(-1)), + (yylsp[-3])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", + (yyvsp[-4].node), (PGNode *) n, (yylsp[-3])); + } +#line 19724 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 464: -#line 188 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("partition_by", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 1959 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), + list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", + (yyvsp[-6].node), (PGNode *) n, (yylsp[-5])); + } +#line 19736 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 465: -#line 192 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("partition_by", (PGNode *)makeNode(PGAStar), (yylsp[(1) - (3)])); - ;} +#line 1977 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-2].node); + n->nulltesttype = PG_IS_NULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 19748 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 466: -#line 196 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_not_null", (PGNode *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 1985 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-1].node); + n->nulltesttype = PG_IS_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19760 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 467: -#line 200 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("force_null", (PGNode *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); - ;} +#line 1993 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-3].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 19772 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 468: -#line 204 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.defelt) = makeDefElem("encoding", (PGNode *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); - ;} +#line 2001 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-2].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 19784 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 469: -#line 211 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} +#line 2009 "third_party/libpg_query/grammar/statements/select.y" + { + PGNullTest *n = makeNode(PGNullTest); + n->arg = (PGExpr *) (yyvsp[-1].node); + n->nulltesttype = IS_NOT_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 19796 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 470: -#line 217 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 2017 "third_party/libpg_query/grammar/statements/select.y" + { + PGLambdaFunction *n = makeNode(PGLambdaFunction); + n->lhs = (yyvsp[-2].node); + n->rhs = (yyvsp[0].node); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 19808 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 471: -#line 218 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = NULL; ;} +#line 2025 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "->>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } +#line 19816 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 472: -#line 219 "third_party/libpg_query/grammar/statements/copy.y" - { (yyval.str) = NULL; ;} +#line 2029 "third_party/libpg_query/grammar/statements/select.y" + { + if (list_length((yyvsp[-2].list)) != 2) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on left side of OVERLAPS expression"), + parser_errposition((yylsp[-2])))); + if (list_length((yyvsp[0].list)) != 2) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on right side of OVERLAPS expression"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlaps"), + list_concat((yyvsp[-2].list), (yyvsp[0].list)), + (yylsp[-1])); + } +#line 19836 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 473: -#line 225 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 2045 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = PG_IS_TRUE; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19848 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 474: -#line 229 "third_party/libpg_query/grammar/statements/copy.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 2053 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_TRUE; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19860 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 475: +#line 2061 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = IS_FALSE; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19872 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 476: +#line 2069 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_FALSE; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19884 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 477: -#line 52 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 2077 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-2].node); + b->booltesttype = IS_UNKNOWN; + b->location = (yylsp[-1]); + (yyval.node) = (PGNode *)b; + } +#line 19896 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 478: -#line 53 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 2085 "third_party/libpg_query/grammar/statements/select.y" + { + PGBooleanTest *b = makeNode(PGBooleanTest); + b->arg = (PGExpr *) (yyvsp[-3].node); + b->booltesttype = IS_NOT_UNKNOWN; + b->location = (yylsp[-2]); + (yyval.node) = (PGNode *)b; + } +#line 19908 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 479: -#line 68 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2093 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + } +#line 19916 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 480: -#line 70 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, - NULL, NULL, NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (2)].node); - ;} +#line 2097 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + } +#line 19924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 481: -#line 77 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), - (PGNode*) list_nth((yyvsp[(4) - (4)].list), 0), (PGNode*) list_nth((yyvsp[(4) - (4)].list), 1), - NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (4)].node); - ;} +#line 2101 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[-5].node), (PGNode *) (yyvsp[-1].list), (yylsp[-4])); + } +#line 19932 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 482: -#line 85 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), - (PGNode*) list_nth((yyvsp[(3) - (4)].list), 0), (PGNode*) list_nth((yyvsp[(3) - (4)].list), 1), - NULL, - yyscanner); - (yyval.node) = (yyvsp[(1) - (4)].node); - ;} +#line 2105 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[-6].node), (PGNode *) (yyvsp[-1].list), (yylsp[-5])); + } +#line 19940 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 483: -#line 93 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, - NULL, NULL, - (yyvsp[(1) - (2)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (2)].node); - ;} +#line 2109 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN, + "BETWEEN", + (yyvsp[-5].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + } +#line 19952 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 484: -#line 101 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, - NULL, NULL, - (yyvsp[(1) - (3)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (3)].node); - ;} +#line 2117 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN, + "NOT BETWEEN", + (yyvsp[-6].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + } +#line 19964 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 485: -#line 109 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), - (PGNode*) list_nth((yyvsp[(5) - (5)].list), 0), (PGNode*) list_nth((yyvsp[(5) - (5)].list), 1), - (yyvsp[(1) - (5)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (5)].node); - ;} +#line 2125 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN_SYM, + "BETWEEN SYMMETRIC", + (yyvsp[-5].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-4])); + } +#line 19976 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 486: -#line 117 "third_party/libpg_query/grammar/statements/select.y" - { - insertSelectOptions((PGSelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), - (PGNode*) list_nth((yyvsp[(4) - (5)].list), 0), (PGNode*) list_nth((yyvsp[(4) - (5)].list), 1), - (yyvsp[(1) - (5)].with), - yyscanner); - (yyval.node) = (yyvsp[(2) - (5)].node); - ;} +#line 2133 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN_SYM, + "NOT BETWEEN SYMMETRIC", + (yyvsp[-6].node), + (PGNode *) list_make2((yyvsp[-2].node), (yyvsp[0].node)), + (yylsp[-5])); + } +#line 19988 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 487: -#line 127 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2141 "third_party/libpg_query/grammar/statements/select.y" + { + /* in_expr returns a PGSubLink or a list of a_exprs */ + if (IsA((yyvsp[0].node), PGSubLink)) + { + /* generate foo = ANY (subquery) */ + PGSubLink *n = (PGSubLink *) (yyvsp[0].node); + n->subLinkType = PG_ANY_SUBLINK; + n->subLinkId = 0; + n->testexpr = (yyvsp[-2].node); + n->operName = NIL; /* show it's IN not = ANY */ + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } + else + { + /* generate scalar IN expression */ + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); + } + } +#line 20012 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 488: -#line 128 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2161 "third_party/libpg_query/grammar/statements/select.y" + { + /* in_expr returns a PGSubLink or a list of a_exprs */ + if (IsA((yyvsp[0].node), PGSubLink)) + { + /* generate NOT (foo = ANY (subquery)) */ + /* Make an = ANY node */ + PGSubLink *n = (PGSubLink *) (yyvsp[0].node); + n->subLinkType = PG_ANY_SUBLINK; + n->subLinkId = 0; + n->testexpr = (yyvsp[-3].node); + n->operName = NIL; /* show it's IN not = ANY */ + n->location = (yylsp[-2]); + /* Stick a NOT on top; must have same parse location */ + (yyval.node) = makeNotExpr((PGNode *) n, (yylsp[-2])); + } + else + { + /* generate scalar NOT IN expression */ + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "<>", (yyvsp[-3].node), (yyvsp[0].node), (yylsp[-2])); + } + } +#line 20038 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 489: -#line 156 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(3) - (3)].list); - ;} +#line 2183 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = (yyvsp[-1].subquerytype); + n->subLinkId = 0; + n->testexpr = (yyvsp[-3].node); + n->operName = (yyvsp[-2].list); + n->subselect = (yyvsp[0].node); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 20053 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 490: -#line 160 "third_party/libpg_query/grammar/statements/select.y" - { - PGAStar *star = makeNode(PGAStar); - (yyval.list) = list_make1(star); - ;} +#line 2194 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[-3].subquerytype) == PG_ANY_SUBLINK) + (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ANY, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + else + (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ALL, (yyvsp[-4].list), (yyvsp[-5].node), (yyvsp[-1].node), (yylsp[-4])); + } +#line 20064 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 491: -#line 171 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->targetList = (yyvsp[(3) - (11)].list); - n->intoClause = (yyvsp[(4) - (11)].into); - n->fromClause = (yyvsp[(5) - (11)].list); - n->whereClause = (yyvsp[(6) - (11)].node); - n->groupClause = (yyvsp[(7) - (11)].list); - n->havingClause = (yyvsp[(8) - (11)].node); - n->windowClause = (yyvsp[(9) - (11)].list); - n->qualifyClause = (yyvsp[(10) - (11)].node); - n->sampleOptions = (yyvsp[(11) - (11)].node); +#line 2201 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * The SQL spec only allows DEFAULT in "contextually typed + * expressions", but for us, it's easier to allow it in + * any a_expr and then throw error during parse analysis + * if it's in an inappropriate context. This way also + * lets us say something smarter than "syntax error". + */ + PGSetToDefault *n = makeNode(PGSetToDefault); + /* parse analysis will fill in the rest */ + n->location = (yylsp[0]); (yyval.node) = (PGNode *)n; - ;} + } +#line 20082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 492: -#line 187 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->distinctClause = (yyvsp[(2) - (11)].list); - n->targetList = (yyvsp[(3) - (11)].list); - n->intoClause = (yyvsp[(4) - (11)].into); - n->fromClause = (yyvsp[(5) - (11)].list); - n->whereClause = (yyvsp[(6) - (11)].node); - n->groupClause = (yyvsp[(7) - (11)].list); - n->havingClause = (yyvsp[(8) - (11)].node); - n->windowClause = (yyvsp[(9) - (11)].list); - n->qualifyClause = (yyvsp[(10) - (11)].node); - n->sampleOptions = (yyvsp[(11) - (11)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 2215 "third_party/libpg_query/grammar/statements/select.y" + { + PGAStar *star = makeNode(PGAStar); + star->except_list = (yyvsp[-2].list); + star->replace_list = (yyvsp[-1].list); + star->columns = true; + + (yyval.node) = (PGNode *) star; + } +#line 20095 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 493: -#line 204 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->targetList = (yyvsp[(3) - (10)].list); - n->fromClause = (yyvsp[(2) - (10)].list); - n->intoClause = (yyvsp[(4) - (10)].into); - n->whereClause = (yyvsp[(5) - (10)].node); - n->groupClause = (yyvsp[(6) - (10)].list); - n->havingClause = (yyvsp[(7) - (10)].node); - n->windowClause = (yyvsp[(8) - (10)].list); - n->qualifyClause = (yyvsp[(9) - (10)].node); - n->sampleOptions = (yyvsp[(10) - (10)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 2224 "third_party/libpg_query/grammar/statements/select.y" + { + PGAStar *star = makeNode(PGAStar); + star->regex = (yyvsp[-1].str); + star->columns = true; + + (yyval.node) = (PGNode *) star; + } +#line 20107 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 494: -#line 221 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->targetList = (yyvsp[(5) - (12)].list); - n->distinctClause = (yyvsp[(4) - (12)].list); - n->fromClause = (yyvsp[(2) - (12)].list); - n->intoClause = (yyvsp[(6) - (12)].into); - n->whereClause = (yyvsp[(7) - (12)].node); - n->groupClause = (yyvsp[(8) - (12)].list); - n->havingClause = (yyvsp[(9) - (12)].node); - n->windowClause = (yyvsp[(10) - (12)].list); - n->qualifyClause = (yyvsp[(11) - (12)].node); - n->sampleOptions = (yyvsp[(12) - (12)].node); - (yyval.node) = (PGNode *)n; - ;} +#line 2243 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20113 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 495: -#line 235 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2245 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-2].node), (yyvsp[0].typnam), 0, (yylsp[-1])); } +#line 20119 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 496: -#line 237 "third_party/libpg_query/grammar/statements/select.y" - { - /* same as SELECT * FROM relation_expr */ - PGColumnRef *cr = makeNode(PGColumnRef); - PGResTarget *rt = makeNode(PGResTarget); - PGSelectStmt *n = makeNode(PGSelectStmt); - - cr->fields = list_make1(makeNode(PGAStar)); - cr->location = -1; - - rt->name = NULL; - rt->indirection = NIL; - rt->val = (PGNode *)cr; - rt->location = -1; - - n->targetList = list_make1(rt); - n->fromClause = list_make1((yyvsp[(2) - (2)].range)); - (yyval.node) = (PGNode *)n; - ;} +#line 2247 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 20125 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 497: -#line 256 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSetOp(PG_SETOP_UNION_BY_NAME, (yyvsp[(3) - (5)].boolean), (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node)); - ;} +#line 2249 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = doNegate((yyvsp[0].node), (yylsp[-1])); } +#line 20131 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 498: -#line 260 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSetOp(PG_SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); - ;} +#line 2251 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20137 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 499: -#line 264 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSetOp(PG_SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); - ;} +#line 2253 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20143 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 500: -#line 268 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSetOp(PG_SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); - ;} +#line 2255 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20149 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 501: -#line 285 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(2) - (2)].list); - (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[(1) - (2)]); - ;} +#line 2257 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20155 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 502: -#line 292 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(2) - (2)].list); - (yyval.with)->recursive = false; - (yyval.with)->location = (yylsp[(1) - (2)]); - ;} +#line 2259 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20161 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 503: -#line 299 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.with) = makeNode(PGWithClause); - (yyval.with)->ctes = (yyvsp[(3) - (3)].list); - (yyval.with)->recursive = true; - (yyval.with)->location = (yylsp[(1) - (3)]); - ;} +#line 2261 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20167 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 504: -#line 308 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 2263 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20173 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 505: -#line 309 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 2265 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20179 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 506: -#line 313 "third_party/libpg_query/grammar/statements/select.y" - { - PGCommonTableExpr *n = makeNode(PGCommonTableExpr); - n->ctename = (yyvsp[(1) - (6)].str); - n->aliascolnames = (yyvsp[(2) - (6)].list); - n->ctequery = (yyvsp[(5) - (6)].node); - n->location = (yylsp[(1) - (6)]); - (yyval.node) = (PGNode *) n; - ;} +#line 2267 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20185 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 507: -#line 325 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.into) = makeNode(PGIntoClause); - (yyval.into)->rel = (yyvsp[(2) - (2)].range); - (yyval.into)->colNames = NIL; - (yyval.into)->options = NIL; - (yyval.into)->onCommit = PG_ONCOMMIT_NOOP; - (yyval.into)->viewQuery = NULL; - (yyval.into)->skipData = false; - ;} +#line 2269 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20191 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 508: -#line 335 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.into) = NULL; ;} +#line 2271 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20197 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 509: -#line 344 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2273 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20203 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 510: -#line 349 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2275 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20209 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 511: -#line 354 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2277 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), (yyvsp[-2].node), (yyvsp[0].node), (yylsp[-1])); } +#line 20215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 512: -#line 359 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2279 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[-1].list), NULL, (yyvsp[0].node), (yylsp[-1])); } +#line 20221 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 513: -#line 364 "third_party/libpg_query/grammar/statements/select.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (4)])))); - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2281 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[0].list), (yyvsp[-1].node), NULL, (yylsp[0])); } +#line 20227 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 514: -#line 372 "third_party/libpg_query/grammar/statements/select.y" - { - ereport(PGWARNING, - (errmsg("GLOBAL is deprecated in temporary table creation"), - parser_errposition((yylsp[(1) - (4)])))); - (yyval.range) = (yyvsp[(4) - (4)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_TEMP; - ;} +#line 2283 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[-4].node), (yyvsp[0].node), (yylsp[-3])); + } +#line 20235 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 515: -#line 380 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(3) - (3)].range); - (yyval.range)->relpersistence = PG_RELPERSISTENCE_UNLOGGED; - ;} +#line 2287 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[-5].node), (yyvsp[0].node), (yylsp[-4])); + } +#line 20243 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 516: -#line 385 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(2) - (2)].range); - (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; - ;} +#line 2291 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[-5].node), (PGNode *) (yyvsp[-1].list), (yylsp[-4])); + } +#line 20251 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 517: -#line 390 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; - ;} +#line 2295 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[-6].node), (PGNode *) (yyvsp[-1].list), (yylsp[-5])); + } +#line 20259 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 518: -#line 396 "third_party/libpg_query/grammar/statements/select.y" - {;} +#line 2308 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20265 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 519: -#line 397 "third_party/libpg_query/grammar/statements/select.y" - {;} +#line 2309 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20271 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 520: -#line 401 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 2311 "third_party/libpg_query/grammar/statements/select.y" + { + PGPositionalReference *n = makeNode(PGPositionalReference); + n->position = (yyvsp[0].ival); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 20282 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 521: -#line 402 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 2318 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = (PGNode *) (yyvsp[-1].node); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *) n; + } + else + (yyval.node) = (PGNode *) (yyvsp[-1].node); + } +#line 20298 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 522: -#line 403 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 2330 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeNamedParamRef((yyvsp[0].str), (yylsp[-1])); + } +#line 20306 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 523: -#line 407 "third_party/libpg_query/grammar/statements/select.y" - { ;} +#line 2333 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[0].list), (yylsp[0])); + (yyval.node) = (PGNode *) n; + } +#line 20315 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 524: -#line 414 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(NIL); ;} +#line 2337 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall(SystemFuncName("list_value"), (yyvsp[-1].list), (yylsp[-1])); + (yyval.node) = (PGNode *) n; + } +#line 20324 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 525: -#line 415 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(4) - (5)].list); ;} +#line 2341 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 20332 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 526: -#line 419 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL;;} +#line 2345 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = PG_ARRAY_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NULL; + n->subselect = (yyvsp[0].node); + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 20347 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 527: -#line 420 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2355 "third_party/libpg_query/grammar/statements/select.y" + { + PGList *func_name = list_make1(makeString("construct_array")); + PGFuncCall *n = makeFuncCall(func_name, (yyvsp[-1].list), (yylsp[-3])); + (yyval.node) = (PGNode *) n; + } +#line 20357 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 528: -#line 424 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true;;} +#line 2361 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20363 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 529: -#line 425 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false;;} +#line 2363 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = PG_EXPR_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[0].node); + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 20378 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 530: -#line 426 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 2374 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Because the select_with_parens nonterminal is designed + * to "eat" as many levels of parens as possible, the + * '(' a_expr ')' opt_indirection production above will + * fail to match a sub-SELECT with indirection decoration; + * the sub-SELECT won't be regarded as an a_expr as long + * as there are parens around it. To support applying + * subscripting or field selection to a sub-SELECT result, + * we need this redundant-looking production. + */ + PGSubLink *n = makeNode(PGSubLink); + PGAIndirection *a = makeNode(PGAIndirection); + n->subLinkType = PG_EXPR_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[-1].node); + n->location = (yylsp[-1]); + a->arg = (PGNode *)n; + a->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *)a; + } +#line 20406 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 531: -#line 430 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 2398 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subLinkType = PG_EXISTS_SUBLINK; + n->subLinkId = 0; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = (yyvsp[0].node); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 20421 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 532: -#line 431 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2409 "third_party/libpg_query/grammar/statements/select.y" + { + PGGroupingFunc *g = makeNode(PGGroupingFunc); + g->args = (yyvsp[-1].list); + g->location = (yylsp[-3]); + (yyval.node) = (PGNode *)g; + } +#line 20432 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 533: -#line 435 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 2420 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeParamRef(0, (yylsp[0])); + } +#line 20440 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 534: -#line 437 "third_party/libpg_query/grammar/statements/select.y" - { - PGSortBy *sort = makeNode(PGSortBy); - sort->node = (PGNode *) makeNode(PGAStar); - sort->sortby_dir = (yyvsp[(4) - (5)].sortorder); - sort->sortby_nulls = (yyvsp[(5) - (5)].nullorder); - sort->useOp = NIL; - sort->location = -1; /* no operator */ - (yyval.list) = list_make1(sort); - ;} +#line 2424 "third_party/libpg_query/grammar/statements/select.y" + { + PGParamRef *p = makeNode(PGParamRef); + p->number = (yyvsp[0].ival); + p->location = (yylsp[0]); + (yyval.node) = (PGNode *) p; + } +#line 20451 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 535: -#line 447 "third_party/libpg_query/grammar/statements/select.y" - { - PGSortBy *sort = makeNode(PGSortBy); - sort->node = (PGNode *) makeNode(PGAStar); - sort->sortby_dir = (yyvsp[(4) - (5)].sortorder); - sort->sortby_nulls = (yyvsp[(5) - (5)].nullorder); - sort->useOp = NIL; - sort->location = -1; /* no operator */ - (yyval.list) = list_make1(sort); - ;} +#line 2431 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[-1].node); + } +#line 20459 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 536: -#line 459 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} +#line 2435 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *f = makeFuncCall(SystemFuncName("struct_pack"), (yyvsp[-1].list), (yylsp[-1])); + (yyval.node) = (PGNode *) f; + } +#line 20468 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 537: -#line 460 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} +#line 2440 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 20476 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 538: -#line 464 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.sortby) = makeNode(PGSortBy); - (yyval.sortby)->node = (yyvsp[(1) - (4)].node); - (yyval.sortby)->sortby_dir = SORTBY_USING; - (yyval.sortby)->sortby_nulls = (yyvsp[(4) - (4)].nullorder); - (yyval.sortby)->useOp = (yyvsp[(3) - (4)].list); - (yyval.sortby)->location = (yylsp[(3) - (4)]); - ;} +#line 2445 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall((yyvsp[-2].list), NIL, (yylsp[-2])); + } +#line 20484 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 539: -#line 473 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.sortby) = makeNode(PGSortBy); - (yyval.sortby)->node = (yyvsp[(1) - (3)].node); - (yyval.sortby)->sortby_dir = (yyvsp[(2) - (3)].sortorder); - (yyval.sortby)->sortby_nulls = (yyvsp[(3) - (3)].nullorder); - (yyval.sortby)->useOp = NIL; - (yyval.sortby)->location = -1; /* no operator */ - ;} +#line 2449 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-5].list), (yyvsp[-3].list), (yylsp[-5])); + n->agg_order = (yyvsp[-2].list); + n->agg_ignore_nulls = (yyvsp[-1].boolean); + (yyval.node) = (PGNode *)n; + } +#line 20495 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 540: -#line 483 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_ASC; ;} +#line 2456 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-6].list), list_make1((yyvsp[-3].node)), (yylsp[-6])); + n->func_variadic = true; + n->agg_order = (yyvsp[-2].list); + n->agg_ignore_nulls = (yyvsp[-1].boolean); + (yyval.node) = (PGNode *)n; + } +#line 20507 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 541: -#line 484 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_DESC; ;} +#line 2464 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-8].list), lappend((yyvsp[-6].list), (yyvsp[-3].node)), (yylsp[-8])); + n->func_variadic = true; + n->agg_order = (yyvsp[-2].list); + n->agg_ignore_nulls = (yyvsp[-1].boolean); + (yyval.node) = (PGNode *)n; + } +#line 20519 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 542: -#line 485 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.sortorder) = PG_SORTBY_DEFAULT; ;} +#line 2472 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-6].list), (yyvsp[-3].list), (yylsp[-6])); + n->agg_order = (yyvsp[-2].list); + n->agg_ignore_nulls = (yyvsp[-1].boolean); + /* Ideally we'd mark the PGFuncCall node to indicate + * "must be an aggregate", but there's no provision + * for that in PGFuncCall at the moment. + */ + (yyval.node) = (PGNode *)n; + } +#line 20534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 543: -#line 488 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_FIRST; ;} +#line 2483 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = makeFuncCall((yyvsp[-6].list), (yyvsp[-3].list), (yylsp[-6])); + n->agg_order = (yyvsp[-2].list); + n->agg_ignore_nulls = (yyvsp[-1].boolean); + n->agg_distinct = true; + (yyval.node) = (PGNode *)n; + } +#line 20546 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 544: -#line 489 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_LAST; ;} +#line 2491 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * We consider AGGREGATE(*) to invoke a parameterless + * aggregate. This does the right thing for COUNT(*), + * and there are no other aggregates in SQL that accept + * '*' as parameter. + * + * The PGFuncCall node is also marked agg_star = true, + * so that later processing can detect what the argument + * really was. + */ + PGFuncCall *n = makeFuncCall((yyvsp[-3].list), NIL, (yylsp[-3])); + n->agg_star = true; + (yyval.node) = (PGNode *)n; + } +#line 20566 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 545: -#line 490 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.nullorder) = PG_SORTBY_NULLS_DEFAULT; ;} +#line 2519 "third_party/libpg_query/grammar/statements/select.y" + { + PGFuncCall *n = (PGFuncCall *) (yyvsp[-4].node); + /* + * The order clause for WITHIN GROUP and the one for + * plain-aggregate ORDER BY share a field, so we have to + * check here that at most one is present. We also check + * for DISTINCT and VARIADIC here to give a better error + * location. Other consistency checks are deferred to + * parse analysis. + */ + if ((yyvsp[-3].list) != NIL) + { + if (n->agg_order != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), + parser_errposition((yylsp[-3])))); + if (n->agg_distinct) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use DISTINCT with WITHIN GROUP"), + parser_errposition((yylsp[-3])))); + if (n->func_variadic) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("cannot use VARIADIC with WITHIN GROUP"), + parser_errposition((yylsp[-3])))); + n->agg_order = (yyvsp[-3].list); + n->agg_within_group = true; + } + n->agg_filter = (yyvsp[-2].node); + n->export_state = (yyvsp[-1].boolean); + n->over = (yyvsp[0].windef); + (yyval.node) = (PGNode *) n; + } +#line 20606 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 546: -#line 494 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].node)); ;} +#line 2555 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20612 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 547: -#line 495 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} +#line 2565 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20618 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 548: -#line 496 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2(NULL, (yyvsp[(1) - (1)].node)); ;} +#line 2566 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 20624 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 549: -#line 497 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (1)].node), NULL); ;} +#line 2574 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("pg_collation_for"), + list_make1((yyvsp[-1].node)), + (yylsp[-4])); + } +#line 20634 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 550: -#line 501 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 2580 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_DATE, -1, (yylsp[0])); + } +#line 20642 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 551: -#line 502 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2(NULL,NULL); ;} +#line 2584 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME, -1, (yylsp[0])); + } +#line 20650 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 552: -#line 507 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 2588 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 20658 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 553: -#line 509 "third_party/libpg_query/grammar/statements/select.y" - { - /* Disabled because it was too confusing, bjm 2002-02-18 */ - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("LIMIT #,# syntax is not supported"), - errhint("Use separate LIMIT and OFFSET clauses."), - parser_errposition((yylsp[(1) - (4)])))); - ;} +#line 2592 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[0])); + } +#line 20666 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 554: -#line 525 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(3) - (5)].node); ;} +#line 2596 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 20674 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 555: -#line 527 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeIntConst(1, -1); ;} +#line 2600 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME, -1, (yylsp[0])); + } +#line 20682 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 556: -#line 532 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 2604 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 20690 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 557: -#line 535 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (3)].node); ;} +#line 2608 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP, -1, (yylsp[0])); + } +#line 20698 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 558: -#line 543 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeFloat((yyvsp[(1) - (2)].str)), true); - ;} +#line 2612 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP_N, (yyvsp[-1].ival), (yylsp[-3])); + } +#line 20706 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 559: -#line 547 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), true); - ;} +#line 2616 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_ROLE, -1, (yylsp[0])); + } +#line 20714 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 560: -#line 551 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeFloat((yyvsp[(1) - (2)].str)), true); - ;} +#line 2620 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_USER, -1, (yylsp[0])); + } +#line 20722 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 561: -#line 555 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), true); - ;} +#line 2624 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_SESSION_USER, -1, (yylsp[0])); + } +#line 20730 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 562: -#line 559 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (1)].ival)), false); - ;} +#line 2628 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_USER, -1, (yylsp[0])); + } +#line 20738 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 563: -#line 563 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleSize(makeInteger((yyvsp[(1) - (2)].ival)), false); - ;} +#line 2632 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_CATALOG, -1, (yylsp[0])); + } +#line 20746 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 564: -#line 570 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(3) - (3)].node); - ;} +#line 2636 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_SCHEMA, -1, (yylsp[0])); + } +#line 20754 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 565: -#line 574 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2640 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), 0, (yylsp[-5])); } +#line 20760 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 566: -#line 581 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 2642 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = makeTypeCast((yyvsp[-3].node), (yyvsp[-1].typnam), 1, (yylsp[-5])); } +#line 20766 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 567: -#line 582 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = NULL; ;} +#line 2644 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20774 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 568: -#line 587 "third_party/libpg_query/grammar/statements/select.y" - { - int seed = (yyvsp[(5) - (5)].ival); - (yyval.node) = makeSampleOptions((yyvsp[(3) - (5)].node), (yyvsp[(1) - (5)].str), &seed, (yylsp[(1) - (5)])); - ;} +#line 2648 "third_party/libpg_query/grammar/statements/select.y" + { + /* overlay(A PLACING B FROM C FOR D) is converted to + * overlay(A, B, C, D) + * overlay(A PLACING B FROM C) is converted to + * overlay(A, B, C) + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20787 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 569: -#line 592 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(1) - (1)].node), NULL, NULL, (yylsp[(1) - (1)])); - ;} +#line 2657 "third_party/libpg_query/grammar/statements/select.y" + { + /* position(A in B) is converted to position(B, A) */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("position"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20796 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 570: -#line 596 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSampleOptions((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].str), NULL, (yylsp[(1) - (4)])); - ;} +#line 2662 "third_party/libpg_query/grammar/statements/select.y" + { + /* substring(A from B for C) is converted to + * substring(A, B, C) - thomas 2000-11-28 + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("substring"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20807 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 571: -#line 600 "third_party/libpg_query/grammar/statements/select.y" - { - int seed = (yyvsp[(5) - (6)].ival); - (yyval.node) = makeSampleOptions((yyvsp[(1) - (6)].node), (yyvsp[(3) - (6)].str), &seed, (yylsp[(1) - (6)])); - ;} +#line 2669 "third_party/libpg_query/grammar/statements/select.y" + { + /* TREAT(expr AS target) converts expr of a particular type to target, + * which is defined to be a subtype of the original expression. + * In SQL99, this is intended for use with structured UDTs, + * but let's make this a generally useful form allowing stronger + * coercions than are handled by implicit casting. + * + * Convert SystemTypeName() to SystemFuncName() even though + * at the moment they result in the same thing. + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName(((PGValue *)llast((yyvsp[-1].typnam)->names))->val.str), + list_make1((yyvsp[-3].node)), + (yylsp[-5])); + } +#line 20826 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 572: -#line 608 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(2) - (2)].node); - ;} +#line 2684 "third_party/libpg_query/grammar/statements/select.y" + { + /* various trim expressions are defined in SQL + * - thomas 1997-07-19 + */ + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20837 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 573: -#line 614 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2691 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 574: -#line 615 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2695 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[-1].list), (yylsp[-4])); + } +#line 20853 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 575: -#line 620 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = (yyvsp[(3) - (4)].ival); ;} +#line 2699 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[-1].list), (yylsp[-3])); + } +#line 20861 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 576: -#line 621 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = -1; ;} +#line 2703 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NULLIF, "=", (yyvsp[-3].node), (yyvsp[-1].node), (yylsp[-5])); + } +#line 20869 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 577: -#line 625 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2707 "third_party/libpg_query/grammar/statements/select.y" + { + PGCoalesceExpr *c = makeNode(PGCoalesceExpr); + c->args = (yyvsp[-1].list); + c->location = (yylsp[-3]); + (yyval.node) = (PGNode *)c; + } +#line 20880 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 578: -#line 627 "third_party/libpg_query/grammar/statements/select.y" - { - /* LIMIT ALL is represented as a NULL constant */ - (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); - ;} +#line 2717 "third_party/libpg_query/grammar/statements/select.y" + { + PGLambdaFunction *lambda = makeNode(PGLambdaFunction); + lambda->lhs = makeColumnRef((yyvsp[-3].str), NIL, (yylsp[-3]), yyscanner); + lambda->rhs = (yyvsp[-5].node); + lambda->location = (yylsp[-6]); + PGFuncCall *n = makeFuncCall(SystemFuncName("list_apply"), list_make2((yyvsp[-1].node), lambda), (yylsp[-6])); + (yyval.node) = (PGNode *) n; + } +#line 20893 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 579: -#line 632 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeLimitPercent((yyvsp[(1) - (2)].node)); ;} +#line 2726 "third_party/libpg_query/grammar/statements/select.y" + { + PGLambdaFunction *lambda = makeNode(PGLambdaFunction); + lambda->lhs = makeColumnRef((yyvsp[-5].str), NIL, (yylsp[-5]), yyscanner); + lambda->rhs = (yyvsp[-7].node); + lambda->location = (yylsp[-8]); + + PGLambdaFunction *lambda_filter = makeNode(PGLambdaFunction); + lambda_filter->lhs = makeColumnRef((yyvsp[-5].str), NIL, (yylsp[-5]), yyscanner); + lambda_filter->rhs = (yyvsp[-1].node); + lambda_filter->location = (yylsp[-1]); + PGFuncCall *filter = makeFuncCall(SystemFuncName("list_filter"), list_make2((yyvsp[-3].node), lambda_filter), (yylsp[-8])); + PGFuncCall *n = makeFuncCall(SystemFuncName("list_apply"), list_make2(filter, lambda), (yylsp[-8])); + (yyval.node) = (PGNode *) n; + } +#line 20912 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 580: -#line 634 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeLimitPercent(makeFloatConst((yyvsp[(1) - (2)].str),(yylsp[(1) - (2)]))); ;} +#line 2747 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 20918 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 581: -#line 636 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeLimitPercent(makeIntConst((yyvsp[(1) - (2)].ival),(yylsp[(1) - (2)]))); ;} +#line 2748 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 582: -#line 640 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2752 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 20930 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 583: -#line 660 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2753 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 20936 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 584: -#line 662 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2754 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 20942 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 585: -#line 664 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 2758 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = true; } +#line 20948 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 586: -#line 668 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} +#line 2759 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.boolean) = false; } +#line 20954 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 587: -#line 669 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} +#line 2766 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 20960 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 588: -#line 673 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 2767 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 20966 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 589: -#line 674 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 2771 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].windef)); } +#line 20972 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 590: -#line 677 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 2773 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].windef)); } +#line 20978 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 591: -#line 678 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = 0; ;} +#line 2778 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->name = (yyvsp[-2].str); + (yyval.windef) = n; + } +#line 20988 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 592: -#line 703 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 2786 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.windef) = (yyvsp[0].windef); } +#line 20994 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 593: -#line 705 "third_party/libpg_query/grammar/statements/select.y" - { - PGNode *node = (PGNode *) makeGroupingSet(GROUPING_SET_ALL, NIL, (yylsp[(3) - (3)])); - (yyval.list) = list_make1(node); - ;} +#line 2788 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->name = (yyvsp[0].str); + n->refname = NULL; + n->partitionClause = NIL; + n->orderClause = NIL; + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->startOffset = NULL; + n->endOffset = NULL; + n->location = (yylsp[0]); + (yyval.windef) = n; + } +#line 21011 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 594: -#line 710 "third_party/libpg_query/grammar/statements/select.y" - { - PGNode *node = (PGNode *) makeGroupingSet(GROUPING_SET_ALL, NIL, (yylsp[(3) - (3)])); - (yyval.list) = list_make1(node); - ;} +#line 2801 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.windef) = NULL; } +#line 21017 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 595: -#line 714 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 2806 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->name = NULL; + n->refname = (yyvsp[-4].str); + n->partitionClause = (yyvsp[-3].list); + n->orderClause = (yyvsp[-2].list); + /* copy relevant fields of opt_frame_clause */ + n->frameOptions = (yyvsp[-1].windef)->frameOptions; + n->startOffset = (yyvsp[-1].windef)->startOffset; + n->endOffset = (yyvsp[-1].windef)->endOffset; + n->location = (yylsp[-5]); + (yyval.windef) = n; + } +#line 21035 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 596: -#line 718 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 2831 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21041 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 597: -#line 719 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} +#line 2832 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = NULL; } +#line 21047 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 598: -#line 723 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 2835 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21053 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 599: -#line 724 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 2836 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21059 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 600: -#line 728 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2848 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; + (yyval.windef) = n; + } +#line 21069 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 601: -#line 729 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2854 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; + (yyval.windef) = n; + } +#line 21079 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 602: -#line 730 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2860 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_DEFAULTS; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21091 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 603: -#line 731 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2870 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = (yyvsp[0].windef); + /* reject invalid cases */ + if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + parser_errposition((yylsp[0])))); + if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from following row cannot end with current row"), + parser_errposition((yylsp[0])))); + n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; + (yyval.windef) = n; + } +#line 21112 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 604: -#line 732 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 2887 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n1 = (yyvsp[-2].windef); + PGWindowDef *n2 = (yyvsp[0].windef); + /* form merged options */ + int frameOptions = n1->frameOptions; + /* shift converts START_ options to END_ options */ + frameOptions |= n2->frameOptions << 1; + frameOptions |= FRAMEOPTION_BETWEEN; + /* reject invalid cases */ + if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame start cannot be UNBOUNDED FOLLOWING"), + parser_errposition((yylsp[-2])))); + if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame end cannot be UNBOUNDED PRECEDING"), + parser_errposition((yylsp[0])))); + if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && + (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from current row cannot have preceding rows"), + parser_errposition((yylsp[0])))); + if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && + (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | + FRAMEOPTION_END_CURRENT_ROW))) + ereport(ERROR, + (errcode(PG_ERRCODE_WINDOWING_ERROR), + errmsg("frame starting from following row cannot have preceding rows"), + parser_errposition((yylsp[0])))); + n1->frameOptions = frameOptions; + n1->endOffset = n2->startOffset; + (yyval.windef) = n1; + } +#line 21153 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 605: -#line 737 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); - ;} +#line 2932 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21165 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 606: -#line 750 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2940 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21177 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 607: -#line 757 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 2948 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; + n->startOffset = NULL; + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21189 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 608: -#line 764 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 2956 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; + n->startOffset = (yyvsp[-1].node); + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21201 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 609: -#line 770 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2964 "third_party/libpg_query/grammar/statements/select.y" + { + PGWindowDef *n = makeNode(PGWindowDef); + n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; + n->startOffset = (yyvsp[-1].node); + n->endOffset = NULL; + (yyval.windef) = n; + } +#line 21213 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 610: -#line 771 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2984 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21219 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 611: -#line 775 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 2985 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21225 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 612: -#line 776 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2988 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list);} +#line 21231 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 613: -#line 780 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 2989 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-3].list), (yyvsp[-1].node)); } +#line 21237 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 614: -#line 781 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 2993 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 21250 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 615: -#line 785 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 3003 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 21256 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 616: -#line 786 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3004 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 21262 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 617: -#line 790 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 3008 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21268 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 618: -#line 791 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3009 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21274 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 619: -#line 795 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 3013 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ANY_SUBLINK; } +#line 21280 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 620: -#line 796 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 3014 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ANY_SUBLINK; } +#line 21286 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 621: -#line 801 "third_party/libpg_query/grammar/statements/select.y" - { - PGLockingClause *n = makeNode(PGLockingClause); - n->lockedRels = (yyvsp[(2) - (3)].list); - n->strength = (yyvsp[(1) - (3)].lockstrength); - n->waitPolicy = (yyvsp[(3) - (3)].lockwaitpolicy); - (yyval.node) = (PGNode *) n; - ;} +#line 3015 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.subquerytype) = PG_ALL_SUBLINK; } +#line 21292 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 622: -#line 811 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = LCS_FORUPDATE; ;} +#line 3018 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21298 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 623: -#line 812 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORNOKEYUPDATE; ;} +#line 3019 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) (yyvsp[0].conststr); } +#line 21304 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 624: -#line 813 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORSHARE; ;} +#line 3022 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "+"; } +#line 21310 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 625: -#line 814 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockstrength) = PG_LCS_FORKEYSHARE; ;} +#line 3023 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "-"; } +#line 21316 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 626: -#line 818 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 3024 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "*"; } +#line 21322 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 627: -#line 819 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3025 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "/"; } +#line 21328 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 628: -#line 824 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = LockWaitError; ;} +#line 3026 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "%"; } +#line 21334 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 629: -#line 825 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = PGLockWaitSkip; ;} +#line 3027 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "^"; } +#line 21340 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 630: -#line 826 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.lockwaitpolicy) = PGLockWaitBlock; ;} +#line 3028 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "**"; } +#line 21346 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 631: -#line 836 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = makeNode(PGSelectStmt); - n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 3029 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<"; } +#line 21352 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 632: -#line 842 "third_party/libpg_query/grammar/statements/select.y" - { - PGSelectStmt *n = (PGSelectStmt *) (yyvsp[(1) - (5)].node); - n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 3030 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = ">"; } +#line 21358 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 633: -#line 850 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 3031 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "="; } +#line 21364 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 634: -#line 851 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (2)].node); ;} +#line 3032 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<="; } +#line 21370 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 635: -#line 864 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 3033 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = ">="; } +#line 21376 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 636: -#line 865 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3034 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.conststr) = "<>"; } +#line 21382 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 637: -#line 869 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 3038 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21388 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 638: -#line 870 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 3040 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21394 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 639: -#line 874 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 3045 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21400 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 640: -#line 875 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 3047 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21406 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 641: -#line 882 "third_party/libpg_query/grammar/statements/select.y" - { - (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); - (yyvsp[(1) - (3)].range)->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) (yyvsp[(1) - (3)].range); - ;} +#line 3052 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21412 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 642: -#line 888 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(1) - (3)].node); - n->alias = (PGAlias*) linitial((yyvsp[(2) - (3)].list)); - n->coldeflist = (PGList*) lsecond((yyvsp[(2) - (3)].list)); - n->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 3054 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21418 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 643: -#line 896 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeSubselect *n = makeNode(PGRangeSubselect); - n->lateral = false; - n->subquery = (yyvsp[(1) - (3)].node); - n->alias = (yyvsp[(2) - (3)].alias); - n->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 3056 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~")); } +#line 21424 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 644: -#line 905 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = (PGRangeFunction *) (yyvsp[(2) - (3)].node); - n->lateral = true; - n->alias = (PGAlias*) linitial((yyvsp[(3) - (3)].list)); - n->coldeflist = (PGList*) lsecond((yyvsp[(3) - (3)].list)); - (yyval.node) = (PGNode *) n; - ;} +#line 3058 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~")); } +#line 21430 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 645: -#line 913 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeSubselect *n = makeNode(PGRangeSubselect); - n->lateral = false; - n->subquery = (yyvsp[(1) - (3)].node); - n->alias = (yyvsp[(2) - (3)].alias); - n->sample = (yyvsp[(3) - (3)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 3060 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~~")); } +#line 21436 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 646: -#line 922 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeSubselect *n = makeNode(PGRangeSubselect); - n->lateral = true; - n->subquery = (yyvsp[(2) - (3)].node); - n->alias = (yyvsp[(3) - (3)].alias); - n->sample = NULL; - (yyval.node) = (PGNode *) n; - ;} +#line 3062 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~~")); } +#line 21442 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 647: -#line 931 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].jexpr); - ;} +#line 3064 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("~~*")); } +#line 21448 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 648: -#line 935 "third_party/libpg_query/grammar/statements/select.y" - { - (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); - (yyval.node) = (PGNode *) (yyvsp[(2) - (4)].jexpr); - ;} +#line 3066 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString("!~~*")); } +#line 21454 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 649: -#line 962 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); - ;} +#line 3080 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 21460 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 650: -#line 966 "third_party/libpg_query/grammar/statements/select.y" - { - /* CROSS JOIN is same as unqualified inner join */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = false; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(4) - (4)].node); - n->usingClause = NIL; - n->quals = NULL; - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 3082 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lcons(makeString((yyvsp[-2].str)), (yyvsp[0].list)); } +#line 21466 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 651: -#line 979 "third_party/libpg_query/grammar/statements/select.y" - { - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = (yyvsp[(2) - (5)].jtype); - n->isNatural = false; - n->larg = (yyvsp[(1) - (5)].node); - n->rarg = (yyvsp[(4) - (5)].node); - if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), PGList)) - n->usingClause = (PGList *) (yyvsp[(5) - (5)].node); /* USING clause */ - else - n->quals = (yyvsp[(5) - (5)].node); /* ON clause */ - n->location = (yylsp[(2) - (5)]); - (yyval.jexpr) = n; - ;} +#line 3086 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 21474 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 652: -#line 993 "third_party/libpg_query/grammar/statements/select.y" - { - /* letting join_type reduce to empty doesn't work */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = false; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(3) - (4)].node); - if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), PGList)) - n->usingClause = (PGList *) (yyvsp[(4) - (4)].node); /* USING clause */ - else - n->quals = (yyvsp[(4) - (4)].node); /* ON clause */ - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 3090 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 21482 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 653: -#line 1008 "third_party/libpg_query/grammar/statements/select.y" - { - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = (yyvsp[(3) - (5)].jtype); - n->isNatural = true; - n->larg = (yyvsp[(1) - (5)].node); - n->rarg = (yyvsp[(5) - (5)].node); - n->usingClause = NIL; /* figure out which columns later... */ - n->quals = NULL; /* fill later */ - n->location = (yylsp[(2) - (5)]); - (yyval.jexpr) = n; - ;} +#line 3097 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 21490 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 654: -#line 1020 "third_party/libpg_query/grammar/statements/select.y" - { - /* letting join_type reduce to empty doesn't work */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_INNER; - n->isNatural = true; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(4) - (4)].node); - n->usingClause = NIL; /* figure out which columns later... */ - n->quals = NULL; /* fill later */ - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} - break; - - case 655: -#line 1033 "third_party/libpg_query/grammar/statements/select.y" - { - /* POSITIONAL JOIN is a coordinated scan */ - PGJoinExpr *n = makeNode(PGJoinExpr); - n->jointype = PG_JOIN_POSITION; - n->isNatural = false; - n->larg = (yyvsp[(1) - (4)].node); - n->rarg = (yyvsp[(4) - (4)].node); - n->usingClause = NIL; - n->quals = NULL; - n->location = (yylsp[(2) - (4)]); - (yyval.jexpr) = n; - ;} +#line 3102 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[-1].list); + } +#line 21498 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 655: +#line 3109 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 21506 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 656: -#line 1049 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); - (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); - ;} +#line 3113 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = NULL; + } +#line 21514 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 657: -#line 1055 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); - ;} +#line 3122 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 21522 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 658: -#line 1060 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); - (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); - ;} +#line 3126 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 21530 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 659: -#line 1066 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.alias) = makeNode(PGAlias); - (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); - ;} +#line 3132 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (yyvsp[0].node); + } +#line 21538 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 660: -#line 1072 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} +#line 3136 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; /* until determined */ + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 21551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 661: -#line 1073 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.alias) = NULL; ;} +#line 3145 "third_party/libpg_query/grammar/statements/select.y" + { + PGNamedArgExpr *na = makeNode(PGNamedArgExpr); + na->name = (yyvsp[-2].str); + na->arg = (PGExpr *) (yyvsp[0].node); + na->argnumber = -1; /* until determined */ + na->location = (yylsp[-2]); + (yyval.node) = (PGNode *) na; + } +#line 21564 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 662: -#line 1082 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); - ;} +#line 3155 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].typnam)); } +#line 21570 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 663: -#line 1086 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); - ;} +#line 3156 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } +#line 21576 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 664: -#line 1090 "third_party/libpg_query/grammar/statements/select.y" - { - PGAlias *a = makeNode(PGAlias); - a->aliasname = (yyvsp[(2) - (5)].str); - (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); - ;} +#line 3161 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2(makeStringConst((yyvsp[-2].str), (yylsp[-2])), (yyvsp[0].node)); + } +#line 21584 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 665: -#line 1096 "third_party/libpg_query/grammar/statements/select.y" - { - PGAlias *a = makeNode(PGAlias); - a->aliasname = (yyvsp[(1) - (4)].str); - (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); - ;} +#line 3164 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21590 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 666: -#line 1102 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(NULL, NIL); - ;} +#line 3171 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21596 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 667: -#line 1107 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_FULL; ;} +#line 3172 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "year"; } +#line 21602 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 668: -#line 1108 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_LEFT; ;} +#line 3173 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "month"; } +#line 21608 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 669: -#line 1109 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_RIGHT; ;} +#line 3174 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "day"; } +#line 21614 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 670: -#line 1110 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.jtype) = PG_JOIN_INNER; ;} +#line 3175 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "hour"; } +#line 21620 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 671: -#line 1114 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 3176 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "minute"; } +#line 21626 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 672: -#line 1115 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 3177 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "second"; } +#line 21632 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 673: -#line 1127 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) (yyvsp[(3) - (4)].list); ;} +#line 3178 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "millisecond"; } +#line 21638 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 674: -#line 1128 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 3179 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (char*) "microsecond"; } +#line 21644 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 675: -#line 1134 "third_party/libpg_query/grammar/statements/select.y" - { - /* inheritance query, implicitly */ - (yyval.range) = (yyvsp[(1) - (1)].range); - (yyval.range)->inh = true; - (yyval.range)->alias = NULL; - ;} +#line 3180 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 21650 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 676: -#line 1141 "third_party/libpg_query/grammar/statements/select.y" - { - /* inheritance query, explicitly */ - (yyval.range) = (yyvsp[(1) - (2)].range); - (yyval.range)->inh = true; - (yyval.range)->alias = NULL; - ;} +#line 3191 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make4((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 21658 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 677: -#line 1148 "third_party/libpg_query/grammar/statements/select.y" - { - /* no inheritance */ - (yyval.range) = (yyvsp[(2) - (2)].range); - (yyval.range)->inh = false; - (yyval.range)->alias = NULL; - ;} +#line 3195 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 21666 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 678: -#line 1155 "third_party/libpg_query/grammar/statements/select.y" - { - /* no inheritance, SQL99-style syntax */ - (yyval.range) = (yyvsp[(3) - (4)].range); - (yyval.range)->inh = false; - (yyval.range)->alias = NULL; - ;} +#line 3202 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21672 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 679: -#line 1187 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = makeNode(PGRangeFunction); - n->lateral = false; - n->ordinality = (yyvsp[(2) - (2)].boolean); - n->is_rowsfrom = false; - n->functions = list_make1(list_make2((yyvsp[(1) - (2)].node), NIL)); - n->sample = NULL; - /* alias and coldeflist are set by table_ref production */ - (yyval.node) = (PGNode *) n; - ;} +#line 3208 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[0].node), (yyvsp[-2].node)); } +#line 21678 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 680: -#line 1198 "third_party/libpg_query/grammar/statements/select.y" - { - PGRangeFunction *n = makeNode(PGRangeFunction); - n->lateral = false; - n->ordinality = (yyvsp[(6) - (6)].boolean); - n->is_rowsfrom = true; - n->functions = (yyvsp[(4) - (6)].list); - n->sample = NULL; - /* alias and coldeflist are set by table_ref production */ - (yyval.node) = (PGNode *) n; - ;} +#line 3209 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21684 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 681: -#line 1211 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} +#line 3226 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); + } +#line 21692 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 682: -#line 1215 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} +#line 3230 "third_party/libpg_query/grammar/statements/select.y" + { + /* not legal per SQL99, but might as well allow it */ + (yyval.list) = list_make3((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].node)); + } +#line 21701 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 683: -#line 1216 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} +#line 3235 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = list_make2((yyvsp[-1].node), (yyvsp[0].node)); + } +#line 21709 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 684: -#line 1219 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 3239 "third_party/libpg_query/grammar/statements/select.y" + { + /* + * Since there are no cases where this syntax allows + * a textual FOR value, we forcibly cast the argument + * to int4. The possible matches in pg_proc are + * substring(text,int4) and substring(text,text), + * and we don't want the parser to choose the latter, + * which it is likely to do if the second argument + * is unknown or doesn't have an implicit cast to int4. + */ + (yyval.list) = list_make3((yyvsp[-1].node), makeIntConst(1, -1), + makeTypeCast((yyvsp[0].node), + SystemTypeName("int4"), 0, -1)); + } +#line 21728 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 685: -#line 1220 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3254 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = (yyvsp[0].list); + } +#line 21736 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 686: -#line 1223 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 3258 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21742 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 687: -#line 1224 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 3262 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21748 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 688: -#line 1229 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 3265 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21754 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 689: -#line 1230 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 3268 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[0].list), (yyvsp[-2].node)); } +#line 21760 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 690: -#line 1236 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} +#line 3269 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21766 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 691: -#line 1240 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} +#line 3270 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21772 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 692: -#line 1246 "third_party/libpg_query/grammar/statements/select.y" - { - PGColumnDef *n = makeNode(PGColumnDef); - n->colname = (yyvsp[(1) - (3)].str); - n->typeName = (yyvsp[(2) - (3)].typnam); - n->inhcount = 0; - n->is_local = true; - n->is_not_null = false; - n->is_from_type = false; - n->storage = 0; - n->raw_default = NULL; - n->cooked_default = NULL; - n->collClause = (PGCollateClause *) (yyvsp[(3) - (3)].node); - n->collOid = InvalidOid; - n->constraints = NIL; - n->location = (yylsp[(1) - (3)]); +#line 3274 "third_party/libpg_query/grammar/statements/select.y" + { + PGSubLink *n = makeNode(PGSubLink); + n->subselect = (yyvsp[0].node); + /* other fields will be filled later */ (yyval.node) = (PGNode *)n; - ;} + } +#line 21783 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 693: -#line 1267 "third_party/libpg_query/grammar/statements/select.y" - { - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = NULL; - n->collname = (yyvsp[(2) - (2)].list); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} +#line 3280 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (PGNode *)(yyvsp[-1].list); } +#line 21789 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 694: -#line 1274 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 3291 "third_party/libpg_query/grammar/statements/select.y" + { + PGCaseExpr *c = makeNode(PGCaseExpr); + c->casetype = InvalidOid; /* not analyzed yet */ + c->arg = (PGExpr *) (yyvsp[-3].node); + c->args = (yyvsp[-2].list); + c->defresult = (PGExpr *) (yyvsp[-1].node); + c->location = (yylsp[-4]); + (yyval.node) = (PGNode *)c; + } +#line 21803 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 695: -#line 1287 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(list_make2(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].typnam))); - ;} +#line 3304 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 21809 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 696: -#line 1290 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (4)].list), list_make2(makeString((yyvsp[(3) - (4)].str)), (yyvsp[(4) - (4)].typnam))); - ;} +#line 3305 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 21815 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 697: +#line 3310 "third_party/libpg_query/grammar/statements/select.y" + { + PGCaseWhen *w = makeNode(PGCaseWhen); + w->expr = (PGExpr *) (yyvsp[-2].node); + w->result = (PGExpr *) (yyvsp[0].node); + w->location = (yylsp[-3]); + (yyval.node) = (PGNode *)w; + } +#line 21827 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 698: +#line 3320 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21833 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 699: -#line 1297 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3321 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 21839 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 700: -#line 1298 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = NULL; ;} +#line 3324 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21845 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 701: -#line 1301 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); - ;} +#line 3325 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 21851 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 702: -#line 1306 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (3)].typnam); - (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); - (yyval.typnam)->setof = true; - ;} +#line 3329 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeColumnRef((yyvsp[0].str), NIL, (yylsp[0]), yyscanner); + } +#line 21859 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 703: -#line 1313 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (5)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); - ;} +#line 3333 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeColumnRef((yyvsp[-1].str), (yyvsp[0].list), (yylsp[-1]), yyscanner); + } +#line 21867 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 704: -#line 1318 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (6)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); - (yyval.typnam)->setof = true; - ;} +#line 3340 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); + } +#line 21875 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 705: -#line 1324 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); - ;} +#line 3344 "third_party/libpg_query/grammar/statements/select.y" + { + PGAIndices *ai = makeNode(PGAIndices); + ai->is_slice = false; + ai->lidx = NULL; + ai->uidx = (yyvsp[-1].node); + (yyval.node) = (PGNode *) ai; + } +#line 21887 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 706: -#line 1329 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (3)].typnam); - (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); - (yyval.typnam)->setof = true; - ;} +#line 3352 "third_party/libpg_query/grammar/statements/select.y" + { + PGAIndices *ai = makeNode(PGAIndices); + ai->is_slice = true; + ai->lidx = (yyvsp[-3].node); + ai->uidx = (yyvsp[-1].node); + (yyval.node) = (PGNode *) ai; + } +#line 21899 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 707: -#line 1334 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("struct"); - (yyval.typnam)->arrayBounds = (yyvsp[(5) - (5)].list); - (yyval.typnam)->typmods = (yyvsp[(3) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3362 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = (yyvsp[0].node); } +#line 21905 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 708: -#line 1340 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("map"); - (yyval.typnam)->arrayBounds = (yyvsp[(5) - (5)].list); - (yyval.typnam)->typmods = (yyvsp[(3) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3363 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.node) = NULL; } +#line 21911 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 709: -#line 1346 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("union"); - (yyval.typnam)->arrayBounds = (yyvsp[(5) - (5)].list); - (yyval.typnam)->typmods = (yyvsp[(3) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3367 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 21917 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 710: -#line 1356 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} +#line 3368 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 21923 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 711: -#line 1358 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} +#line 3372 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21929 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 712: -#line 1360 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} - break; - - case 713: -#line 1364 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} - break; - - case 714: -#line 1365 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3373 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 21935 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 715: -#line 1366 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3387 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21941 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 716: -#line 1367 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3388 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 21947 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 717: -#line 1368 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3392 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 21953 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 718: -#line 1370 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (2)].typnam); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - ;} +#line 3393 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } +#line 21959 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 719: -#line 1375 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (4)].typnam); - (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); - ;} +#line 3397 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 21965 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 720: -#line 1394 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3398 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 21971 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 721: -#line 1395 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3402 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[-2].node); + (yyval.target)->location = (yylsp[-2]); + } +#line 21983 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 722: -#line 1396 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3418 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[0].str); + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[-1].node); + (yyval.target)->location = (yylsp[-1]); + } +#line 21995 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 723: -#line 1397 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} +#line 3426 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)(yyvsp[0].node); + (yyval.target)->location = (yylsp[0]); + } +#line 22007 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 724: -#line 1409 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3434 "third_party/libpg_query/grammar/statements/select.y" + { + PGColumnRef *n = makeNode(PGColumnRef); + PGAStar *star = makeNode(PGAStar); + n->fields = list_make1(star); + n->location = (yylsp[-2]); + star->except_list = (yyvsp[-1].list); + star->replace_list = (yyvsp[0].list); + + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)n; + (yyval.target)->location = (yylsp[-2]); + } +#line 22026 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 725: -#line 1422 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} +#line 3449 "third_party/libpg_query/grammar/statements/select.y" + { + PGColumnRef *n = makeNode(PGColumnRef); + PGAStar *star = makeNode(PGAStar); + n->fields = list_make1(star); + n->location = (yylsp[-4]); + star->relation = (yyvsp[-4].str); + star->except_list = (yyvsp[-1].list); + star->replace_list = (yyvsp[0].list); + + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = NULL; + (yyval.target)->indirection = NIL; + (yyval.target)->val = (PGNode *)n; + (yyval.target)->location = (yylsp[-4]); + } +#line 22046 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 726: -#line 1423 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 3466 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22052 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 727: -#line 1430 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3467 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 22058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 728: -#line 1435 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3470 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22064 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 729: -#line 1440 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int2"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3471 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NULL; } +#line 22070 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 730: -#line 1445 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("int8"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3474 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make2((yyvsp[-2].node), makeString((yyvsp[0].str))); } +#line 22076 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 731: -#line 1450 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float4"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3478 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 22082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 732: -#line 1455 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(2) - (2)].typnam); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3479 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } +#line 22088 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 733: -#line 1460 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float8"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3483 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22094 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 734: -#line 1465 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3484 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22100 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 735: -#line 1471 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3487 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22106 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 736: -#line 1477 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("numeric"); - (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3488 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 22112 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 737: -#line 1483 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("bool"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3489 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NULL; } +#line 22118 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 738: -#line 1490 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Check FLOAT() precision limits assuming IEEE floating - * types - thomas 1997-09-18 - */ - if ((yyvsp[(2) - (3)].ival) < 1) - ereport(ERROR, - (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be at least 1 bit"), - parser_errposition((yylsp[(2) - (3)])))); - else if ((yyvsp[(2) - (3)].ival) <= 24) - (yyval.typnam) = SystemTypeName("float4"); - else if ((yyvsp[(2) - (3)].ival) <= 53) - (yyval.typnam) = SystemTypeName("float8"); - else - ereport(ERROR, - (errcode(PG_ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("precision for type float must be less than 54 bits"), - parser_errposition((yylsp[(2) - (3)])))); - ;} +#line 3499 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1((yyvsp[0].range)); } +#line 22124 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 739: -#line 1511 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("float4"); - ;} +#line 3500 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].range)); } +#line 22130 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 740: -#line 1521 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3512 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.range) = makeRangeVar(NULL, (yyvsp[0].str), (yylsp[0])); + } +#line 22138 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 741: -#line 1525 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3516 "third_party/libpg_query/grammar/statements/select.y" + { + check_qualified_name((yyvsp[0].list), yyscanner); + (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[-1])); + switch (list_length((yyvsp[0].list))) + { + case 1: + (yyval.range)->catalogname = NULL; + (yyval.range)->schemaname = (yyvsp[-1].str); + (yyval.range)->relname = strVal(linitial((yyvsp[0].list))); + break; + case 2: + (yyval.range)->catalogname = (yyvsp[-1].str); + (yyval.range)->schemaname = strVal(linitial((yyvsp[0].list))); + (yyval.range)->relname = strVal(lsecond((yyvsp[0].list))); + break; + case 3: + default: + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("improper qualified name (too many dotted names): %s", + NameListToString(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)))), + parser_errposition((yylsp[-1])))); + break; + } + } +#line 22168 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 742: -#line 1533 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3544 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 22174 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 743: -#line 1537 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - (yyval.typnam)->typmods = NIL; - ;} +#line 3546 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } +#line 22180 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 744: -#line 1545 "third_party/libpg_query/grammar/statements/select.y" - { - const char *typname; - - typname = (yyvsp[(2) - (5)].boolean) ? "varbit" : "bit"; - (yyval.typnam) = SystemTypeName(typname); - (yyval.typnam)->typmods = (yyvsp[(4) - (5)].list); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3551 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[0].list); } +#line 22186 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 745: -#line 1557 "third_party/libpg_query/grammar/statements/select.y" - { - /* bit defaults to bit(1), varbit to no limit */ - if ((yyvsp[(2) - (2)].boolean)) - { - (yyval.typnam) = SystemTypeName("varbit"); - } - else - { - (yyval.typnam) = SystemTypeName("bit"); - (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - } - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3552 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22192 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 746: -#line 1578 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3555 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22198 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 747: -#line 1582 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3557 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22204 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 748: -#line 1588 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - ;} +#line 3568 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 22210 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 749: -#line 1592 "third_party/libpg_query/grammar/statements/select.y" - { - /* Length was not specified so allow to be unrestricted. - * This handles problems with fixed-length (bpchar) strings - * which in column definitions must default to a length - * of one, but should not be constrained if the length - * was not specified. - */ - (yyval.typnam) = (yyvsp[(1) - (1)].typnam); - (yyval.typnam)->typmods = NIL; - ;} +#line 3571 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.list) = check_func_name(lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)), + yyscanner); + } +#line 22219 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 750: -#line 1605 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].conststr)); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); - (yyval.typnam)->location = (yylsp[(1) - (4)]); - ;} +#line 3582 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntConst((yyvsp[0].ival), (yylsp[0])); + } +#line 22227 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 751: -#line 1613 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].conststr)); - /* char defaults to char(1), varchar to no limit */ - if (strcmp((yyvsp[(1) - (1)].conststr), "bpchar") == 0) - (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3586 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeFloatConst((yyvsp[0].str), (yylsp[0])); + } +#line 22235 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 752: -#line 1623 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 3590 "third_party/libpg_query/grammar/statements/select.y" + { + if ((yyvsp[0].list)) + { + PGAIndirection *n = makeNode(PGAIndirection); + n->arg = makeStringConst((yyvsp[-1].str), (yylsp[-1])); + n->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.node) = (PGNode *) n; + } + else + (yyval.node) = makeStringConst((yyvsp[-1].str), (yylsp[-1])); + } +#line 22251 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 753: -#line 1625 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 3602 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 22259 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 754: -#line 1627 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "varchar"; ;} +#line 3606 "third_party/libpg_query/grammar/statements/select.y" + { + /* This is a bit constant per SQL99: + * Without Feature F511, "BIT data type", + * a shall not be a + * or a . + */ + (yyval.node) = makeBitStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 22272 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 755: -#line 1629 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} +#line 3615 "third_party/libpg_query/grammar/statements/select.y" + { + /* generic type 'literal' syntax */ + PGTypeName *t = makeTypeNameFromNameList((yyvsp[-1].list)); + t->location = (yylsp[-1]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 22283 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 756: -#line 1631 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} +#line 3622 "third_party/libpg_query/grammar/statements/select.y" + { + /* generic syntax with a type modifier */ + PGTypeName *t = makeTypeNameFromNameList((yyvsp[-6].list)); + PGListCell *lc; + + /* + * We must use func_arg_list and opt_sort_clause in the + * production to avoid reduce/reduce conflicts, but we + * don't actually wish to allow PGNamedArgExpr in this + * context, ORDER BY, nor IGNORE NULLS. + */ + foreach(lc, (yyvsp[-4].list)) + { + PGNamedArgExpr *arg = (PGNamedArgExpr *) lfirst(lc); + + if (IsA(arg, PGNamedArgExpr)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have parameter name"), + parser_errposition(arg->location))); + } + if ((yyvsp[-3].list) != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have ORDER BY"), + parser_errposition((yylsp[-3])))); + if ((yyvsp[-2].boolean) != false) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have IGNORE NULLS"), + parser_errposition((yylsp[-2])))); + + + t->typmods = (yyvsp[-4].list); + t->location = (yylsp[-6]); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 22325 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 757: -#line 1633 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} +#line 3660 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), (yyvsp[-1].typnam)); + } +#line 22333 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 758: -#line 1637 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 3664 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-2].node), (yylsp[-2]), (yyvsp[0].list)); + } +#line 22341 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 759: -#line 1638 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 3668 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-1].ival), (yylsp[-1]), (yyvsp[0].list)); + } +#line 22349 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 760: -#line 1646 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(5) - (5)].boolean)) - (yyval.typnam) = SystemTypeName("timestamptz"); - else - (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3672 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeIntervalNode((yyvsp[-1].str), (yylsp[-1]), (yyvsp[0].list)); + } +#line 22357 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 761: -#line 1655 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].boolean)) - (yyval.typnam) = SystemTypeName("timestamptz"); - else - (yyval.typnam) = SystemTypeName("timestamp"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3676 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBoolAConst(true, (yylsp[0])); + } +#line 22365 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 762: -#line 1663 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(5) - (5)].boolean)) - (yyval.typnam) = SystemTypeName("timetz"); - else - (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.typnam)->location = (yylsp[(1) - (5)]); - ;} +#line 3680 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeBoolAConst(false, (yylsp[0])); + } +#line 22373 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 763: -#line 1672 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].boolean)) - (yyval.typnam) = SystemTypeName("timetz"); - else - (yyval.typnam) = SystemTypeName("time"); - (yyval.typnam)->location = (yylsp[(1) - (2)]); - ;} +#line 3684 "third_party/libpg_query/grammar/statements/select.y" + { + (yyval.node) = makeNullAConst((yylsp[0])); + } +#line 22381 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 764: -#line 1683 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.typnam) = SystemTypeName("interval"); - (yyval.typnam)->location = (yylsp[(1) - (1)]); - ;} +#line 3689 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 22387 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 765: -#line 1690 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 3690 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22393 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 766: -#line 1691 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 3706 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 767: -#line 1692 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 3707 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22405 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 784: -#line 1721 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} + case 768: +#line 3708 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22411 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 785: -#line 1723 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} + case 769: +#line 3711 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22417 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 786: -#line 1725 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} + case 770: +#line 3712 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22423 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 771: +#line 3718 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22429 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 772: +#line 3719 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22435 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 773: +#line 3720 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22441 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 774: +#line 3723 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22447 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 775: +#line 3724 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22453 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 776: +#line 3725 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22459 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 777: +#line 3728 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22465 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 778: +#line 3729 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22471 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 779: +#line 3730 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22477 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 780: +#line 3733 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 22483 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 781: +#line 3734 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lcons(makeString((yyvsp[-1].str)), (yyvsp[0].list)); } +#line 22489 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 782: +#line 3738 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = list_make1(makeString((yyvsp[0].str))); } +#line 22495 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 783: +#line 3740 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = lappend((yyvsp[-2].list), makeString((yyvsp[0].str))); } +#line 22501 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 784: +#line 3744 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 22507 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 785: +#line 3745 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.list) = NIL; } +#line 22513 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 787: -#line 1727 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} +#line 3756 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22519 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 788: -#line 1729 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} +#line 3757 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22525 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 789: -#line 1731 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} +#line 3758 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22531 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 790: -#line 1733 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MILLISECOND), (yylsp[(1) - (1)]))); ;} +#line 3759 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 22537 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 791: -#line 1735 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MICROSECOND), (yylsp[(1) - (1)]))); ;} +#line 3762 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22543 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 792: -#line 1737 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | - INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); - ;} +#line 3763 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22549 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 793: -#line 1742 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); - ;} +#line 3766 "third_party/libpg_query/grammar/statements/select.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22555 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 794: -#line 1747 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); - ;} +#line 8 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_NOTHING; + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 22566 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 795: -#line 1753 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | - INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 15 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_ASSIGNMENT; + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 22578 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 796: -#line 1760 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); - ;} +#line 23 "third_party/libpg_query/grammar/statements/pragma.y" + { + PGPragmaStmt *n = makeNode(PGPragmaStmt); + n->kind = PG_PRAGMA_TYPE_CALL; + n->name = (yyvsp[-3].str); + n->args = (yyvsp[-1].list); + (yyval.node) = (PGNode *)n; + } +#line 22590 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 797: -#line 1765 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | - INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 12 "third_party/libpg_query/grammar/statements/create_as.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + ctas->query = (yyvsp[-1].node); + ctas->into = (yyvsp[-3].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->onconflict = PG_ERROR_ON_CONFLICT; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-5].ival); + (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 22607 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 798: -#line 1771 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) | - INTERVAL_MASK(SECOND), (yylsp[(1) - (3)]))); - ;} +#line 25 "third_party/libpg_query/grammar/statements/create_as.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + ctas->query = (yyvsp[-1].node); + ctas->into = (yyvsp[-3].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->onconflict = PG_IGNORE_ON_CONFLICT; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-8].ival); + (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 22624 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 799: -#line 1776 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 38 "third_party/libpg_query/grammar/statements/create_as.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + ctas->query = (yyvsp[-1].node); + ctas->into = (yyvsp[-3].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->onconflict = PG_REPLACE_ON_CONFLICT; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-3].into)->rel->relpersistence = (yyvsp[-5].ival); + (yyvsp[-3].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 22641 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 800: -#line 1807 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 54 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = true; } +#line 22647 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 801: -#line 1810 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} +#line 55 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = false; } +#line 22653 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 802: -#line 1812 "third_party/libpg_query/grammar/statements/select.y" - { - PGCollateClause *n = makeNode(PGCollateClause); - n->arg = (yyvsp[(1) - (3)].node); - n->collname = (yyvsp[(3) - (3)].list); - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 56 "third_party/libpg_query/grammar/statements/create_as.y" + { (yyval.boolean) = true; } +#line 22659 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 803: -#line 1820 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("timezone"), - list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), - (yylsp[(2) - (5)])); - ;} +#line 62 "third_party/libpg_query/grammar/statements/create_as.y" + { + (yyval.into) = makeNode(PGIntoClause); + (yyval.into)->rel = (yyvsp[-3].range); + (yyval.into)->colNames = (yyvsp[-2].list); + (yyval.into)->options = (yyvsp[-1].list); + (yyval.into)->onCommit = (yyvsp[0].oncommit); + (yyval.into)->viewQuery = NULL; + (yyval.into)->skipData = false; /* might get changed later */ + } +#line 22673 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 804: -#line 1835 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 3 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); + n->stmt = (yyvsp[0].node); + n->name = (char*) "select"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22685 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 805: -#line 1837 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 10 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); + n->stmt = (yyvsp[0].node); + n->name = (char*) "select"; + n->is_summary = 1; + (yyval.node) = (PGNode *) n; + } +#line 22697 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 806: -#line 1839 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 18 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (yyvsp[0].str); + n->is_summary = 1; + (yyval.node) = (PGNode *) n; + } +#line 22708 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 807: -#line 1841 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 25 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (yyvsp[0].str); + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22719 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 808: -#line 1843 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 32 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "timezone"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22730 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 809: -#line 1845 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 39 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "transaction_isolation"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22741 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 810: -#line 1847 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 46 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "__show_tables_expanded"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22752 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 811: -#line 1849 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} - break; - - case 812: -#line 1851 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} - break; - - case 813: -#line 1853 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 53 "third_party/libpg_query/grammar/statements/variable_show.y" + { + PGVariableShowStmt *n = makeNode(PGVariableShowStmt); + n->name = (char*) "__show_tables_expanded"; + n->is_summary = 0; + (yyval.node) = (PGNode *) n; + } +#line 22763 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 814: -#line 1855 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 63 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = (yyvsp[0].str); } +#line 22769 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 815: -#line 1857 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 65 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = psprintf("%s.%s", (yyvsp[-2].str), (yyvsp[0].str)); } +#line 22775 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 816: -#line 1859 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 68 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = psprintf("\"%s\"", (yyvsp[0].str)); } +#line 22781 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 817: -#line 1861 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 70 "third_party/libpg_query/grammar/statements/variable_show.y" + { (yyval.str) = psprintf("%s.\"%s\"", (yyvsp[-2].str), (yyvsp[0].str)); } +#line 22787 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 818: -#line 1863 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 10 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 22799 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 819: -#line 1866 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 18 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + PGAlterSeqStmt *n = makeNode(PGAlterSeqStmt); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 22811 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 820: -#line 1868 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 29 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 22817 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 821: -#line 1870 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} +#line 30 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 22823 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 822: -#line 1873 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 34 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 22829 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 823: -#line 1875 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 35 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 22835 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 824: -#line 1877 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 36 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 22841 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 825: -#line 1879 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 41 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeFloat((yyvsp[0].str)); } +#line 22847 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 826: -#line 1881 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_GLOB, "~~~", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 42 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeFloat((yyvsp[0].str)); } +#line 22853 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 827: -#line 1886 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "~~", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 44 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.value) = makeFloat((yyvsp[0].str)); + doNegateFloat((yyval.value)); + } +#line 22862 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 828: -#line 1891 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("like_escape"), - list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) n; - ;} +#line 48 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.value) = makeInteger((yyvsp[0].ival)); } +#line 22868 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 829: -#line 1898 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_LIKE, "!~~", - (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - ;} +#line 53 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("as", (PGNode *)(yyvsp[0].typnam), (yylsp[-1])); + } +#line 22876 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 830: -#line 1903 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("not_like_escape"), - list_make3((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) n; - ;} +#line 57 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cache", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 22884 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 831: -#line 1910 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "~~*", - (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 61 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(true), (yylsp[0])); + } +#line 22892 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 832: -#line 1915 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("ilike_escape"), - list_make3((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) n; - ;} +#line 65 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("cycle", (PGNode *)makeInteger(false), (yylsp[-1])); + } +#line 22900 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 833: -#line 1922 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_ILIKE, "!~~*", - (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - ;} +#line 69 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("increment", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 22908 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 834: -#line 1927 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("not_ilike_escape"), - list_make3((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) n; - ;} +#line 73 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("maxvalue", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 22916 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 835: -#line 1935 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(4) - (4)].node), makeNullAConst(-1)), - (yylsp[(2) - (4)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", - (yyvsp[(1) - (4)].node), (PGNode *) n, (yylsp[(2) - (4)])); - ;} +#line 77 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("minvalue", (PGNode *)(yyvsp[0].value), (yylsp[-1])); + } +#line 22924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 836: -#line 1943 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "~", - (yyvsp[(1) - (6)].node), (PGNode *) n, (yylsp[(2) - (6)])); - ;} +#line 81 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[-1])); + } +#line 22932 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 837: -#line 1951 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(5) - (5)].node), makeNullAConst(-1)), - (yylsp[(2) - (5)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", - (yyvsp[(1) - (5)].node), (PGNode *) n, (yylsp[(2) - (5)])); - ;} +#line 85 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[-1])); + } +#line 22940 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 838: -#line 1959 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("similar_escape"), - list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_SIMILAR, "!~", - (yyvsp[(1) - (7)].node), (PGNode *) n, (yylsp[(2) - (7)])); - ;} +#line 89 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("owned_by", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 22948 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 839: -#line 1977 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - n->nulltesttype = PG_IS_NULL; - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - ;} +#line 93 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + /* not documented, only used by pg_dump */ + (yyval.defelt) = makeDefElem("sequence_name", (PGNode *)(yyvsp[0].list), (yylsp[-2])); + } +#line 22957 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 840: -#line 1985 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (2)].node); - n->nulltesttype = PG_IS_NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 98 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("start", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 22965 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 841: -#line 1993 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)n; - ;} +#line 102 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + } +#line 22973 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 842: -#line 2001 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - ;} +#line 106 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { + (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 22981 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 843: -#line 2009 "third_party/libpg_query/grammar/statements/select.y" - { - PGNullTest *n = makeNode(PGNullTest); - n->arg = (PGExpr *) (yyvsp[(1) - (2)].node); - n->nulltesttype = IS_NOT_NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 112 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 22987 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 844: -#line 2017 "third_party/libpg_query/grammar/statements/select.y" - { - PGLambdaFunction *n = makeNode(PGLambdaFunction); - n->lhs = (yyvsp[(1) - (3)].node); - n->rhs = (yyvsp[(3) - (3)].node); - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *) n; - ;} +#line 113 "third_party/libpg_query/grammar/statements/alter_sequence.y" + {} +#line 22993 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 845: -#line 2025 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "->>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - ;} +#line 117 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 22999 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 846: -#line 2029 "third_party/libpg_query/grammar/statements/select.y" - { - if (list_length((yyvsp[(1) - (3)].list)) != 2) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on left side of OVERLAPS expression"), - parser_errposition((yylsp[(1) - (3)])))); - if (list_length((yyvsp[(3) - (3)].list)) != 2) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on right side of OVERLAPS expression"), - parser_errposition((yylsp[(3) - (3)])))); - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlaps"), - list_concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)), - (yylsp[(2) - (3)])); - ;} +#line 118 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = + (yyvsp[0].ival); } +#line 23005 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 847: -#line 2045 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = PG_IS_TRUE; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 119 "third_party/libpg_query/grammar/statements/alter_sequence.y" + { (yyval.ival) = - (yyvsp[0].ival); } +#line 23011 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 848: -#line 2053 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_TRUE; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 8 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *) n; + } +#line 23021 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 849: -#line 2061 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = IS_FALSE; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 14 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *) n; + } +#line 23031 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 850: -#line 2069 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_FALSE; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 20 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = NULL; + (yyval.node) = (PGNode *) n; + } +#line 23041 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 851: -#line 2077 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (3)].node); - b->booltesttype = IS_UNKNOWN; - b->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)b; - ;} +#line 26 "third_party/libpg_query/grammar/statements/deallocate.y" + { + PGDeallocateStmt *n = makeNode(PGDeallocateStmt); + n->name = NULL; + (yyval.node) = (PGNode *) n; + } +#line 23051 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 852: -#line 2085 "third_party/libpg_query/grammar/statements/select.y" - { - PGBooleanTest *b = makeNode(PGBooleanTest); - b->arg = (PGExpr *) (yyvsp[(1) - (4)].node); - b->booltesttype = IS_NOT_UNKNOWN; - b->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)b; - ;} +#line 9 "third_party/libpg_query/grammar/statements/create.y" + { + PGCreateStmt *n = makeNode(PGCreateStmt); + (yyvsp[-5].range)->relpersistence = (yyvsp[-7].ival); + n->relation = (yyvsp[-5].range); + n->tableElts = (yyvsp[-3].list); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[-1].list); + n->oncommit = (yyvsp[0].oncommit); + n->onconflict = PG_ERROR_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 23068 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 853: -#line 2093 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); - ;} +#line 24 "third_party/libpg_query/grammar/statements/create.y" + { + PGCreateStmt *n = makeNode(PGCreateStmt); + (yyvsp[-5].range)->relpersistence = (yyvsp[-10].ival); + n->relation = (yyvsp[-5].range); + n->tableElts = (yyvsp[-3].list); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[-1].list); + n->oncommit = (yyvsp[0].oncommit); + n->onconflict = PG_IGNORE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 23085 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 854: -#line 2097 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); - ;} +#line 39 "third_party/libpg_query/grammar/statements/create.y" + { + PGCreateStmt *n = makeNode(PGCreateStmt); + (yyvsp[-5].range)->relpersistence = (yyvsp[-7].ival); + n->relation = (yyvsp[-5].range); + n->tableElts = (yyvsp[-3].list); + n->ofTypename = NULL; + n->constraints = NIL; + n->options = (yyvsp[-1].list); + n->oncommit = (yyvsp[0].oncommit); + n->onconflict = PG_REPLACE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 23102 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 855: -#line 2101 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (PGNode *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); - ;} +#line 56 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = 0; } +#line 23108 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 856: -#line 2105 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (PGNode *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); - ;} +#line 58 "third_party/libpg_query/grammar/statements/create.y" + { + /* + * We must complain about conflicting options. + * We could, but choose not to, complain about redundant + * options (ie, where $2's bit is already set in $1). + */ + int newspec = (yyvsp[-1].ival) | (yyvsp[0].ival); + + /* special message for this case */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), + parser_errposition((yylsp[0])))); + /* generic message for other conflicts */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || + (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("conflicting constraint properties"), + parser_errposition((yylsp[0])))); + (yyval.ival) = newspec; + } +#line 23136 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 857: -#line 2109 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN, - "BETWEEN", - (yyvsp[(1) - (6)].node), - (PGNode *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - ;} +#line 84 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].typnam); } +#line 23142 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 858: -#line 2117 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN, - "NOT BETWEEN", - (yyvsp[(1) - (7)].node), - (PGNode *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - ;} +#line 85 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[0].keyword))); } +#line 23148 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 859: -#line 2125 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_BETWEEN_SYM, - "BETWEEN SYMMETRIC", - (yyvsp[(1) - (6)].node), - (PGNode *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), - (yylsp[(2) - (6)])); - ;} +#line 86 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].list); } +#line 23154 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 860: -#line 2133 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_BETWEEN_SYM, - "NOT BETWEEN SYMMETRIC", - (yyvsp[(1) - (7)].node), - (PGNode *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), - (yylsp[(2) - (7)])); - ;} +#line 87 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)(yyvsp[0].value); } +#line 23160 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 861: -#line 2141 "third_party/libpg_query/grammar/statements/select.y" - { - /* in_expr returns a PGSubLink or a list of a_exprs */ - if (IsA((yyvsp[(3) - (3)].node), PGSubLink)) - { - /* generate foo = ANY (subquery) */ - PGSubLink *n = (PGSubLink *) (yyvsp[(3) - (3)].node); - n->subLinkType = PG_ANY_SUBLINK; - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (3)].node); - n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[(2) - (3)]); - (yyval.node) = (PGNode *)n; - } - else - { - /* generate scalar IN expression */ - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); - } - ;} +#line 88 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString((yyvsp[0].str)); } +#line 23166 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 862: -#line 2161 "third_party/libpg_query/grammar/statements/select.y" - { - /* in_expr returns a PGSubLink or a list of a_exprs */ - if (IsA((yyvsp[(4) - (4)].node), PGSubLink)) - { - /* generate NOT (foo = ANY (subquery)) */ - /* Make an = ANY node */ - PGSubLink *n = (PGSubLink *) (yyvsp[(4) - (4)].node); - n->subLinkType = PG_ANY_SUBLINK; - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (4)].node); - n->operName = NIL; /* show it's IN not = ANY */ - n->location = (yylsp[(2) - (4)]); - /* Stick a NOT on top; must have same parse location */ - (yyval.node) = makeNotExpr((PGNode *) n, (yylsp[(2) - (4)])); - } - else - { - /* generate scalar NOT IN expression */ - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_IN, "<>", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); - } - ;} +#line 89 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *)makeString(pstrdup((yyvsp[0].keyword))); } +#line 23172 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 863: -#line 2183 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = (yyvsp[(3) - (4)].subquerytype); - n->subLinkId = 0; - n->testexpr = (yyvsp[(1) - (4)].node); - n->operName = (yyvsp[(2) - (4)].list); - n->subselect = (yyvsp[(4) - (4)].node); - n->location = (yylsp[(2) - (4)]); - (yyval.node) = (PGNode *)n; - ;} +#line 93 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23178 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 864: -#line 2194 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(3) - (6)].subquerytype) == PG_ANY_SUBLINK) - (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); - else - (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP_ALL, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); - ;} +#line 94 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23184 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 865: -#line 2201 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * The SQL spec only allows DEFAULT in "contextually typed - * expressions", but for us, it's easier to allow it in - * any a_expr and then throw error during parse analysis - * if it's in an inappropriate context. This way also - * lets us say something smarter than "syntax error". - */ - PGSetToDefault *n = makeNode(PGSetToDefault); - /* parse analysis will fill in the rest */ - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 99 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 23190 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 866: -#line 2215 "third_party/libpg_query/grammar/statements/select.y" - { - PGAStar *star = makeNode(PGAStar); - star->except_list = (yyvsp[(4) - (6)].list); - star->replace_list = (yyvsp[(5) - (6)].list); - star->columns = true; - - (yyval.node) = (PGNode *) star; - ;} +#line 104 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_NOACTION; } +#line 23196 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 867: -#line 2224 "third_party/libpg_query/grammar/statements/select.y" - { - PGAStar *star = makeNode(PGAStar); - star->regex = (yyvsp[(3) - (4)].str); - star->columns = true; - - (yyval.node) = (PGNode *) star; - ;} +#line 105 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_RESTRICT; } +#line 23202 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 868: -#line 2243 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 106 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_CASCADE; } +#line 23208 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 869: -#line 2245 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), 0, (yylsp[(2) - (3)])); ;} +#line 107 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_SETNULL; } +#line 23214 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 870: -#line 2247 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 108 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_FKCONSTR_ACTION_SETDEFAULT; } +#line 23220 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 871: -#line 2249 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 114 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = castNode(PGConstraint, (yyvsp[0].node)); + n->conname = (yyvsp[-1].str); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *) n; + } +#line 23231 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 872: -#line 2251 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 120 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23237 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 873: -#line 2253 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 121 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23243 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 874: -#line 2255 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 123 "third_party/libpg_query/grammar/statements/create.y" + { + /* + * Note: the PGCollateClause is momentarily included in + * the list built by ColQualList, but we split it out + * again in SplitColQualList. + */ + PGCollateClause *n = makeNode(PGCollateClause); + n->arg = NULL; + n->collname = (yyvsp[0].list); + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *) n; + } +#line 23260 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 875: -#line 2257 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 140 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_NOTNULL; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 23271 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 876: -#line 2259 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 147 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_NULL; + n->location = (yylsp[0]); + (yyval.node) = (PGNode *)n; + } +#line 23282 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 877: -#line 2261 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 154 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-1]); + n->keys = NULL; + n->options = (yyvsp[0].list); + n->indexname = NULL; + (yyval.node) = (PGNode *)n; + } +#line 23296 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 878: -#line 2263 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "**", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 164 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-2]); + n->keys = NULL; + n->options = (yyvsp[0].list); + n->indexname = NULL; + (yyval.node) = (PGNode *)n; + } +#line 23310 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 879: -#line 2265 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 174 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_CHECK; + n->location = (yylsp[-4]); + n->is_no_inherit = (yyvsp[0].boolean); + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + n->skip_validation = false; + n->initially_valid = true; + (yyval.node) = (PGNode *)n; + } +#line 23326 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 880: -#line 2267 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 186 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_COMPRESSION; + n->location = (yylsp[-2]); + n->compression_name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 23338 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 881: -#line 2269 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 194 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_DEFAULT; + n->location = (yylsp[-1]); + n->raw_expr = (yyvsp[0].node); + n->cooked_expr = NULL; + (yyval.node) = (PGNode *)n; + } +#line 23351 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 882: -#line 2271 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 203 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_FOREIGN; + n->location = (yylsp[-4]); + n->pktable = (yyvsp[-3].range); + n->fk_attrs = NIL; + n->pk_attrs = (yyvsp[-2].list); + n->fk_matchtype = (yyvsp[-1].ival); + n->fk_upd_action = (char) ((yyvsp[0].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[0].ival) & 0xFF); + n->skip_validation = false; + n->initially_valid = true; + (yyval.node) = (PGNode *)n; + } +#line 23370 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 883: -#line 2273 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 220 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; } +#line 23376 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 884: -#line 2275 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 221 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.constr) = PG_CONSTR_GENERATED_STORED; } +#line 23382 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 885: -#line 2277 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} +#line 225 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.constr) = (yyvsp[0].constr); } +#line 23388 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 886: -#line 2279 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} +#line 226 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.constr) = PG_CONSTR_GENERATED_VIRTUAL; } +#line 23394 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 887: -#line 2281 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *) makeAExpr(PG_AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} +#line 231 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_IDENTITY; + n->generated_when = (yyvsp[-3].ival); + n->options = (yyvsp[0].list); + n->location = (yylsp[-4]); + (yyval.node) = (PGNode *)n; + } +#line 23407 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 888: -#line 2283 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); - ;} +#line 240 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = (yyvsp[0].constr); + n->generated_when = (yyvsp[-5].ival); + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + n->location = (yylsp[-6]); + + /* + * Can't do this in the grammar because of shift/reduce + * conflicts. (IDENTITY allows both ALWAYS and BY + * DEFAULT, but generated columns only allow ALWAYS.) We + * can also give a more useful error message and location. + */ + if ((yyvsp[-5].ival) != PG_ATTRIBUTE_IDENTITY_ALWAYS) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("for a generated column, GENERATED ALWAYS must be specified"), + parser_errposition((yylsp[-5])))); + + (yyval.node) = (PGNode *)n; + } +#line 23434 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 889: -#line 2287 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); - ;} +#line 263 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = (yyvsp[0].constr); + n->generated_when = PG_ATTRIBUTE_IDENTITY_ALWAYS; + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + n->location = (yylsp[-4]); + (yyval.node) = (PGNode *)n; + } +#line 23448 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 890: -#line 2291 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (PGNode *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); - ;} +#line 277 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 23456 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 891: -#line 2295 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (PGNode *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); - ;} +#line 283 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 23462 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 892: -#line 2308 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 289 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[0].ival) << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); } +#line 23468 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 893: -#line 2309 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 291 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[0].ival) & 0xFF); } +#line 23474 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 894: -#line 2311 "third_party/libpg_query/grammar/statements/select.y" - { - PGPositionalReference *n = makeNode(PGPositionalReference); - n->position = (yyvsp[(2) - (2)].ival); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *) n; - ;} +#line 293 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[-1].ival) << 8) | ((yyvsp[0].ival) & 0xFF); } +#line 23480 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 895: -#line 2318 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = (PGNode *) (yyvsp[(1) - (2)].node); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *) n; - } - else - (yyval.node) = (PGNode *) (yyvsp[(1) - (2)].node); - ;} +#line 295 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ((yyvsp[0].ival) << 8) | ((yyvsp[-1].ival) & 0xFF); } +#line 23486 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 896: -#line 2330 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeNamedParamRef((yyvsp[(2) - (2)].str), (yylsp[(1) - (2)])); - ;} +#line 297 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (PG_FKCONSTR_ACTION_NOACTION << 8) | (PG_FKCONSTR_ACTION_NOACTION & 0xFF); } +#line 23492 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 897: -#line 2333 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("row"), (yyvsp[(1) - (1)].list), (yylsp[(1) - (1)])); - (yyval.node) = (PGNode *) n; - ;} +#line 300 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = ONCOMMIT_DROP; } +#line 23498 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 898: -#line 2337 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall(SystemFuncName("list_value"), (yyvsp[(2) - (3)].list), (yylsp[(2) - (3)])); - (yyval.node) = (PGNode *) n; - ;} +#line 301 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_DELETE_ROWS; } +#line 23504 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 899: -#line 2341 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(1) - (1)].node); - ;} +#line 302 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_PRESERVE_ROWS; } +#line 23510 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 900: -#line 2345 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = PG_ARRAY_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NULL; - n->subselect = (yyvsp[(2) - (2)].node); - n->location = (yylsp[(2) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 303 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.oncommit) = PG_ONCOMMIT_NOOP; } +#line 23516 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 901: -#line 2355 "third_party/libpg_query/grammar/statements/select.y" - { - PGList *func_name = list_make1(makeString("construct_array")); - PGFuncCall *n = makeFuncCall(func_name, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - (yyval.node) = (PGNode *) n; - ;} +#line 308 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23522 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 902: -#line 2361 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 312 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.boolean) = true; } +#line 23528 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 903: -#line 2363 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = PG_EXPR_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(1) - (1)].node); - n->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *)n; - ;} +#line 313 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.boolean) = false; } +#line 23534 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 904: -#line 2374 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Because the select_with_parens nonterminal is designed - * to "eat" as many levels of parens as possible, the - * '(' a_expr ')' opt_indirection production above will - * fail to match a sub-SELECT with indirection decoration; - * the sub-SELECT won't be regarded as an a_expr as long - * as there are parens around it. To support applying - * subscripting or field selection to a sub-SELECT result, - * we need this redundant-looking production. - */ - PGSubLink *n = makeNode(PGSubLink); - PGAIndirection *a = makeNode(PGAIndirection); - n->subLinkType = PG_EXPR_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(1) - (2)].node); - n->location = (yylsp[(1) - (2)]); - a->arg = (PGNode *)n; - a->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *)a; - ;} +#line 319 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = castNode(PGConstraint, (yyvsp[0].node)); + n->conname = (yyvsp[-1].str); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *) n; + } +#line 23545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 905: -#line 2398 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subLinkType = PG_EXISTS_SUBLINK; - n->subLinkId = 0; - n->testexpr = NULL; - n->operName = NIL; - n->subselect = (yyvsp[(2) - (2)].node); - n->location = (yylsp[(1) - (2)]); - (yyval.node) = (PGNode *)n; - ;} +#line 325 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23551 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 906: -#line 2409 "third_party/libpg_query/grammar/statements/select.y" - { - PGGroupingFunc *g = makeNode(PGGroupingFunc); - g->args = (yyvsp[(3) - (4)].list); - g->location = (yylsp[(1) - (4)]); - (yyval.node) = (PGNode *)g; - ;} +#line 330 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_COMMENTS; } +#line 23557 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 907: -#line 2420 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); - ;} +#line 331 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_CONSTRAINTS; } +#line 23563 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 908: -#line 2424 "third_party/libpg_query/grammar/statements/select.y" - { - PGParamRef *p = makeNode(PGParamRef); - p->number = (yyvsp[(1) - (1)].ival); - p->location = (yylsp[(1) - (1)]); - (yyval.node) = (PGNode *) p; - ;} +#line 332 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_DEFAULTS; } +#line 23569 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 909: -#line 2431 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(2) - (3)].node); - ;} +#line 333 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_IDENTITY; } +#line 23575 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 910: -#line 2435 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *f = makeFuncCall(SystemFuncName("struct_pack"), (yyvsp[(2) - (3)].list), (yylsp[(2) - (3)])); - (yyval.node) = (PGNode *) f; - ;} +#line 334 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_INDEXES; } +#line 23581 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 911: -#line 2440 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(1) - (1)].node); - ;} +#line 335 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_STATISTICS; } +#line 23587 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 912: -#line 2445 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); - ;} +#line 336 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_STORAGE; } +#line 23593 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 913: -#line 2449 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(3) - (6)].list), (yylsp[(1) - (6)])); - n->agg_order = (yyvsp[(4) - (6)].list); - n->agg_ignore_nulls = (yyvsp[(5) - (6)].boolean); - (yyval.node) = (PGNode *)n; - ;} +#line 337 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_CREATE_TABLE_LIKE_ALL; } +#line 23599 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 914: -#line 2456 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), list_make1((yyvsp[(4) - (7)].node)), (yylsp[(1) - (7)])); - n->func_variadic = true; - n->agg_order = (yyvsp[(5) - (7)].list); - n->agg_ignore_nulls = (yyvsp[(6) - (7)].boolean); - (yyval.node) = (PGNode *)n; - ;} +#line 343 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 23605 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 915: -#line 2464 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (9)].list), lappend((yyvsp[(3) - (9)].list), (yyvsp[(6) - (9)].node)), (yylsp[(1) - (9)])); - n->func_variadic = true; - n->agg_order = (yyvsp[(7) - (9)].list); - n->agg_ignore_nulls = (yyvsp[(8) - (9)].boolean); - (yyval.node) = (PGNode *)n; - ;} +#line 344 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } +#line 23611 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 916: -#line 2472 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), (yyvsp[(4) - (7)].list), (yylsp[(1) - (7)])); - n->agg_order = (yyvsp[(5) - (7)].list); - n->agg_ignore_nulls = (yyvsp[(6) - (7)].boolean); - /* Ideally we'd mark the PGFuncCall node to indicate - * "must be an aggregate", but there's no provision - * for that in PGFuncCall at the moment. - */ - (yyval.node) = (PGNode *)n; - ;} +#line 348 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 23617 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 917: -#line 2483 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (7)].list), (yyvsp[(4) - (7)].list), (yylsp[(1) - (7)])); - n->agg_order = (yyvsp[(5) - (7)].list); - n->agg_ignore_nulls = (yyvsp[(6) - (7)].boolean); - n->agg_distinct = true; +#line 354 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_DEFERRABLE; + n->location = (yylsp[0]); (yyval.node) = (PGNode *)n; - ;} + } +#line 23628 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 918: -#line 2491 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * We consider AGGREGATE(*) to invoke a parameterless - * aggregate. This does the right thing for COUNT(*), - * and there are no other aggregates in SQL that accept - * '*' as parameter. - * - * The PGFuncCall node is also marked agg_star = true, - * so that later processing can detect what the argument - * really was. - */ - PGFuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); - n->agg_star = true; +#line 361 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_NOT_DEFERRABLE; + n->location = (yylsp[-1]); (yyval.node) = (PGNode *)n; - ;} + } +#line 23639 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 919: -#line 2519 "third_party/libpg_query/grammar/statements/select.y" - { - PGFuncCall *n = (PGFuncCall *) (yyvsp[(1) - (5)].node); - /* - * The order clause for WITHIN GROUP and the one for - * plain-aggregate ORDER BY share a field, so we have to - * check here that at most one is present. We also check - * for DISTINCT and VARIADIC here to give a better error - * location. Other consistency checks are deferred to - * parse analysis. - */ - if ((yyvsp[(2) - (5)].list) != NIL) - { - if (n->agg_order != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (5)])))); - if (n->agg_distinct) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use DISTINCT with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (5)])))); - if (n->func_variadic) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("cannot use VARIADIC with WITHIN GROUP"), - parser_errposition((yylsp[(2) - (5)])))); - n->agg_order = (yyvsp[(2) - (5)].list); - n->agg_within_group = true; - } - n->agg_filter = (yyvsp[(3) - (5)].node); - n->export_state = (yyvsp[(4) - (5)].boolean); - n->over = (yyvsp[(5) - (5)].windef); - (yyval.node) = (PGNode *) n; - ;} +#line 368 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_DEFERRED; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 23650 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 920: -#line 2555 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 375 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_ATTR_IMMEDIATE; + n->location = (yylsp[-1]); + (yyval.node) = (PGNode *)n; + } +#line 23661 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 921: -#line 2565 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 386 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23667 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 922: -#line 2566 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 387 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(true), (yylsp[-1]))); } +#line 23673 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 923: -#line 2574 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("pg_collation_for"), - list_make1((yyvsp[(4) - (5)].node)), - (yylsp[(1) - (5)])); - ;} +#line 388 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1(makeDefElem("oids", (PGNode *) makeInteger(false), (yylsp[-1]))); } +#line 23679 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 924: -#line 2580 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); - ;} +#line 389 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23685 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 925: -#line 2584 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); - ;} +#line 393 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23691 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 926: -#line 2588 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 398 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } +#line 23697 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 927: -#line 2592 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); - ;} +#line 399 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[-2].ival) & ~(yyvsp[0].ival); } +#line 23703 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 928: -#line 2596 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 400 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = 0; } +#line 23709 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 929: -#line 2600 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); - ;} +#line 405 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 23715 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 930: -#line 2604 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 410 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NOT_DEFERRABLE; } +#line 23721 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 931: -#line 2608 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); - ;} +#line 411 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_DEFERRABLE; } +#line 23727 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 932: -#line 2612 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); - ;} +#line 412 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; } +#line 23733 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 933: -#line 2616 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); - ;} +#line 413 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_INITIALLY_DEFERRED; } +#line 23739 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 934: -#line 2620 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 414 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NOT_VALID; } +#line 23745 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 935: -#line 2624 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 415 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = CAS_NO_INHERIT; } +#line 23751 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 936: -#line 2628 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_USER, -1, (yylsp[(1) - (1)])); - ;} +#line 421 "third_party/libpg_query/grammar/statements/create.y" + { + PGColumnDef *n = makeNode(PGColumnDef); + n->category = COL_STANDARD; + n->colname = (yyvsp[-2].str); + n->typeName = (yyvsp[-1].typnam); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collOid = InvalidOid; + SplitColQualList((yyvsp[0].list), &n->constraints, &n->collClause, + yyscanner); + n->location = (yylsp[-2]); + (yyval.node) = (PGNode *)n; + } +#line 23774 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 937: -#line 2632 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); - ;} +#line 441 "third_party/libpg_query/grammar/statements/create.y" + { + PGColumnDef *n = makeNode(PGColumnDef); + n->category = COL_GENERATED; + n->colname = (yyvsp[-3].str); + n->typeName = (yyvsp[-2].typnam); + n->inhcount = 0; + n->is_local = true; + n->is_not_null = false; + n->is_from_type = false; + n->storage = 0; + n->raw_default = NULL; + n->cooked_default = NULL; + n->collOid = InvalidOid; + // merge the constraints with the generated column constraint + auto constraints = (yyvsp[0].list); + if (constraints) { + constraints = lappend(constraints, (yyvsp[-1].node)); + } else { + constraints = list_make1((yyvsp[-1].node)); + } + SplitColQualList(constraints, &n->constraints, &n->collClause, + yyscanner); + n->location = (yylsp[-3]); + (yyval.node) = (PGNode *)n; + } +#line 23804 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 938: -#line 2636 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeSQLValueFunction(PG_SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); - ;} +#line 469 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 23810 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 939: -#line 2640 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 0, (yylsp[(1) - (6)])); ;} +#line 470 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); } +#line 23816 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 940: -#line 2642 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), 1, (yylsp[(1) - (6)])); ;} +#line 474 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.str) = (yyvsp[0].str); } +#line 23822 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 941: -#line 2644 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 478 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23828 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 942: -#line 2648 "third_party/libpg_query/grammar/statements/select.y" - { - /* overlay(A PLACING B FROM C FOR D) is converted to - * overlay(A, B, C, D) - * overlay(A PLACING B FROM C) is converted to - * overlay(A, B, C) - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 479 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23834 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 943: -#line 2657 "third_party/libpg_query/grammar/statements/select.y" - { - /* position(A in B) is converted to position(B, A) */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 480 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.node) = (yyvsp[0].node); } +#line 23840 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 944: -#line 2662 "third_party/libpg_query/grammar/statements/select.y" - { - /* substring(A from B for C) is converted to - * substring(A, B, C) - thomas 2000-11-28 - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("substring"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 485 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (PGNode *) (yyvsp[0].node), (yylsp[-2])); + } +#line 23848 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 945: -#line 2669 "third_party/libpg_query/grammar/statements/select.y" - { - /* TREAT(expr AS target) converts expr of a particular type to target, - * which is defined to be a subtype of the original expression. - * In SQL99, this is intended for use with structured UDTs, - * but let's make this a generally useful form allowing stronger - * coercions than are handled by implicit casting. - * - * Convert SystemTypeName() to SystemFuncName() even though - * at the moment they result in the same thing. - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName(((PGValue *)llast((yyvsp[(5) - (6)].typnam)->names))->val.str), - list_make1((yyvsp[(3) - (6)].node)), - (yylsp[(1) - (6)])); - ;} +#line 489 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + } +#line 23856 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 946: -#line 2684 "third_party/libpg_query/grammar/statements/select.y" - { - /* various trim expressions are defined in SQL - * - thomas 1997-07-19 - */ - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 496 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23862 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 947: -#line 2691 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 497 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23868 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 948: -#line 2695 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); - ;} +#line 502 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23874 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 949: -#line 2699 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeFuncCall(SystemFuncName("trim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); - ;} +#line 503 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23880 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 950: -#line 2703 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeSimpleAExpr(PG_AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); - ;} +#line 504 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23886 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 951: -#line 2707 "third_party/libpg_query/grammar/statements/select.y" - { - PGCoalesceExpr *c = makeNode(PGCoalesceExpr); - c->args = (yyvsp[(3) - (4)].list); - c->location = (yylsp[(1) - (4)]); - (yyval.node) = (PGNode *)c; - ;} +#line 509 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); + } +#line 23894 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 952: -#line 2717 "third_party/libpg_query/grammar/statements/select.y" - { - PGLambdaFunction *lambda = makeNode(PGLambdaFunction); - lambda->lhs = makeColumnRef((yyvsp[(4) - (7)].str), NIL, (yylsp[(4) - (7)]), yyscanner); - lambda->rhs = (yyvsp[(2) - (7)].node); - lambda->location = (yylsp[(1) - (7)]); - PGFuncCall *n = makeFuncCall(SystemFuncName("list_apply"), list_make2((yyvsp[(6) - (7)].node), lambda), (yylsp[(1) - (7)])); - (yyval.node) = (PGNode *) n; - ;} +#line 516 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23900 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 953: -#line 2726 "third_party/libpg_query/grammar/statements/select.y" - { - PGLambdaFunction *lambda = makeNode(PGLambdaFunction); - lambda->lhs = makeColumnRef((yyvsp[(4) - (9)].str), NIL, (yylsp[(4) - (9)]), yyscanner); - lambda->rhs = (yyvsp[(2) - (9)].node); - lambda->location = (yylsp[(1) - (9)]); - - PGLambdaFunction *lambda_filter = makeNode(PGLambdaFunction); - lambda_filter->lhs = makeColumnRef((yyvsp[(4) - (9)].str), NIL, (yylsp[(4) - (9)]), yyscanner); - lambda_filter->rhs = (yyvsp[(8) - (9)].node); - lambda_filter->location = (yylsp[(8) - (9)]); - PGFuncCall *filter = makeFuncCall(SystemFuncName("list_filter"), list_make2((yyvsp[(6) - (9)].node), lambda_filter), (yylsp[(1) - (9)])); - PGFuncCall *n = makeFuncCall(SystemFuncName("list_apply"), list_make2(filter, lambda), (yylsp[(1) - (9)])); - (yyval.node) = (PGNode *) n; - ;} +#line 517 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23906 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 954: -#line 2747 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(4) - (5)].list); ;} +#line 522 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); } +#line 23912 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 955: -#line 2748 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 523 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = NIL; } +#line 23918 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 956: -#line 2752 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(4) - (5)].node); ;} +#line 527 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 23924 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 957: -#line 2753 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(3) - (4)].node); ;} +#line 533 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-2].str), (PGNode *) (yyvsp[0].node), (yylsp[-2])); + } +#line 23932 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 958: -#line 2754 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 537 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElem((yyvsp[0].str), NULL, (yylsp[0])); + } +#line 23940 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 959: -#line 2758 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = true; ;} +#line 541 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-4].str), (yyvsp[-2].str), (PGNode *) (yyvsp[0].node), + PG_DEFELEM_UNSPEC, (yylsp[-4])); + } +#line 23949 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 960: -#line 2759 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.boolean) = false; ;} +#line 546 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.defelt) = makeDefElemExtended((yyvsp[-2].str), (yyvsp[0].str), NULL, PG_DEFELEM_UNSPEC, (yylsp[-2])); + } +#line 23957 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 961: -#line 2766 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 553 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 23963 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 962: -#line 2767 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 554 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 23969 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 963: -#line 2771 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} +#line 558 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[0].list); } +#line 23975 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 964: -#line 2773 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} +#line 559 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 23981 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 965: -#line 2778 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(3) - (3)].windef); - n->name = (yyvsp[(1) - (3)].str); - (yyval.windef) = n; - ;} +#line 563 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.typnam) = (yyvsp[0].typnam); } +#line 23987 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 966: -#line 2786 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} +#line 565 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam)->pct_type = true; + (yyval.typnam)->location = (yylsp[-3]); + } +#line 23997 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 967: -#line 2788 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->name = (yyvsp[(2) - (2)].str); - n->refname = NULL; - n->partitionClause = NIL; - n->orderClause = NIL; - n->frameOptions = FRAMEOPTION_DEFAULTS; - n->startOffset = NULL; - n->endOffset = NULL; - n->location = (yylsp[(2) - (2)]); - (yyval.windef) = n; - ;} +#line 571 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[-3].str)), (yyvsp[-2].list))); + (yyval.typnam)->pct_type = true; + (yyval.typnam)->setof = true; + (yyval.typnam)->location = (yylsp[-3]); + } +#line 24008 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 968: -#line 2801 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.windef) = NULL; ;} +#line 582 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_CHECK; + n->location = (yylsp[-4]); + n->raw_expr = (yyvsp[-2].node); + n->cooked_expr = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "CHECK", + NULL, NULL, &n->skip_validation, + &n->is_no_inherit, yyscanner); + n->initially_valid = !n->skip_validation; + (yyval.node) = (PGNode *)n; + } +#line 24025 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 969: -#line 2806 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->name = NULL; - n->refname = (yyvsp[(2) - (6)].str); - n->partitionClause = (yyvsp[(3) - (6)].list); - n->orderClause = (yyvsp[(4) - (6)].list); - /* copy relevant fields of opt_frame_clause */ - n->frameOptions = (yyvsp[(5) - (6)].windef)->frameOptions; - n->startOffset = (yyvsp[(5) - (6)].windef)->startOffset; - n->endOffset = (yyvsp[(5) - (6)].windef)->endOffset; - n->location = (yylsp[(1) - (6)]); - (yyval.windef) = n; - ;} +#line 596 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-5]); + n->keys = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->indexname = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 24042 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 970: -#line 2831 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 609 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_UNIQUE; + n->location = (yylsp[-2]); + n->keys = NIL; + n->options = NIL; + n->indexname = (yyvsp[-1].str); + n->indexspace = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 24060 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 971: -#line 2832 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = NULL; ;} +#line 624 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-6]); + n->keys = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->indexname = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 24077 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 972: -#line 2835 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (3)].list); ;} +#line 637 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_PRIMARY; + n->location = (yylsp[-3]); + n->keys = NIL; + n->options = NIL; + n->indexname = (yyvsp[-1].str); + n->indexspace = NULL; + processCASbits((yyvsp[0].ival), (yylsp[0]), "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 24095 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 973: -#line 2836 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 652 "third_party/libpg_query/grammar/statements/create.y" + { + PGConstraint *n = makeNode(PGConstraint); + n->contype = PG_CONSTR_FOREIGN; + n->location = (yylsp[-10]); + n->pktable = (yyvsp[-4].range); + n->fk_attrs = (yyvsp[-7].list); + n->pk_attrs = (yyvsp[-3].list); + n->fk_matchtype = (yyvsp[-2].ival); + n->fk_upd_action = (char) ((yyvsp[-1].ival) >> 8); + n->fk_del_action = (char) ((yyvsp[-1].ival) & 0xFF); + processCASbits((yyvsp[0].ival), (yylsp[0]), "FOREIGN KEY", + &n->deferrable, &n->initdeferred, + &n->skip_validation, NULL, + yyscanner); + n->initially_valid = !n->skip_validation; + (yyval.node) = (PGNode *)n; + } +#line 24117 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 974: -#line 2848 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(2) - (2)].windef); - n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; - (yyval.windef) = n; - ;} +#line 674 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = list_make1((yyvsp[0].node)); + } +#line 24125 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 975: -#line 2854 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(2) - (2)].windef); - n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; - (yyval.windef) = n; - ;} +#line 678 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); + } +#line 24133 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 976: -#line 2860 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_DEFAULTS; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 685 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_FULL; + } +#line 24141 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 977: -#line 2870 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = (yyvsp[(1) - (1)].windef); - /* reject invalid cases */ - if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[(1) - (1)])))); - if (n->frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from following row cannot end with current row"), - parser_errposition((yylsp[(1) - (1)])))); - n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; - (yyval.windef) = n; - ;} +#line 689 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("MATCH PARTIAL not yet implemented"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_FKCONSTR_MATCH_PARTIAL; + } +#line 24153 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 978: -#line 2887 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n1 = (yyvsp[(2) - (4)].windef); - PGWindowDef *n2 = (yyvsp[(4) - (4)].windef); - /* form merged options */ - int frameOptions = n1->frameOptions; - /* shift converts START_ options to END_ options */ - frameOptions |= n2->frameOptions << 1; - frameOptions |= FRAMEOPTION_BETWEEN; - /* reject invalid cases */ - if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame start cannot be UNBOUNDED FOLLOWING"), - parser_errposition((yylsp[(2) - (4)])))); - if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame end cannot be UNBOUNDED PRECEDING"), - parser_errposition((yylsp[(4) - (4)])))); - if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && - (frameOptions & FRAMEOPTION_END_VALUE_PRECEDING)) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from current row cannot have preceding rows"), - parser_errposition((yylsp[(4) - (4)])))); - if ((frameOptions & FRAMEOPTION_START_VALUE_FOLLOWING) && - (frameOptions & (FRAMEOPTION_END_VALUE_PRECEDING | - FRAMEOPTION_END_CURRENT_ROW))) - ereport(ERROR, - (errcode(PG_ERRCODE_WINDOWING_ERROR), - errmsg("frame starting from following row cannot have preceding rows"), - parser_errposition((yylsp[(4) - (4)])))); - n1->frameOptions = frameOptions; - n1->endOffset = n2->startOffset; - (yyval.windef) = n1; - ;} +#line 697 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; + } +#line 24161 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 979: -#line 2932 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 701 "third_party/libpg_query/grammar/statements/create.y" + { + (yyval.ival) = PG_FKCONSTR_MATCH_SIMPLE; + } +#line 24169 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 980: -#line 2940 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 709 "third_party/libpg_query/grammar/statements/create.y" + { + PGTableLikeClause *n = makeNode(PGTableLikeClause); + n->relation = (yyvsp[-1].range); + n->options = (yyvsp[0].ival); + (yyval.node) = (PGNode *)n; + } +#line 24180 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 981: -#line 2948 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; - n->startOffset = NULL; - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 718 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 24186 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 982: -#line 2956 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_PRECEDING; - n->startOffset = (yyvsp[(1) - (2)].node); - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 719 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 24192 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 983: -#line 2964 "third_party/libpg_query/grammar/statements/select.y" - { - PGWindowDef *n = makeNode(PGWindowDef); - n->frameOptions = FRAMEOPTION_START_VALUE_FOLLOWING; - n->startOffset = (yyvsp[(1) - (2)].node); - n->endOffset = NULL; - (yyval.windef) = n; - ;} +#line 720 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 24198 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 984: -#line 2984 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 721 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_TEMP; } +#line 24204 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 985: -#line 2985 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 723 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_RELPERSISTENCE_TEMP; + } +#line 24215 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 986: -#line 2988 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list);;} +#line 730 "third_party/libpg_query/grammar/statements/create.y" + { + ereport(PGWARNING, + (errmsg("GLOBAL is deprecated in temporary table creation"), + parser_errposition((yylsp[-1])))); + (yyval.ival) = PG_RELPERSISTENCE_TEMP; + } +#line 24226 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 987: -#line 2989 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} +#line 736 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_RELPERSISTENCE_UNLOGGED; } +#line 24232 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 988: -#line 2993 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} +#line 737 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = RELPERSISTENCE_PERMANENT; } +#line 24238 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 989: -#line 3003 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 742 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = PG_ATTRIBUTE_IDENTITY_ALWAYS; } +#line 24244 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 990: -#line 3004 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} +#line 743 "third_party/libpg_query/grammar/statements/create.y" + { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; } +#line 24250 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 991: -#line 3008 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 8 "third_party/libpg_query/grammar/statements/attach.y" + { + PGAttachStmt *n = makeNode(PGAttachStmt); + n->path = (yyvsp[-2].str); + n->name = (yyvsp[-1].str); + n->options = (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 24262 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 992: -#line 3009 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 19 "third_party/libpg_query/grammar/statements/attach.y" + { + PGDetachStmt *n = makeNode(PGDetachStmt); + n->missing_ok = false; + n->db_name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 24273 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 993: -#line 3013 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} +#line 26 "third_party/libpg_query/grammar/statements/attach.y" + { + PGDetachStmt *n = makeNode(PGDetachStmt); + n->missing_ok = true; + n->db_name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 24284 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 994: -#line 3014 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ANY_SUBLINK; ;} +#line 34 "third_party/libpg_query/grammar/statements/attach.y" + {} +#line 24290 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 995: -#line 3015 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.subquerytype) = PG_ALL_SUBLINK; ;} +#line 35 "third_party/libpg_query/grammar/statements/attach.y" + {} +#line 24296 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 996: -#line 3018 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 39 "third_party/libpg_query/grammar/statements/attach.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24302 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 997: -#line 3019 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) (yyvsp[(1) - (1)].conststr); ;} +#line 40 "third_party/libpg_query/grammar/statements/attach.y" + { (yyval.str) = NULL; } +#line 24308 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 998: -#line 3022 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "+"; ;} +#line 8 "third_party/libpg_query/grammar/statements/execute.y" + { + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-1].str); + n->params = (yyvsp[0].list); + (yyval.node) = (PGNode *) n; + } +#line 24319 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 999: -#line 3023 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "-"; ;} +#line 16 "third_party/libpg_query/grammar/statements/execute.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-2].str); + n->params = (yyvsp[-1].list); + ctas->query = (PGNode *) n; + ctas->into = (yyvsp[-5].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->onconflict = PG_ERROR_ON_CONFLICT; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-7].ival); + (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 24339 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1000: -#line 3024 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "*"; ;} - break; - - case 1001: -#line 3025 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "/"; ;} - break; - - case 1002: -#line 3026 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "%"; ;} - break; - - case 1003: -#line 3027 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "^"; ;} - break; - - case 1004: -#line 3028 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "**"; ;} - break; - - case 1005: -#line 3029 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<"; ;} - break; - - case 1006: -#line 3030 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = ">"; ;} - break; - - case 1007: -#line 3031 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "="; ;} - break; - - case 1008: -#line 3032 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<="; ;} - break; - - case 1009: -#line 3033 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = ">="; ;} - break; - - case 1010: -#line 3034 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.conststr) = "<>"; ;} - break; - - case 1011: -#line 3038 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} - break; - - case 1012: -#line 3040 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} - break; - - case 1013: -#line 3045 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} - break; - - case 1014: -#line 3047 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} - break; - - case 1015: -#line 3052 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} - break; - - case 1016: -#line 3054 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} - break; - - case 1017: -#line 3056 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~")); ;} - break; - - case 1018: -#line 3058 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~")); ;} - break; - - case 1019: -#line 3060 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~~")); ;} - break; - - case 1020: -#line 3062 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~~")); ;} - break; - - case 1021: -#line 3064 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("~~*")); ;} - break; - - case 1022: -#line 3066 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString("!~~*")); ;} - break; - - case 1023: -#line 3080 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} - break; - - case 1024: -#line 3082 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} - break; - - case 1025: -#line 3086 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} - break; - - case 1026: -#line 3090 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} - break; - - case 1027: -#line 3097 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (1)].list); - ;} - break; - - case 1028: -#line 3102 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (2)].list); - ;} - break; - - case 1029: -#line 3109 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (1)].list); - ;} - break; - - case 1030: -#line 3113 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = NULL; - ;} - break; - - case 1031: -#line 3122 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); - ;} - break; - - case 1032: -#line 3126 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); - ;} - break; - - case 1033: -#line 3132 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (yyvsp[(1) - (1)].node); - ;} - break; - - case 1034: -#line 3136 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; /* until determined */ - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} - break; - - case 1035: -#line 3145 "third_party/libpg_query/grammar/statements/select.y" - { - PGNamedArgExpr *na = makeNode(PGNamedArgExpr); - na->name = (yyvsp[(1) - (3)].str); - na->arg = (PGExpr *) (yyvsp[(3) - (3)].node); - na->argnumber = -1; /* until determined */ - na->location = (yylsp[(1) - (3)]); - (yyval.node) = (PGNode *) na; - ;} +#line 33 "third_party/libpg_query/grammar/statements/execute.y" + { + PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); + PGExecuteStmt *n = makeNode(PGExecuteStmt); + n->name = (yyvsp[-2].str); + n->params = (yyvsp[-1].list); + ctas->query = (PGNode *) n; + ctas->into = (yyvsp[-5].into); + ctas->relkind = PG_OBJECT_TABLE; + ctas->is_select_into = false; + ctas->onconflict = PG_IGNORE_ON_CONFLICT; + /* cram additional flags into the PGIntoClause */ + (yyvsp[-5].into)->rel->relpersistence = (yyvsp[-10].ival); + (yyvsp[-5].into)->skipData = !((yyvsp[0].boolean)); + (yyval.node) = (PGNode *) ctas; + } +#line 24359 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1036: -#line 3155 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} + case 1001: +#line 51 "third_party/libpg_query/grammar/statements/execute.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 24365 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1037: -#line 3156 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} + case 1002: +#line 52 "third_party/libpg_query/grammar/statements/execute.y" + { (yyval.list) = NIL; } +#line 24371 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1038: -#line 3161 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); - ;} + case 1003: +#line 8 "third_party/libpg_query/grammar/statements/create_schema.y" + { + PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); + if ((yyvsp[-1].range)->catalogname) { + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("CREATE SCHEMA too many dots: expected \"catalog.schema\" or \"schema\""), + parser_errposition((yylsp[-1])))); + } + if ((yyvsp[-1].range)->schemaname) { + n->catalogname = (yyvsp[-1].range)->schemaname; + n->schemaname = (yyvsp[-1].range)->relname; + } else { + n->schemaname = (yyvsp[-1].range)->relname; + } + n->schemaElts = (yyvsp[0].list); + n->onconflict = PG_ERROR_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 24394 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1039: -#line 3164 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} + case 1004: +#line 27 "third_party/libpg_query/grammar/statements/create_schema.y" + { + PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); + if ((yyvsp[-1].range)->catalogname) { + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("CREATE SCHEMA too many dots: expected \"catalog.schema\" or \"schema\""), + parser_errposition((yylsp[-1])))); + } + if ((yyvsp[-1].range)->schemaname) { + n->catalogname = (yyvsp[-1].range)->schemaname; + n->schemaname = (yyvsp[-1].range)->relname; + } else { + n->schemaname = (yyvsp[-1].range)->relname; + } + if ((yyvsp[0].list) != NIL) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), + parser_errposition((yylsp[0])))); + n->schemaElts = (yyvsp[0].list); + n->onconflict = PG_IGNORE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 24422 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1040: -#line 3171 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1005: +#line 55 "third_party/libpg_query/grammar/statements/create_schema.y" + { + if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ + (yyloc) = (yylsp[0]); + (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].node)); + } +#line 24432 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1041: -#line 3172 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "year"; ;} + case 1006: +#line 61 "third_party/libpg_query/grammar/statements/create_schema.y" + { (yyval.list) = NIL; } +#line 24438 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1042: -#line 3173 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "month"; ;} + case 1011: +#line 10 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = NIL; + (yyval.node) = (PGNode *) n; + } +#line 24449 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1043: -#line 3174 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "day"; ;} + case 1012: +#line 17 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[-2]))); + if ((yyvsp[-1].boolean)) + n->options = lappend(n->options, + makeDefElem("verbose", NULL, (yylsp[-1]))); + (yyval.node) = (PGNode *) n; + } +#line 24463 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1044: -#line 3175 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "hour"; ;} + case 1013: +#line 27 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[-1]))); + (yyval.node) = (PGNode *) n; + } +#line 24474 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1045: -#line 3176 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "minute"; ;} + case 1014: +#line 34 "third_party/libpg_query/grammar/statements/explain.y" + { + PGExplainStmt *n = makeNode(PGExplainStmt); + n->query = (yyvsp[0].node); + n->options = (yyvsp[-2].list); + (yyval.node) = (PGNode *) n; + } +#line 24485 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1046: -#line 3177 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "second"; ;} + case 1015: +#line 44 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.boolean) = true; } +#line 24491 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1047: -#line 3178 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "millisecond"; ;} + case 1016: +#line 45 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.boolean) = false; } +#line 24497 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1048: -#line 3179 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (char*) "microsecond"; ;} + case 1017: +#line 50 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = (PGNode *) makeString((yyvsp[0].str)); } +#line 24503 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1049: -#line 3180 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1018: +#line 51 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = (PGNode *) (yyvsp[0].value); } +#line 24509 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1019: +#line 52 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.node) = NULL; } +#line 24515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1050: -#line 3191 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); - ;} +#line 90 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24521 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1051: -#line 3195 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); - ;} +#line 91 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 24527 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1052: -#line 3202 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 92 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = pstrdup((yyvsp[0].keyword)); } +#line 24533 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1053: -#line 3208 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} +#line 97 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24539 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1054: -#line 3209 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 98 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24545 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1055: -#line 3226 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); - ;} +#line 104 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 24553 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1056: -#line 3230 "third_party/libpg_query/grammar/statements/select.y" - { - /* not legal per SQL99, but might as well allow it */ - (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); - ;} +#line 108 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 24561 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1057: -#line 3235 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); - ;} +#line 115 "third_party/libpg_query/grammar/statements/explain.y" + {} +#line 24567 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1058: -#line 3239 "third_party/libpg_query/grammar/statements/select.y" - { - /* - * Since there are no cases where this syntax allows - * a textual FOR value, we forcibly cast the argument - * to int4. The possible matches in pg_proc are - * substring(text,int4) and substring(text,text), - * and we don't want the parser to choose the latter, - * which it is likely to do if the second argument - * is unknown or doesn't have an implicit cast to int4. - */ - (yyval.list) = list_make3((yyvsp[(1) - (2)].node), makeIntConst(1, -1), - makeTypeCast((yyvsp[(2) - (2)].node), - SystemTypeName("int4"), 0, -1)); - ;} +#line 116 "third_party/libpg_query/grammar/statements/explain.y" + {} +#line 24573 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1059: -#line 3254 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = (yyvsp[(1) - (1)].list); - ;} +#line 121 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "true"; } +#line 24579 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1060: -#line 3258 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 122 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "false"; } +#line 24585 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1061: -#line 3262 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 123 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "on"; } +#line 24591 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1062: -#line 3265 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 129 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24597 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1063: -#line 3268 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} +#line 135 "third_party/libpg_query/grammar/statements/explain.y" + { + (yyval.defelt) = makeDefElem((yyvsp[-1].str), (yyvsp[0].node), (yylsp[-1])); + } +#line 24605 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1064: -#line 3269 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 142 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (yyvsp[0].str); } +#line 24611 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1065: -#line 3270 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 143 "third_party/libpg_query/grammar/statements/explain.y" + { (yyval.str) = (char*) "analyze"; } +#line 24617 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1066: -#line 3274 "third_party/libpg_query/grammar/statements/select.y" - { - PGSubLink *n = makeNode(PGSubLink); - n->subselect = (yyvsp[(1) - (1)].node); - /* other fields will be filled later */ +#line 10 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->missing_ok = true; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; (yyval.node) = (PGNode *)n; - ;} + } +#line 24631 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1067: -#line 3280 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (PGNode *)(yyvsp[(2) - (3)].list); ;} +#line 20 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-2].objtype); + n->missing_ok = false; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 24645 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1068: -#line 3291 "third_party/libpg_query/grammar/statements/select.y" - { - PGCaseExpr *c = makeNode(PGCaseExpr); - c->casetype = InvalidOid; /* not analyzed yet */ - c->arg = (PGExpr *) (yyvsp[(2) - (5)].node); - c->args = (yyvsp[(3) - (5)].list); - c->defresult = (PGExpr *) (yyvsp[(4) - (5)].node); - c->location = (yylsp[(1) - (5)]); - (yyval.node) = (PGNode *)c; - ;} +#line 30 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->missing_ok = true; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 24659 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1069: -#line 3304 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 40 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-2].objtype); + n->missing_ok = false; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *)n; + } +#line 24673 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1070: -#line 3305 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 50 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-4].objtype); + n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 24687 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1071: -#line 3310 "third_party/libpg_query/grammar/statements/select.y" - { - PGCaseWhen *w = makeNode(PGCaseWhen); - w->expr = (PGExpr *) (yyvsp[(2) - (4)].node); - w->result = (PGExpr *) (yyvsp[(4) - (4)].node); - w->location = (yylsp[(1) - (4)]); - (yyval.node) = (PGNode *)w; - ;} +#line 60 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = (yyvsp[-6].objtype); + n->objects = list_make1(lappend((yyvsp[-1].list), makeString((yyvsp[-3].str)))); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 24701 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1072: -#line 3320 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 70 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = PG_OBJECT_TYPE; + n->missing_ok = false; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 24715 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1073: -#line 3321 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 80 "third_party/libpg_query/grammar/statements/drop.y" + { + PGDropStmt *n = makeNode(PGDropStmt); + n->removeType = PG_OBJECT_TYPE; + n->missing_ok = true; + n->objects = (yyvsp[-1].list); + n->behavior = (yyvsp[0].dbehavior); + n->concurrent = false; + (yyval.node) = (PGNode *) n; + } +#line 24729 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1074: -#line 3324 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 93 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TABLE; } +#line 24735 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1075: -#line 3325 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 94 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_DATABASE; } +#line 24741 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1076: -#line 3329 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); - ;} +#line 95 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_SEQUENCE; } +#line 24747 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1077: -#line 3333 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); - ;} +#line 96 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FUNCTION; } +#line 24753 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1078: -#line 3340 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = (PGNode *) makeString((yyvsp[(2) - (2)].str)); - ;} +#line 97 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FUNCTION; } +#line 24759 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1079: -#line 3344 "third_party/libpg_query/grammar/statements/select.y" - { - PGAIndices *ai = makeNode(PGAIndices); - ai->is_slice = false; - ai->lidx = NULL; - ai->uidx = (yyvsp[(2) - (3)].node); - (yyval.node) = (PGNode *) ai; - ;} +#line 98 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TABLE_MACRO; } +#line 24765 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1080: -#line 3352 "third_party/libpg_query/grammar/statements/select.y" - { - PGAIndices *ai = makeNode(PGAIndices); - ai->is_slice = true; - ai->lidx = (yyvsp[(2) - (5)].node); - ai->uidx = (yyvsp[(4) - (5)].node); - (yyval.node) = (PGNode *) ai; - ;} +#line 99 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_VIEW; } +#line 24771 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1081: -#line 3362 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = (yyvsp[(1) - (1)].node); ;} +#line 100 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_MATVIEW; } +#line 24777 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1082: -#line 3363 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.node) = NULL; ;} +#line 101 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_INDEX; } +#line 24783 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1083: -#line 3367 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} +#line 102 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FOREIGN_TABLE; } +#line 24789 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1084: -#line 3368 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 103 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_COLLATION; } +#line 24795 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1085: -#line 3372 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 104 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_CONVERSION; } +#line 24801 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1086: -#line 3373 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} +#line 105 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_SCHEMA; } +#line 24807 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1087: +#line 106 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_STATISTIC_EXT; } +#line 24813 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1088: +#line 107 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSPARSER; } +#line 24819 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1089: -#line 3387 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 108 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSDICTIONARY; } +#line 24825 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1090: -#line 3388 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} +#line 109 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSTEMPLATE; } +#line 24831 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1091: -#line 3392 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} +#line 110 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TSCONFIGURATION; } +#line 24837 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1092: -#line 3393 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} +#line 115 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_ACCESS_METHOD; } +#line 24843 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1093: -#line 3397 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 116 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_EVENT_TRIGGER; } +#line 24849 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1094: -#line 3398 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 117 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_EXTENSION; } +#line 24855 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1095: -#line 3402 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(3) - (3)].str); - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (3)].node); - (yyval.target)->location = (yylsp[(1) - (3)]); - ;} +#line 118 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FDW; } +#line 24861 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1096: -#line 3418 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = (yyvsp[(2) - (2)].str); - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (2)].node); - (yyval.target)->location = (yylsp[(1) - (2)]); - ;} +#line 119 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_PUBLICATION; } +#line 24867 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1097: -#line 3426 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = NULL; - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)(yyvsp[(1) - (1)].node); - (yyval.target)->location = (yylsp[(1) - (1)]); - ;} +#line 120 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_FOREIGN_SERVER; } +#line 24873 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1098: -#line 3434 "third_party/libpg_query/grammar/statements/select.y" - { - PGColumnRef *n = makeNode(PGColumnRef); - PGAStar *star = makeNode(PGAStar); - n->fields = list_make1(star); - n->location = (yylsp[(1) - (3)]); - star->except_list = (yyvsp[(2) - (3)].list); - star->replace_list = (yyvsp[(3) - (3)].list); - - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = NULL; - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)n; - (yyval.target)->location = (yylsp[(1) - (3)]); - ;} +#line 125 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = list_make1((yyvsp[0].list)); } +#line 24879 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1099: -#line 3449 "third_party/libpg_query/grammar/statements/select.y" - { - PGColumnRef *n = makeNode(PGColumnRef); - PGAStar *star = makeNode(PGAStar); - n->fields = list_make1(star); - n->location = (yylsp[(1) - (5)]); - star->relation = (yyvsp[(1) - (5)].str); - star->except_list = (yyvsp[(4) - (5)].list); - star->replace_list = (yyvsp[(5) - (5)].list); - - (yyval.target) = makeNode(PGResTarget); - (yyval.target)->name = NULL; - (yyval.target)->indirection = NIL; - (yyval.target)->val = (PGNode *)n; - (yyval.target)->location = (yylsp[(1) - (5)]); - ;} +#line 126 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].list)); } +#line 24885 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1100: -#line 3466 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 131 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_CASCADE; } +#line 24891 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1101: -#line 3467 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} +#line 132 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_RESTRICT; } +#line 24897 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1102: -#line 3470 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 133 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.dbehavior) = PG_DROP_RESTRICT; /* default */ } +#line 24903 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1103: -#line 3471 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NULL; ;} +#line 138 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_POLICY; } +#line 24909 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1104: -#line 3474 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make2((yyvsp[(1) - (3)].node), makeString((yyvsp[(3) - (3)].str))); ;} +#line 139 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_RULE; } +#line 24915 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1105: -#line 3478 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} +#line 140 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.objtype) = PG_OBJECT_TRIGGER; } +#line 24921 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1106: -#line 3479 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} +#line 143 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = list_make1((yyvsp[0].typnam)); } +#line 24927 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1107: -#line 3483 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 144 "third_party/libpg_query/grammar/statements/drop.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].typnam)); } +#line 24933 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1108: -#line 3484 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 8 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->typeName = (yyvsp[-3].range); + n->kind = PG_NEWTYPE_ENUM; + n->query = (yyvsp[0].node); + n->vals = NULL; + (yyval.node) = (PGNode *)n; + } +#line 24946 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1109: -#line 3487 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(3) - (4)].list); ;} +#line 17 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->typeName = (yyvsp[-5].range); + n->kind = PG_NEWTYPE_ENUM; + n->vals = (yyvsp[-1].list); + n->query = NULL; + (yyval.node) = (PGNode *)n; + } +#line 24959 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1110: -#line 3488 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(2) - (2)].list)); ;} +#line 26 "third_party/libpg_query/grammar/statements/create_type.y" + { + PGCreateTypeStmt *n = makeNode(PGCreateTypeStmt); + n->typeName = (yyvsp[-2].range); + n->query = NULL; + auto name = std::string(reinterpret_cast((yyvsp[0].typnam)->names->tail->data.ptr_value)->val.str); + if (name == "enum") { + n->kind = PG_NEWTYPE_ENUM; + n->vals = (yyvsp[0].typnam)->typmods; + } else { + n->kind = PG_NEWTYPE_ALIAS; + n->ofType = (yyvsp[0].typnam); + } + (yyval.node) = (PGNode *)n; + } +#line 24978 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1111: -#line 3489 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NULL; ;} +#line 46 "third_party/libpg_query/grammar/statements/create_type.y" + { (yyval.list) = (yyvsp[0].list);} +#line 24984 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1112: -#line 3499 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} +#line 47 "third_party/libpg_query/grammar/statements/create_type.y" + {(yyval.list) = NIL;} +#line 24990 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1113: -#line 3500 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} +#line 51 "third_party/libpg_query/grammar/statements/create_type.y" + { + (yyval.list) = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); + } +#line 24998 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1114: -#line 3512 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 55 "third_party/libpg_query/grammar/statements/create_type.y" + { + (yyval.list) = lappend((yyvsp[-2].list), makeStringConst((yyvsp[0].str), (yylsp[0]))); + } +#line 25006 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1115: -#line 3516 "third_party/libpg_query/grammar/statements/select.y" - { - check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); - (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); - switch (list_length((yyvsp[(2) - (2)].list))) - { - case 1: - (yyval.range)->catalogname = NULL; - (yyval.range)->schemaname = (yyvsp[(1) - (2)].str); - (yyval.range)->relname = strVal(linitial((yyvsp[(2) - (2)].list))); - break; - case 2: - (yyval.range)->catalogname = (yyvsp[(1) - (2)].str); - (yyval.range)->schemaname = strVal(linitial((yyvsp[(2) - (2)].list))); - (yyval.range)->relname = strVal(lsecond((yyvsp[(2) - (2)].list))); - break; - case 3: - default: - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("improper qualified name (too many dotted names): %s", - NameListToString(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)))), - parser_errposition((yylsp[(1) - (2)])))); - break; - } - ;} +#line 10 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[0].range); + (yyval.node) = (PGNode *)n; + } +#line 25016 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1116: -#line 3544 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 16 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->extension = (yyvsp[-2].str); + n->name = (yyvsp[0].range); + (yyval.node) = (PGNode *)n; + } +#line 25027 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1117: -#line 3546 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} +#line 23 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[0].range); + (yyval.node) = (PGNode *)n; + } +#line 25037 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1118: -#line 3551 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (1)].list); ;} +#line 29 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[0].range); + (yyval.node) = (PGNode *)n; + } +#line 25047 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1119: -#line 3552 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(1) - (2)].list); ;} +#line 35 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[-2].range); + n->path = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 25058 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1120: -#line 3555 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 42 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[-2].range); + n->path = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 25069 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1121: -#line 3557 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 49 "third_party/libpg_query/grammar/statements/create_database.y" + { + PGCreateDatabaseStmt *n = makeNode(PGCreateDatabaseStmt); + n->name = (yyvsp[-2].range); + n->path = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 25080 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1122: -#line 3568 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 59 "third_party/libpg_query/grammar/statements/create_database.y" + { (yyval.str) = (yyvsp[0].str); } +#line 25086 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1123: -#line 3571 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), - yyscanner); - ;} +#line 10 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_TABLE; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25099 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1124: -#line 3582 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); - ;} +#line 19 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_TABLE; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25112 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1125: -#line 3586 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 28 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_INDEX; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25125 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1126: -#line 3590 "third_party/libpg_query/grammar/statements/select.y" - { - if ((yyvsp[(2) - (2)].list)) - { - PGAIndirection *n = makeNode(PGAIndirection); - n->arg = makeStringConst((yyvsp[(1) - (2)].str), (yylsp[(1) - (2)])); - n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); - (yyval.node) = (PGNode *) n; - } - else - (yyval.node) = makeStringConst((yyvsp[(1) - (2)].str), (yylsp[(1) - (2)])); - ;} +#line 37 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_INDEX; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25138 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1127: -#line 3602 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 46 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_SEQUENCE; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25151 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1128: -#line 3606 "third_party/libpg_query/grammar/statements/select.y" - { - /* This is a bit constant per SQL99: - * Without Feature F511, "BIT data type", - * a shall not be a - * or a . - */ - (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} +#line 55 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_SEQUENCE; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25164 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1129: -#line 3615 "third_party/libpg_query/grammar/statements/select.y" - { - /* generic type 'literal' syntax */ - PGTypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); - t->location = (yylsp[(1) - (2)]); - (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), t); - ;} +#line 64 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_VIEW; + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25177 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1130: -#line 3622 "third_party/libpg_query/grammar/statements/select.y" - { - /* generic syntax with a type modifier */ - PGTypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (7)].list)); - PGListCell *lc; - - /* - * We must use func_arg_list and opt_sort_clause in the - * production to avoid reduce/reduce conflicts, but we - * don't actually wish to allow PGNamedArgExpr in this - * context, ORDER BY, nor IGNORE NULLS. - */ - foreach(lc, (yyvsp[(3) - (7)].list)) - { - PGNamedArgExpr *arg = (PGNamedArgExpr *) lfirst(lc); - - if (IsA(arg, PGNamedArgExpr)) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("type modifier cannot have parameter name"), - parser_errposition(arg->location))); - } - if ((yyvsp[(4) - (7)].list) != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("type modifier cannot have ORDER BY"), - parser_errposition((yylsp[(4) - (7)])))); - if ((yyvsp[(5) - (7)].boolean) != false) - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("type modifier cannot have IGNORE NULLS"), - parser_errposition((yylsp[(5) - (7)])))); - - - t->typmods = (yyvsp[(3) - (7)].list); - t->location = (yylsp[(1) - (7)]); - (yyval.node) = makeStringConstCast((yyvsp[(7) - (7)].str), (yylsp[(7) - (7)]), t); - ;} +#line 73 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableStmt *n = makeNode(PGAlterTableStmt); + n->relation = (yyvsp[-1].range); + n->cmds = (yyvsp[0].list); + n->relkind = PG_OBJECT_VIEW; + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25190 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1131: -#line 3660 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); - ;} +#line 86 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = list_make1((yyvsp[0].defelt)); } +#line 25196 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1132: -#line 3664 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(3) - (5)].node), (yylsp[(3) - (5)]), (yyvsp[(5) - (5)].list)); - ;} +#line 88 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = lappend((yyvsp[-1].list), (yyvsp[0].defelt)); } +#line 25202 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1133: -#line 3668 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].ival), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); - ;} +#line 93 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = (yyvsp[0].node); } +#line 25208 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1134: -#line 3672 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeIntervalNode((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].list)); - ;} +#line 94 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = NULL; } +#line 25214 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1135: -#line 3676 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); - ;} +#line 100 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[0])); + } +#line 25222 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1136: -#line 3680 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); - ;} +#line 104 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("restart", (PGNode *)(yyvsp[0].value), (yylsp[-2])); + } +#line 25230 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1137: -#line 3684 "third_party/libpg_query/grammar/statements/select.y" - { - (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); - ;} +#line 108 "third_party/libpg_query/grammar/statements/alter_table.y" + { + if (strcmp((yyvsp[0].defelt)->defname, "as") == 0 || + strcmp((yyvsp[0].defelt)->defname, "restart") == 0 || + strcmp((yyvsp[0].defelt)->defname, "owned_by") == 0) + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("sequence option \"%s\" not supported here", (yyvsp[0].defelt)->defname), + parser_errposition((yylsp[0])))); + (yyval.defelt) = (yyvsp[0].defelt); + } +#line 25245 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1138: -#line 3689 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} +#line 119 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElem("generated", (PGNode *) makeInteger((yyvsp[0].ival)), (yylsp[-2])); + } +#line 25253 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1139: -#line 3690 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 127 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.list) = list_make1((yyvsp[0].defelt)); + } +#line 25261 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1140: -#line 3706 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 131 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].defelt)); + } +#line 25269 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1141: -#line 3707 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 140 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25281 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1142: -#line 3708 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 149 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25293 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1143: -#line 3711 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 158 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25305 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1144: -#line 3712 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 167 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddColumn; + n->def = (yyvsp[0].node); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25317 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1145: -#line 3718 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 176 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ColumnDefault; + n->name = (yyvsp[-1].str); + n->def = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 25329 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1146: -#line 3719 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 185 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropNotNull; + n->name = (yyvsp[-3].str); + (yyval.node) = (PGNode *)n; + } +#line 25340 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1147: -#line 3720 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 193 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetNotNull; + n->name = (yyvsp[-3].str); + (yyval.node) = (PGNode *)n; + } +#line 25351 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1148: -#line 3723 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 201 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetStatistics; + n->name = (yyvsp[-3].str); + n->def = (PGNode *) makeInteger((yyvsp[0].ival)); + (yyval.node) = (PGNode *)n; + } +#line 25363 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1149: -#line 3724 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 210 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetOptions; + n->name = (yyvsp[-2].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25375 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1150: -#line 3725 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 219 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ResetOptions; + n->name = (yyvsp[-2].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25387 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1151: -#line 3728 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 228 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetStorage; + n->name = (yyvsp[-3].str); + n->def = (PGNode *) makeString((yyvsp[0].str)); + (yyval.node) = (PGNode *)n; + } +#line 25399 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1152: -#line 3729 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 237 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGConstraint *c = makeNode(PGConstraint); + + c->contype = PG_CONSTR_IDENTITY; + c->generated_when = (yyvsp[-3].ival); + c->options = (yyvsp[0].list); + c->location = (yylsp[-4]); + + n->subtype = PG_AT_AddIdentity; + n->name = (yyvsp[-6].str); + n->def = (PGNode *) c; + + (yyval.node) = (PGNode *)n; + } +#line 25419 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1153: -#line 3730 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 254 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetIdentity; + n->name = (yyvsp[-1].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25431 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1154: -#line 3733 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 263 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[-2].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25443 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1155: -#line 3734 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} +#line 272 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = AT_DropIdentity; + n->name = (yyvsp[-4].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25455 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1156: -#line 3738 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} +#line 281 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropColumn; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25468 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1157: -#line 3740 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} +#line 291 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropColumn; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25481 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1158: +#line 304 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGColumnDef *def = makeNode(PGColumnDef); + n->subtype = PG_AT_AlterColumnType; + n->name = (yyvsp[-5].str); + n->def = (PGNode *) def; + /* We only use these fields of the PGColumnDef node */ + def->typeName = (yyvsp[-2].typnam); + def->collClause = (PGCollateClause *) (yyvsp[-1].node); + def->raw_default = (yyvsp[0].node); + def->location = (yylsp[-5]); + (yyval.node) = (PGNode *)n; + } +#line 25499 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1159: +#line 319 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AlterColumnGenericOptions; + n->name = (yyvsp[-1].str); + n->def = (PGNode *) (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25511 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1160: +#line 328 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_AddConstraint; + n->def = (yyvsp[0].node); + (yyval.node) = (PGNode *)n; + } +#line 25522 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1161: +#line 336 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + PGConstraint *c = makeNode(PGConstraint); + n->subtype = PG_AT_AlterConstraint; + n->def = (PGNode *) c; + c->contype = PG_CONSTR_FOREIGN; /* others not supported, yet */ + c->conname = (yyvsp[-1].str); + processCASbits((yyvsp[0].ival), (yylsp[0]), "ALTER CONSTRAINT statement", + &c->deferrable, + &c->initdeferred, + NULL, NULL, yyscanner); + (yyval.node) = (PGNode *)n; + } +#line 25540 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1162: +#line 351 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ValidateConstraint; + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 25551 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1163: +#line 359 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropConstraint; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25564 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1164: +#line 369 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_DropConstraint; + n->name = (yyvsp[-1].str); + n->behavior = (yyvsp[0].dbehavior); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25577 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1165: +#line 379 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetLogged; + (yyval.node) = (PGNode *)n; + } +#line 25587 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1166: +#line 386 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetUnLogged; + (yyval.node) = (PGNode *)n; + } +#line 25597 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1167: +#line 393 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_SetRelOptions; + n->def = (PGNode *)(yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25608 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1168: +#line 401 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_ResetRelOptions; + n->def = (PGNode *)(yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 25619 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1169: +#line 408 "third_party/libpg_query/grammar/statements/alter_table.y" + { + PGAlterTableCmd *n = makeNode(PGAlterTableCmd); + n->subtype = PG_AT_GenericOptions; + n->def = (PGNode *)(yyvsp[0].list); + (yyval.node) = (PGNode *) n; + } +#line 25630 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1170: +#line 418 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = (yyvsp[0].node); } +#line 25636 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1171: +#line 419 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.node) = NULL; } +#line 25642 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1172: +#line 425 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + } +#line 25650 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1173: +#line 429 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = PG_DEFELEM_SET; + } +#line 25659 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1174: +#line 434 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = (yyvsp[0].defelt); + (yyval.defelt)->defaction = PG_DEFELEM_ADD; + } +#line 25668 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1175: +#line 439 "third_party/libpg_query/grammar/statements/alter_table.y" + { + (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[0].str), NULL, DEFELEM_DROP, (yylsp[0])); + } +#line 25676 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1176: +#line 446 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 25682 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1177: +#line 447 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 25688 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1178: +#line 452 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 25694 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1179: +#line 456 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 1; } +#line 25700 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1180: +#line 457 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 0; } +#line 25706 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1181: +#line 458 "third_party/libpg_query/grammar/statements/alter_table.y" + { (yyval.ival) = 0; } +#line 25712 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1182: +#line 3 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_ROLLBACK; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 25723 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1183: +#line 10 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_BEGIN; + (yyval.node) = (PGNode *)n; + } +#line 25733 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1184: +#line 16 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_START; + (yyval.node) = (PGNode *)n; + } +#line 25743 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1185: +#line 22 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_COMMIT; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 25754 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1186: +#line 29 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_COMMIT; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 25765 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1187: +#line 36 "third_party/libpg_query/grammar/statements/transaction.y" + { + PGTransactionStmt *n = makeNode(PGTransactionStmt); + n->kind = PG_TRANS_STMT_ROLLBACK; + n->options = NIL; + (yyval.node) = (PGNode *)n; + } +#line 25776 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1188: +#line 45 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 25782 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1189: +#line 46 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 25788 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1190: +#line 47 "third_party/libpg_query/grammar/statements/transaction.y" + {} +#line 25794 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1191: +#line 7 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SCHEMA; + n->subname = (yyvsp[-3].str); + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25807 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1192: +#line 16 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25821 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1193: +#line 26 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25835 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1194: +#line 36 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25849 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1195: +#line 46 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25863 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1196: +#line 56 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25877 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1197: +#line 66 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25891 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1198: +#line 76 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_INDEX; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25905 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1199: +#line 86 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_INDEX; + n->relation = (yyvsp[-3].range); + n->subname = NULL; + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25919 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1200: +#line 96 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_COLUMN; + n->relationType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25934 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1201: +#line 107 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_COLUMN; + n->relationType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25949 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1202: +#line 118 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABCONSTRAINT; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 25963 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1203: +#line 128 "third_party/libpg_query/grammar/statements/rename.y" + { + PGRenameStmt *n = makeNode(PGRenameStmt); + n->renameType = PG_OBJECT_TABCONSTRAINT; + n->relation = (yyvsp[-5].range); + n->subname = (yyvsp[-2].str); + n->newname = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 25977 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1204: +#line 140 "third_party/libpg_query/grammar/statements/rename.y" + { (yyval.ival) = COLUMN; } +#line 25983 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1205: +#line 141 "third_party/libpg_query/grammar/statements/rename.y" + { (yyval.ival) = 0; } +#line 25989 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1206: +#line 8 "third_party/libpg_query/grammar/statements/prepare.y" + { + PGPrepareStmt *n = makeNode(PGPrepareStmt); + n->name = (yyvsp[-3].str); + n->argtypes = (yyvsp[-2].list); + n->query = (yyvsp[0].node); + (yyval.node) = (PGNode *) n; + } +#line 26001 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1207: +#line 18 "third_party/libpg_query/grammar/statements/prepare.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 26007 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1208: +#line 19 "third_party/libpg_query/grammar/statements/prepare.y" + { (yyval.list) = NIL; } +#line 26013 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1158: -#line 3744 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} + case 1213: +#line 9 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[0].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = NULL; + n->va_cols = NIL; + (yyval.node) = (PGNode *)n; + } +#line 26031 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1159: -#line 3745 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.list) = NIL; ;} + case 1214: +#line 23 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM; + if ((yyvsp[-3].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = (yyvsp[0].range); + n->va_cols = NIL; + (yyval.node) = (PGNode *)n; + } +#line 26049 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1161: -#line 3756 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1215: +#line 37 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = (PGVacuumStmt *) (yyvsp[0].node); + n->options |= PG_VACOPT_VACUUM; + if ((yyvsp[-3].boolean)) + n->options |= PG_VACOPT_FULL; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_FREEZE; + if ((yyvsp[-1].boolean)) + n->options |= PG_VACOPT_VERBOSE; + (yyval.node) = (PGNode *)n; + } +#line 26065 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1162: -#line 3757 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} + case 1216: +#line 49 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM | (yyvsp[-1].ival); + n->relation = NULL; + n->va_cols = NIL; + (yyval.node) = (PGNode *) n; + } +#line 26077 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1163: -#line 3758 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} + case 1217: +#line 57 "third_party/libpg_query/grammar/statements/vacuum.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_VACUUM | (yyvsp[-3].ival); + n->relation = (yyvsp[-1].range); + n->va_cols = (yyvsp[0].list); + if (n->va_cols != NIL) /* implies analyze */ + n->options |= PG_VACOPT_ANALYZE; + (yyval.node) = (PGNode *) n; + } +#line 26091 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1164: -#line 3759 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} + case 1218: +#line 70 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_ANALYZE; } +#line 26097 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1165: -#line 3762 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1219: +#line 71 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_VERBOSE; } +#line 26103 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1166: -#line 3763 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1220: +#line 72 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_FREEZE; } +#line 26109 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1167: -#line 3766 "third_party/libpg_query/grammar/statements/select.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + case 1221: +#line 73 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = PG_VACOPT_FULL; } +#line 26115 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1168: -#line 8 "third_party/libpg_query/grammar/statements/prepare.y" - { - PGPrepareStmt *n = makeNode(PGPrepareStmt); - n->name = (yyvsp[(2) - (5)].str); - n->argtypes = (yyvsp[(3) - (5)].list); - n->query = (yyvsp[(5) - (5)].node); - (yyval.node) = (PGNode *) n; - ;} + case 1222: +#line 75 "third_party/libpg_query/grammar/statements/vacuum.y" + { + if (strcmp((yyvsp[0].str), "disable_page_skipping") == 0) + (yyval.ival) = PG_VACOPT_DISABLE_PAGE_SKIPPING; + else + ereport(ERROR, + (errcode(PG_ERRCODE_SYNTAX_ERROR), + errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[0].str)), + parser_errposition((yylsp[0])))); + } +#line 26129 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1169: -#line 18 "third_party/libpg_query/grammar/statements/prepare.y" - { (yyval.list) = (yyvsp[(2) - (3)].list); ;} + case 1223: +#line 87 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = true; } +#line 26135 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1170: -#line 19 "third_party/libpg_query/grammar/statements/prepare.y" - { (yyval.list) = NIL; ;} + case 1224: +#line 88 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = false; } +#line 26141 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1175: -#line 8 "third_party/libpg_query/grammar/statements/create_schema.y" - { - PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); - if ((yyvsp[(3) - (4)].range)->catalogname) { - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CREATE SCHEMA too many dots: expected \"catalog.schema\" or \"schema\""), - parser_errposition((yylsp[(3) - (4)])))); - } - if ((yyvsp[(3) - (4)].range)->schemaname) { - n->catalogname = (yyvsp[(3) - (4)].range)->schemaname; - n->schemaname = (yyvsp[(3) - (4)].range)->relname; - } else { - n->schemaname = (yyvsp[(3) - (4)].range)->relname; - } - n->schemaElts = (yyvsp[(4) - (4)].list); - n->onconflict = PG_ERROR_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} + case 1225: +#line 93 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = (yyvsp[0].ival); } +#line 26147 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1176: -#line 27 "third_party/libpg_query/grammar/statements/create_schema.y" - { - PGCreateSchemaStmt *n = makeNode(PGCreateSchemaStmt); - if ((yyvsp[(6) - (7)].range)->catalogname) { - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CREATE SCHEMA too many dots: expected \"catalog.schema\" or \"schema\""), - parser_errposition((yylsp[(6) - (7)])))); - } - if ((yyvsp[(6) - (7)].range)->schemaname) { - n->catalogname = (yyvsp[(6) - (7)].range)->schemaname; - n->schemaname = (yyvsp[(6) - (7)].range)->relname; - } else { - n->schemaname = (yyvsp[(6) - (7)].range)->relname; - } - if ((yyvsp[(7) - (7)].list) != NIL) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), - parser_errposition((yylsp[(7) - (7)])))); - n->schemaElts = (yyvsp[(7) - (7)].list); - n->onconflict = PG_IGNORE_ON_CONFLICT; - (yyval.node) = (PGNode *)n; - ;} + case 1226: +#line 94 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.ival) = (yyvsp[-2].ival) | (yyvsp[0].ival); } +#line 26153 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1177: -#line 55 "third_party/libpg_query/grammar/statements/create_schema.y" - { - if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ - (yyloc) = (yylsp[(2) - (2)]); - (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); - ;} + case 1227: +#line 98 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = true; } +#line 26159 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1178: -#line 61 "third_party/libpg_query/grammar/statements/create_schema.y" - { (yyval.list) = NIL; ;} + case 1228: +#line 99 "third_party/libpg_query/grammar/statements/vacuum.y" + { (yyval.boolean) = false; } +#line 26165 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1183: + case 1229: #line 11 "third_party/libpg_query/grammar/statements/index.y" - { + { PGIndexStmt *n = makeNode(PGIndexStmt); - n->unique = (yyvsp[(2) - (13)].boolean); - n->concurrent = (yyvsp[(4) - (13)].boolean); - n->idxname = (yyvsp[(5) - (13)].str); - n->relation = (yyvsp[(7) - (13)].range); - n->accessMethod = (yyvsp[(8) - (13)].str); - n->indexParams = (yyvsp[(10) - (13)].list); - n->options = (yyvsp[(12) - (13)].list); - n->whereClause = (yyvsp[(13) - (13)].node); + n->unique = (yyvsp[-11].boolean); + n->concurrent = (yyvsp[-9].boolean); + n->idxname = (yyvsp[-8].str); + n->relation = (yyvsp[-6].range); + n->accessMethod = (yyvsp[-5].str); + n->indexParams = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->whereClause = (yyvsp[0].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -333648,21 +334220,22 @@ YYLTYPE yylloc; n->transformed = false; n->onconflict = PG_ERROR_ON_CONFLICT; (yyval.node) = (PGNode *)n; - ;} + } +#line 26192 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1184: + case 1230: #line 36 "third_party/libpg_query/grammar/statements/index.y" - { + { PGIndexStmt *n = makeNode(PGIndexStmt); - n->unique = (yyvsp[(2) - (16)].boolean); - n->concurrent = (yyvsp[(4) - (16)].boolean); - n->idxname = (yyvsp[(8) - (16)].str); - n->relation = (yyvsp[(10) - (16)].range); - n->accessMethod = (yyvsp[(11) - (16)].str); - n->indexParams = (yyvsp[(13) - (16)].list); - n->options = (yyvsp[(15) - (16)].list); - n->whereClause = (yyvsp[(16) - (16)].node); + n->unique = (yyvsp[-14].boolean); + n->concurrent = (yyvsp[-12].boolean); + n->idxname = (yyvsp[-8].str); + n->relation = (yyvsp[-6].range); + n->accessMethod = (yyvsp[-5].str); + n->indexParams = (yyvsp[-3].list); + n->options = (yyvsp[-1].list); + n->whereClause = (yyvsp[0].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; @@ -333674,1260 +334247,1299 @@ YYLTYPE yylloc; n->transformed = false; n->onconflict = PG_IGNORE_ON_CONFLICT; (yyval.node) = (PGNode *)n; - ;} + } +#line 26219 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1185: + case 1231: #line 62 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + { (yyval.str) = (yyvsp[0].str); } +#line 26225 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1186: + case 1232: #line 66 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(2) - (2)].str); ;} + { (yyval.str) = (yyvsp[0].str); } +#line 26231 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1187: + case 1233: #line 67 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (char*) DEFAULT_INDEX_TYPE; ;} + { (yyval.str) = (char*) DEFAULT_INDEX_TYPE; } +#line 26237 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1188: + case 1234: #line 72 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = true; ;} + { (yyval.boolean) = true; } +#line 26243 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1189: + case 1235: #line 73 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = false; ;} + { (yyval.boolean) = false; } +#line 26249 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1190: + case 1236: #line 78 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} + { (yyval.str) = (yyvsp[0].str); } +#line 26255 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1191: + case 1237: #line 79 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.str) = NULL; ;} + { (yyval.str) = NULL; } +#line 26261 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1192: + case 1238: #line 83 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} + { (yyval.list) = (yyvsp[0].list); } +#line 26267 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1193: + case 1239: #line 84 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.list) = NIL; ;} + { (yyval.list) = NIL; } +#line 26273 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1194: + case 1240: #line 89 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = true; ;} + { (yyval.boolean) = true; } +#line 26279 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1195: + case 1241: #line 90 "third_party/libpg_query/grammar/statements/index.y" - { (yyval.boolean) = false; ;} - break; - - case 1196: -#line 8 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1197: -#line 17 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_TABLE; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1198: -#line 26 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1199: -#line 35 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_SEQUENCE; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1200: -#line 44 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(3) - (6)].range); - n->newschema = (yyvsp[(6) - (6)].str); - n->missing_ok = false; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1201: -#line 53 "third_party/libpg_query/grammar/statements/alter_schema.y" - { - PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); - n->objectType = PG_OBJECT_VIEW; - n->relation = (yyvsp[(5) - (8)].range); - n->newschema = (yyvsp[(8) - (8)].str); - n->missing_ok = true; - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1202: -#line 6 "third_party/libpg_query/grammar/statements/checkpoint.y" - { - PGCheckPointStmt *n = makeNode(PGCheckPointStmt); - n->force = true; - n->name = (yyvsp[(3) - (3)].str); - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1203: -#line 13 "third_party/libpg_query/grammar/statements/checkpoint.y" - { - PGCheckPointStmt *n = makeNode(PGCheckPointStmt); - n->force = false; - n->name = (yyvsp[(2) - (2)].str); - (yyval.node) = (PGNode *)n; - ;} - break; - - case 1204: -#line 22 "third_party/libpg_query/grammar/statements/checkpoint.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} - break; - - case 1205: -#line 23 "third_party/libpg_query/grammar/statements/checkpoint.y" - { (yyval.str) = NULL; ;} + { (yyval.boolean) = false; } +#line 26285 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1206: + case 1242: #line 8 "third_party/libpg_query/grammar/statements/export.y" - { + { PGExportStmt *n = makeNode(PGExportStmt); n->database = NULL; - n->filename = (yyvsp[(3) - (4)].str); + n->filename = (yyvsp[-1].str); n->options = NIL; - if ((yyvsp[(4) - (4)].list)) { - n->options = list_concat(n->options, (yyvsp[(4) - (4)].list)); + if ((yyvsp[0].list)) { + n->options = list_concat(n->options, (yyvsp[0].list)); } (yyval.node) = (PGNode *)n; - ;} + } +#line 26300 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1207: + case 1243: #line 20 "third_party/libpg_query/grammar/statements/export.y" - { + { PGExportStmt *n = makeNode(PGExportStmt); - n->database = (yyvsp[(3) - (6)].str); - n->filename = (yyvsp[(5) - (6)].str); + n->database = (yyvsp[-3].str); + n->filename = (yyvsp[-1].str); n->options = NIL; - if ((yyvsp[(6) - (6)].list)) { - n->options = list_concat(n->options, (yyvsp[(6) - (6)].list)); + if ((yyvsp[0].list)) { + n->options = list_concat(n->options, (yyvsp[0].list)); } (yyval.node) = (PGNode *)n; - ;} + } +#line 26315 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1208: + case 1244: #line 34 "third_party/libpg_query/grammar/statements/export.y" - { + { PGImportStmt *n = makeNode(PGImportStmt); - n->filename = (yyvsp[(3) - (3)].str); + n->filename = (yyvsp[0].str); (yyval.node) = (PGNode *)n; - ;} - break; - - case 1209: -#line 10 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(2) - (2)].node); - n->options = NIL; - (yyval.node) = (PGNode *) n; - ;} - break; - - case 1210: -#line 17 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(4) - (4)].node); - n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[(2) - (4)]))); - if ((yyvsp[(3) - (4)].boolean)) - n->options = lappend(n->options, - makeDefElem("verbose", NULL, (yylsp[(3) - (4)]))); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 1211: -#line 27 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(3) - (3)].node); - n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 1212: -#line 34 "third_party/libpg_query/grammar/statements/explain.y" - { - PGExplainStmt *n = makeNode(PGExplainStmt); - n->query = (yyvsp[(5) - (5)].node); - n->options = (yyvsp[(3) - (5)].list); - (yyval.node) = (PGNode *) n; - ;} - break; - - case 1213: -#line 44 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.boolean) = true; ;} - break; - - case 1214: -#line 45 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.boolean) = false; ;} + } +#line 26325 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1215: -#line 50 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = (PGNode *) makeString((yyvsp[(1) - (1)].str)); ;} + case 1245: +#line 9 "third_party/libpg_query/grammar/statements/delete.y" + { + PGDeleteStmt *n = makeNode(PGDeleteStmt); + n->relation = (yyvsp[-3].range); + n->usingClause = (yyvsp[-2].list); + n->whereClause = (yyvsp[-1].node); + n->returningList = (yyvsp[0].list); + n->withClause = (yyvsp[-6].with); + (yyval.node) = (PGNode *)n; + } +#line 26339 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1216: -#line 51 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = (PGNode *) (yyvsp[(1) - (1)].value); ;} + case 1246: +#line 19 "third_party/libpg_query/grammar/statements/delete.y" + { + PGDeleteStmt *n = makeNode(PGDeleteStmt); + n->relation = (yyvsp[0].range); + n->usingClause = NULL; + n->whereClause = NULL; + n->returningList = NULL; + n->withClause = NULL; + (yyval.node) = (PGNode *)n; + } +#line 26353 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1217: -#line 52 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.node) = NULL; ;} + case 1247: +#line 32 "third_party/libpg_query/grammar/statements/delete.y" + { + (yyval.range) = (yyvsp[0].range); + } +#line 26361 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1248: -#line 90 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 36 "third_party/libpg_query/grammar/statements/delete.y" + { + PGAlias *alias = makeNode(PGAlias); + alias->aliasname = (yyvsp[0].str); + (yyvsp[-1].range)->alias = alias; + (yyval.range) = (yyvsp[-1].range); + } +#line 26372 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1249: -#line 91 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 43 "third_party/libpg_query/grammar/statements/delete.y" + { + PGAlias *alias = makeNode(PGAlias); + alias->aliasname = (yyvsp[0].str); + (yyvsp[-2].range)->alias = alias; + (yyval.range) = (yyvsp[-2].range); + } +#line 26383 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1250: -#line 92 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} +#line 53 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.node) = (yyvsp[0].node); } +#line 26389 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1251: -#line 97 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 54 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.node) = NULL; } +#line 26395 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1252: -#line 98 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 60 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.list) = (yyvsp[0].list); } +#line 26401 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1253: -#line 104 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); - ;} +#line 61 "third_party/libpg_query/grammar/statements/delete.y" + { (yyval.list) = NIL; } +#line 26407 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1254: -#line 108 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); - ;} +#line 10 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-5].range); + n->view->relpersistence = (yyvsp[-7].ival); + n->aliases = (yyvsp[-4].list); + n->query = (yyvsp[-1].node); + n->onconflict = PG_ERROR_ON_CONFLICT; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + (yyval.node) = (PGNode *) n; + } +#line 26423 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1255: -#line 115 "third_party/libpg_query/grammar/statements/explain.y" - {;} +#line 23 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-5].range); + n->view->relpersistence = (yyvsp[-10].ival); + n->aliases = (yyvsp[-4].list); + n->query = (yyvsp[-1].node); + n->onconflict = PG_IGNORE_ON_CONFLICT; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + (yyval.node) = (PGNode *) n; + } +#line 26439 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1256: -#line 116 "third_party/libpg_query/grammar/statements/explain.y" - {;} +#line 36 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-5].range); + n->view->relpersistence = (yyvsp[-7].ival); + n->aliases = (yyvsp[-4].list); + n->query = (yyvsp[-1].node); + n->onconflict = PG_REPLACE_ON_CONFLICT; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + (yyval.node) = (PGNode *) n; + } +#line 26455 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1257: -#line 121 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "true"; ;} +#line 49 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-7].range); + n->view->relpersistence = (yyvsp[-10].ival); + n->aliases = (yyvsp[-5].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->onconflict = PG_ERROR_ON_CONFLICT; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + if (n->withCheckOption != PG_NO_CHECK_OPTION) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("WITH CHECK OPTION not supported on recursive views"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) n; + } +#line 26476 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1258: -#line 122 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "false"; ;} +#line 67 "third_party/libpg_query/grammar/statements/view.y" + { + PGViewStmt *n = makeNode(PGViewStmt); + n->view = (yyvsp[-7].range); + n->view->relpersistence = (yyvsp[-10].ival); + n->aliases = (yyvsp[-5].list); + n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[-1].node)); + n->onconflict = PG_REPLACE_ON_CONFLICT; + n->options = (yyvsp[-3].list); + n->withCheckOption = (yyvsp[0].viewcheckoption); + if (n->withCheckOption != PG_NO_CHECK_OPTION) + ereport(ERROR, + (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("WITH CHECK OPTION not supported on recursive views"), + parser_errposition((yylsp[0])))); + (yyval.node) = (PGNode *) n; + } +#line 26497 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1259: -#line 123 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "on"; ;} +#line 87 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; } +#line 26503 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1260: -#line 129 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 88 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; } +#line 26509 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1261: -#line 135 "third_party/libpg_query/grammar/statements/explain.y" - { - (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); - ;} +#line 89 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = PG_LOCAL_CHECK_OPTION; } +#line 26515 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1262: -#line 142 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 90 "third_party/libpg_query/grammar/statements/view.y" + { (yyval.viewcheckoption) = PG_NO_CHECK_OPTION; } +#line 26521 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1263: -#line 143 "third_party/libpg_query/grammar/statements/explain.y" - { (yyval.str) = (char*) "analyze"; ;} - break; - - case 1264: #line 11 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); n->scope = VAR_SET_SCOPE_DEFAULT; (yyval.node) = (PGNode *) n; - ;} + } +#line 26531 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1265: + case 1264: #line 17 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); n->scope = VAR_SET_SCOPE_LOCAL; (yyval.node) = (PGNode *) n; - ;} + } +#line 26541 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1266: + case 1265: #line 23 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); n->scope = VAR_SET_SCOPE_SESSION; (yyval.node) = (PGNode *) n; - ;} + } +#line 26551 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1267: + case 1266: #line 29 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGVariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); + { + PGVariableSetStmt *n = (yyvsp[0].vsetstmt); n->scope = VAR_SET_SCOPE_GLOBAL; (yyval.node) = (PGNode *) n; - ;} + } +#line 26561 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1268: + case 1267: #line 38 "third_party/libpg_query/grammar/statements/variable_set.y" - {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} + {(yyval.vsetstmt) = (yyvsp[0].vsetstmt);} +#line 26567 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1269: + case 1268: #line 40 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_CURRENT; - n->name = (yyvsp[(1) - (3)].str); + n->name = (yyvsp[-2].str); (yyval.vsetstmt) = n; - ;} + } +#line 26578 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1270: + case 1269: #line 48 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_VALUE; n->name = (char*) "timezone"; - if ((yyvsp[(3) - (3)].node) != NULL) - n->args = list_make1((yyvsp[(3) - (3)].node)); + if ((yyvsp[0].node) != NULL) + n->args = list_make1((yyvsp[0].node)); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; - ;} + } +#line 26593 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1271: + case 1270: #line 59 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_VALUE; n->name = (char*) "search_path"; - n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); + n->args = list_make1(makeStringConst((yyvsp[0].str), (yylsp[0]))); (yyval.vsetstmt) = n; - ;} + } +#line 26605 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1272: + case 1271: #line 71 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[(1) - (3)].str); - n->args = (yyvsp[(3) - (3)].list); + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); (yyval.vsetstmt) = n; - ;} + } +#line 26617 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1273: + case 1272: #line 79 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_VALUE; - n->name = (yyvsp[(1) - (3)].str); - n->args = (yyvsp[(3) - (3)].list); + n->name = (yyvsp[-2].str); + n->args = (yyvsp[0].list); (yyval.vsetstmt) = n; - ;} + } +#line 26629 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1274: + case 1273: #line 87 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[(1) - (3)].str); + n->name = (yyvsp[-2].str); (yyval.vsetstmt) = n; - ;} + } +#line 26640 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1275: + case 1274: #line 94 "third_party/libpg_query/grammar/statements/variable_set.y" - { + { PGVariableSetStmt *n = makeNode(PGVariableSetStmt); n->kind = VAR_SET_DEFAULT; - n->name = (yyvsp[(1) - (3)].str); + n->name = (yyvsp[-2].str); (yyval.vsetstmt) = n; - ;} + } +#line 26651 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1276: + case 1275: #line 104 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} + { (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); } +#line 26657 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1277: + case 1276: #line 106 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } +#line 26663 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1278: + case 1277: #line 112 "third_party/libpg_query/grammar/statements/variable_set.y" - { - (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} + { + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 26671 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1279: + case 1278: #line 116 "third_party/libpg_query/grammar/statements/variable_set.y" - { - (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); - ;} + { + (yyval.node) = makeStringConst((yyvsp[0].str), (yylsp[0])); + } +#line 26679 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1280: + case 1279: #line 120 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGTypeName *t = (yyvsp[(1) - (3)].typnam); - if ((yyvsp[(3) - (3)].list) != NIL) + { + PGTypeName *t = (yyvsp[-2].typnam); + if ((yyvsp[0].list) != NIL) { - PGAConst *n = (PGAConst *) linitial((yyvsp[(3) - (3)].list)); + PGAConst *n = (PGAConst *) linitial((yyvsp[0].list)); if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) ereport(ERROR, (errcode(PG_ERRCODE_SYNTAX_ERROR), errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), - parser_errposition((yylsp[(3) - (3)])))); + parser_errposition((yylsp[0])))); } - t->typmods = (yyvsp[(3) - (3)].list); - (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); - ;} + t->typmods = (yyvsp[0].list); + (yyval.node) = makeStringConstCast((yyvsp[-1].str), (yylsp[-1]), t); + } +#line 26698 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1281: + case 1280: #line 135 "third_party/libpg_query/grammar/statements/variable_set.y" - { - PGTypeName *t = (yyvsp[(1) - (5)].typnam); + { + PGTypeName *t = (yyvsp[-4].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), - makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); - (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); - ;} + makeIntConst((yyvsp[-2].ival), (yylsp[-2]))); + (yyval.node) = makeStringConstCast((yyvsp[0].str), (yylsp[0]), t); + } +#line 26709 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1282: + case 1281: #line 141 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} + { (yyval.node) = makeAConst((yyvsp[0].value), (yylsp[0])); } +#line 26715 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1283: + case 1282: #line 142 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = NULL; ;} + { (yyval.node) = NULL; } +#line 26721 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1284: + case 1283: #line 143 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.node) = NULL; ;} + { (yyval.node) = NULL; } +#line 26727 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1285: + case 1284: #line 147 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} + { (yyval.list) = list_make1((yyvsp[0].node)); } +#line 26733 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1286: + case 1285: #line 148 "third_party/libpg_query/grammar/statements/variable_set.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].node)); } +#line 26739 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1286: +#line 6 "third_party/libpg_query/grammar/statements/checkpoint.y" + { + PGCheckPointStmt *n = makeNode(PGCheckPointStmt); + n->force = true; + n->name = (yyvsp[0].str); + (yyval.node) = (PGNode *)n; + } +#line 26750 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1287: -#line 8 "third_party/libpg_query/grammar/statements/load.y" - { - PGLoadStmt *n = makeNode(PGLoadStmt); - n->filename = (yyvsp[(2) - (2)].str); - n->load_type = PG_LOAD_TYPE_LOAD; +#line 13 "third_party/libpg_query/grammar/statements/checkpoint.y" + { + PGCheckPointStmt *n = makeNode(PGCheckPointStmt); + n->force = false; + n->name = (yyvsp[0].str); (yyval.node) = (PGNode *)n; - ;} + } +#line 26761 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1288: -#line 14 "third_party/libpg_query/grammar/statements/load.y" - { - PGLoadStmt *n = makeNode(PGLoadStmt); - n->filename = (yyvsp[(2) - (2)].str); - n->load_type = PG_LOAD_TYPE_INSTALL; - (yyval.node) = (PGNode *)n; - ;} +#line 22 "third_party/libpg_query/grammar/statements/checkpoint.y" + { (yyval.str) = (yyvsp[0].str); } +#line 26767 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1289: -#line 20 "third_party/libpg_query/grammar/statements/load.y" - { - PGLoadStmt *n = makeNode(PGLoadStmt); - n->filename = (yyvsp[(3) - (3)].str); - n->load_type = PG_LOAD_TYPE_FORCE_INSTALL; - (yyval.node) = (PGNode *)n; - ;} +#line 23 "third_party/libpg_query/grammar/statements/checkpoint.y" + { (yyval.str) = NULL; } +#line 26773 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1290: -#line 28 "third_party/libpg_query/grammar/statements/load.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 8 "third_party/libpg_query/grammar/statements/load.y" + { + PGLoadStmt *n = makeNode(PGLoadStmt); + n->filename = (yyvsp[0].str); + n->load_type = PG_LOAD_TYPE_LOAD; + (yyval.node) = (PGNode *)n; + } +#line 26784 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1291: -#line 29 "third_party/libpg_query/grammar/statements/load.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 14 "third_party/libpg_query/grammar/statements/load.y" + { + PGLoadStmt *n = makeNode(PGLoadStmt); + n->filename = (yyvsp[0].str); + n->load_type = PG_LOAD_TYPE_INSTALL; + (yyval.node) = (PGNode *)n; + } +#line 26795 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1292: -#line 9 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (4)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (4)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 20 "third_party/libpg_query/grammar/statements/load.y" + { + PGLoadStmt *n = makeNode(PGLoadStmt); + n->filename = (yyvsp[0].str); + n->load_type = PG_LOAD_TYPE_FORCE_INSTALL; + (yyval.node) = (PGNode *)n; + } +#line 26806 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1293: -#line 23 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = (yyvsp[(5) - (5)].range); - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 28 "third_party/libpg_query/grammar/statements/load.y" + { (yyval.str) = (yyvsp[0].str); } +#line 26812 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1294: -#line 37 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = (PGVacuumStmt *) (yyvsp[(5) - (5)].node); - n->options |= PG_VACOPT_VACUUM; - if ((yyvsp[(2) - (5)].boolean)) - n->options |= PG_VACOPT_FULL; - if ((yyvsp[(3) - (5)].boolean)) - n->options |= PG_VACOPT_FREEZE; - if ((yyvsp[(4) - (5)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - (yyval.node) = (PGNode *)n; - ;} +#line 29 "third_party/libpg_query/grammar/statements/load.y" + { (yyval.str) = (yyvsp[0].str); } +#line 26818 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1295: -#line 49 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM | (yyvsp[(3) - (4)].ival); - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *) n; - ;} +#line 10 "third_party/libpg_query/grammar/statements/create_sequence.y" + { + PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); + (yyvsp[-1].range)->relpersistence = (yyvsp[-3].ival); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->ownerId = InvalidOid; + n->onconflict = PG_ERROR_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26832 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1296: -#line 57 "third_party/libpg_query/grammar/statements/vacuum.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_VACUUM | (yyvsp[(3) - (6)].ival); - n->relation = (yyvsp[(5) - (6)].range); - n->va_cols = (yyvsp[(6) - (6)].list); - if (n->va_cols != NIL) /* implies analyze */ - n->options |= PG_VACOPT_ANALYZE; - (yyval.node) = (PGNode *) n; - ;} +#line 20 "third_party/libpg_query/grammar/statements/create_sequence.y" + { + PGCreateSeqStmt *n = makeNode(PGCreateSeqStmt); + (yyvsp[-1].range)->relpersistence = (yyvsp[-6].ival); + n->sequence = (yyvsp[-1].range); + n->options = (yyvsp[0].list); + n->ownerId = InvalidOid; + n->onconflict = PG_IGNORE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26846 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1297: -#line 70 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_ANALYZE; ;} +#line 32 "third_party/libpg_query/grammar/statements/create_sequence.y" + { (yyval.list) = (yyvsp[0].list); } +#line 26852 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1298: -#line 71 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_VERBOSE; ;} +#line 33 "third_party/libpg_query/grammar/statements/create_sequence.y" + { (yyval.list) = NIL; } +#line 26858 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1299: -#line 72 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_FREEZE; ;} +#line 9 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-4].range)->relpersistence = (yyvsp[-6].ival); + n->name = (yyvsp[-4].range); + n->params = (yyvsp[-3].list); + n->function = NULL; + n->query = (yyvsp[0].node); + n->onconflict = PG_ERROR_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26873 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1300: -#line 73 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = PG_VACOPT_FULL; ;} +#line 21 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-4].range)->relpersistence = (yyvsp[-9].ival); + n->name = (yyvsp[-4].range); + n->params = (yyvsp[-3].list); + n->function = NULL; + n->query = (yyvsp[0].node); + n->onconflict = PG_IGNORE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + + } +#line 26889 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1301: -#line 75 "third_party/libpg_query/grammar/statements/vacuum.y" - { - if (strcmp((yyvsp[(1) - (1)].str), "disable_page_skipping") == 0) - (yyval.ival) = PG_VACOPT_DISABLE_PAGE_SKIPPING; - else - ereport(ERROR, - (errcode(PG_ERRCODE_SYNTAX_ERROR), - errmsg("unrecognized VACUUM option \"%s\"", (yyvsp[(1) - (1)].str)), - parser_errposition((yylsp[(1) - (1)])))); - ;} +#line 34 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-4].range)->relpersistence = (yyvsp[-6].ival); + n->name = (yyvsp[-4].range); + n->params = (yyvsp[-3].list); + n->function = NULL; + n->query = (yyvsp[0].node); + n->onconflict = PG_REPLACE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + + } +#line 26905 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1302: -#line 87 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = true; ;} +#line 47 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-3].range)->relpersistence = (yyvsp[-5].ival); + n->name = (yyvsp[-3].range); + n->params = (yyvsp[-2].list); + n->function = (yyvsp[0].node); + n->query = NULL; + n->onconflict = PG_ERROR_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26920 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1303: -#line 88 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = false; ;} +#line 59 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-3].range)->relpersistence = (yyvsp[-8].ival); + n->name = (yyvsp[-3].range); + n->params = (yyvsp[-2].list); + n->function = (yyvsp[0].node); + n->query = NULL; + n->onconflict = PG_IGNORE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26935 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1304: -#line 93 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} - break; - - case 1305: -#line 94 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} - break; - - case 1306: -#line 98 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = true; ;} +#line 71 "third_party/libpg_query/grammar/statements/create_function.y" + { + PGCreateFunctionStmt *n = makeNode(PGCreateFunctionStmt); + (yyvsp[-3].range)->relpersistence = (yyvsp[-5].ival); + n->name = (yyvsp[-3].range); + n->params = (yyvsp[-2].list); + n->function = (yyvsp[0].node); + n->query = NULL; + n->onconflict = PG_REPLACE_ON_CONFLICT; + (yyval.node) = (PGNode *)n; + } +#line 26950 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1307: -#line 99 "third_party/libpg_query/grammar/statements/vacuum.y" - { (yyval.boolean) = false; ;} +#line 92 "third_party/libpg_query/grammar/statements/create_function.y" + { + (yyval.list) = NIL; + } +#line 26958 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1308: -#line 9 "third_party/libpg_query/grammar/statements/delete.y" - { - PGDeleteStmt *n = makeNode(PGDeleteStmt); - n->relation = (yyvsp[(4) - (7)].range); - n->usingClause = (yyvsp[(5) - (7)].list); - n->whereClause = (yyvsp[(6) - (7)].node); - n->returningList = (yyvsp[(7) - (7)].list); - n->withClause = (yyvsp[(1) - (7)].with); - (yyval.node) = (PGNode *)n; - ;} +#line 96 "third_party/libpg_query/grammar/statements/create_function.y" + { + (yyval.list) = (yyvsp[-1].list); + } +#line 26966 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1309: -#line 19 "third_party/libpg_query/grammar/statements/delete.y" - { - PGDeleteStmt *n = makeNode(PGDeleteStmt); - n->relation = (yyvsp[(3) - (3)].range); - n->usingClause = NULL; - n->whereClause = NULL; - n->returningList = NULL; - n->withClause = NULL; - (yyval.node) = (PGNode *)n; - ;} +#line 3 "third_party/libpg_query/grammar/statements/use.y" + { + PGUseStmt *n = makeNode(PGUseStmt); + n->name = (yyvsp[0].range); + (yyval.node) = (PGNode *) n; + } +#line 26976 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1310: -#line 32 "third_party/libpg_query/grammar/statements/delete.y" - { - (yyval.range) = (yyvsp[(1) - (1)].range); - ;} +#line 8 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 26989 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1311: -#line 36 "third_party/libpg_query/grammar/statements/delete.y" - { - PGAlias *alias = makeNode(PGAlias); - alias->aliasname = (yyvsp[(2) - (2)].str); - (yyvsp[(1) - (2)].range)->alias = alias; - (yyval.range) = (yyvsp[(1) - (2)].range); - ;} +#line 17 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_TABLE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 27002 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1312: -#line 43 "third_party/libpg_query/grammar/statements/delete.y" - { - PGAlias *alias = makeNode(PGAlias); - alias->aliasname = (yyvsp[(3) - (3)].str); - (yyvsp[(1) - (3)].range)->alias = alias; - (yyval.range) = (yyvsp[(1) - (3)].range); - ;} +#line 26 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 27015 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1313: -#line 53 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.node) = (yyvsp[(2) - (2)].node); ;} +#line 35 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_SEQUENCE; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 27028 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1314: -#line 54 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.node) = NULL; ;} +#line 44 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = false; + (yyval.node) = (PGNode *)n; + } +#line 27041 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1315: -#line 60 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.list) = (yyvsp[(2) - (2)].list); ;} +#line 53 "third_party/libpg_query/grammar/statements/alter_schema.y" + { + PGAlterObjectSchemaStmt *n = makeNode(PGAlterObjectSchemaStmt); + n->objectType = PG_OBJECT_VIEW; + n->relation = (yyvsp[-3].range); + n->newschema = (yyvsp[0].str); + n->missing_ok = true; + (yyval.node) = (PGNode *)n; + } +#line 27054 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1316: -#line 61 "third_party/libpg_query/grammar/statements/delete.y" - { (yyval.list) = NIL; ;} +#line 12 "third_party/libpg_query/grammar/statements/update.y" + { + PGUpdateStmt *n = makeNode(PGUpdateStmt); + n->relation = (yyvsp[-5].range); + n->targetList = (yyvsp[-3].list); + n->fromClause = (yyvsp[-2].list); + n->whereClause = (yyvsp[-1].node); + n->returningList = (yyvsp[0].list); + n->withClause = (yyvsp[-7].with); + (yyval.node) = (PGNode *)n; + } +#line 27069 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1317: -#line 10 "third_party/libpg_query/grammar/statements/analyze.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_ANALYZE; - if ((yyvsp[(2) - (2)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = NULL; - n->va_cols = NIL; - (yyval.node) = (PGNode *)n; - ;} +#line 11 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyvsp[-2].istmt)->relation = (yyvsp[-3].range); + (yyvsp[-2].istmt)->onConflictAlias = (yyvsp[-5].onconflictshorthand); + (yyvsp[-2].istmt)->onConflictClause = (yyvsp[-1].onconflict); + (yyvsp[-2].istmt)->returningList = (yyvsp[0].list); + (yyvsp[-2].istmt)->withClause = (yyvsp[-7].with); + (yyval.node) = (PGNode *) (yyvsp[-2].istmt); + } +#line 27082 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1318: -#line 20 "third_party/libpg_query/grammar/statements/analyze.y" - { - PGVacuumStmt *n = makeNode(PGVacuumStmt); - n->options = PG_VACOPT_ANALYZE; - if ((yyvsp[(2) - (4)].boolean)) - n->options |= PG_VACOPT_VERBOSE; - n->relation = (yyvsp[(3) - (4)].range); - n->va_cols = (yyvsp[(4) - (4)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 24 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.istmt) = makeNode(PGInsertStmt); + (yyval.istmt)->cols = NIL; + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 27092 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1319: -#line 8 "third_party/libpg_query/grammar/statements/attach.y" - { - PGAttachStmt *n = makeNode(PGAttachStmt); - n->path = (yyvsp[(3) - (5)].str); - n->name = (yyvsp[(4) - (5)].str); - n->options = (yyvsp[(5) - (5)].list); - (yyval.node) = (PGNode *)n; - ;} +#line 30 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.istmt) = makeNode(PGInsertStmt); + (yyval.istmt)->cols = NIL; + (yyval.istmt)->override = (yyvsp[-2].override); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 27103 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1320: -#line 19 "third_party/libpg_query/grammar/statements/attach.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = PG_OBJECT_DATABASE; - n->missing_ok = false; - n->objects = (yyvsp[(3) - (3)].list); - n->behavior = PG_DROP_RESTRICT; - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 37 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.istmt) = makeNode(PGInsertStmt); + (yyval.istmt)->cols = (yyvsp[-2].list); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 27113 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1321: -#line 29 "third_party/libpg_query/grammar/statements/attach.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = PG_OBJECT_DATABASE; - n->missing_ok = false; - n->objects = (yyvsp[(2) - (2)].list); - n->behavior = PG_DROP_RESTRICT; - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 43 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.istmt) = makeNode(PGInsertStmt); + (yyval.istmt)->cols = (yyvsp[-5].list); + (yyval.istmt)->override = (yyvsp[-2].override); + (yyval.istmt)->selectStmt = (yyvsp[0].node); + } +#line 27124 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1322: -#line 39 "third_party/libpg_query/grammar/statements/attach.y" - { - PGDropStmt *n = makeNode(PGDropStmt); - n->removeType = PG_OBJECT_DATABASE; - n->missing_ok = true; - n->objects = (yyvsp[(5) - (5)].list); - n->behavior = PG_DROP_RESTRICT; - n->concurrent = false; - (yyval.node) = (PGNode *)n; - ;} +#line 50 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.istmt) = makeNode(PGInsertStmt); + (yyval.istmt)->cols = NIL; + (yyval.istmt)->selectStmt = NULL; + } +#line 27134 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1323: -#line 50 "third_party/libpg_query/grammar/statements/attach.y" - {;} +#line 60 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.range) = (yyvsp[0].range); + } +#line 27142 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1324: -#line 51 "third_party/libpg_query/grammar/statements/attach.y" - {;} +#line 64 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyvsp[-2].range)->alias = makeAlias((yyvsp[0].str), NIL); + (yyval.range) = (yyvsp[-2].range); + } +#line 27151 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1325: -#line 55 "third_party/libpg_query/grammar/statements/attach.y" - { (yyval.str) = (yyvsp[(2) - (2)].str); ;} +#line 73 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.infer) = makeNode(PGInferClause); + (yyval.infer)->indexElems = (yyvsp[-2].list); + (yyval.infer)->whereClause = (yyvsp[0].node); + (yyval.infer)->conname = NULL; + (yyval.infer)->location = (yylsp[-3]); + } +#line 27163 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1326: -#line 56 "third_party/libpg_query/grammar/statements/attach.y" - { (yyval.str) = NULL; ;} +#line 82 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.infer) = makeNode(PGInferClause); + (yyval.infer)->indexElems = NIL; + (yyval.infer)->whereClause = NULL; + (yyval.infer)->conname = (yyvsp[0].str); + (yyval.infer)->location = (yylsp[-2]); + } +#line 27175 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1327: -#line 59 "third_party/libpg_query/grammar/statements/attach.y" - { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} +#line 90 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.infer) = NULL; + } +#line 27183 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1328: -#line 62 "third_party/libpg_query/grammar/statements/attach.y" - { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} +#line 97 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.with) = (yyvsp[0].with); } +#line 27189 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1329: -#line 63 "third_party/libpg_query/grammar/statements/attach.y" - { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} +#line 98 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.with) = NULL; } +#line 27195 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1330: -#line 2 "third_party/libpg_query/grammar/statements/variable_reset.y" - { (yyval.node) = (PGNode *) (yyvsp[(2) - (2)].vsetstmt); ;} +#line 104 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[-1].str); + (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->val = NULL; + (yyval.target)->location = (yylsp[-1]); + } +#line 27207 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1331: -#line 8 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->scope = VAR_SET_SCOPE_GLOBAL; - n->name = (yyvsp[(1) - (1)].str); - (yyval.vsetstmt) = n; - ;} +#line 116 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyvsp[-2].target)->val = (PGNode *) (yyvsp[0].node); + (yyval.list) = list_make1((yyvsp[-2].target)); + } +#line 27216 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1332: -#line 16 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET_ALL; - n->scope = VAR_SET_SCOPE_GLOBAL; - (yyval.vsetstmt) = n; - ;} +#line 121 "third_party/libpg_query/grammar/statements/insert.y" + { + int ncolumns = list_length((yyvsp[-3].list)); + int i = 1; + PGListCell *col_cell; + + /* Create a PGMultiAssignRef source for each target */ + foreach(col_cell, (yyvsp[-3].list)) + { + PGResTarget *res_col = (PGResTarget *) lfirst(col_cell); + PGMultiAssignRef *r = makeNode(PGMultiAssignRef); + + r->source = (PGNode *) (yyvsp[0].node); + r->colno = i; + r->ncolumns = ncolumns; + res_col->val = (PGNode *) r; + i++; + } + + (yyval.list) = (yyvsp[-3].list); + } +#line 27241 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1333: -#line 26 "third_party/libpg_query/grammar/statements/variable_reset.y" - { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} +#line 146 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_REPLACE; + } +#line 27249 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1334: -#line 28 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->name = (char*) "timezone"; - (yyval.vsetstmt) = n; - ;} +#line 151 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_IGNORE; + } +#line 27257 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1335: -#line 35 "third_party/libpg_query/grammar/statements/variable_reset.y" - { - PGVariableSetStmt *n = makeNode(PGVariableSetStmt); - n->kind = VAR_RESET; - n->name = (char*) "transaction_isolation"; - (yyval.vsetstmt) = n; - ;} +#line 155 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflictshorthand) = PG_ONCONFLICT_ALIAS_NONE; + } +#line 27265 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1336: -#line 3 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); - n->stmt = (yyvsp[(2) - (2)].node); - n->name = (char*) "select"; - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 162 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflict) = makeNode(PGOnConflictClause); + (yyval.onconflict)->action = PG_ONCONFLICT_UPDATE; + (yyval.onconflict)->infer = (yyvsp[-5].infer); + (yyval.onconflict)->targetList = (yyvsp[-1].list); + (yyval.onconflict)->whereClause = (yyvsp[0].node); + (yyval.onconflict)->location = (yylsp[-7]); + } +#line 27278 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1337: -#line 10 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowSelectStmt *n = makeNode(PGVariableShowSelectStmt); - n->stmt = (yyvsp[(2) - (2)].node); - n->name = (char*) "select"; - n->is_summary = 1; - (yyval.node) = (PGNode *) n; - ;} +#line 172 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflict) = makeNode(PGOnConflictClause); + (yyval.onconflict)->action = PG_ONCONFLICT_NOTHING; + (yyval.onconflict)->infer = (yyvsp[-2].infer); + (yyval.onconflict)->targetList = NIL; + (yyval.onconflict)->whereClause = NULL; + (yyval.onconflict)->location = (yylsp[-4]); + } +#line 27291 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1338: -#line 18 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (yyvsp[(2) - (2)].str); - n->is_summary = 1; - (yyval.node) = (PGNode *) n; - ;} +#line 181 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.onconflict) = NULL; + } +#line 27299 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1339: -#line 25 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (yyvsp[(2) - (2)].str); - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 188 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.ielem) = makeNode(PGIndexElem); + (yyval.ielem)->name = (yyvsp[-4].str); + (yyval.ielem)->expr = NULL; + (yyval.ielem)->indexcolname = NULL; + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 27314 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1340: -#line 32 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "timezone"; - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 199 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.ielem) = makeNode(PGIndexElem); + (yyval.ielem)->name = NULL; + (yyval.ielem)->expr = (yyvsp[-4].node); + (yyval.ielem)->indexcolname = NULL; + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 27329 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1341: -#line 39 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "transaction_isolation"; - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 210 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.ielem) = makeNode(PGIndexElem); + (yyval.ielem)->name = NULL; + (yyval.ielem)->expr = (yyvsp[-5].node); + (yyval.ielem)->indexcolname = NULL; + (yyval.ielem)->collation = (yyvsp[-3].list); + (yyval.ielem)->opclass = (yyvsp[-2].list); + (yyval.ielem)->ordering = (yyvsp[-1].sortorder); + (yyval.ielem)->nulls_ordering = (yyvsp[0].nullorder); + } +#line 27344 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1342: -#line 46 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "__show_tables_expanded"; - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 224 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[0].list); } +#line 27350 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1343: -#line 53 "third_party/libpg_query/grammar/statements/variable_show.y" - { - PGVariableShowStmt *n = makeNode(PGVariableShowStmt); - n->name = (char*) "__show_tables_expanded"; - n->is_summary = 0; - (yyval.node) = (PGNode *) n; - ;} +#line 225 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = NIL; } +#line 27356 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1344: +#line 231 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.override) = PG_OVERRIDING_USER_VALUE; } +#line 27362 "third_party/libpg_query/grammar/grammar_out.cpp" + break; + + case 1345: +#line 232 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.override) = OVERRIDING_SYSTEM_VALUE; } +#line 27368 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1346: -#line 63 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = (yyvsp[(1) - (1)].str); ;} +#line 237 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 27374 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1347: -#line 65 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} +#line 238 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = lappend((yyvsp[-2].list),(yyvsp[0].target)); } +#line 27380 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1348: -#line 68 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = psprintf("\"%s\"", (yyvsp[(1) - (1)].str)); ;} +#line 244 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[0].list); } +#line 27386 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1349: -#line 70 "third_party/libpg_query/grammar/statements/variable_show.y" - { (yyval.str) = psprintf("%s.\"%s\"", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} +#line 245 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = NIL; } +#line 27392 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1350: -#line 7 "third_party/libpg_query/grammar/statements/call.y" - { - PGCallStmt *n = makeNode(PGCallStmt); - n->func = (yyvsp[(2) - (2)].node); - (yyval.node) = (PGNode *) n; - ;} +#line 249 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[0].list); } +#line 27398 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1351: -#line 10 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(4) - (9)].range); - n->view->relpersistence = (yyvsp[(2) - (9)].ival); - n->aliases = (yyvsp[(5) - (9)].list); - n->query = (yyvsp[(8) - (9)].node); - n->onconflict = PG_ERROR_ON_CONFLICT; - n->options = (yyvsp[(6) - (9)].list); - n->withCheckOption = (yyvsp[(9) - (9)].viewcheckoption); - (yyval.node) = (PGNode *) n; - ;} +#line 250 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = NIL; } +#line 27404 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1352: -#line 23 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(7) - (12)].range); - n->view->relpersistence = (yyvsp[(2) - (12)].ival); - n->aliases = (yyvsp[(8) - (12)].list); - n->query = (yyvsp[(11) - (12)].node); - n->onconflict = PG_IGNORE_ON_CONFLICT; - n->options = (yyvsp[(9) - (12)].list); - n->withCheckOption = (yyvsp[(12) - (12)].viewcheckoption); - (yyval.node) = (PGNode *) n; - ;} +#line 256 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = list_make1((yyvsp[0].target)); } +#line 27410 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1353: -#line 36 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(6) - (11)].range); - n->view->relpersistence = (yyvsp[(4) - (11)].ival); - n->aliases = (yyvsp[(7) - (11)].list); - n->query = (yyvsp[(10) - (11)].node); - n->onconflict = PG_REPLACE_ON_CONFLICT; - n->options = (yyvsp[(8) - (11)].list); - n->withCheckOption = (yyvsp[(11) - (11)].viewcheckoption); - (yyval.node) = (PGNode *) n; - ;} +#line 258 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].target)); } +#line 27416 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1354: -#line 49 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(5) - (12)].range); - n->view->relpersistence = (yyvsp[(2) - (12)].ival); - n->aliases = (yyvsp[(7) - (12)].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(11) - (12)].node)); - n->onconflict = PG_ERROR_ON_CONFLICT; - n->options = (yyvsp[(9) - (12)].list); - n->withCheckOption = (yyvsp[(12) - (12)].viewcheckoption); - if (n->withCheckOption != PG_NO_CHECK_OPTION) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[(12) - (12)])))); - (yyval.node) = (PGNode *) n; - ;} +#line 263 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[0].list); } +#line 27422 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1355: -#line 67 "third_party/libpg_query/grammar/statements/view.y" - { - PGViewStmt *n = makeNode(PGViewStmt); - n->view = (yyvsp[(7) - (14)].range); - n->view->relpersistence = (yyvsp[(4) - (14)].ival); - n->aliases = (yyvsp[(9) - (14)].list); - n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(13) - (14)].node)); - n->onconflict = PG_REPLACE_ON_CONFLICT; - n->options = (yyvsp[(11) - (14)].list); - n->withCheckOption = (yyvsp[(14) - (14)].viewcheckoption); - if (n->withCheckOption != PG_NO_CHECK_OPTION) - ereport(ERROR, - (errcode(PG_ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("WITH CHECK OPTION not supported on recursive views"), - parser_errposition((yylsp[(14) - (14)])))); - (yyval.node) = (PGNode *) n; - ;} +#line 264 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = list_concat((yyvsp[-2].list),(yyvsp[0].list)); } +#line 27428 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1356: -#line 87 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} +#line 268 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[0].list); } +#line 27434 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1357: -#line 88 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = CASCADED_CHECK_OPTION; ;} +#line 269 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = (yyvsp[-1].list); } +#line 27440 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1358: -#line 89 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = PG_LOCAL_CHECK_OPTION; ;} +#line 272 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = list_make1((yyvsp[0].ielem)); } +#line 27446 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1359: -#line 90 "third_party/libpg_query/grammar/statements/view.y" - { (yyval.viewcheckoption) = PG_NO_CHECK_OPTION; ;} +#line 273 "third_party/libpg_query/grammar/statements/insert.y" + { (yyval.list) = lappend((yyvsp[-2].list), (yyvsp[0].ielem)); } +#line 27452 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1360: -#line 12 "third_party/libpg_query/grammar/statements/create_as.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - ctas->query = (yyvsp[(6) - (7)].node); - ctas->into = (yyvsp[(4) - (7)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->onconflict = PG_ERROR_ON_CONFLICT; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(4) - (7)].into)->rel->relpersistence = (yyvsp[(2) - (7)].ival); - (yyvsp[(4) - (7)].into)->skipData = !((yyvsp[(7) - (7)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 279 "third_party/libpg_query/grammar/statements/insert.y" + { + (yyval.target) = makeNode(PGResTarget); + (yyval.target)->name = (yyvsp[-1].str); + (yyval.target)->indirection = check_indirection((yyvsp[0].list), yyscanner); + (yyval.target)->val = NULL; /* upper production sets this */ + (yyval.target)->location = (yylsp[-1]); + } +#line 27464 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1361: -#line 25 "third_party/libpg_query/grammar/statements/create_as.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - ctas->query = (yyvsp[(9) - (10)].node); - ctas->into = (yyvsp[(7) - (10)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->onconflict = PG_IGNORE_ON_CONFLICT; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(7) - (10)].into)->rel->relpersistence = (yyvsp[(2) - (10)].ival); - (yyvsp[(7) - (10)].into)->skipData = !((yyvsp[(10) - (10)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} +#line 10 "third_party/libpg_query/grammar/statements/analyze.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_ANALYZE; + if ((yyvsp[0].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = NULL; + n->va_cols = NIL; + (yyval.node) = (PGNode *)n; + } +#line 27478 "third_party/libpg_query/grammar/grammar_out.cpp" break; case 1362: -#line 38 "third_party/libpg_query/grammar/statements/create_as.y" - { - PGCreateTableAsStmt *ctas = makeNode(PGCreateTableAsStmt); - ctas->query = (yyvsp[(8) - (9)].node); - ctas->into = (yyvsp[(6) - (9)].into); - ctas->relkind = PG_OBJECT_TABLE; - ctas->is_select_into = false; - ctas->onconflict = PG_REPLACE_ON_CONFLICT; - /* cram additional flags into the PGIntoClause */ - (yyvsp[(6) - (9)].into)->rel->relpersistence = (yyvsp[(4) - (9)].ival); - (yyvsp[(6) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); - (yyval.node) = (PGNode *) ctas; - ;} - break; - - case 1363: -#line 54 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = true; ;} - break; - - case 1364: -#line 55 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = false; ;} - break; - - case 1365: -#line 56 "third_party/libpg_query/grammar/statements/create_as.y" - { (yyval.boolean) = true; ;} +#line 20 "third_party/libpg_query/grammar/statements/analyze.y" + { + PGVacuumStmt *n = makeNode(PGVacuumStmt); + n->options = PG_VACOPT_ANALYZE; + if ((yyvsp[-2].boolean)) + n->options |= PG_VACOPT_VERBOSE; + n->relation = (yyvsp[-1].range); + n->va_cols = (yyvsp[0].list); + (yyval.node) = (PGNode *)n; + } +#line 27492 "third_party/libpg_query/grammar/grammar_out.cpp" break; - case 1366: -#line 62 "third_party/libpg_query/grammar/statements/create_as.y" - { - (yyval.into) = makeNode(PGIntoClause); - (yyval.into)->rel = (yyvsp[(1) - (4)].range); - (yyval.into)->colNames = (yyvsp[(2) - (4)].list); - (yyval.into)->options = (yyvsp[(3) - (4)].list); - (yyval.into)->onCommit = (yyvsp[(4) - (4)].oncommit); - (yyval.into)->viewQuery = NULL; - (yyval.into)->skipData = false; /* might get changed later */ - ;} - break; +#line 27496 "third_party/libpg_query/grammar/grammar_out.cpp" -/* Line 1267 of yacc.c. */ -#line 27480 "third_party/libpg_query/grammar/grammar_out.cpp" default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -334937,25 +335549,28 @@ YYLTYPE yylloc; *++yyvsp = yyval; *++yylsp = yyloc; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -334963,62 +335578,61 @@ YYLTYPE yylloc; #if ! YYERROR_VERBOSE yyerror (&yylloc, yyscanner, YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (&yylloc, yyscanner, yymsg); - } - else - { - yyerror (&yylloc, yyscanner, YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (&yylloc, yyscanner, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } - yyerror_range[0] = yylloc; + yyerror_range[1] = yylloc; if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc, yyscanner); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc, yyscanner); + yychar = YYEMPTY; + } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -335027,15 +335641,12 @@ YYLTYPE yylloc; | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - yyerror_range[0] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -335048,43 +335659,42 @@ YYLTYPE yylloc; | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; - yyerror_range[0] = *yylsp; + yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp, yyscanner); + yystos[yystate], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END - yyerror_range[1] = yylloc; + yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of - the look-ahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); + the lookahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, yyerror_range, 2); *++yylsp = yyloc; /* Shift the error token. */ @@ -335101,6 +335711,7 @@ YYLTYPE yylloc; yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -335108,7 +335719,8 @@ YYLTYPE yylloc; yyresult = 1; goto yyreturn; -#ifndef yyoverflow + +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -335118,18 +335730,27 @@ YYLTYPE yylloc; /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, &yylloc, yyscanner); - /* Do not reclaim the symbols of the rule which action triggered + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, &yylloc, yyscanner); + } + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp, yyscanner); + yystos[+*yyssp], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow @@ -335140,12 +335761,9 @@ YYLTYPE yylloc; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -#line 83 "third_party/libpg_query/grammar/statements/create_as.y" +#line 41 "third_party/libpg_query/grammar/statements/analyze.y" #line 1 "third_party/libpg_query/grammar/grammar.cpp" @@ -335911,7 +336529,6 @@ parser_init(base_yy_extra_type *yyext) } // namespace duckdb_libpgquery - // LICENSE_CHANGE_END diff --git a/libduckdb-sys/duckdb/duckdb.hpp b/libduckdb-sys/duckdb/duckdb.hpp index 70921a1e..9818efe3 100644 --- a/libduckdb-sys/duckdb/duckdb.hpp +++ b/libduckdb-sys/duckdb/duckdb.hpp @@ -10,8 +10,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #pragma once #define DUCKDB_AMALGAMATION 1 -#define DUCKDB_SOURCE_ID "f7827396d7" -#define DUCKDB_VERSION "v0.7.0" +#define DUCKDB_SOURCE_ID "b00b93f0b1" +#define DUCKDB_VERSION "v0.7.1" //===----------------------------------------------------------------------===// // DuckDB // @@ -1478,6 +1478,16 @@ class IOException : public Exception { } }; +class MissingExtensionException : public IOException { +public: + DUCKDB_API explicit MissingExtensionException(const string &msg); + + template + explicit MissingExtensionException(const string &msg, Args... params) + : IOException(ConstructMessage(msg, params...)) { + } +}; + class SerializationException : public Exception { public: DUCKDB_API explicit SerializationException(const string &msg); @@ -2026,6 +2036,7 @@ class FileSystem { //! Runs a glob on the file system, returning a list of matching files DUCKDB_API virtual vector Glob(const string &path, FileOpener *opener = nullptr); DUCKDB_API virtual vector Glob(const string &path, ClientContext &context); + DUCKDB_API vector GlobFiles(const string &path, ClientContext &context); //! registers a sub-file system to handle certain file name prefixes, e.g. http:// etc. DUCKDB_API virtual void RegisterSubSystem(unique_ptr sub_fs); @@ -3142,8 +3153,15 @@ class StringUtil { DUCKDB_API static string Replace(string source, const string &from, const string &to); //! Get the levenshtein distance from two strings - DUCKDB_API static idx_t LevenshteinDistance(const string &s1, const string &s2); - + //! The not_equal_penalty is the penalty given when two characters in a string are not equal + //! The regular levenshtein distance has a not equal penalty of 1, which means changing a character is as expensive + //! as adding or removing one For similarity searches we often want to give extra weight to changing a character For + //! example: with an equal penalty of 1, "pg_am" is closer to "depdelay" than "depdelay_minutes" + //! with an equal penalty of 3, "depdelay_minutes" is closer to "depdelay" than to "pg_am" + DUCKDB_API static idx_t LevenshteinDistance(const string &s1, const string &s2, idx_t not_equal_penalty = 1); + + //! Returns the similarity score between two strings + DUCKDB_API static idx_t SimilarityScore(const string &s1, const string &s2); //! Get the top-n strings (sorted by the given score distance) from a set of scores. //! At least one entry is returned (if there is one). //! Strings are only returned if they have a score less than the threshold. @@ -3246,6 +3264,8 @@ struct timestamp_ns_t : public timestamp_t {}; // NOLINT struct timestamp_ms_t : public timestamp_t {}; // NOLINT struct timestamp_sec_t : public timestamp_t {}; // NOLINT +enum class TimestampCastResult : uint8_t { SUCCESS, ERROR_INCORRECT_FORMAT, ERROR_NON_UTC_TIMEZONE }; + //! The Timestamp class is a static class that holds helper functions for the Timestamp //! type. class Timestamp { @@ -3263,7 +3283,7 @@ class Timestamp { //! If the tz is not empty, the result is still an instant, but the parts can be extracted and applied to the TZ DUCKDB_API static bool TryConvertTimestampTZ(const char *str, idx_t len, timestamp_t &result, bool &has_offset, string_t &tz); - DUCKDB_API static bool TryConvertTimestamp(const char *str, idx_t len, timestamp_t &result); + DUCKDB_API static TimestampCastResult TryConvertTimestamp(const char *str, idx_t len, timestamp_t &result); DUCKDB_API static timestamp_t FromCString(const char *str, idx_t len); //! Convert a date object to a string in the format "YYYY-MM-DD hh:mm:ss" DUCKDB_API static string ToString(timestamp_t timestamp); @@ -3314,6 +3334,8 @@ class Timestamp { DUCKDB_API static string ConversionError(const string &str); DUCKDB_API static string ConversionError(string_t str); + DUCKDB_API static string UnsupportedTimezoneError(const string &str); + DUCKDB_API static string UnsupportedTimezoneError(string_t str); }; } // namespace duckdb @@ -9323,6 +9345,7 @@ enum class LogicalOperatorType : uint8_t { LOGICAL_TRANSACTION = 134, LOGICAL_CREATE_TYPE = 135, LOGICAL_ATTACH = 136, + LOGICAL_DETACH = 137, // ----------------------------- // Explain @@ -11024,11 +11047,12 @@ enum class StatementType : uint8_t { RELATION_STATEMENT, EXTENSION_STATEMENT, LOGICAL_PLAN_STATEMENT, - ATTACH_STATEMENT + ATTACH_STATEMENT, + DETACH_STATEMENT }; -string StatementTypeToString(StatementType type); +DUCKDB_API string StatementTypeToString(StatementType type); enum class StatementReturnType : uint8_t { QUERY_RESULT, // the statement returns a query result (e.g. for display to the user) @@ -11604,6 +11628,7 @@ struct CreateFunctionInfo; struct CreateViewInfo; struct CreateSequenceInfo; struct CreateCollationInfo; +struct CreateIndexInfo; struct CreateTypeInfo; struct CreateTableInfo; struct DatabaseSize; @@ -11712,6 +11737,9 @@ class Catalog { //! Creates a collation in the catalog DUCKDB_API CatalogEntry *CreateCollation(CatalogTransaction transaction, CreateCollationInfo *info); DUCKDB_API CatalogEntry *CreateCollation(ClientContext &context, CreateCollationInfo *info); + //! Creates an index in the catalog + DUCKDB_API CatalogEntry *CreateIndex(CatalogTransaction transaction, CreateIndexInfo *info); + DUCKDB_API CatalogEntry *CreateIndex(ClientContext &context, CreateIndexInfo *info); //! Creates a table in the catalog. DUCKDB_API CatalogEntry *CreateTable(CatalogTransaction transaction, SchemaCatalogEntry *schema, @@ -11728,7 +11756,7 @@ class Catalog { //! Create a scalar or aggregate function in the catalog DUCKDB_API CatalogEntry *CreateFunction(CatalogTransaction transaction, SchemaCatalogEntry *schema, CreateFunctionInfo *info); - //! Creates a table in the catalog. + //! Creates a view in the catalog DUCKDB_API CatalogEntry *CreateView(CatalogTransaction transaction, SchemaCatalogEntry *schema, CreateViewInfo *info); //! Creates a table in the catalog. @@ -11826,6 +11854,8 @@ class Catalog { virtual void Verify(); + static CatalogException UnrecognizedConfigurationError(ClientContext &context, const string &name); + protected: //! Reference to the database AttachedDatabase &db; @@ -11988,6 +12018,7 @@ enum class PhysicalOperatorType : uint8_t { TRANSACTION, CREATE_TYPE, ATTACH, + DETACH, // ----------------------------- // Helpers @@ -18848,12 +18879,12 @@ class SQLStatement { SQLStatement(const SQLStatement &other) = default; public: - virtual string ToString() const { + DUCKDB_API virtual string ToString() const { throw InternalException("ToString not supported for this type of SQLStatement: '%s'", StatementTypeToString(type)); } //! Create a copy of this SelectStatement - virtual unique_ptr Copy() const = 0; + DUCKDB_API virtual unique_ptr Copy() const = 0; }; } // namespace duckdb @@ -19452,44 +19483,6 @@ struct ReplacementScan { } // namespace duckdb -//===----------------------------------------------------------------------===// -// DuckDB -// -// duckdb/function/create_database_extension.hpp -// -// -//===----------------------------------------------------------------------===// - - - - - -namespace duckdb { - -class ClientContext; -class TableFunctionRef; - -struct CreateDatabaseExtensionData { - virtual ~CreateDatabaseExtensionData() { - } -}; - -typedef unique_ptr (*create_database_t)(ClientContext &context, const string &extension_name, - const string &database_name, const string &source_path, - CreateDatabaseExtensionData *data); - -struct CreateDatabaseExtension { - explicit CreateDatabaseExtension(create_database_t function, - unique_ptr data_p = nullptr) - : function(function), data(std::move(data_p)) { - } - - create_database_t function; - unique_ptr data; -}; - -} // namespace duckdb - //===----------------------------------------------------------------------===// // DuckDB // @@ -20083,7 +20076,7 @@ class QueryNode; //! SelectStatement is a typical SELECT clause class SelectStatement : public SQLStatement { public: - SelectStatement() : SQLStatement(StatementType::SELECT_STATEMENT) { + DUCKDB_API SelectStatement() : SQLStatement(StatementType::SELECT_STATEMENT) { } //! The main query node @@ -20094,9 +20087,9 @@ class SelectStatement : public SQLStatement { public: //! Convert the SELECT statement to a string - string ToString() const override; + DUCKDB_API string ToString() const override; //! Create a copy of this SelectStatement - unique_ptr Copy() const override; + DUCKDB_API unique_ptr Copy() const override; //! Serializes a SelectStatement to a stand-alone binary blob void Serialize(Serializer &serializer) const; //! Deserializes a blob back into a SelectStatement, returns nullptr if @@ -20209,6 +20202,7 @@ class AttachStatement; class CallStatement; class CopyStatement; class CreateStatement; +class DetachStatement; class DeleteStatement; class DropStatement; class ExtensionStatement; @@ -21050,6 +21044,9 @@ class Binder : public std::enable_shared_from_this { unique_ptr BindCreateTableInfo(unique_ptr info); unique_ptr BindCreateTableInfo(unique_ptr info, SchemaCatalogEntry *schema); + + vector> BindCreateIndexExpressions(TableCatalogEntry *table, CreateIndexInfo *info); + void BindCreateViewInfo(CreateViewInfo &base); SchemaCatalogEntry *BindSchema(CreateInfo &info); SchemaCatalogEntry *BindCreateFunctionInfo(CreateInfo &info); @@ -21189,6 +21186,7 @@ class Binder : public std::enable_shared_from_this { BoundStatement Bind(LoadStatement &stmt); BoundStatement Bind(LogicalPlanStatement &stmt); BoundStatement Bind(AttachStatement &stmt); + BoundStatement Bind(DetachStatement &stmt); BoundStatement BindReturning(vector> returning_list, TableCatalogEntry *table, idx_t update_table_index, unique_ptr child_operator, @@ -21426,6 +21424,8 @@ struct DBConfigOptions { case_insensitive_map_t set_variables; //! Database configuration variable default values; case_insensitive_map_t set_variable_defaults; + //! Directory to store extension binaries in + string extension_directory; //! Whether unsigned extensions should be loaded bool allow_unsigned_extensions = false; //! Enable emitting FSST Vectors @@ -21474,8 +21474,6 @@ struct DBConfig { vector> operator_extensions; //! Extensions made to storage case_insensitive_map_t> storage_extensions; - //! Extensions made to binder to implement the create_database functionality - vector create_database_extensions; public: DUCKDB_API static DBConfig &GetConfig(ClientContext &context); @@ -22527,7 +22525,7 @@ class CopyStatement : public SQLStatement { CopyStatement(const CopyStatement &other); public: - unique_ptr Copy() const override; + DUCKDB_API unique_ptr Copy() const override; private: }; diff --git a/libduckdb-sys/upgrade.sh b/libduckdb-sys/upgrade.sh index d0229ed9..6297f108 100755 --- a/libduckdb-sys/upgrade.sh +++ b/libduckdb-sys/upgrade.sh @@ -10,7 +10,7 @@ export DUCKDB_LIB_DIR="$SCRIPT_DIR/duckdb" export DU_INCLUDE_DIR="$DUCKDB_LIB_DIR" # Download and extract amalgamation -DUCKDB_VERSION=v0.7.0 +DUCKDB_VERSION=v0.7.1 wget -T 20 "https://github.com/duckdb/duckdb/releases/download/$DUCKDB_VERSION/libduckdb-src.zip" unzip -o libduckdb-src.zip -d duckdb rm -f libduckdb-src.zip