diff --git a/scripts/antlr4/Cypher.g4 b/scripts/antlr4/Cypher.g4 index 298bb12014..0e9c5702f7 100644 --- a/scripts/antlr4/Cypher.g4 +++ b/scripts/antlr4/Cypher.g4 @@ -102,6 +102,8 @@ FROM : ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' ) ; FORCE : ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'C' | 'c' ) ( 'E' | 'e' ) ; +FOR : ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ; + GLOB : ( 'G' | 'g' ) ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'B' | 'b' ) ; GRAPH : ( 'G' | 'g' ) ( 'R' | 'r' ) ( 'A' | 'a' ) ( 'P' | 'p' ) ( 'H' | 'h' ) ; @@ -114,6 +116,8 @@ HINT : ( 'H' | 'h' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'T' | 't' ) ; IMPORT : ( 'I' | 'i' ) ( 'M' | 'm' ) ( 'P' | 'p' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'T' | 't' ) ; +INDEX : ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'X' | 'x' ) ; + IF : ( 'I' | 'i' ) ( 'F' | 'f' ) ; IN : ( 'I' | 'i' ) ( 'N' | 'n' ) ; @@ -160,6 +164,8 @@ ON : ( 'O' | 'o' ) ( 'N' | 'n' ) ; ONLY : ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'L' | 'l' ) ( 'Y' | 'y' ) ; +OPTIONS : ( 'O' | 'o' ) ( 'P' | 'p' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'S' | 's' ) ; + OPTIONAL : ( 'O' | 'o' ) ( 'P' | 'p' ) ( 'T' | 't' ) ( 'I' | 'i' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'A' | 'a' ) ( 'L' | 'l' ) ; OR : ( 'O' | 'o' ) ( 'R' | 'r' ) ; @@ -258,6 +264,7 @@ oC_Statement | iC_CreateRole | iC_CreateNodeTable | iC_CreateRelTable + | iC_CreateIndex | iC_CreateSequence | iC_CreateType | iC_Drop @@ -362,6 +369,22 @@ iC_CreateRelTable | ')' SP AS SP oC_Query ) ( SP WITH SP? '(' SP? iC_Options SP? ')')? ; +iC_CreateIndex + : CREATE (SP oC_SymbolicName)? SP INDEX (SP oC_SchemaName)? (SP iC_IfNotExists)? SP FOR SP iC_IndexPattern SP ON SP iC_IndexPropertyPattern (SP OPTIONS SP? '{' SP? iC_Options? SP? '}')? ; + +iC_IndexPattern + : iC_IndexNodePattern + | iC_IndexRelationshipPattern ; + +iC_IndexNodePattern + : '(' SP? oC_Variable? SP? ':' SP? oC_LabelName SP? ')' ; + +iC_IndexRelationshipPattern + : '(' SP? ')' SP? oC_RelationshipPattern SP? '(' SP? ')' ; + +iC_IndexPropertyPattern + : '(' SP? oC_Variable SP? '.' SP? oC_PropertyKeyName SP? ')' ; + iC_FromToConnections : iC_FromToConnection ( SP? ',' SP? iC_FromToConnection )* ; diff --git a/scripts/antlr4/hash.md5 b/scripts/antlr4/hash.md5 index 81ce1f6187..35bab9e9f5 100644 --- a/scripts/antlr4/hash.md5 +++ b/scripts/antlr4/hash.md5 @@ -1 +1 @@ -c7d54b4e1928e025019b1328811a8c04 +8988f28d4f569c88df6df4783174efb9 diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index 7c965fde00..3638a6d40e 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -11,6 +11,7 @@ oC_Statement | iC_CreateRole | iC_CreateNodeTable | iC_CreateRelTable + | iC_CreateIndex | iC_CreateSequence | iC_CreateType | iC_Drop @@ -115,6 +116,22 @@ iC_CreateRelTable | ')' SP AS SP oC_Query ) ( SP WITH SP? '(' SP? iC_Options SP? ')')? ; +iC_CreateIndex + : CREATE (SP oC_SymbolicName)? SP INDEX (SP oC_SchemaName)? (SP iC_IfNotExists)? SP FOR SP iC_IndexPattern SP ON SP iC_IndexPropertyPattern (SP OPTIONS SP? '{' SP? iC_Options? SP? '}')? ; + +iC_IndexPattern + : iC_IndexNodePattern + | iC_IndexRelationshipPattern ; + +iC_IndexNodePattern + : '(' SP? oC_Variable? SP? ':' SP? oC_LabelName SP? ')' ; + +iC_IndexRelationshipPattern + : '(' SP? ')' SP? oC_RelationshipPattern SP? '(' SP? ')' ; + +iC_IndexPropertyPattern + : '(' SP? oC_Variable SP? '.' SP? oC_PropertyKeyName SP? ')' ; + iC_FromToConnections : iC_FromToConnection ( SP? ',' SP? iC_FromToConnection )* ; diff --git a/src/antlr4/keywords.txt b/src/antlr4/keywords.txt index 563f123f3c..1516403cd0 100644 --- a/src/antlr4/keywords.txt +++ b/src/antlr4/keywords.txt @@ -42,12 +42,14 @@ EXTENSION FALSE FROM FORCE +FOR GLOB GRAPH GROUP HEADERS HINT IMPORT +INDEX IF IN INCREMENT @@ -71,6 +73,7 @@ NONE NULL ON ONLY +OPTIONS OPTIONAL OR ORDER diff --git a/src/binder/bind/bind_ddl.cpp b/src/binder/bind/bind_ddl.cpp index 30c8413be4..9c4c702791 100644 --- a/src/binder/bind/bind_ddl.cpp +++ b/src/binder/bind/bind_ddl.cpp @@ -2,6 +2,7 @@ #include "binder/binder.h" #include "binder/ddl/bound_alter.h" +#include "binder/ddl/bound_create_index.h" #include "binder/ddl/bound_create_sequence.h" #include "binder/ddl/bound_create_table.h" #include "binder/ddl/bound_create_type.h" @@ -13,6 +14,7 @@ #include "common/enums/extend_direction_util.h" #include "common/exception/binder.h" #include "common/exception/message.h" +#include "common/string_utils.h" #include "common/system_config.h" #include "common/types/types.h" #include "function/cast/functions/cast_from_string_functions.h" @@ -21,6 +23,7 @@ #include "main/client_context.h" #include "main/database_manager.h" #include "parser/ddl/alter.h" +#include "parser/ddl/create_index.h" #include "parser/ddl/create_sequence.h" #include "parser/ddl/create_table.h" #include "parser/ddl/create_table_info.h" @@ -28,6 +31,8 @@ #include "parser/ddl/drop.h" #include "parser/expression/parsed_function_expression.h" #include "parser/expression/parsed_literal_expression.h" +#include "storage/index/hash_index.h" +#include "storage/storage_manager.h" #include "transaction/transaction.h" #include @@ -38,6 +43,10 @@ using namespace lbug::catalog; namespace lbug { namespace binder { +std::string BoundCreateIndexInfo::toString() const { + return std::format("{} INDEX {} ON {}({})", indexType, indexName, tableName, propertyName); +} + static void validatePropertyName(const std::vector& definitions) { case_insensitve_set_t nameSet; for (auto& definition : definitions) { @@ -340,6 +349,46 @@ std::unique_ptr Binder::bindCreateTable(const Statement& stateme BoundStatementResult::createSingleStringColumnResult()); } +std::unique_ptr Binder::bindCreateIndex(const Statement& statement) { + auto& createIndex = statement.constCast(); + auto& info = createIndex.getInfo(); + auto indexType = info.indexType; + StringUtils::toUpper(indexType); + auto indexTypeOptional = storage::StorageManager::Get(*clientContext)->getIndexType(indexType); + if (!indexTypeOptional.has_value()) { + throw BinderException(std::format("Index type {} does not exist.", info.indexType)); + } + if (indexType != storage::PrimaryKeyIndex::getIndexType().typeName) { + throw BinderException(std::format("Only HASH indexes are supported by CREATE INDEX.")); + } + auto catalog = Catalog::Get(*clientContext); + auto transaction = transaction::Transaction::Get(*clientContext); + validateTableExistence(*clientContext, info.tableName); + auto tableEntry = catalog->getTableCatalogEntry(transaction, info.tableName); + validateNodeTableType(tableEntry); + validateColumnExistence(tableEntry, info.propertyName); + auto nodeTableEntry = tableEntry->ptrCast(); + if (!StringUtils::caseInsensitiveEquals(nodeTableEntry->getPrimaryKeyName(), + info.propertyName)) { + throw BinderException("HASH indexes are currently supported only on node primary keys."); + } + auto boundOptions = bindParsingOptions(info.options); + if (!boundOptions.empty()) { + throw BinderException("CREATE HASH INDEX does not support OPTIONS."); + } + auto& property = tableEntry->getProperty(info.propertyName); + std::vector propertyDefinitions; + propertyDefinitions.push_back(property.copy()); + validatePrimaryKey(property.getName(), propertyDefinitions); + auto indexName = info.indexName.empty() ? std::string(storage::PrimaryKeyIndex::DEFAULT_NAME) : + info.indexName; + BoundCreateIndexInfo boundInfo{indexType, std::move(indexName), info.tableName, + tableEntry->getTableID(), property.getName(), tableEntry->getPropertyID(property.getName()), + tableEntry->getColumnID(property.getName()), property.getType().getPhysicalType(), + info.onConflict}; + return std::make_unique(std::move(boundInfo)); +} + std::unique_ptr Binder::bindCreateTableAs(const Statement& statement) { auto& createTable = statement.constCast(); auto boundInnerQuery = bindQuery(*createTable.getSource()->statement.get()); diff --git a/src/binder/binder.cpp b/src/binder/binder.cpp index 31f29a7e78..2932036e12 100644 --- a/src/binder/binder.cpp +++ b/src/binder/binder.cpp @@ -30,6 +30,9 @@ std::unique_ptr Binder::bind(const Statement& statement) { case StatementType::CREATE_TABLE: { boundStatement = bindCreateTable(statement); } break; + case StatementType::CREATE_INDEX: { + boundStatement = bindCreateIndex(statement); + } break; case StatementType::CREATE_TYPE: { boundStatement = bindCreateType(statement); } break; diff --git a/src/binder/bound_statement_visitor.cpp b/src/binder/bound_statement_visitor.cpp index ad71906f13..9f4572df19 100644 --- a/src/binder/bound_statement_visitor.cpp +++ b/src/binder/bound_statement_visitor.cpp @@ -25,6 +25,9 @@ void BoundStatementVisitor::visit(const BoundStatement& statement) { case StatementType::CREATE_TABLE: { visitCreateTable(statement); } break; + case StatementType::CREATE_INDEX: { + visitCreateIndex(statement); + } break; case StatementType::CREATE_TYPE: { visitCreateType(statement); } break; diff --git a/src/catalog/catalog_entry/index_catalog_entry.cpp b/src/catalog/catalog_entry/index_catalog_entry.cpp index fdcefd912b..9170b12288 100644 --- a/src/catalog/catalog_entry/index_catalog_entry.cpp +++ b/src/catalog/catalog_entry/index_catalog_entry.cpp @@ -1,7 +1,10 @@ #include "catalog/catalog_entry/index_catalog_entry.h" +#include "catalog/catalog.h" +#include "catalog/catalog_entry/table_catalog_entry.h" #include "common/exception/runtime.h" #include "common/serializer/buffer_writer.h" +#include "transaction/transaction.h" #include namespace lbug { @@ -17,6 +20,21 @@ void IndexCatalogEntry::setAuxInfo(std::unique_ptr auxInfo_) { auxBufferSize = 0; } +std::string BuiltinIndexAuxInfo::toCypher(const IndexCatalogEntry& indexEntry, + const ToCypherInfo& info) const { + auto& indexInfo = common::dynamic_cast_checked(info); + auto catalog = Catalog::Get(*indexInfo.context); + auto transaction = transaction::Transaction::Get(*indexInfo.context); + auto tableEntry = catalog->getTableCatalogEntry(transaction, indexEntry.getTableID()); + const auto propertyIDs = indexEntry.getPropertyIDs(); + if (propertyIDs.empty()) { + return ""; + } + auto propertyName = tableEntry->getProperty(propertyIDs[0]).getName(); + return std::format("CREATE {} INDEX `{}` FOR (n:`{}`) ON (n.`{}`);", indexEntry.getIndexType(), + indexEntry.getIndexName(), tableEntry->getName(), propertyName); +} + bool IndexCatalogEntry::containsPropertyID(common::property_id_t propertyID) const { for (auto id : propertyIDs) { if (id == propertyID) { diff --git a/src/include/binder/binder.h b/src/include/binder/binder.h index 831f3413fa..eb7ca59cd2 100644 --- a/src/include/binder/binder.h +++ b/src/include/binder/binder.h @@ -26,6 +26,7 @@ class ReadingClause; class QueryPart; class SingleQuery; struct CreateTableInfo; +struct CreateIndexInfo; struct BaseScanSource; struct JoinHintNode; class Statement; @@ -100,6 +101,7 @@ class Binder { BoundCreateTableInfo bindCreateRelTableGroupInfo(const parser::CreateTableInfo* info); std::unique_ptr bindCreateTable(const parser::Statement& statement); std::unique_ptr bindCreateTableAs(const parser::Statement& createTable); + std::unique_ptr bindCreateIndex(const parser::Statement& statement); std::unique_ptr bindCreateType(const parser::Statement& statement) const; std::unique_ptr bindCreateSequence(const parser::Statement& statement) const; diff --git a/src/include/binder/bound_statement_visitor.h b/src/include/binder/bound_statement_visitor.h index 565ebff5e0..492e73ad89 100644 --- a/src/include/binder/bound_statement_visitor.h +++ b/src/include/binder/bound_statement_visitor.h @@ -21,6 +21,7 @@ class LBUG_API BoundStatementVisitor { protected: virtual void visitCreateSequence(const BoundStatement&) {} virtual void visitCreateTable(const BoundStatement&) {} + virtual void visitCreateIndex(const BoundStatement&) {} virtual void visitDrop(const BoundStatement&) {} virtual void visitCreateType(const BoundStatement&) {} virtual void visitAlter(const BoundStatement&) {} diff --git a/src/include/binder/ddl/bound_create_index.h b/src/include/binder/ddl/bound_create_index.h new file mode 100644 index 0000000000..0ec5b5ca74 --- /dev/null +++ b/src/include/binder/ddl/bound_create_index.h @@ -0,0 +1,41 @@ +#pragma once + +#include "binder/bound_statement.h" +#include "common/enums/conflict_action.h" +#include "common/types/types.h" + +namespace lbug { +namespace binder { + +struct BoundCreateIndexInfo { + std::string indexType; + std::string indexName; + std::string tableName; + common::table_id_t tableID; + std::string propertyName; + common::property_id_t propertyID; + common::column_id_t columnID; + common::PhysicalTypeID keyDataType; + common::ConflictAction onConflict; + + BoundCreateIndexInfo copy() const { return *this; } + + std::string toString() const; +}; + +class BoundCreateIndex final : public BoundStatement { + static constexpr common::StatementType type_ = common::StatementType::CREATE_INDEX; + +public: + explicit BoundCreateIndex(BoundCreateIndexInfo info) + : BoundStatement{type_, BoundStatementResult::createSingleStringColumnResult()}, + info{std::move(info)} {} + + const BoundCreateIndexInfo& getInfo() const { return info; } + +private: + BoundCreateIndexInfo info; +}; + +} // namespace binder +} // namespace lbug diff --git a/src/include/catalog/catalog_entry/index_catalog_entry.h b/src/include/catalog/catalog_entry/index_catalog_entry.h index 3df2e90e1c..2f6f6c25d7 100644 --- a/src/include/catalog/catalog_entry/index_catalog_entry.h +++ b/src/include/catalog/catalog_entry/index_catalog_entry.h @@ -48,6 +48,15 @@ struct LBUG_API IndexAuxInfo { } }; +struct LBUG_API BuiltinIndexAuxInfo final : IndexAuxInfo { + std::unique_ptr copy() override { + return std::make_unique(); + } + + std::string toCypher(const IndexCatalogEntry& indexEntry, + const ToCypherInfo& info) const override; +}; + class LBUG_API IndexCatalogEntry final : public CatalogEntry { public: static std::string getInternalIndexName(common::table_id_t tableID, std::string indexName) { diff --git a/src/include/common/enums/statement_type.h b/src/include/common/enums/statement_type.h index 0f890dc853..cb2c789aba 100644 --- a/src/include/common/enums/statement_type.h +++ b/src/include/common/enums/statement_type.h @@ -24,6 +24,7 @@ enum class StatementType : uint8_t { DETACH_DATABASE = 35, USE_DATABASE = 36, CREATE_SEQUENCE = 37, + CREATE_INDEX = 38, CREATE_TYPE = 39, EXTENSION_CLAUSE = 40, CREATE_GRAPH = 41, diff --git a/src/include/parser/ddl/create_index.h b/src/include/parser/ddl/create_index.h new file mode 100644 index 0000000000..4e8f2539ea --- /dev/null +++ b/src/include/parser/ddl/create_index.h @@ -0,0 +1,41 @@ +#pragma once + +#include "common/enums/conflict_action.h" +#include "parser/expression/parsed_expression.h" +#include "parser/statement.h" + +namespace lbug { +namespace parser { + +struct CreateIndexInfo { + std::string indexType; + std::string indexName; + std::string tableName; + std::string variableName; + std::string propertyName; + common::ConflictAction onConflict; + options_t options; + + CreateIndexInfo(std::string indexType, std::string indexName, std::string tableName, + std::string variableName, std::string propertyName, common::ConflictAction onConflict, + options_t options) + : indexType{std::move(indexType)}, indexName{std::move(indexName)}, + tableName{std::move(tableName)}, variableName{std::move(variableName)}, + propertyName{std::move(propertyName)}, onConflict{onConflict}, + options{std::move(options)} {} +}; + +class CreateIndex final : public Statement { + static constexpr common::StatementType type_ = common::StatementType::CREATE_INDEX; + +public: + explicit CreateIndex(CreateIndexInfo info) : Statement{type_}, info{std::move(info)} {} + + const CreateIndexInfo& getInfo() const { return info; } + +private: + CreateIndexInfo info; +}; + +} // namespace parser +} // namespace lbug diff --git a/src/include/parser/parsed_statement_visitor.h b/src/include/parser/parsed_statement_visitor.h index 381b8d8953..76cea60771 100644 --- a/src/include/parser/parsed_statement_visitor.h +++ b/src/include/parser/parsed_statement_visitor.h @@ -43,6 +43,7 @@ class StatementVisitor { virtual void visitCreateSequence(const Statement& /*statement*/) {} virtual void visitDrop(const Statement& /*statement*/) {} virtual void visitCreateTable(const Statement& /*statement*/) {} + virtual void visitCreateIndex(const Statement& /*statement*/) {} virtual void visitCreateType(const Statement& /*statement*/) {} virtual void visitAlter(const Statement& /*statement*/) {} virtual void visitCopyFrom(const Statement& /*statement*/) {} diff --git a/src/include/parser/transformer.h b/src/include/parser/transformer.h index 94a1a66778..aa25edaf0d 100644 --- a/src/include/parser/transformer.h +++ b/src/include/parser/transformer.h @@ -206,6 +206,7 @@ class Transformer { std::unique_ptr transformCreateNodeTable( CypherParser::IC_CreateNodeTableContext& ctx); std::unique_ptr transformCreateRelGroup(CypherParser::IC_CreateRelTableContext& ctx); + std::unique_ptr transformCreateIndex(CypherParser::IC_CreateIndexContext& ctx); std::unique_ptr transformCreateSequence(CypherParser::IC_CreateSequenceContext& ctx); std::unique_ptr transformCreateType(CypherParser::IC_CreateTypeContext& ctx); std::unique_ptr transformDrop(CypherParser::IC_DropContext& ctx); diff --git a/src/include/parser/visitor/statement_read_write_analyzer.h b/src/include/parser/visitor/statement_read_write_analyzer.h index 4a63d8ea79..4d5183aeeb 100644 --- a/src/include/parser/visitor/statement_read_write_analyzer.h +++ b/src/include/parser/visitor/statement_read_write_analyzer.h @@ -17,6 +17,7 @@ class StatementReadWriteAnalyzer final : public StatementVisitor { void visitCreateSequence(const Statement& /*statement*/) override { readOnly = false; } void visitDrop(const Statement& /*statement*/) override { readOnly = false; } void visitCreateTable(const Statement& /*statement*/) override { readOnly = false; } + void visitCreateIndex(const Statement& /*statement*/) override { readOnly = false; } void visitCreateType(const Statement& /*statement*/) override { readOnly = false; } void visitAlter(const Statement& /*statement*/) override { readOnly = false; } void visitCopyFrom(const Statement& /*statement*/) override { readOnly = false; } diff --git a/src/include/planner/operator/ddl/logical_create_index.h b/src/include/planner/operator/ddl/logical_create_index.h new file mode 100644 index 0000000000..1cb6bccf78 --- /dev/null +++ b/src/include/planner/operator/ddl/logical_create_index.h @@ -0,0 +1,46 @@ +#pragma once + +#include "binder/ddl/bound_create_index.h" +#include "planner/operator/simple/logical_simple.h" + +namespace lbug { +namespace planner { + +struct LogicalCreateIndexPrintInfo final : OPPrintInfo { + binder::BoundCreateIndexInfo info; + + explicit LogicalCreateIndexPrintInfo(binder::BoundCreateIndexInfo info) + : info{std::move(info)} {} + + std::string toString() const override { return info.toString(); } + + std::unique_ptr copy() const override { + return std::make_unique(*this); + } +}; + +class LogicalCreateIndex final : public LogicalSimple { + static constexpr LogicalOperatorType type_ = LogicalOperatorType::CREATE_INDEX; + +public: + explicit LogicalCreateIndex(binder::BoundCreateIndexInfo info) + : LogicalSimple{type_}, info{std::move(info)} {} + + std::string getExpressionsForPrinting() const override { return info.indexName; } + + const binder::BoundCreateIndexInfo* getInfo() const { return &info; } + + std::unique_ptr getPrintInfo() const override { + return std::make_unique(info.copy()); + } + + std::unique_ptr copy() override { + return std::make_unique(info.copy()); + } + +private: + binder::BoundCreateIndexInfo info; +}; + +} // namespace planner +} // namespace lbug diff --git a/src/include/planner/operator/logical_operator.h b/src/include/planner/operator/logical_operator.h index 00ed2ec280..44f385f8ab 100644 --- a/src/include/planner/operator/logical_operator.h +++ b/src/include/planner/operator/logical_operator.h @@ -19,6 +19,7 @@ enum class LogicalOperatorType : uint8_t { COPY_TO, COUNT_REL_TABLE, CREATE_GRAPH, + CREATE_INDEX, CREATE_MACRO, CREATE_SEQUENCE, CREATE_TABLE, diff --git a/src/include/planner/planner.h b/src/include/planner/planner.h index f9879a7ca9..d0ae3fcd12 100644 --- a/src/include/planner/planner.h +++ b/src/include/planner/planner.h @@ -73,6 +73,7 @@ class LBUG_API Planner { // Plan simple statement. LogicalPlan planCreateTable(const binder::BoundStatement& statement); + LogicalPlan planCreateIndex(const binder::BoundStatement& statement); LogicalPlan planCreateType(const binder::BoundStatement& statement); LogicalPlan planCreateSequence(const binder::BoundStatement& statement); LogicalPlan planCreateMacro(const binder::BoundStatement& statement); diff --git a/src/include/processor/operator/ddl/create_index.h b/src/include/processor/operator/ddl/create_index.h new file mode 100644 index 0000000000..f7b9679360 --- /dev/null +++ b/src/include/processor/operator/ddl/create_index.h @@ -0,0 +1,29 @@ +#pragma once + +#include "binder/ddl/bound_create_index.h" +#include "processor/operator/sink.h" + +namespace lbug { +namespace processor { + +class CreateIndex final : public SimpleSink { + static constexpr PhysicalOperatorType type_ = PhysicalOperatorType::CREATE_INDEX; + +public: + CreateIndex(binder::BoundCreateIndexInfo info, std::shared_ptr messageTable, + physical_op_id id, std::unique_ptr printInfo) + : SimpleSink{type_, std::move(messageTable), id, std::move(printInfo)}, + info{std::move(info)} {} + + void executeInternal(ExecutionContext* context) override; + + std::unique_ptr copy() override { + return std::make_unique(info.copy(), messageTable, id, printInfo->copy()); + } + +private: + binder::BoundCreateIndexInfo info; +}; + +} // namespace processor +} // namespace lbug diff --git a/src/include/processor/operator/physical_operator.h b/src/include/processor/operator/physical_operator.h index b3a95281d4..13b4b1c6c9 100644 --- a/src/include/processor/operator/physical_operator.h +++ b/src/include/processor/operator/physical_operator.h @@ -24,6 +24,7 @@ enum class PhysicalOperatorType : uint8_t { COPY_TO, COUNT_REL_TABLE, CREATE_GRAPH, + CREATE_INDEX, CREATE_MACRO, CREATE_SEQUENCE, CREATE_TABLE, diff --git a/src/include/processor/plan_mapper.h b/src/include/processor/plan_mapper.h index f2ea9d67bf..6f5b7603d8 100644 --- a/src/include/processor/plan_mapper.h +++ b/src/include/processor/plan_mapper.h @@ -98,6 +98,8 @@ class PlanMapper { const planner::LogicalOperator* logicalOperator); std::unique_ptr mapCreateTable( const planner::LogicalOperator* logicalOperator); + std::unique_ptr mapCreateIndex( + const planner::LogicalOperator* logicalOperator); std::unique_ptr mapCreateType( const planner::LogicalOperator* logicalOperator); std::unique_ptr mapCrossProduct( diff --git a/src/include/storage/table/node_table.h b/src/include/storage/table/node_table.h index 87c2c0fbf0..7e6c9c88b8 100644 --- a/src/include/storage/table/node_table.h +++ b/src/include/storage/table/node_table.h @@ -92,6 +92,7 @@ struct IndexScanHelper { NodeTable* table; Index* index; + common::node_group_idx_t currentNodeGroupIdx = common::INVALID_NODE_GROUP_IDX; }; class NodeTableVersionRecordHandler final : public VersionRecordHandler { @@ -155,6 +156,7 @@ class LBUG_API NodeTable : public Table { common::ValueVector* keyVector, uint64_t vectorPos, common::offset_t& result) const; void addIndex(std::unique_ptr index); + void buildIndexAndAdd(main::ClientContext* context, std::unique_ptr index); void dropIndex(const std::string& name); common::column_id_t getPKColumnID() const { return pkColumnID; } diff --git a/src/parser/parsed_statement_visitor.cpp b/src/parser/parsed_statement_visitor.cpp index 1e32710dd2..c1331fd8b4 100644 --- a/src/parser/parsed_statement_visitor.cpp +++ b/src/parser/parsed_statement_visitor.cpp @@ -23,6 +23,9 @@ void StatementVisitor::visit(const Statement& statement) { case StatementType::CREATE_TABLE: { visitCreateTable(statement); } break; + case StatementType::CREATE_INDEX: { + visitCreateIndex(statement); + } break; case StatementType::CREATE_TYPE: { visitCreateType(statement); } break; diff --git a/src/parser/transform/transform_ddl.cpp b/src/parser/transform/transform_ddl.cpp index e501351a94..3b594eece2 100644 --- a/src/parser/transform/transform_ddl.cpp +++ b/src/parser/transform/transform_ddl.cpp @@ -1,5 +1,6 @@ #include "common/exception/parser.h" #include "parser/ddl/alter.h" +#include "parser/ddl/create_index.h" #include "parser/ddl/create_sequence.h" #include "parser/ddl/create_table.h" #include "parser/ddl/create_type.h" @@ -126,6 +127,44 @@ std::unique_ptr Transformer::transformCreateRelGroup( } } +std::unique_ptr Transformer::transformCreateIndex( + CypherParser::IC_CreateIndexContext& ctx) { + auto indexType = std::string("HASH"); + if (ctx.oC_SymbolicName()) { + indexType = transformSymbolicName(*ctx.oC_SymbolicName()); + } + auto indexName = std::string(); + if (ctx.oC_SchemaName()) { + indexName = transformSchemaName(*ctx.oC_SchemaName()); + } + const auto indexPattern = ctx.iC_IndexPattern(); + if (indexPattern->iC_IndexRelationshipPattern()) { + throw ParserException("CREATE INDEX on relationship patterns is not supported yet."); + } + const auto nodePattern = indexPattern->iC_IndexNodePattern(); + auto variableName = std::string(); + if (nodePattern->oC_Variable()) { + variableName = transformVariable(*nodePattern->oC_Variable()); + } + auto tableName = transformLabelName(*nodePattern->oC_LabelName()); + const auto propertyPattern = ctx.iC_IndexPropertyPattern(); + auto propertyVariable = transformVariable(*propertyPattern->oC_Variable()); + if (!variableName.empty() && variableName != propertyVariable) { + throw ParserException("Index property pattern variable must match the indexed pattern."); + } + if (variableName.empty()) { + variableName = std::move(propertyVariable); + } + auto propertyName = transformPropertyKeyName(*propertyPattern->oC_PropertyKeyName()); + options_t options; + if (ctx.iC_Options()) { + options = transformOptions(*ctx.iC_Options()); + } + return std::make_unique(CreateIndexInfo{std::move(indexType), std::move(indexName), + std::move(tableName), std::move(variableName), std::move(propertyName), + transformConflictAction(ctx.iC_IfNotExists()), std::move(options)}); +} + std::unique_ptr Transformer::transformCreateSequence( CypherParser::IC_CreateSequenceContext& ctx) { auto sequenceName = transformSchemaName(*ctx.oC_SchemaName()); diff --git a/src/parser/transformer.cpp b/src/parser/transformer.cpp index 664bee285f..2357cf1a72 100644 --- a/src/parser/transformer.cpp +++ b/src/parser/transformer.cpp @@ -41,6 +41,8 @@ std::unique_ptr Transformer::transformStatement(CypherParser::OC_Stat return transformCreateNodeTable(*ctx.iC_CreateNodeTable()); } else if (ctx.iC_CreateRelTable()) { return transformCreateRelGroup(*ctx.iC_CreateRelTable()); + } else if (ctx.iC_CreateIndex()) { + return transformCreateIndex(*ctx.iC_CreateIndex()); } else if (ctx.iC_CreateSequence()) { return transformCreateSequence(*ctx.iC_CreateSequence()); } else if (ctx.iC_CreateType()) { diff --git a/src/planner/operator/logical_operator.cpp b/src/planner/operator/logical_operator.cpp index 29ffa23c30..f6fc0e39e2 100644 --- a/src/planner/operator/logical_operator.cpp +++ b/src/planner/operator/logical_operator.cpp @@ -26,6 +26,8 @@ std::string LogicalOperatorUtils::logicalOperatorTypeToString(LogicalOperatorTyp return "COUNT_REL_TABLE"; case LogicalOperatorType::CREATE_MACRO: return "CREATE_MACRO"; + case LogicalOperatorType::CREATE_INDEX: + return "CREATE_INDEX"; case LogicalOperatorType::CREATE_SEQUENCE: return "CREATE_SEQUENCE"; case LogicalOperatorType::CREATE_TABLE: diff --git a/src/planner/plan/append_simple.cpp b/src/planner/plan/append_simple.cpp index ca90556444..98e8f87a11 100644 --- a/src/planner/plan/append_simple.cpp +++ b/src/planner/plan/append_simple.cpp @@ -9,12 +9,14 @@ #include "binder/bound_transaction_statement.h" #include "binder/bound_use_database.h" #include "binder/ddl/bound_alter.h" +#include "binder/ddl/bound_create_index.h" #include "binder/ddl/bound_create_sequence.h" #include "binder/ddl/bound_create_table.h" #include "binder/ddl/bound_create_type.h" #include "binder/ddl/bound_drop.h" #include "extension/planner_extension.h" #include "planner/operator/ddl/logical_alter.h" +#include "planner/operator/ddl/logical_create_index.h" #include "planner/operator/ddl/logical_create_sequence.h" #include "planner/operator/ddl/logical_create_table.h" #include "planner/operator/ddl/logical_create_type.h" @@ -71,6 +73,12 @@ LogicalPlan Planner::planCreateTable(const BoundStatement& statement) { return getSimplePlan(std::move(op)); } +LogicalPlan Planner::planCreateIndex(const BoundStatement& statement) { + auto& createIndex = statement.constCast(); + auto op = std::make_shared(createIndex.getInfo().copy()); + return getSimplePlan(std::move(op)); +} + LogicalPlan Planner::planCreateType(const BoundStatement& statement) { auto& createType = statement.constCast(); auto op = diff --git a/src/planner/planner.cpp b/src/planner/planner.cpp index a73b0cb19b..7b0c25fe7f 100644 --- a/src/planner/planner.cpp +++ b/src/planner/planner.cpp @@ -66,6 +66,9 @@ LogicalPlan Planner::planStatement(const BoundStatement& statement) { case StatementType::CREATE_TABLE: { return planCreateTable(statement); } + case StatementType::CREATE_INDEX: { + return planCreateIndex(statement); + } case StatementType::CREATE_SEQUENCE: { return planCreateSequence(statement); } diff --git a/src/processor/map/map_ddl.cpp b/src/processor/map/map_ddl.cpp index a1a8d50a92..9493775123 100644 --- a/src/processor/map/map_ddl.cpp +++ b/src/processor/map/map_ddl.cpp @@ -1,10 +1,12 @@ #include "planner/operator/ddl/logical_alter.h" +#include "planner/operator/ddl/logical_create_index.h" #include "planner/operator/ddl/logical_create_sequence.h" #include "planner/operator/ddl/logical_create_table.h" #include "planner/operator/ddl/logical_create_type.h" #include "planner/operator/ddl/logical_drop.h" #include "processor/expression_mapper.h" #include "processor/operator/ddl/alter.h" +#include "processor/operator/ddl/create_index.h" #include "processor/operator/ddl/create_sequence.h" #include "processor/operator/ddl/create_table.h" #include "processor/operator/ddl/create_type.h" @@ -31,6 +33,16 @@ std::unique_ptr PlanMapper::mapCreateTable( getOperatorID(), std::move(printInfo)); } +std::unique_ptr PlanMapper::mapCreateIndex( + const LogicalOperator* logicalOperator) { + auto& createIndex = logicalOperator->constCast(); + auto printInfo = std::make_unique(createIndex.getInfo()->copy()); + auto messageTable = FactorizedTableUtils::getSingleStringColumnFTable( + storage::MemoryManager::Get(*clientContext)); + return std::make_unique(createIndex.getInfo()->copy(), std::move(messageTable), + getOperatorID(), std::move(printInfo)); +} + std::unique_ptr PlanMapper::mapCreateType( const LogicalOperator* logicalOperator) { auto& createType = logicalOperator->constCast(); diff --git a/src/processor/map/plan_mapper.cpp b/src/processor/map/plan_mapper.cpp index f44b05805b..d0cf47775c 100644 --- a/src/processor/map/plan_mapper.cpp +++ b/src/processor/map/plan_mapper.cpp @@ -74,6 +74,9 @@ std::unique_ptr PlanMapper::mapOperator(const LogicalOperator* case LogicalOperatorType::CREATE_TABLE: { physicalOperator = mapCreateTable(logicalOperator); } break; + case LogicalOperatorType::CREATE_INDEX: { + physicalOperator = mapCreateIndex(logicalOperator); + } break; case LogicalOperatorType::CREATE_TYPE: { physicalOperator = mapCreateType(logicalOperator); } break; diff --git a/src/processor/operator/ddl/CMakeLists.txt b/src/processor/operator/ddl/CMakeLists.txt index 846d152fa6..f7cc0052d5 100644 --- a/src/processor/operator/ddl/CMakeLists.txt +++ b/src/processor/operator/ddl/CMakeLists.txt @@ -1,6 +1,7 @@ add_library(lbug_processor_operator_ddl OBJECT alter.cpp + create_index.cpp create_table.cpp create_type.cpp drop.cpp diff --git a/src/processor/operator/ddl/create_index.cpp b/src/processor/operator/ddl/create_index.cpp new file mode 100644 index 0000000000..c2848d9266 --- /dev/null +++ b/src/processor/operator/ddl/create_index.cpp @@ -0,0 +1,57 @@ +#include "processor/operator/ddl/create_index.h" + +#include "catalog/catalog.h" +#include "catalog/catalog_entry/index_catalog_entry.h" +#include "common/exception/binder.h" +#include "processor/execution_context.h" +#include "storage/index/hash_index.h" +#include "storage/storage_manager.h" +#include "storage/table/node_table.h" +#include + +using namespace lbug::catalog; +using namespace lbug::common; + +namespace lbug { +namespace processor { + +void CreateIndex::executeInternal(ExecutionContext* context) { + auto clientContext = context->clientContext; + auto catalog = Catalog::Get(*clientContext); + auto transaction = transaction::Transaction::Get(*clientContext); + auto memoryManager = storage::MemoryManager::Get(*clientContext); + auto storageManager = storage::StorageManager::Get(*clientContext); + const auto indexExists = catalog->containsIndex(transaction, info.tableID, info.indexName) || + catalog->containsIndex(transaction, info.tableID, info.propertyID); + auto* table = storageManager->getTable(info.tableID)->ptrCast(); + const auto storageIndexExists = + table->getIndex(info.indexName).has_value() || table->tryGetPKIndex() != nullptr; + if (indexExists || storageIndexExists) { + switch (info.onConflict) { + case ConflictAction::ON_CONFLICT_DO_NOTHING: { + appendMessage(std::format("Index {} already exists.", info.indexName), memoryManager); + return; + } + case ConflictAction::ON_CONFLICT_THROW: { + throw BinderException(info.indexName + " already exists in catalog."); + } + default: + UNREACHABLE_CODE; + } + } + auto indexType = storage::PrimaryKeyIndex::getIndexType(); + storage::IndexInfo indexInfo{info.indexName, indexType.typeName, info.tableID, {info.columnID}, + {info.keyDataType}, indexType.constraintType == storage::IndexConstraintType::PRIMARY, + indexType.definitionType == storage::IndexDefinitionType::BUILTIN}; + auto index = storage::PrimaryKeyIndex::createNewIndex(std::move(indexInfo), + storageManager->isInMemory(), *memoryManager, + *storageManager->getDataFH()->getPageManager(), &storageManager->getShadowFile()); + table->buildIndexAndAdd(clientContext, std::move(index)); + catalog->createIndex(transaction, + std::make_unique(info.indexType, info.tableID, info.indexName, + std::vector{info.propertyID}, std::make_unique())); + appendMessage(std::format("Index {} has been created.", info.indexName), memoryManager); +} + +} // namespace processor +} // namespace lbug diff --git a/src/processor/operator/ddl/drop.cpp b/src/processor/operator/ddl/drop.cpp index 6206cbf1ed..3c48f0c850 100644 --- a/src/processor/operator/ddl/drop.cpp +++ b/src/processor/operator/ddl/drop.cpp @@ -84,6 +84,9 @@ void Drop::dropTable(const main::ClientContext* context) { case CatalogEntryType::NODE_TABLE_ENTRY: { for (auto& indexEntry : catalog->getIndexEntries(transaction)) { if (indexEntry->getTableID() == entry->getTableID()) { + if (StringUtils::caseInsensitiveEquals(indexEntry->getIndexType(), "HASH")) { + continue; + } throw BinderException( std::format("Cannot delete node table {} because it is referenced by index {}.", entry->getName(), indexEntry->getIndexName())); diff --git a/src/processor/operator/physical_operator.cpp b/src/processor/operator/physical_operator.cpp index 9192e69b3e..6ca6f67105 100644 --- a/src/processor/operator/physical_operator.cpp +++ b/src/processor/operator/physical_operator.cpp @@ -31,6 +31,8 @@ std::string PhysicalOperatorUtils::operatorTypeToString(PhysicalOperatorType ope return "COUNT_REL_TABLE"; case PhysicalOperatorType::CREATE_MACRO: return "CREATE_MACRO"; + case PhysicalOperatorType::CREATE_INDEX: + return "CREATE_INDEX"; case PhysicalOperatorType::CREATE_SEQUENCE: return "CREATE_SEQUENCE"; case PhysicalOperatorType::CREATE_TABLE: diff --git a/src/storage/table/node_table.cpp b/src/storage/table/node_table.cpp index 9c43bc9356..85e80cc5bb 100644 --- a/src/storage/table/node_table.cpp +++ b/src/storage/table/node_table.cpp @@ -123,6 +123,22 @@ struct RollbackPKDeleter final : IndexScanHelper { std::unique_ptr semiMask; }; +struct CommittedIndexInserter final : IndexScanHelper { + CommittedIndexInserter(NodeTable* table, Index* index, visible_func isVisible) + : IndexScanHelper(table, index), nodeIDVector(LogicalType::INTERNAL_ID()), + isVisible(std::move(isVisible)) {} + + std::unique_ptr initScanState(const Transaction* transaction, + DataChunk& dataChunk) override; + + bool processScanOutput(main::ClientContext* context, NodeGroupScanResult scanResult, + const std::vector& scannedVectors) override; + + ValueVector nodeIDVector; + visible_func isVisible; + std::unique_ptr insertState; +}; + std::unique_ptr UncommittedIndexInserter::initScanState( const Transaction* transaction, DataChunk& dataChunk) { auto scanState = IndexScanHelper::initScanState(transaction, dataChunk); @@ -148,6 +164,32 @@ bool UncommittedIndexInserter::processScanOutput(main::ClientContext* context, return true; } +std::unique_ptr CommittedIndexInserter::initScanState( + const Transaction* transaction, DataChunk& dataChunk) { + auto scanState = IndexScanHelper::initScanState(transaction, dataChunk); + nodeIDVector.setState(dataChunk.state); + scanState->source = TableScanSource::COMMITTED; + return scanState; +} + +bool CommittedIndexInserter::processScanOutput(main::ClientContext* context, + NodeGroupScanResult scanResult, const std::vector& scannedVectors) { + if (scanResult == NODE_GROUP_SCAN_EMPTY_RESULT) { + return false; + } + const auto startOffset = + StorageUtils::getStartOffsetOfNodeGroup(currentNodeGroupIdx) + scanResult.startRow; + for (auto i = 0u; i < scanResult.numRows; i++) { + nodeIDVector.setValue(i, nodeID_t{startOffset + i, table->getTableID()}); + } + if (!insertState) { + insertState = index->initInsertState(context, isVisible); + } + index->commitInsert(transaction::Transaction::Get(*context), nodeIDVector, {scannedVectors}, + *insertState); + return true; +} + std::unique_ptr RollbackPKDeleter::initScanState(const Transaction* transaction, DataChunk& dataChunk) { auto scanState = IndexScanHelper::initScanState(transaction, dataChunk); @@ -770,6 +812,16 @@ bool NodeTable::isVisibleNoLock(const Transaction* transaction, offset_t offset) PrimaryKeyIndex* NodeTable::tryGetPKIndex() const { const auto index = getIndex(PrimaryKeyIndex::DEFAULT_NAME); if (!index.has_value()) { + for (auto& indexHolder : indexes) { + if (!indexHolder.isLoaded()) { + continue; + } + auto* loadedIndex = indexHolder.getIndex(); + if (loadedIndex->isPrimary() && + loadedIndex->getIndexInfo().indexType == PrimaryKeyIndex::getIndexType().typeName) { + return &loadedIndex->cast(); + } + } return nullptr; } return &index.value()->cast(); @@ -856,6 +908,7 @@ void NodeTable::scanIndexColumns(main::ClientContext* context, IndexScanHelper& // an exception that is thrown before any chunked groups could be appended to the node group if (scanState->nodeGroup->getNumChunkedGroups() > 0) { scanState->nodeGroupIdx = nodeGroupToScan; + scanHelper.currentNodeGroupIdx = nodeGroupToScan; DASSERT(scanState->nodeGroup); scanState->nodeGroup->initializeScanState(transaction::Transaction::Get(*context), *scanState); @@ -878,6 +931,17 @@ void NodeTable::addIndex(std::unique_ptr index) { setHasChanges(); } +void NodeTable::buildIndexAndAdd(main::ClientContext* context, std::unique_ptr index) { + if (getIndex(index->getName()).has_value()) { + throw RuntimeException("Index with name " + index->getName() + " already exists."); + } + CommittedIndexInserter indexInserter{this, index.get(), + getVisibleFunc(transaction::Transaction::Get(*context))}; + scanIndexColumns(context, indexInserter, *nodeGroups); + indexes.push_back(IndexHolder{std::move(index)}); + setHasChanges(); +} + void NodeTable::dropIndex(const std::string& name) { DASSERT(getIndex(name) != nullptr); for (auto it = indexes.begin(); it != indexes.end(); ++it) { diff --git a/test/test_files/ddl/ddl_empty.test b/test/test_files/ddl/ddl_empty.test index f800311a6e..31ad5ac385 100644 --- a/test/test_files/ddl/ddl_empty.test +++ b/test/test_files/ddl/ddl_empty.test @@ -1,6 +1,34 @@ -DATASET CSV empty -- +-CASE CreateHashIndex +-STATEMENT CALL enable_default_hash_index=false; +---- ok +-STATEMENT CREATE NODE TABLE idx_person (ID INT64, name STRING, PRIMARY KEY(ID)); +---- 1 +Table idx_person has been created. +-STATEMENT CREATE (:idx_person {ID: 1, name: 'Alice'}); +---- ok +-STATEMENT CREATE (:idx_person {ID: 2, name: 'Bob'}); +---- ok +-STATEMENT MATCH (p:idx_person) WHERE p.ID = 2 RETURN p.name; +---- 1 +Bob +-STATEMENT CREATE HASH INDEX idx_person_pk IF NOT EXISTS FOR (p:idx_person) ON (p.ID); +---- 1 +Index idx_person_pk has been created. +-STATEMENT CALL SHOW_INDEXES() RETURN count(*); +---- 1 +1 +-STATEMENT CREATE INDEX idx_person_pk IF NOT EXISTS FOR (p:idx_person) ON (p.ID); +---- 1 +Index idx_person_pk already exists. +-STATEMENT MATCH (p:idx_person) WHERE p.ID = 2 RETURN p.name; +---- 1 +Bob +-STATEMENT CALL enable_default_hash_index=true; +---- ok + # Check to see if Count() correctly handles full vectors that are all null -CASE AddInt64PropertyWithoutDefault -STATEMENT create node table Comment (id int64, creationDate INT64, locationIP STRING, browserUsed STRING, content STRING, length INT32, PRIMARY KEY (id)); diff --git a/test/test_runner/fsm_leak_checker.cpp b/test/test_runner/fsm_leak_checker.cpp index af0fc544dc..e1fbe98348 100644 --- a/test/test_runner/fsm_leak_checker.cpp +++ b/test/test_runner/fsm_leak_checker.cpp @@ -64,6 +64,8 @@ void FSMLeakChecker::checkForLeakedPages(main::Connection* conn) { dropQuery = std::format("CALL DROP_FTS_INDEX('{}', '{}');", tableName, indexName); } else if (indexType == "HNSW") { dropQuery = std::format("CALL DROP_VECTOR_INDEX('{}', '{}');", tableName, indexName); + } else if (indexType == "HASH") { + continue; } else { EXPECT_TRUE(false) << "Unknown index type: " << indexType << " (table=" << tableName << ", index=" << indexName << ")" << std::endl; diff --git a/third_party/antlr4_cypher/cypher_lexer.cpp b/third_party/antlr4_cypher/cypher_lexer.cpp index 6cffcad8ce..e2c6d39a2e 100644 --- a/third_party/antlr4_cypher/cypher_lexer.cpp +++ b/third_party/antlr4_cypher/cypher_lexer.cpp @@ -68,12 +68,12 @@ void cypherlexerLexerInitialize() { "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", - "FALSE", "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", - "IMPORT", "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", - "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", - "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", - "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", - "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", + "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", "HEADERS", + "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", "IS", + "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", + "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", + "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", + "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", @@ -107,8 +107,9 @@ void cypherlexerLexerInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", "", "'!='", - "':'", "'..'", "'-'", "'!'", "", "", "", "", "", "", "", "", "'0'" + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "'!='", "':'", "'..'", "'-'", "'!'", "", "", "", "", "", "", "", + "", "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", @@ -119,26 +120,26 @@ void cypherlexerLexerInitialize() { "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", - "EXTENSION", "FALSE", "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", - "HINT", "IMPORT", "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", - "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", - "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", - "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", - "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", - "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", - "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", - "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", - "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", "MAP", "DECIMAL", - "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "COLON", "DOTDOT", "MINUS", - "FACTORIAL", "StringLiteral", "EscapedChar", "DecimalInteger", "HexLetter", - "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", - "ExponentDecimalReal", "RegularDecimalReal", "UnescapedSymbolicName", - "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", "SP", - "WHITESPACE", "CypherComment", "Unknown" + "EXTENSION", "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", + "HEADERS", "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", + "IS", "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", + "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", + "NONE", "NULL", "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", + "PRIMARY", "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", + "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", + "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", + "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", + "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", + "PASSWORD", "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", + "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", "EscapedChar", + "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", + "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", "RegularDecimalReal", + "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", + "SP", "WHITESPACE", "CypherComment", "Unknown" } ); static const int32_t serializedATNSegment[] = { - 4,0,186,1527,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,0,189,1551,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2, 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2, 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2, @@ -169,99 +170,101 @@ void cypherlexerLexerInitialize() { 7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188, 7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194, 7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200, - 7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,1,0, - 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1, - 9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,15, - 1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,20,1,20, - 1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27, - 1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34, - 1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,40,1,40,1,41, - 1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,45, - 1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,48,1,48,1,48, - 1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1,51, - 1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53, - 1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56, - 1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59, - 1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60, - 1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62, - 1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63, - 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64, - 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66, - 1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68, - 1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70, - 1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71, - 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74, - 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75, - 1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77, - 1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80, - 1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82, - 1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84, - 1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86, - 1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88, - 1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91, - 1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93, - 1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,1,96,1,96, - 1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97, - 1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,101, - 1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,103,1,103, - 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104, - 1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106, - 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108, - 1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111, - 1,111,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,114,1,114, - 1,114,1,114,1,114,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,119, - 1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120, - 1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122, - 1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124, - 1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126, - 1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127, - 1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130, - 1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, - 1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135, - 1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,138,1,138, - 1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, - 1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141, - 1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143, - 1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, - 1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146, - 1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,149, - 1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151, - 1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152, - 1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154, - 1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158, - 1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,161,1,161, - 1,161,1,161,1,161,1,162,1,162,1,162,1,163,1,163,1,164,1,164,1,164,1,165, - 1,165,1,166,1,166,1,167,1,167,1,167,5,167,1294,8,167,10,167,12,167,1297, - 9,167,1,167,1,167,1,167,1,167,5,167,1303,8,167,10,167,12,167,1306,9,167, - 1,167,3,167,1309,8,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, - 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168, - 1,168,1,168,3,168,1333,8,168,1,169,1,169,1,169,5,169,1338,8,169,10,169, - 12,169,1341,9,169,3,169,1343,8,169,1,170,3,170,1346,8,170,1,171,1,171, - 3,171,1350,8,171,1,172,1,172,3,172,1354,8,172,1,173,1,173,3,173,1358, - 8,173,1,174,1,174,1,175,1,175,1,176,4,176,1365,8,176,11,176,12,176,1366, - 1,176,4,176,1370,8,176,11,176,12,176,1371,1,176,1,176,4,176,1376,8,176, - 11,176,12,176,1377,1,176,1,176,4,176,1382,8,176,11,176,12,176,1383,3, - 176,1386,8,176,1,176,1,176,3,176,1390,8,176,1,176,4,176,1393,8,176,11, - 176,12,176,1394,1,177,5,177,1398,8,177,10,177,12,177,1401,9,177,1,177, - 1,177,4,177,1405,8,177,11,177,12,177,1406,1,178,1,178,5,178,1411,8,178, - 10,178,12,178,1414,9,178,1,179,1,179,3,179,1418,8,179,1,180,1,180,3,180, - 1422,8,180,1,181,1,181,5,181,1426,8,181,10,181,12,181,1429,9,181,1,181, - 4,181,1432,8,181,11,181,12,181,1433,1,182,4,182,1437,8,182,11,182,12, - 182,1438,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,3,183,1453,8,183,1,184,1,184,1,184,1,184,1,184,1,184,5,184, - 1461,8,184,10,184,12,184,1464,9,184,1,184,1,184,1,184,1,184,1,184,1,184, - 5,184,1472,8,184,10,184,12,184,1475,9,184,1,184,3,184,1478,8,184,1,184, - 1,184,3,184,1482,8,184,3,184,1484,8,184,1,185,1,185,1,186,1,186,1,187, - 1,187,1,188,1,188,1,189,1,189,1,190,1,190,1,191,1,191,1,192,1,192,1,193, - 1,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,199, - 1,199,1,200,1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205, - 1,205,0,0,206,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23, + 7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206, + 7,206,2,207,7,207,2,208,7,208,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4, + 1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12, + 1,12,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,17, + 1,18,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23, + 1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30, + 1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37, + 1,38,1,38,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44, + 1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46, + 1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49, + 1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52, + 1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54, + 1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57, + 1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59, + 1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63, + 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63, + 1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64, + 1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67, + 1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69, + 1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71, + 1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, + 1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78, + 1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81, + 1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83, + 1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85, + 1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87, + 1,87,1,87,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90, + 1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94, + 1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,97,1,97,1,97,1,98, + 1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99, + 1,99,1,99,1,99,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102, + 1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104, + 1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106, + 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109, + 1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112, + 1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115, + 1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,118,1,118, + 1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120, + 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,122, + 1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127, + 1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133, + 1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, + 1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136, + 1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138, + 1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,141,1,141, + 1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144, + 1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146, + 1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147, + 1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149, + 1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,152, + 1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, + 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157, + 1,157,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159, + 1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161, + 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,164,1,164, + 1,164,1,164,1,164,1,165,1,165,1,165,1,166,1,166,1,167,1,167,1,167,1,168, + 1,168,1,169,1,169,1,170,1,170,1,170,5,170,1318,8,170,10,170,12,170,1321, + 9,170,1,170,1,170,1,170,1,170,5,170,1327,8,170,10,170,12,170,1330,9,170, + 1,170,3,170,1333,8,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,1,171,3,171,1357,8,171,1,172,1,172,1,172,5,172,1362,8,172,10,172, + 12,172,1365,9,172,3,172,1367,8,172,1,173,3,173,1370,8,173,1,174,1,174, + 3,174,1374,8,174,1,175,1,175,3,175,1378,8,175,1,176,1,176,3,176,1382, + 8,176,1,177,1,177,1,178,1,178,1,179,4,179,1389,8,179,11,179,12,179,1390, + 1,179,4,179,1394,8,179,11,179,12,179,1395,1,179,1,179,4,179,1400,8,179, + 11,179,12,179,1401,1,179,1,179,4,179,1406,8,179,11,179,12,179,1407,3, + 179,1410,8,179,1,179,1,179,3,179,1414,8,179,1,179,4,179,1417,8,179,11, + 179,12,179,1418,1,180,5,180,1422,8,180,10,180,12,180,1425,9,180,1,180, + 1,180,4,180,1429,8,180,11,180,12,180,1430,1,181,1,181,5,181,1435,8,181, + 10,181,12,181,1438,9,181,1,182,1,182,3,182,1442,8,182,1,183,1,183,3,183, + 1446,8,183,1,184,1,184,5,184,1450,8,184,10,184,12,184,1453,9,184,1,184, + 4,184,1456,8,184,11,184,12,184,1457,1,185,4,185,1461,8,185,11,185,12, + 185,1462,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186, + 1,186,1,186,3,186,1477,8,186,1,187,1,187,1,187,1,187,1,187,1,187,5,187, + 1485,8,187,10,187,12,187,1488,9,187,1,187,1,187,1,187,1,187,1,187,1,187, + 5,187,1496,8,187,10,187,12,187,1499,9,187,1,187,3,187,1502,8,187,1,187, + 1,187,3,187,1506,8,187,3,187,1508,8,187,1,188,1,188,1,189,1,189,1,190, + 1,190,1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196, + 1,196,1,197,1,197,1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202, + 1,202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208, + 1,208,0,0,209,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23, 12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23, 47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69, 35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46, @@ -279,627 +282,634 @@ void cypherlexerLexerInitialize() { 151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337, 169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355, - 178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,0,373, - 0,375,0,377,0,379,0,381,0,383,0,385,0,387,0,389,0,391,0,393,0,395,0,397, - 0,399,0,401,0,403,0,405,0,407,0,409,0,411,186,1,0,48,2,0,65,65,97,97, - 2,0,67,67,99,99,2,0,89,89,121,121,2,0,76,76,108,108,2,0,73,73,105,105, - 2,0,78,78,110,110,2,0,68,68,100,100,2,0,84,84,116,116,2,0,69,69,101,101, - 2,0,82,82,114,114,2,0,83,83,115,115,2,0,71,71,103,103,2,0,72,72,104,104, - 2,0,66,66,98,98,2,0,75,75,107,107,2,0,80,80,112,112,2,0,79,79,111,111, - 2,0,85,85,117,117,2,0,77,77,109,109,2,0,70,70,102,102,2,0,88,88,120,120, - 2,0,74,74,106,106,2,0,86,86,118,118,2,0,81,81,113,113,2,0,87,87,119,119, - 13,0,34,34,39,39,66,66,70,70,78,78,82,82,84,84,92,92,98,98,102,102,110, - 110,114,114,116,116,2,0,65,70,97,102,8,0,160,160,5760,5760,6158,6158, - 8192,8202,8232,8233,8239,8239,8287,8287,12288,12288,1,0,12,12,1,0,96, - 96,1,0,30,30,768,0,48,57,65,90,95,95,97,122,170,170,181,181,183,183,186, - 186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886, - 887,890,893,895,895,902,906,908,908,910,929,931,1013,1015,1153,1155,1159, - 1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474, - 1476,1477,1479,1479,1488,1514,1519,1522,1552,1562,1568,1641,1646,1747, - 1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037, - 2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190, - 2200,2273,2275,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472, - 2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519, - 2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570, - 2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620, - 2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677, - 2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745, - 2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815, - 2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873, - 2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927, - 2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972, - 2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021, - 3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129, - 3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171, - 3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257, - 3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311, - 3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415, - 3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515, - 3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567, - 3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722, - 3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801, - 3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897, - 3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169, - 4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685, - 4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789, - 4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954, - 4957,4959,4969,4977,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759, - 5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996, - 5998,6000,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157, - 6159,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459, - 6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6683,6688,6750, - 6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988, - 6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304, - 7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005, - 8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116, - 8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172, - 8178,8180,8182,8188,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348, - 8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469, - 8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521, - 8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565, - 11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696, - 11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744, - 11775,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441, - 12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784, - 12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560, - 42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960, - 42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136, - 43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360, - 43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600, - 43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777, - 43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868, - 43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243, - 55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298, - 64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467, - 64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075, - 65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343, - 65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498, - 65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616, - 65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272, - 66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504, - 66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816, - 66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967, - 66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424, - 67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594, - 67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808, - 67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096, - 68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159, - 68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416, - 68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864, - 68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415, - 69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734, - 69749,69759,69818,69826,69826,69840,69864,69872,69881,69888,69940,69942, - 69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094, - 70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280, - 70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400, - 70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453, - 70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493, - 70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784, - 70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168, - 71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453, - 71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945, - 71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016, - 72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263, - 72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760, - 72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968, - 72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056, - 73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440, - 73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728, - 74649,74752,74862,74880,75075,77712,77808,77824,78895,78912,78933,82944, - 83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880, - 92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053, - 93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179, - 94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579, - 110581,110587,110589,110590,110592,110882,110898,110898,110928,110930, - 110933,110933,110948,110951,110960,111355,113664,113770,113776,113788, - 113792,113800,113808,113817,113821,113822,118528,118573,118576,118598, - 119141,119145,119149,119154,119163,119170,119173,119179,119210,119213, - 119362,119364,119808,119892,119894,119964,119966,119967,119970,119970, - 119973,119974,119977,119980,119982,119993,119995,119995,119997,120003, - 120005,120069,120071,120074,120077,120084,120086,120092,120094,120121, - 120123,120126,120128,120132,120134,120134,120138,120144,120146,120485, - 120488,120512,120514,120538,120540,120570,120572,120596,120598,120628, - 120630,120654,120656,120686,120688,120712,120714,120744,120746,120770, - 120772,120779,120782,120831,121344,121398,121403,121452,121461,121461, - 121476,121476,121499,121503,121505,121519,122624,122654,122661,122666, - 122880,122886,122888,122904,122907,122913,122915,122916,122918,122922, - 122928,122989,123023,123023,123136,123180,123184,123197,123200,123209, - 123214,123214,123536,123566,123584,123641,124112,124153,124896,124902, - 124904,124907,124909,124910,124912,124926,124928,125124,125136,125142, - 125184,125259,125264,125273,126464,126467,126469,126495,126497,126498, - 126500,126500,126503,126503,126505,126514,126516,126519,126521,126521, - 126523,126523,126530,126530,126535,126535,126537,126537,126539,126539, - 126541,126543,126545,126546,126548,126548,126551,126551,126553,126553, - 126555,126555,126557,126557,126559,126559,126561,126562,126564,126564, - 126567,126570,126572,126578,126580,126583,126585,126588,126590,126590, - 126592,126601,126603,126619,126625,126627,126629,126633,126635,126651, - 130032,130041,131072,173791,173824,177977,177984,178205,178208,183969, - 183984,191456,194560,195101,196608,201546,201552,205743,917760,917999, - 1,0,42,42,2,0,39,39,92,92,2,0,10,10,13,13,1,0,47,47,1,0,29,29,1,0,28, - 28,1,0,13,13,21,0,36,36,162,165,1423,1423,1547,1547,2046,2047,2546,2547, - 2555,2555,2801,2801,3065,3065,3647,3647,6107,6107,8352,8384,43064,43064, - 65020,65020,65129,65129,65284,65284,65504,65505,65509,65510,73693,73696, - 123647,123647,126128,126128,1,0,32,32,6,0,95,95,8255,8256,8276,8276,65075, - 65076,65101,65103,65343,65343,1,0,9,9,2,0,34,34,92,92,1,0,10,10,1,0,11, - 11,1,0,31,31,659,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246, - 248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895, - 902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366, - 1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747, - 1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839, - 1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074, - 2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249, - 2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448, - 2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525, - 2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608, - 2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701, - 2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768, - 2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867, - 2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954, - 2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986, - 2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133, - 3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240, - 3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340, - 3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455, - 3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635, - 3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760, - 3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911, - 3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193, - 4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301, - 4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744, - 4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822, - 4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740, - 5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969, - 5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,6264,6272,6312, - 6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601, - 6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087, - 7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359, - 7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965, - 7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061, - 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155, - 8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450, - 8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488, - 8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502, - 11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631, - 11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718, - 11720,11726,11728,11734,11736,11742,12293,12295,12321,12329,12337,12341, - 12344,12348,12353,12438,12443,12447,12449,12538,12540,12543,12549,12591, + 178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373, + 187,375,188,377,0,379,0,381,0,383,0,385,0,387,0,389,0,391,0,393,0,395, + 0,397,0,399,0,401,0,403,0,405,0,407,0,409,0,411,0,413,0,415,0,417,189, + 1,0,48,2,0,65,65,97,97,2,0,67,67,99,99,2,0,89,89,121,121,2,0,76,76,108, + 108,2,0,73,73,105,105,2,0,78,78,110,110,2,0,68,68,100,100,2,0,84,84,116, + 116,2,0,69,69,101,101,2,0,82,82,114,114,2,0,83,83,115,115,2,0,71,71,103, + 103,2,0,72,72,104,104,2,0,66,66,98,98,2,0,75,75,107,107,2,0,80,80,112, + 112,2,0,79,79,111,111,2,0,85,85,117,117,2,0,77,77,109,109,2,0,70,70,102, + 102,2,0,88,88,120,120,2,0,74,74,106,106,2,0,86,86,118,118,2,0,81,81,113, + 113,2,0,87,87,119,119,13,0,34,34,39,39,66,66,70,70,78,78,82,82,84,84, + 92,92,98,98,102,102,110,110,114,114,116,116,2,0,65,70,97,102,8,0,160, + 160,5760,5760,6158,6158,8192,8202,8232,8233,8239,8239,8287,8287,12288, + 12288,1,0,12,12,1,0,96,96,1,0,30,30,768,0,48,57,65,90,95,95,97,122,170, + 170,181,181,183,183,186,186,192,214,216,246,248,705,710,721,736,740,748, + 748,750,750,768,884,886,887,890,893,895,895,902,906,908,908,910,929,931, + 1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425, + 1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552, + 1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808, + 1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144, + 2154,2160,2183,2185,2190,2200,2273,2275,2403,2406,2415,2417,2435,2437, + 2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503, + 2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558, + 2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613, + 2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649, + 2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730, + 2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784, + 2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858, + 2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908, + 2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962, + 2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006, + 3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086, + 3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160, + 3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218, + 3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293, + 3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398, + 3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461, + 3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542, + 3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713, + 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782, + 3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893, + 3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993, + 4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304, + 4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746, + 4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824, + 4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024,5109,5112, + 5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919, + 5940,5952,5971,5984,5996,5998,6000,6002,6003,6016,6099,6103,6103,6108, + 6109,6112,6121,6155,6157,6159,6169,6176,6264,6272,6314,6320,6389,6400, + 6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608, + 6618,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832, + 6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232, + 7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424, + 7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029, + 8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144, + 8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8276,8276,8305, + 8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455, + 8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490, + 8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507, + 11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670, + 11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726, + 11728,11734,11736,11742,11744,11775,12293,12295,12321,12335,12337,12341, + 12344,12348,12353,12438,12441,12447,12449,12538,12540,12543,12549,12591, 12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237, - 42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735, - 42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969, - 42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187, - 43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388, - 43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560, - 43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697, - 43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754, - 43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822, - 43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291, - 63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296, - 64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433, - 64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276, - 65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495, - 65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613, - 65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335, - 66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517, - 66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938, - 66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001, - 67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504, - 67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644, - 67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861, - 67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119, - 68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405, - 68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850, - 68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445, - 69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749, - 69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002, - 70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161, - 70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301, - 70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448, - 70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708, - 70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086, - 71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450, - 71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955, - 71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144, - 72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272, - 72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768, - 72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061, - 73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488, - 73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808, - 77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862, - 92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823, - 93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343, - 100352,101589,101632,101640,110576,110579,110581,110587,110589,110590, - 110592,110882,110898,110898,110928,110930,110933,110933,110948,110951, - 110960,111355,113664,113770,113776,113788,113792,113800,113808,113817, - 119808,119892,119894,119964,119966,119967,119970,119970,119973,119974, - 119977,119980,119982,119993,119995,119995,119997,120003,120005,120069, - 120071,120074,120077,120084,120086,120092,120094,120121,120123,120126, - 120128,120132,120134,120134,120138,120144,120146,120485,120488,120512, - 120514,120538,120540,120570,120572,120596,120598,120628,120630,120654, - 120656,120686,120688,120712,120714,120744,120746,120770,120772,120779, - 122624,122654,122661,122666,122928,122989,123136,123180,123191,123197, - 123214,123214,123536,123565,123584,123627,124112,124139,124896,124902, - 124904,124907,124909,124910,124912,124926,124928,125124,125184,125251, - 125259,125259,126464,126467,126469,126495,126497,126498,126500,126500, - 126503,126503,126505,126514,126516,126519,126521,126521,126523,126523, - 126530,126530,126535,126535,126537,126537,126539,126539,126541,126543, - 126545,126546,126548,126548,126551,126551,126553,126553,126555,126555, - 126557,126557,126559,126559,126561,126562,126564,126564,126567,126570, - 126572,126578,126580,126583,126585,126588,126590,126590,126592,126601, - 126603,126619,126625,126627,126629,126633,126635,126651,131072,173791, - 173824,177977,177984,178205,178208,183969,183984,191456,194560,195101, - 196608,201546,201552,205743,1552,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0, - 0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1, - 0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0, - 0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0, - 39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1, - 0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0, - 0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0, - 71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1, - 0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0, - 0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0, - 103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0, - 113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0, - 123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, - 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0, - 143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0, - 153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0, - 163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0, - 173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0, - 183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0, - 193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0, - 203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0, - 213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0, - 223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, - 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0, - 243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0, - 253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0, - 263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0, - 273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, - 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0, - 293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0, - 303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0, - 313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0, - 323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0, - 333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, - 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0, - 353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, - 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,411,1,0,0,0,1, - 413,1,0,0,0,3,415,1,0,0,0,5,417,1,0,0,0,7,419,1,0,0,0,9,421,1,0,0,0,11, - 423,1,0,0,0,13,425,1,0,0,0,15,427,1,0,0,0,17,429,1,0,0,0,19,431,1,0,0, - 0,21,433,1,0,0,0,23,435,1,0,0,0,25,438,1,0,0,0,27,440,1,0,0,0,29,443, - 1,0,0,0,31,445,1,0,0,0,33,448,1,0,0,0,35,450,1,0,0,0,37,453,1,0,0,0,39, - 456,1,0,0,0,41,458,1,0,0,0,43,460,1,0,0,0,45,462,1,0,0,0,47,464,1,0,0, - 0,49,467,1,0,0,0,51,469,1,0,0,0,53,471,1,0,0,0,55,473,1,0,0,0,57,475, - 1,0,0,0,59,477,1,0,0,0,61,479,1,0,0,0,63,481,1,0,0,0,65,483,1,0,0,0,67, - 485,1,0,0,0,69,487,1,0,0,0,71,489,1,0,0,0,73,491,1,0,0,0,75,493,1,0,0, - 0,77,495,1,0,0,0,79,497,1,0,0,0,81,499,1,0,0,0,83,501,1,0,0,0,85,503, - 1,0,0,0,87,505,1,0,0,0,89,507,1,0,0,0,91,515,1,0,0,0,93,519,1,0,0,0,95, - 523,1,0,0,0,97,527,1,0,0,0,99,533,1,0,0,0,101,537,1,0,0,0,103,540,1,0, - 0,0,105,544,1,0,0,0,107,554,1,0,0,0,109,561,1,0,0,0,111,567,1,0,0,0,113, - 570,1,0,0,0,115,575,1,0,0,0,117,580,1,0,0,0,119,585,1,0,0,0,121,596,1, - 0,0,0,123,603,1,0,0,0,125,611,1,0,0,0,127,618,1,0,0,0,129,641,1,0,0,0, - 131,650,1,0,0,0,133,655,1,0,0,0,135,661,1,0,0,0,137,668,1,0,0,0,139,674, - 1,0,0,0,141,683,1,0,0,0,143,690,1,0,0,0,145,698,1,0,0,0,147,705,1,0,0, - 0,149,710,1,0,0,0,151,721,1,0,0,0,153,728,1,0,0,0,155,737,1,0,0,0,157, - 742,1,0,0,0,159,747,1,0,0,0,161,751,1,0,0,0,163,756,1,0,0,0,165,763,1, - 0,0,0,167,771,1,0,0,0,169,778,1,0,0,0,171,788,1,0,0,0,173,794,1,0,0,0, - 175,799,1,0,0,0,177,805,1,0,0,0,179,810,1,0,0,0,181,816,1,0,0,0,183,822, - 1,0,0,0,185,830,1,0,0,0,187,835,1,0,0,0,189,842,1,0,0,0,191,845,1,0,0, - 0,193,848,1,0,0,0,195,858,1,0,0,0,197,866,1,0,0,0,199,869,1,0,0,0,201, - 874,1,0,0,0,203,878,1,0,0,0,205,884,1,0,0,0,207,889,1,0,0,0,209,897,1, - 0,0,0,211,903,1,0,0,0,213,909,1,0,0,0,215,918,1,0,0,0,217,924,1,0,0,0, - 219,933,1,0,0,0,221,944,1,0,0,0,223,947,1,0,0,0,225,952,1,0,0,0,227,956, - 1,0,0,0,229,961,1,0,0,0,231,966,1,0,0,0,233,969,1,0,0,0,235,974,1,0,0, - 0,237,983,1,0,0,0,239,986,1,0,0,0,241,992,1,0,0,0,243,1000,1,0,0,0,245, - 1008,1,0,0,0,247,1016,1,0,0,0,249,1021,1,0,0,0,251,1025,1,0,0,0,253,1032, - 1,0,0,0,255,1039,1,0,0,0,257,1048,1,0,0,0,259,1073,1,0,0,0,261,1082,1, - 0,0,0,263,1086,1,0,0,0,265,1095,1,0,0,0,267,1101,1,0,0,0,269,1108,1,0, - 0,0,271,1115,1,0,0,0,273,1121,1,0,0,0,275,1126,1,0,0,0,277,1129,1,0,0, - 0,279,1135,1,0,0,0,281,1147,1,0,0,0,283,1152,1,0,0,0,285,1157,1,0,0,0, - 287,1163,1,0,0,0,289,1170,1,0,0,0,291,1180,1,0,0,0,293,1187,1,0,0,0,295, - 1191,1,0,0,0,297,1196,1,0,0,0,299,1202,1,0,0,0,301,1207,1,0,0,0,303,1213, - 1,0,0,0,305,1223,1,0,0,0,307,1227,1,0,0,0,309,1234,1,0,0,0,311,1240,1, - 0,0,0,313,1245,1,0,0,0,315,1254,1,0,0,0,317,1259,1,0,0,0,319,1263,1,0, - 0,0,321,1271,1,0,0,0,323,1273,1,0,0,0,325,1278,1,0,0,0,327,1281,1,0,0, - 0,329,1283,1,0,0,0,331,1286,1,0,0,0,333,1288,1,0,0,0,335,1308,1,0,0,0, - 337,1310,1,0,0,0,339,1342,1,0,0,0,341,1345,1,0,0,0,343,1349,1,0,0,0,345, - 1353,1,0,0,0,347,1357,1,0,0,0,349,1359,1,0,0,0,351,1361,1,0,0,0,353,1385, - 1,0,0,0,355,1399,1,0,0,0,357,1408,1,0,0,0,359,1417,1,0,0,0,361,1421,1, - 0,0,0,363,1431,1,0,0,0,365,1436,1,0,0,0,367,1452,1,0,0,0,369,1483,1,0, - 0,0,371,1485,1,0,0,0,373,1487,1,0,0,0,375,1489,1,0,0,0,377,1491,1,0,0, - 0,379,1493,1,0,0,0,381,1495,1,0,0,0,383,1497,1,0,0,0,385,1499,1,0,0,0, - 387,1501,1,0,0,0,389,1503,1,0,0,0,391,1505,1,0,0,0,393,1507,1,0,0,0,395, - 1509,1,0,0,0,397,1511,1,0,0,0,399,1513,1,0,0,0,401,1515,1,0,0,0,403,1517, - 1,0,0,0,405,1519,1,0,0,0,407,1521,1,0,0,0,409,1523,1,0,0,0,411,1525,1, - 0,0,0,413,414,5,59,0,0,414,2,1,0,0,0,415,416,5,40,0,0,416,4,1,0,0,0,417, - 418,5,41,0,0,418,6,1,0,0,0,419,420,5,44,0,0,420,8,1,0,0,0,421,422,5,46, - 0,0,422,10,1,0,0,0,423,424,5,61,0,0,424,12,1,0,0,0,425,426,5,91,0,0,426, - 14,1,0,0,0,427,428,5,93,0,0,428,16,1,0,0,0,429,430,5,123,0,0,430,18,1, - 0,0,0,431,432,5,125,0,0,432,20,1,0,0,0,433,434,5,124,0,0,434,22,1,0,0, - 0,435,436,5,60,0,0,436,437,5,62,0,0,437,24,1,0,0,0,438,439,5,60,0,0,439, - 26,1,0,0,0,440,441,5,60,0,0,441,442,5,61,0,0,442,28,1,0,0,0,443,444,5, - 62,0,0,444,30,1,0,0,0,445,446,5,62,0,0,446,447,5,61,0,0,447,32,1,0,0, - 0,448,449,5,38,0,0,449,34,1,0,0,0,450,451,5,62,0,0,451,452,5,62,0,0,452, - 36,1,0,0,0,453,454,5,60,0,0,454,455,5,60,0,0,455,38,1,0,0,0,456,457,5, - 43,0,0,457,40,1,0,0,0,458,459,5,47,0,0,459,42,1,0,0,0,460,461,5,37,0, - 0,461,44,1,0,0,0,462,463,5,94,0,0,463,46,1,0,0,0,464,465,5,61,0,0,465, - 466,5,126,0,0,466,48,1,0,0,0,467,468,5,36,0,0,468,50,1,0,0,0,469,470, - 5,10216,0,0,470,52,1,0,0,0,471,472,5,12296,0,0,472,54,1,0,0,0,473,474, - 5,65124,0,0,474,56,1,0,0,0,475,476,5,65308,0,0,476,58,1,0,0,0,477,478, - 5,10217,0,0,478,60,1,0,0,0,479,480,5,12297,0,0,480,62,1,0,0,0,481,482, - 5,65125,0,0,482,64,1,0,0,0,483,484,5,65310,0,0,484,66,1,0,0,0,485,486, - 5,173,0,0,486,68,1,0,0,0,487,488,5,8208,0,0,488,70,1,0,0,0,489,490,5, - 8209,0,0,490,72,1,0,0,0,491,492,5,8210,0,0,492,74,1,0,0,0,493,494,5,8211, - 0,0,494,76,1,0,0,0,495,496,5,8212,0,0,496,78,1,0,0,0,497,498,5,8213,0, - 0,498,80,1,0,0,0,499,500,5,8722,0,0,500,82,1,0,0,0,501,502,5,65112,0, - 0,502,84,1,0,0,0,503,504,5,65123,0,0,504,86,1,0,0,0,505,506,5,65293,0, - 0,506,88,1,0,0,0,507,508,7,0,0,0,508,509,7,1,0,0,509,510,7,2,0,0,510, - 511,7,1,0,0,511,512,7,3,0,0,512,513,7,4,0,0,513,514,7,1,0,0,514,90,1, - 0,0,0,515,516,7,0,0,0,516,517,7,5,0,0,517,518,7,2,0,0,518,92,1,0,0,0, - 519,520,7,0,0,0,520,521,7,6,0,0,521,522,7,6,0,0,522,94,1,0,0,0,523,524, - 7,0,0,0,524,525,7,3,0,0,525,526,7,3,0,0,526,96,1,0,0,0,527,528,7,0,0, - 0,528,529,7,3,0,0,529,530,7,7,0,0,530,531,7,8,0,0,531,532,7,9,0,0,532, - 98,1,0,0,0,533,534,7,0,0,0,534,535,7,5,0,0,535,536,7,6,0,0,536,100,1, - 0,0,0,537,538,7,0,0,0,538,539,7,10,0,0,539,102,1,0,0,0,540,541,7,0,0, - 0,541,542,7,10,0,0,542,543,7,1,0,0,543,104,1,0,0,0,544,545,7,0,0,0,545, - 546,7,10,0,0,546,547,7,1,0,0,547,548,7,8,0,0,548,549,7,5,0,0,549,550, - 7,6,0,0,550,551,7,4,0,0,551,552,7,5,0,0,552,553,7,11,0,0,553,106,1,0, - 0,0,554,555,7,0,0,0,555,556,7,7,0,0,556,557,7,7,0,0,557,558,7,0,0,0,558, - 559,7,1,0,0,559,560,7,12,0,0,560,108,1,0,0,0,561,562,7,13,0,0,562,563, - 7,8,0,0,563,564,7,11,0,0,564,565,7,4,0,0,565,566,7,5,0,0,566,110,1,0, - 0,0,567,568,7,13,0,0,568,569,7,2,0,0,569,112,1,0,0,0,570,571,7,1,0,0, - 571,572,7,0,0,0,572,573,7,3,0,0,573,574,7,3,0,0,574,114,1,0,0,0,575,576, - 7,1,0,0,576,577,7,0,0,0,577,578,7,10,0,0,578,579,7,8,0,0,579,116,1,0, - 0,0,580,581,7,1,0,0,581,582,7,0,0,0,582,583,7,10,0,0,583,584,7,7,0,0, - 584,118,1,0,0,0,585,586,7,1,0,0,586,587,7,12,0,0,587,588,7,8,0,0,588, - 589,7,1,0,0,589,590,7,14,0,0,590,591,7,15,0,0,591,592,7,16,0,0,592,593, - 7,4,0,0,593,594,7,5,0,0,594,595,7,7,0,0,595,120,1,0,0,0,596,597,7,1,0, - 0,597,598,7,16,0,0,598,599,7,3,0,0,599,600,7,17,0,0,600,601,7,18,0,0, - 601,602,7,5,0,0,602,122,1,0,0,0,603,604,7,1,0,0,604,605,7,16,0,0,605, - 606,7,18,0,0,606,607,7,18,0,0,607,608,7,8,0,0,608,609,7,5,0,0,609,610, - 7,7,0,0,610,124,1,0,0,0,611,612,7,1,0,0,612,613,7,16,0,0,613,614,7,18, - 0,0,614,615,7,18,0,0,615,616,7,4,0,0,616,617,7,7,0,0,617,126,1,0,0,0, - 618,619,7,1,0,0,619,620,7,16,0,0,620,621,7,18,0,0,621,622,7,18,0,0,622, - 623,7,4,0,0,623,624,7,7,0,0,624,625,5,95,0,0,625,626,7,10,0,0,626,627, - 7,14,0,0,627,628,7,4,0,0,628,629,7,15,0,0,629,630,5,95,0,0,630,631,7, - 1,0,0,631,632,7,12,0,0,632,633,7,8,0,0,633,634,7,1,0,0,634,635,7,14,0, - 0,635,636,7,15,0,0,636,637,7,16,0,0,637,638,7,4,0,0,638,639,7,5,0,0,639, - 640,7,7,0,0,640,128,1,0,0,0,641,642,7,1,0,0,642,643,7,16,0,0,643,644, - 7,5,0,0,644,645,7,7,0,0,645,646,7,0,0,0,646,647,7,4,0,0,647,648,7,5,0, - 0,648,649,7,10,0,0,649,130,1,0,0,0,650,651,7,1,0,0,651,652,7,16,0,0,652, - 653,7,15,0,0,653,654,7,2,0,0,654,132,1,0,0,0,655,656,7,1,0,0,656,657, - 7,16,0,0,657,658,7,17,0,0,658,659,7,5,0,0,659,660,7,7,0,0,660,134,1,0, - 0,0,661,662,7,1,0,0,662,663,7,9,0,0,663,664,7,8,0,0,664,665,7,0,0,0,665, - 666,7,7,0,0,666,667,7,8,0,0,667,136,1,0,0,0,668,669,7,1,0,0,669,670,7, - 2,0,0,670,671,7,1,0,0,671,672,7,3,0,0,672,673,7,8,0,0,673,138,1,0,0,0, - 674,675,7,6,0,0,675,676,7,0,0,0,676,677,7,7,0,0,677,678,7,0,0,0,678,679, - 7,13,0,0,679,680,7,0,0,0,680,681,7,10,0,0,681,682,7,8,0,0,682,140,1,0, - 0,0,683,684,7,6,0,0,684,685,7,13,0,0,685,686,7,7,0,0,686,687,7,2,0,0, - 687,688,7,15,0,0,688,689,7,8,0,0,689,142,1,0,0,0,690,691,7,6,0,0,691, - 692,7,8,0,0,692,693,7,19,0,0,693,694,7,0,0,0,694,695,7,17,0,0,695,696, - 7,3,0,0,696,697,7,7,0,0,697,144,1,0,0,0,698,699,7,6,0,0,699,700,7,8,0, - 0,700,701,7,3,0,0,701,702,7,8,0,0,702,703,7,7,0,0,703,704,7,8,0,0,704, - 146,1,0,0,0,705,706,7,6,0,0,706,707,7,8,0,0,707,708,7,10,0,0,708,709, - 7,1,0,0,709,148,1,0,0,0,710,711,7,6,0,0,711,712,7,8,0,0,712,713,7,10, - 0,0,713,714,7,1,0,0,714,715,7,8,0,0,715,716,7,5,0,0,716,717,7,6,0,0,717, - 718,7,4,0,0,718,719,7,5,0,0,719,720,7,11,0,0,720,150,1,0,0,0,721,722, - 7,6,0,0,722,723,7,8,0,0,723,724,7,7,0,0,724,725,7,0,0,0,725,726,7,1,0, - 0,726,727,7,12,0,0,727,152,1,0,0,0,728,729,7,6,0,0,729,730,7,4,0,0,730, - 731,7,10,0,0,731,732,7,7,0,0,732,733,7,4,0,0,733,734,7,5,0,0,734,735, - 7,1,0,0,735,736,7,7,0,0,736,154,1,0,0,0,737,738,7,6,0,0,738,739,7,9,0, - 0,739,740,7,16,0,0,740,741,7,15,0,0,741,156,1,0,0,0,742,743,7,8,0,0,743, - 744,7,3,0,0,744,745,7,10,0,0,745,746,7,8,0,0,746,158,1,0,0,0,747,748, - 7,8,0,0,748,749,7,5,0,0,749,750,7,6,0,0,750,160,1,0,0,0,751,752,7,8,0, - 0,752,753,7,5,0,0,753,754,7,6,0,0,754,755,7,10,0,0,755,162,1,0,0,0,756, - 757,7,8,0,0,757,758,7,20,0,0,758,759,7,4,0,0,759,760,7,10,0,0,760,761, - 7,7,0,0,761,762,7,10,0,0,762,164,1,0,0,0,763,764,7,8,0,0,764,765,7,20, - 0,0,765,766,7,15,0,0,766,767,7,3,0,0,767,768,7,0,0,0,768,769,7,4,0,0, - 769,770,7,5,0,0,770,166,1,0,0,0,771,772,7,8,0,0,772,773,7,20,0,0,773, - 774,7,15,0,0,774,775,7,16,0,0,775,776,7,9,0,0,776,777,7,7,0,0,777,168, - 1,0,0,0,778,779,7,8,0,0,779,780,7,20,0,0,780,781,7,7,0,0,781,782,7,8, - 0,0,782,783,7,5,0,0,783,784,7,10,0,0,784,785,7,4,0,0,785,786,7,16,0,0, - 786,787,7,5,0,0,787,170,1,0,0,0,788,789,7,19,0,0,789,790,7,0,0,0,790, - 791,7,3,0,0,791,792,7,10,0,0,792,793,7,8,0,0,793,172,1,0,0,0,794,795, - 7,19,0,0,795,796,7,9,0,0,796,797,7,16,0,0,797,798,7,18,0,0,798,174,1, - 0,0,0,799,800,7,19,0,0,800,801,7,16,0,0,801,802,7,9,0,0,802,803,7,1,0, - 0,803,804,7,8,0,0,804,176,1,0,0,0,805,806,7,11,0,0,806,807,7,3,0,0,807, - 808,7,16,0,0,808,809,7,13,0,0,809,178,1,0,0,0,810,811,7,11,0,0,811,812, - 7,9,0,0,812,813,7,0,0,0,813,814,7,15,0,0,814,815,7,12,0,0,815,180,1,0, - 0,0,816,817,7,11,0,0,817,818,7,9,0,0,818,819,7,16,0,0,819,820,7,17,0, - 0,820,821,7,15,0,0,821,182,1,0,0,0,822,823,7,12,0,0,823,824,7,8,0,0,824, - 825,7,0,0,0,825,826,7,6,0,0,826,827,7,8,0,0,827,828,7,9,0,0,828,829,7, - 10,0,0,829,184,1,0,0,0,830,831,7,12,0,0,831,832,7,4,0,0,832,833,7,5,0, - 0,833,834,7,7,0,0,834,186,1,0,0,0,835,836,7,4,0,0,836,837,7,18,0,0,837, - 838,7,15,0,0,838,839,7,16,0,0,839,840,7,9,0,0,840,841,7,7,0,0,841,188, - 1,0,0,0,842,843,7,4,0,0,843,844,7,19,0,0,844,190,1,0,0,0,845,846,7,4, - 0,0,846,847,7,5,0,0,847,192,1,0,0,0,848,849,7,4,0,0,849,850,7,5,0,0,850, - 851,7,1,0,0,851,852,7,9,0,0,852,853,7,8,0,0,853,854,7,18,0,0,854,855, - 7,8,0,0,855,856,7,5,0,0,856,857,7,7,0,0,857,194,1,0,0,0,858,859,7,4,0, - 0,859,860,7,5,0,0,860,861,7,10,0,0,861,862,7,7,0,0,862,863,7,0,0,0,863, - 864,7,3,0,0,864,865,7,3,0,0,865,196,1,0,0,0,866,867,7,4,0,0,867,868,7, - 10,0,0,868,198,1,0,0,0,869,870,7,21,0,0,870,871,7,16,0,0,871,872,7,4, - 0,0,872,873,7,5,0,0,873,200,1,0,0,0,874,875,7,14,0,0,875,876,7,8,0,0, - 876,877,7,2,0,0,877,202,1,0,0,0,878,879,7,3,0,0,879,880,7,4,0,0,880,881, - 7,18,0,0,881,882,7,4,0,0,882,883,7,7,0,0,883,204,1,0,0,0,884,885,7,3, - 0,0,885,886,7,16,0,0,886,887,7,0,0,0,887,888,7,6,0,0,888,206,1,0,0,0, - 889,890,7,3,0,0,890,891,7,16,0,0,891,892,7,11,0,0,892,893,7,4,0,0,893, - 894,7,1,0,0,894,895,7,0,0,0,895,896,7,3,0,0,896,208,1,0,0,0,897,898,7, - 18,0,0,898,899,7,0,0,0,899,900,7,1,0,0,900,901,7,9,0,0,901,902,7,16,0, - 0,902,210,1,0,0,0,903,904,7,18,0,0,904,905,7,0,0,0,905,906,7,7,0,0,906, - 907,7,1,0,0,907,908,7,12,0,0,908,212,1,0,0,0,909,910,7,18,0,0,910,911, - 7,0,0,0,911,912,7,20,0,0,912,913,7,22,0,0,913,914,7,0,0,0,914,915,7,3, - 0,0,915,916,7,17,0,0,916,917,7,8,0,0,917,214,1,0,0,0,918,919,7,18,0,0, - 919,920,7,8,0,0,920,921,7,9,0,0,921,922,7,11,0,0,922,923,7,8,0,0,923, - 216,1,0,0,0,924,925,7,18,0,0,925,926,7,4,0,0,926,927,7,5,0,0,927,928, - 7,22,0,0,928,929,7,0,0,0,929,930,7,3,0,0,930,931,7,17,0,0,931,932,7,8, - 0,0,932,218,1,0,0,0,933,934,7,18,0,0,934,935,7,17,0,0,935,936,7,3,0,0, - 936,937,7,7,0,0,937,938,7,4,0,0,938,939,5,95,0,0,939,940,7,21,0,0,940, - 941,7,16,0,0,941,942,7,4,0,0,942,943,7,5,0,0,943,220,1,0,0,0,944,945, - 7,5,0,0,945,946,7,16,0,0,946,222,1,0,0,0,947,948,7,5,0,0,948,949,7,16, - 0,0,949,950,7,6,0,0,950,951,7,8,0,0,951,224,1,0,0,0,952,953,7,5,0,0,953, - 954,7,16,0,0,954,955,7,7,0,0,955,226,1,0,0,0,956,957,7,5,0,0,957,958, - 7,16,0,0,958,959,7,5,0,0,959,960,7,8,0,0,960,228,1,0,0,0,961,962,7,5, - 0,0,962,963,7,17,0,0,963,964,7,3,0,0,964,965,7,3,0,0,965,230,1,0,0,0, - 966,967,7,16,0,0,967,968,7,5,0,0,968,232,1,0,0,0,969,970,7,16,0,0,970, - 971,7,5,0,0,971,972,7,3,0,0,972,973,7,2,0,0,973,234,1,0,0,0,974,975,7, - 16,0,0,975,976,7,15,0,0,976,977,7,7,0,0,977,978,7,4,0,0,978,979,7,16, - 0,0,979,980,7,5,0,0,980,981,7,0,0,0,981,982,7,3,0,0,982,236,1,0,0,0,983, - 984,7,16,0,0,984,985,7,9,0,0,985,238,1,0,0,0,986,987,7,16,0,0,987,988, - 7,9,0,0,988,989,7,6,0,0,989,990,7,8,0,0,990,991,7,9,0,0,991,240,1,0,0, - 0,992,993,7,15,0,0,993,994,7,9,0,0,994,995,7,4,0,0,995,996,7,18,0,0,996, - 997,7,0,0,0,997,998,7,9,0,0,998,999,7,2,0,0,999,242,1,0,0,0,1000,1001, - 7,15,0,0,1001,1002,7,9,0,0,1002,1003,7,16,0,0,1003,1004,7,19,0,0,1004, - 1005,7,4,0,0,1005,1006,7,3,0,0,1006,1007,7,8,0,0,1007,244,1,0,0,0,1008, - 1009,7,15,0,0,1009,1010,7,9,0,0,1010,1011,7,16,0,0,1011,1012,7,21,0,0, - 1012,1013,7,8,0,0,1013,1014,7,1,0,0,1014,1015,7,7,0,0,1015,246,1,0,0, - 0,1016,1017,7,9,0,0,1017,1018,7,8,0,0,1018,1019,7,0,0,0,1019,1020,7,6, - 0,0,1020,248,1,0,0,0,1021,1022,7,9,0,0,1022,1023,7,8,0,0,1023,1024,7, - 3,0,0,1024,250,1,0,0,0,1025,1026,7,9,0,0,1026,1027,7,8,0,0,1027,1028, - 7,5,0,0,1028,1029,7,0,0,0,1029,1030,7,18,0,0,1030,1031,7,8,0,0,1031,252, - 1,0,0,0,1032,1033,7,9,0,0,1033,1034,7,8,0,0,1034,1035,7,7,0,0,1035,1036, - 7,17,0,0,1036,1037,7,9,0,0,1037,1038,7,5,0,0,1038,254,1,0,0,0,1039,1040, - 7,9,0,0,1040,1041,7,16,0,0,1041,1042,7,3,0,0,1042,1043,7,3,0,0,1043,1044, - 7,13,0,0,1044,1045,7,0,0,0,1045,1046,7,1,0,0,1046,1047,7,14,0,0,1047, - 256,1,0,0,0,1048,1049,7,9,0,0,1049,1050,7,16,0,0,1050,1051,7,3,0,0,1051, - 1052,7,3,0,0,1052,1053,7,13,0,0,1053,1054,7,0,0,0,1054,1055,7,1,0,0,1055, - 1056,7,14,0,0,1056,1057,5,95,0,0,1057,1058,7,10,0,0,1058,1059,7,14,0, - 0,1059,1060,7,4,0,0,1060,1061,7,15,0,0,1061,1062,5,95,0,0,1062,1063,7, - 1,0,0,1063,1064,7,12,0,0,1064,1065,7,8,0,0,1065,1066,7,1,0,0,1066,1067, - 7,14,0,0,1067,1068,7,15,0,0,1068,1069,7,16,0,0,1069,1070,7,4,0,0,1070, - 1071,7,5,0,0,1071,1072,7,7,0,0,1072,258,1,0,0,0,1073,1074,7,10,0,0,1074, - 1075,7,8,0,0,1075,1076,7,23,0,0,1076,1077,7,17,0,0,1077,1078,7,8,0,0, - 1078,1079,7,5,0,0,1079,1080,7,1,0,0,1080,1081,7,8,0,0,1081,260,1,0,0, - 0,1082,1083,7,10,0,0,1083,1084,7,8,0,0,1084,1085,7,7,0,0,1085,262,1,0, - 0,0,1086,1087,7,10,0,0,1087,1088,7,12,0,0,1088,1089,7,16,0,0,1089,1090, - 7,9,0,0,1090,1091,7,7,0,0,1091,1092,7,8,0,0,1092,1093,7,10,0,0,1093,1094, - 7,7,0,0,1094,264,1,0,0,0,1095,1096,7,10,0,0,1096,1097,7,7,0,0,1097,1098, - 7,0,0,0,1098,1099,7,9,0,0,1099,1100,7,7,0,0,1100,266,1,0,0,0,1101,1102, - 7,10,0,0,1102,1103,7,7,0,0,1103,1104,7,0,0,0,1104,1105,7,9,0,0,1105,1106, - 7,7,0,0,1106,1107,7,10,0,0,1107,268,1,0,0,0,1108,1109,7,10,0,0,1109,1110, - 7,7,0,0,1110,1111,7,9,0,0,1111,1112,7,17,0,0,1112,1113,7,1,0,0,1113,1114, - 7,7,0,0,1114,270,1,0,0,0,1115,1116,7,7,0,0,1116,1117,7,0,0,0,1117,1118, - 7,13,0,0,1118,1119,7,3,0,0,1119,1120,7,8,0,0,1120,272,1,0,0,0,1121,1122, - 7,7,0,0,1122,1123,7,12,0,0,1123,1124,7,8,0,0,1124,1125,7,5,0,0,1125,274, - 1,0,0,0,1126,1127,7,7,0,0,1127,1128,7,16,0,0,1128,276,1,0,0,0,1129,1130, - 7,7,0,0,1130,1131,7,9,0,0,1131,1132,7,0,0,0,1132,1133,7,4,0,0,1133,1134, - 7,3,0,0,1134,278,1,0,0,0,1135,1136,7,7,0,0,1136,1137,7,9,0,0,1137,1138, - 7,0,0,0,1138,1139,7,5,0,0,1139,1140,7,10,0,0,1140,1141,7,0,0,0,1141,1142, - 7,1,0,0,1142,1143,7,7,0,0,1143,1144,7,4,0,0,1144,1145,7,16,0,0,1145,1146, - 7,5,0,0,1146,280,1,0,0,0,1147,1148,7,7,0,0,1148,1149,7,9,0,0,1149,1150, - 7,17,0,0,1150,1151,7,8,0,0,1151,282,1,0,0,0,1152,1153,7,7,0,0,1153,1154, - 7,2,0,0,1154,1155,7,15,0,0,1155,1156,7,8,0,0,1156,284,1,0,0,0,1157,1158, - 7,17,0,0,1158,1159,7,5,0,0,1159,1160,7,4,0,0,1160,1161,7,16,0,0,1161, - 1162,7,5,0,0,1162,286,1,0,0,0,1163,1164,7,17,0,0,1164,1165,7,5,0,0,1165, - 1166,7,24,0,0,1166,1167,7,4,0,0,1167,1168,7,5,0,0,1168,1169,7,6,0,0,1169, - 288,1,0,0,0,1170,1171,7,17,0,0,1171,1172,7,5,0,0,1172,1173,7,4,0,0,1173, - 1174,7,5,0,0,1174,1175,7,10,0,0,1175,1176,7,7,0,0,1176,1177,7,0,0,0,1177, - 1178,7,3,0,0,1178,1179,7,3,0,0,1179,290,1,0,0,0,1180,1181,7,17,0,0,1181, - 1182,7,15,0,0,1182,1183,7,6,0,0,1183,1184,7,0,0,0,1184,1185,7,7,0,0,1185, - 1186,7,8,0,0,1186,292,1,0,0,0,1187,1188,7,17,0,0,1188,1189,7,10,0,0,1189, - 1190,7,8,0,0,1190,294,1,0,0,0,1191,1192,7,24,0,0,1192,1193,7,12,0,0,1193, - 1194,7,8,0,0,1194,1195,7,5,0,0,1195,296,1,0,0,0,1196,1197,7,24,0,0,1197, - 1198,7,12,0,0,1198,1199,7,8,0,0,1199,1200,7,9,0,0,1200,1201,7,8,0,0,1201, - 298,1,0,0,0,1202,1203,7,24,0,0,1203,1204,7,4,0,0,1204,1205,7,7,0,0,1205, - 1206,7,12,0,0,1206,300,1,0,0,0,1207,1208,7,24,0,0,1208,1209,7,9,0,0,1209, - 1210,7,4,0,0,1210,1211,7,7,0,0,1211,1212,7,8,0,0,1212,302,1,0,0,0,1213, - 1214,7,24,0,0,1214,1215,7,10,0,0,1215,1216,7,12,0,0,1216,1217,7,16,0, - 0,1217,1218,7,9,0,0,1218,1219,7,7,0,0,1219,1220,7,8,0,0,1220,1221,7,10, - 0,0,1221,1222,7,7,0,0,1222,304,1,0,0,0,1223,1224,7,20,0,0,1224,1225,7, - 16,0,0,1225,1226,7,9,0,0,1226,306,1,0,0,0,1227,1228,7,10,0,0,1228,1229, - 7,4,0,0,1229,1230,7,5,0,0,1230,1231,7,11,0,0,1231,1232,7,3,0,0,1232,1233, - 7,8,0,0,1233,308,1,0,0,0,1234,1235,7,2,0,0,1235,1236,7,4,0,0,1236,1237, - 7,8,0,0,1237,1238,7,3,0,0,1238,1239,7,6,0,0,1239,310,1,0,0,0,1240,1241, - 7,17,0,0,1241,1242,7,10,0,0,1242,1243,7,8,0,0,1243,1244,7,9,0,0,1244, - 312,1,0,0,0,1245,1246,7,15,0,0,1246,1247,7,0,0,0,1247,1248,7,10,0,0,1248, - 1249,7,10,0,0,1249,1250,7,24,0,0,1250,1251,7,16,0,0,1251,1252,7,9,0,0, - 1252,1253,7,6,0,0,1253,314,1,0,0,0,1254,1255,7,9,0,0,1255,1256,7,16,0, - 0,1256,1257,7,3,0,0,1257,1258,7,8,0,0,1258,316,1,0,0,0,1259,1260,7,18, - 0,0,1260,1261,7,0,0,0,1261,1262,7,15,0,0,1262,318,1,0,0,0,1263,1264,7, - 6,0,0,1264,1265,7,8,0,0,1265,1266,7,1,0,0,1266,1267,7,4,0,0,1267,1268, - 7,18,0,0,1268,1269,7,0,0,0,1269,1270,7,3,0,0,1270,320,1,0,0,0,1271,1272, - 5,42,0,0,1272,322,1,0,0,0,1273,1274,7,10,0,0,1274,1275,7,14,0,0,1275, - 1276,7,4,0,0,1276,1277,7,15,0,0,1277,324,1,0,0,0,1278,1279,5,33,0,0,1279, - 1280,5,61,0,0,1280,326,1,0,0,0,1281,1282,5,58,0,0,1282,328,1,0,0,0,1283, - 1284,5,46,0,0,1284,1285,5,46,0,0,1285,330,1,0,0,0,1286,1287,5,45,0,0, - 1287,332,1,0,0,0,1288,1289,5,33,0,0,1289,334,1,0,0,0,1290,1295,5,34,0, - 0,1291,1294,3,401,200,0,1292,1294,3,337,168,0,1293,1291,1,0,0,0,1293, - 1292,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296, - 1298,1,0,0,0,1297,1295,1,0,0,0,1298,1309,5,34,0,0,1299,1304,5,39,0,0, - 1300,1303,3,381,190,0,1301,1303,3,337,168,0,1302,1300,1,0,0,0,1302,1301, - 1,0,0,0,1303,1306,1,0,0,0,1304,1302,1,0,0,0,1304,1305,1,0,0,0,1305,1307, - 1,0,0,0,1306,1304,1,0,0,0,1307,1309,5,39,0,0,1308,1290,1,0,0,0,1308,1299, - 1,0,0,0,1309,336,1,0,0,0,1310,1332,5,92,0,0,1311,1333,7,25,0,0,1312,1313, - 7,20,0,0,1313,1314,3,343,171,0,1314,1315,3,343,171,0,1315,1333,1,0,0, - 0,1316,1317,7,17,0,0,1317,1318,3,343,171,0,1318,1319,3,343,171,0,1319, - 1320,3,343,171,0,1320,1321,3,343,171,0,1321,1333,1,0,0,0,1322,1323,7, - 17,0,0,1323,1324,3,343,171,0,1324,1325,3,343,171,0,1325,1326,3,343,171, - 0,1326,1327,3,343,171,0,1327,1328,3,343,171,0,1328,1329,3,343,171,0,1329, - 1330,3,343,171,0,1330,1331,3,343,171,0,1331,1333,1,0,0,0,1332,1311,1, - 0,0,0,1332,1312,1,0,0,0,1332,1316,1,0,0,0,1332,1322,1,0,0,0,1333,338, - 1,0,0,0,1334,1343,3,351,175,0,1335,1339,3,347,173,0,1336,1338,3,345,172, - 0,1337,1336,1,0,0,0,1338,1341,1,0,0,0,1339,1337,1,0,0,0,1339,1340,1,0, - 0,0,1340,1343,1,0,0,0,1341,1339,1,0,0,0,1342,1334,1,0,0,0,1342,1335,1, - 0,0,0,1343,340,1,0,0,0,1344,1346,7,26,0,0,1345,1344,1,0,0,0,1346,342, - 1,0,0,0,1347,1350,3,345,172,0,1348,1350,3,341,170,0,1349,1347,1,0,0,0, - 1349,1348,1,0,0,0,1350,344,1,0,0,0,1351,1354,3,351,175,0,1352,1354,3, - 347,173,0,1353,1351,1,0,0,0,1353,1352,1,0,0,0,1354,346,1,0,0,0,1355,1358, - 3,349,174,0,1356,1358,2,56,57,0,1357,1355,1,0,0,0,1357,1356,1,0,0,0,1358, - 348,1,0,0,0,1359,1360,2,49,55,0,1360,350,1,0,0,0,1361,1362,5,48,0,0,1362, - 352,1,0,0,0,1363,1365,3,345,172,0,1364,1363,1,0,0,0,1365,1366,1,0,0,0, - 1366,1364,1,0,0,0,1366,1367,1,0,0,0,1367,1386,1,0,0,0,1368,1370,3,345, - 172,0,1369,1368,1,0,0,0,1370,1371,1,0,0,0,1371,1369,1,0,0,0,1371,1372, - 1,0,0,0,1372,1373,1,0,0,0,1373,1375,5,46,0,0,1374,1376,3,345,172,0,1375, - 1374,1,0,0,0,1376,1377,1,0,0,0,1377,1375,1,0,0,0,1377,1378,1,0,0,0,1378, - 1386,1,0,0,0,1379,1381,5,46,0,0,1380,1382,3,345,172,0,1381,1380,1,0,0, - 0,1382,1383,1,0,0,0,1383,1381,1,0,0,0,1383,1384,1,0,0,0,1384,1386,1,0, - 0,0,1385,1364,1,0,0,0,1385,1369,1,0,0,0,1385,1379,1,0,0,0,1386,1387,1, - 0,0,0,1387,1389,7,8,0,0,1388,1390,5,45,0,0,1389,1388,1,0,0,0,1389,1390, - 1,0,0,0,1390,1392,1,0,0,0,1391,1393,3,345,172,0,1392,1391,1,0,0,0,1393, - 1394,1,0,0,0,1394,1392,1,0,0,0,1394,1395,1,0,0,0,1395,354,1,0,0,0,1396, - 1398,3,345,172,0,1397,1396,1,0,0,0,1398,1401,1,0,0,0,1399,1397,1,0,0, - 0,1399,1400,1,0,0,0,1400,1402,1,0,0,0,1401,1399,1,0,0,0,1402,1404,5,46, - 0,0,1403,1405,3,345,172,0,1404,1403,1,0,0,0,1405,1406,1,0,0,0,1406,1404, - 1,0,0,0,1406,1407,1,0,0,0,1407,356,1,0,0,0,1408,1412,3,359,179,0,1409, - 1411,3,361,180,0,1410,1409,1,0,0,0,1411,1414,1,0,0,0,1412,1410,1,0,0, - 0,1412,1413,1,0,0,0,1413,358,1,0,0,0,1414,1412,1,0,0,0,1415,1418,3,409, - 204,0,1416,1418,3,397,198,0,1417,1415,1,0,0,0,1417,1416,1,0,0,0,1418, - 360,1,0,0,0,1419,1422,3,377,188,0,1420,1422,3,393,196,0,1421,1419,1,0, - 0,0,1421,1420,1,0,0,0,1422,362,1,0,0,0,1423,1427,5,96,0,0,1424,1426,3, - 373,186,0,1425,1424,1,0,0,0,1426,1429,1,0,0,0,1427,1425,1,0,0,0,1427, - 1428,1,0,0,0,1428,1430,1,0,0,0,1429,1427,1,0,0,0,1430,1432,5,96,0,0,1431, - 1423,1,0,0,0,1432,1433,1,0,0,0,1433,1431,1,0,0,0,1433,1434,1,0,0,0,1434, - 364,1,0,0,0,1435,1437,3,367,183,0,1436,1435,1,0,0,0,1437,1438,1,0,0,0, - 1438,1436,1,0,0,0,1438,1439,1,0,0,0,1439,366,1,0,0,0,1440,1453,3,395, - 197,0,1441,1453,3,399,199,0,1442,1453,3,403,201,0,1443,1453,3,405,202, - 0,1444,1453,3,371,185,0,1445,1453,3,391,195,0,1446,1453,3,389,194,0,1447, - 1453,3,387,193,0,1448,1453,3,375,187,0,1449,1453,3,407,203,0,1450,1453, - 7,27,0,0,1451,1453,3,369,184,0,1452,1440,1,0,0,0,1452,1441,1,0,0,0,1452, - 1442,1,0,0,0,1452,1443,1,0,0,0,1452,1444,1,0,0,0,1452,1445,1,0,0,0,1452, - 1446,1,0,0,0,1452,1447,1,0,0,0,1452,1448,1,0,0,0,1452,1449,1,0,0,0,1452, - 1450,1,0,0,0,1452,1451,1,0,0,0,1453,368,1,0,0,0,1454,1455,5,47,0,0,1455, - 1456,5,42,0,0,1456,1462,1,0,0,0,1457,1461,3,379,189,0,1458,1459,5,42, - 0,0,1459,1461,3,385,192,0,1460,1457,1,0,0,0,1460,1458,1,0,0,0,1461,1464, - 1,0,0,0,1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463,1465,1,0,0,0,1464,1462, - 1,0,0,0,1465,1466,5,42,0,0,1466,1484,5,47,0,0,1467,1468,5,47,0,0,1468, - 1469,5,47,0,0,1469,1473,1,0,0,0,1470,1472,3,383,191,0,1471,1470,1,0,0, - 0,1472,1475,1,0,0,0,1473,1471,1,0,0,0,1473,1474,1,0,0,0,1474,1477,1,0, - 0,0,1475,1473,1,0,0,0,1476,1478,3,391,195,0,1477,1476,1,0,0,0,1477,1478, - 1,0,0,0,1478,1481,1,0,0,0,1479,1482,3,403,201,0,1480,1482,5,0,0,1,1481, - 1479,1,0,0,0,1481,1480,1,0,0,0,1482,1484,1,0,0,0,1483,1454,1,0,0,0,1483, - 1467,1,0,0,0,1484,370,1,0,0,0,1485,1486,7,28,0,0,1486,372,1,0,0,0,1487, - 1488,8,29,0,0,1488,374,1,0,0,0,1489,1490,7,30,0,0,1490,376,1,0,0,0,1491, - 1492,7,31,0,0,1492,378,1,0,0,0,1493,1494,8,32,0,0,1494,380,1,0,0,0,1495, - 1496,8,33,0,0,1496,382,1,0,0,0,1497,1498,8,34,0,0,1498,384,1,0,0,0,1499, - 1500,8,35,0,0,1500,386,1,0,0,0,1501,1502,7,36,0,0,1502,388,1,0,0,0,1503, - 1504,7,37,0,0,1504,390,1,0,0,0,1505,1506,7,38,0,0,1506,392,1,0,0,0,1507, - 1508,7,39,0,0,1508,394,1,0,0,0,1509,1510,7,40,0,0,1510,396,1,0,0,0,1511, - 1512,7,41,0,0,1512,398,1,0,0,0,1513,1514,7,42,0,0,1514,400,1,0,0,0,1515, - 1516,8,43,0,0,1516,402,1,0,0,0,1517,1518,7,44,0,0,1518,404,1,0,0,0,1519, - 1520,7,45,0,0,1520,406,1,0,0,0,1521,1522,7,46,0,0,1522,408,1,0,0,0,1523, - 1524,7,47,0,0,1524,410,1,0,0,0,1525,1526,9,0,0,0,1526,412,1,0,0,0,35, - 0,1293,1295,1302,1304,1308,1332,1339,1342,1345,1349,1353,1357,1366,1371, - 1377,1383,1385,1389,1394,1399,1406,1412,1417,1421,1427,1433,1438,1452, - 1460,1462,1473,1477,1481,1483,0 + 42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783, + 42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047, + 43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259, + 43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518, + 43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741, + 43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814, + 43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025, + 44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262, + 64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321, + 64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019, + 65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276, + 65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479, + 65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594, + 65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045, + 66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426, + 66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729, + 66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954, + 66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004, + 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514, + 67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669, + 67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897, + 67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119, + 68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295, + 68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680, + 68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292, + 69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572, + 69600,69622,69632,69702,69734,69749,69759,69818,69826,69826,69840,69864, + 69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006, + 70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199, + 70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312, + 70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440, + 70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477, + 70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730, + 70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093, + 71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352, + 71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738, + 71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989, + 71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161, + 72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440, + 72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871, + 72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021, + 73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105, + 73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538, + 73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808, + 77824,78895,78912,78933,82944,83526,92160,92728,92736,92766,92768,92777, + 92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995, + 93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087, + 94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589, + 101632,101640,110576,110579,110581,110587,110589,110590,110592,110882, + 110898,110898,110928,110930,110933,110933,110948,110951,110960,111355, + 113664,113770,113776,113788,113792,113800,113808,113817,113821,113822, + 118528,118573,118576,118598,119141,119145,119149,119154,119163,119170, + 119173,119179,119210,119213,119362,119364,119808,119892,119894,119964, + 119966,119967,119970,119970,119973,119974,119977,119980,119982,119993, + 119995,119995,119997,120003,120005,120069,120071,120074,120077,120084, + 120086,120092,120094,120121,120123,120126,120128,120132,120134,120134, + 120138,120144,120146,120485,120488,120512,120514,120538,120540,120570, + 120572,120596,120598,120628,120630,120654,120656,120686,120688,120712, + 120714,120744,120746,120770,120772,120779,120782,120831,121344,121398, + 121403,121452,121461,121461,121476,121476,121499,121503,121505,121519, + 122624,122654,122661,122666,122880,122886,122888,122904,122907,122913, + 122915,122916,122918,122922,122928,122989,123023,123023,123136,123180, + 123184,123197,123200,123209,123214,123214,123536,123566,123584,123641, + 124112,124153,124896,124902,124904,124907,124909,124910,124912,124926, + 124928,125124,125136,125142,125184,125259,125264,125273,126464,126467, + 126469,126495,126497,126498,126500,126500,126503,126503,126505,126514, + 126516,126519,126521,126521,126523,126523,126530,126530,126535,126535, + 126537,126537,126539,126539,126541,126543,126545,126546,126548,126548, + 126551,126551,126553,126553,126555,126555,126557,126557,126559,126559, + 126561,126562,126564,126564,126567,126570,126572,126578,126580,126583, + 126585,126588,126590,126590,126592,126601,126603,126619,126625,126627, + 126629,126633,126635,126651,130032,130041,131072,173791,173824,177977, + 177984,178205,178208,183969,183984,191456,194560,195101,196608,201546, + 201552,205743,917760,917999,1,0,42,42,2,0,39,39,92,92,2,0,10,10,13,13, + 1,0,47,47,1,0,29,29,1,0,28,28,1,0,13,13,21,0,36,36,162,165,1423,1423, + 1547,1547,2046,2047,2546,2547,2555,2555,2801,2801,3065,3065,3647,3647, + 6107,6107,8352,8384,43064,43064,65020,65020,65129,65129,65284,65284,65504, + 65505,65509,65510,73693,73696,123647,123647,126128,126128,1,0,32,32,6, + 0,95,95,8255,8256,8276,8276,65075,65076,65101,65103,65343,65343,1,0,9, + 9,2,0,34,34,92,92,1,0,10,10,1,0,11,11,1,0,31,31,659,0,65,90,97,122,170, + 170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750, + 750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931, + 1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519, + 1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786, + 1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036, + 2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144, + 2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392, + 2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486, + 2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565, + 2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649, + 2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738, + 2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831, + 2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911, + 2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972, + 2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086, + 3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200, + 3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293, + 3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406, + 3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517, + 3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718, + 3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782, + 3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159, + 4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238, + 4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688, + 4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792, + 4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992, + 5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870, + 5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103, + 6103,6108,6108,6176,6264,6272,6312,6314,6314,6320,6389,6400,6430,6480, + 6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917, + 6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258, + 7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418, + 7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025, + 8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130, + 8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305, + 8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8472, + 8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526, + 8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559, + 11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688, + 11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736, + 11742,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12443, + 12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784, + 12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42527,42538, + 42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891, + 42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,43013,43015, + 43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261, + 43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488, + 43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616, + 43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712, + 43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785, + 43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888, + 44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256, + 64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318, + 64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914, + 64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382, + 65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549, + 65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856, + 65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432, + 66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776, + 66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964, + 66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392, + 67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592, + 67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712, + 67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030, + 68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224, + 68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480, + 68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,69289,69296, + 69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,69572,69600, + 69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891, + 69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081, + 70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,70208,70272, + 70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405, + 70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461, + 70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784, + 70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236, + 71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840, + 71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999, + 71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192, + 72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368, + 72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968, + 72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112, + 73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,73648,73728, + 74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,82944, + 83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,92975,92992, + 92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099, + 94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640, + 110576,110579,110581,110587,110589,110590,110592,110882,110898,110898, + 110928,110930,110933,110933,110948,110951,110960,111355,113664,113770, + 113776,113788,113792,113800,113808,113817,119808,119892,119894,119964, + 119966,119967,119970,119970,119973,119974,119977,119980,119982,119993, + 119995,119995,119997,120003,120005,120069,120071,120074,120077,120084, + 120086,120092,120094,120121,120123,120126,120128,120132,120134,120134, + 120138,120144,120146,120485,120488,120512,120514,120538,120540,120570, + 120572,120596,120598,120628,120630,120654,120656,120686,120688,120712, + 120714,120744,120746,120770,120772,120779,122624,122654,122661,122666, + 122928,122989,123136,123180,123191,123197,123214,123214,123536,123565, + 123584,123627,124112,124139,124896,124902,124904,124907,124909,124910, + 124912,124926,124928,125124,125184,125251,125259,125259,126464,126467, + 126469,126495,126497,126498,126500,126500,126503,126503,126505,126514, + 126516,126519,126521,126521,126523,126523,126530,126530,126535,126535, + 126537,126537,126539,126539,126541,126543,126545,126546,126548,126548, + 126551,126551,126553,126553,126555,126555,126557,126557,126559,126559, + 126561,126562,126564,126564,126567,126570,126572,126578,126580,126583, + 126585,126588,126590,126590,126592,126601,126603,126619,126625,126627, + 126629,126633,126635,126651,131072,173791,173824,177977,177984,178205, + 178208,183969,183984,191456,194560,195101,196608,201546,201552,205743, + 1576,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, + 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0, + 0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0, + 0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, + 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0, + 0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0, + 0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75, + 1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0, + 0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0, + 0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0, + 107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0, + 117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0, + 127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0, + 137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0, + 147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0, + 157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0, + 167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0, + 177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0, + 187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0, + 197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0, + 207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0, + 217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0, + 227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0, + 237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0, + 247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0, + 257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0, + 267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0, + 277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0, + 287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0, + 297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0, + 307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, + 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0, + 327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0, + 337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0, + 347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0, + 357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0, + 367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0, + 417,1,0,0,0,1,419,1,0,0,0,3,421,1,0,0,0,5,423,1,0,0,0,7,425,1,0,0,0,9, + 427,1,0,0,0,11,429,1,0,0,0,13,431,1,0,0,0,15,433,1,0,0,0,17,435,1,0,0, + 0,19,437,1,0,0,0,21,439,1,0,0,0,23,441,1,0,0,0,25,444,1,0,0,0,27,446, + 1,0,0,0,29,449,1,0,0,0,31,451,1,0,0,0,33,454,1,0,0,0,35,456,1,0,0,0,37, + 459,1,0,0,0,39,462,1,0,0,0,41,464,1,0,0,0,43,466,1,0,0,0,45,468,1,0,0, + 0,47,470,1,0,0,0,49,473,1,0,0,0,51,475,1,0,0,0,53,477,1,0,0,0,55,479, + 1,0,0,0,57,481,1,0,0,0,59,483,1,0,0,0,61,485,1,0,0,0,63,487,1,0,0,0,65, + 489,1,0,0,0,67,491,1,0,0,0,69,493,1,0,0,0,71,495,1,0,0,0,73,497,1,0,0, + 0,75,499,1,0,0,0,77,501,1,0,0,0,79,503,1,0,0,0,81,505,1,0,0,0,83,507, + 1,0,0,0,85,509,1,0,0,0,87,511,1,0,0,0,89,513,1,0,0,0,91,521,1,0,0,0,93, + 525,1,0,0,0,95,529,1,0,0,0,97,533,1,0,0,0,99,539,1,0,0,0,101,543,1,0, + 0,0,103,546,1,0,0,0,105,550,1,0,0,0,107,560,1,0,0,0,109,567,1,0,0,0,111, + 573,1,0,0,0,113,576,1,0,0,0,115,581,1,0,0,0,117,586,1,0,0,0,119,591,1, + 0,0,0,121,602,1,0,0,0,123,609,1,0,0,0,125,617,1,0,0,0,127,624,1,0,0,0, + 129,647,1,0,0,0,131,656,1,0,0,0,133,661,1,0,0,0,135,667,1,0,0,0,137,674, + 1,0,0,0,139,680,1,0,0,0,141,689,1,0,0,0,143,696,1,0,0,0,145,704,1,0,0, + 0,147,711,1,0,0,0,149,716,1,0,0,0,151,727,1,0,0,0,153,734,1,0,0,0,155, + 743,1,0,0,0,157,748,1,0,0,0,159,753,1,0,0,0,161,757,1,0,0,0,163,762,1, + 0,0,0,165,769,1,0,0,0,167,777,1,0,0,0,169,784,1,0,0,0,171,794,1,0,0,0, + 173,800,1,0,0,0,175,805,1,0,0,0,177,811,1,0,0,0,179,815,1,0,0,0,181,820, + 1,0,0,0,183,826,1,0,0,0,185,832,1,0,0,0,187,840,1,0,0,0,189,845,1,0,0, + 0,191,852,1,0,0,0,193,858,1,0,0,0,195,861,1,0,0,0,197,864,1,0,0,0,199, + 874,1,0,0,0,201,882,1,0,0,0,203,885,1,0,0,0,205,890,1,0,0,0,207,894,1, + 0,0,0,209,900,1,0,0,0,211,905,1,0,0,0,213,913,1,0,0,0,215,919,1,0,0,0, + 217,925,1,0,0,0,219,934,1,0,0,0,221,940,1,0,0,0,223,949,1,0,0,0,225,960, + 1,0,0,0,227,963,1,0,0,0,229,968,1,0,0,0,231,972,1,0,0,0,233,977,1,0,0, + 0,235,982,1,0,0,0,237,985,1,0,0,0,239,990,1,0,0,0,241,998,1,0,0,0,243, + 1007,1,0,0,0,245,1010,1,0,0,0,247,1016,1,0,0,0,249,1024,1,0,0,0,251,1032, + 1,0,0,0,253,1040,1,0,0,0,255,1045,1,0,0,0,257,1049,1,0,0,0,259,1056,1, + 0,0,0,261,1063,1,0,0,0,263,1072,1,0,0,0,265,1097,1,0,0,0,267,1106,1,0, + 0,0,269,1110,1,0,0,0,271,1119,1,0,0,0,273,1125,1,0,0,0,275,1132,1,0,0, + 0,277,1139,1,0,0,0,279,1145,1,0,0,0,281,1150,1,0,0,0,283,1153,1,0,0,0, + 285,1159,1,0,0,0,287,1171,1,0,0,0,289,1176,1,0,0,0,291,1181,1,0,0,0,293, + 1187,1,0,0,0,295,1194,1,0,0,0,297,1204,1,0,0,0,299,1211,1,0,0,0,301,1215, + 1,0,0,0,303,1220,1,0,0,0,305,1226,1,0,0,0,307,1231,1,0,0,0,309,1237,1, + 0,0,0,311,1247,1,0,0,0,313,1251,1,0,0,0,315,1258,1,0,0,0,317,1264,1,0, + 0,0,319,1269,1,0,0,0,321,1278,1,0,0,0,323,1283,1,0,0,0,325,1287,1,0,0, + 0,327,1295,1,0,0,0,329,1297,1,0,0,0,331,1302,1,0,0,0,333,1305,1,0,0,0, + 335,1307,1,0,0,0,337,1310,1,0,0,0,339,1312,1,0,0,0,341,1332,1,0,0,0,343, + 1334,1,0,0,0,345,1366,1,0,0,0,347,1369,1,0,0,0,349,1373,1,0,0,0,351,1377, + 1,0,0,0,353,1381,1,0,0,0,355,1383,1,0,0,0,357,1385,1,0,0,0,359,1409,1, + 0,0,0,361,1423,1,0,0,0,363,1432,1,0,0,0,365,1441,1,0,0,0,367,1445,1,0, + 0,0,369,1455,1,0,0,0,371,1460,1,0,0,0,373,1476,1,0,0,0,375,1507,1,0,0, + 0,377,1509,1,0,0,0,379,1511,1,0,0,0,381,1513,1,0,0,0,383,1515,1,0,0,0, + 385,1517,1,0,0,0,387,1519,1,0,0,0,389,1521,1,0,0,0,391,1523,1,0,0,0,393, + 1525,1,0,0,0,395,1527,1,0,0,0,397,1529,1,0,0,0,399,1531,1,0,0,0,401,1533, + 1,0,0,0,403,1535,1,0,0,0,405,1537,1,0,0,0,407,1539,1,0,0,0,409,1541,1, + 0,0,0,411,1543,1,0,0,0,413,1545,1,0,0,0,415,1547,1,0,0,0,417,1549,1,0, + 0,0,419,420,5,59,0,0,420,2,1,0,0,0,421,422,5,40,0,0,422,4,1,0,0,0,423, + 424,5,41,0,0,424,6,1,0,0,0,425,426,5,44,0,0,426,8,1,0,0,0,427,428,5,46, + 0,0,428,10,1,0,0,0,429,430,5,61,0,0,430,12,1,0,0,0,431,432,5,91,0,0,432, + 14,1,0,0,0,433,434,5,93,0,0,434,16,1,0,0,0,435,436,5,123,0,0,436,18,1, + 0,0,0,437,438,5,125,0,0,438,20,1,0,0,0,439,440,5,124,0,0,440,22,1,0,0, + 0,441,442,5,60,0,0,442,443,5,62,0,0,443,24,1,0,0,0,444,445,5,60,0,0,445, + 26,1,0,0,0,446,447,5,60,0,0,447,448,5,61,0,0,448,28,1,0,0,0,449,450,5, + 62,0,0,450,30,1,0,0,0,451,452,5,62,0,0,452,453,5,61,0,0,453,32,1,0,0, + 0,454,455,5,38,0,0,455,34,1,0,0,0,456,457,5,62,0,0,457,458,5,62,0,0,458, + 36,1,0,0,0,459,460,5,60,0,0,460,461,5,60,0,0,461,38,1,0,0,0,462,463,5, + 43,0,0,463,40,1,0,0,0,464,465,5,47,0,0,465,42,1,0,0,0,466,467,5,37,0, + 0,467,44,1,0,0,0,468,469,5,94,0,0,469,46,1,0,0,0,470,471,5,61,0,0,471, + 472,5,126,0,0,472,48,1,0,0,0,473,474,5,36,0,0,474,50,1,0,0,0,475,476, + 5,10216,0,0,476,52,1,0,0,0,477,478,5,12296,0,0,478,54,1,0,0,0,479,480, + 5,65124,0,0,480,56,1,0,0,0,481,482,5,65308,0,0,482,58,1,0,0,0,483,484, + 5,10217,0,0,484,60,1,0,0,0,485,486,5,12297,0,0,486,62,1,0,0,0,487,488, + 5,65125,0,0,488,64,1,0,0,0,489,490,5,65310,0,0,490,66,1,0,0,0,491,492, + 5,173,0,0,492,68,1,0,0,0,493,494,5,8208,0,0,494,70,1,0,0,0,495,496,5, + 8209,0,0,496,72,1,0,0,0,497,498,5,8210,0,0,498,74,1,0,0,0,499,500,5,8211, + 0,0,500,76,1,0,0,0,501,502,5,8212,0,0,502,78,1,0,0,0,503,504,5,8213,0, + 0,504,80,1,0,0,0,505,506,5,8722,0,0,506,82,1,0,0,0,507,508,5,65112,0, + 0,508,84,1,0,0,0,509,510,5,65123,0,0,510,86,1,0,0,0,511,512,5,65293,0, + 0,512,88,1,0,0,0,513,514,7,0,0,0,514,515,7,1,0,0,515,516,7,2,0,0,516, + 517,7,1,0,0,517,518,7,3,0,0,518,519,7,4,0,0,519,520,7,1,0,0,520,90,1, + 0,0,0,521,522,7,0,0,0,522,523,7,5,0,0,523,524,7,2,0,0,524,92,1,0,0,0, + 525,526,7,0,0,0,526,527,7,6,0,0,527,528,7,6,0,0,528,94,1,0,0,0,529,530, + 7,0,0,0,530,531,7,3,0,0,531,532,7,3,0,0,532,96,1,0,0,0,533,534,7,0,0, + 0,534,535,7,3,0,0,535,536,7,7,0,0,536,537,7,8,0,0,537,538,7,9,0,0,538, + 98,1,0,0,0,539,540,7,0,0,0,540,541,7,5,0,0,541,542,7,6,0,0,542,100,1, + 0,0,0,543,544,7,0,0,0,544,545,7,10,0,0,545,102,1,0,0,0,546,547,7,0,0, + 0,547,548,7,10,0,0,548,549,7,1,0,0,549,104,1,0,0,0,550,551,7,0,0,0,551, + 552,7,10,0,0,552,553,7,1,0,0,553,554,7,8,0,0,554,555,7,5,0,0,555,556, + 7,6,0,0,556,557,7,4,0,0,557,558,7,5,0,0,558,559,7,11,0,0,559,106,1,0, + 0,0,560,561,7,0,0,0,561,562,7,7,0,0,562,563,7,7,0,0,563,564,7,0,0,0,564, + 565,7,1,0,0,565,566,7,12,0,0,566,108,1,0,0,0,567,568,7,13,0,0,568,569, + 7,8,0,0,569,570,7,11,0,0,570,571,7,4,0,0,571,572,7,5,0,0,572,110,1,0, + 0,0,573,574,7,13,0,0,574,575,7,2,0,0,575,112,1,0,0,0,576,577,7,1,0,0, + 577,578,7,0,0,0,578,579,7,3,0,0,579,580,7,3,0,0,580,114,1,0,0,0,581,582, + 7,1,0,0,582,583,7,0,0,0,583,584,7,10,0,0,584,585,7,8,0,0,585,116,1,0, + 0,0,586,587,7,1,0,0,587,588,7,0,0,0,588,589,7,10,0,0,589,590,7,7,0,0, + 590,118,1,0,0,0,591,592,7,1,0,0,592,593,7,12,0,0,593,594,7,8,0,0,594, + 595,7,1,0,0,595,596,7,14,0,0,596,597,7,15,0,0,597,598,7,16,0,0,598,599, + 7,4,0,0,599,600,7,5,0,0,600,601,7,7,0,0,601,120,1,0,0,0,602,603,7,1,0, + 0,603,604,7,16,0,0,604,605,7,3,0,0,605,606,7,17,0,0,606,607,7,18,0,0, + 607,608,7,5,0,0,608,122,1,0,0,0,609,610,7,1,0,0,610,611,7,16,0,0,611, + 612,7,18,0,0,612,613,7,18,0,0,613,614,7,8,0,0,614,615,7,5,0,0,615,616, + 7,7,0,0,616,124,1,0,0,0,617,618,7,1,0,0,618,619,7,16,0,0,619,620,7,18, + 0,0,620,621,7,18,0,0,621,622,7,4,0,0,622,623,7,7,0,0,623,126,1,0,0,0, + 624,625,7,1,0,0,625,626,7,16,0,0,626,627,7,18,0,0,627,628,7,18,0,0,628, + 629,7,4,0,0,629,630,7,7,0,0,630,631,5,95,0,0,631,632,7,10,0,0,632,633, + 7,14,0,0,633,634,7,4,0,0,634,635,7,15,0,0,635,636,5,95,0,0,636,637,7, + 1,0,0,637,638,7,12,0,0,638,639,7,8,0,0,639,640,7,1,0,0,640,641,7,14,0, + 0,641,642,7,15,0,0,642,643,7,16,0,0,643,644,7,4,0,0,644,645,7,5,0,0,645, + 646,7,7,0,0,646,128,1,0,0,0,647,648,7,1,0,0,648,649,7,16,0,0,649,650, + 7,5,0,0,650,651,7,7,0,0,651,652,7,0,0,0,652,653,7,4,0,0,653,654,7,5,0, + 0,654,655,7,10,0,0,655,130,1,0,0,0,656,657,7,1,0,0,657,658,7,16,0,0,658, + 659,7,15,0,0,659,660,7,2,0,0,660,132,1,0,0,0,661,662,7,1,0,0,662,663, + 7,16,0,0,663,664,7,17,0,0,664,665,7,5,0,0,665,666,7,7,0,0,666,134,1,0, + 0,0,667,668,7,1,0,0,668,669,7,9,0,0,669,670,7,8,0,0,670,671,7,0,0,0,671, + 672,7,7,0,0,672,673,7,8,0,0,673,136,1,0,0,0,674,675,7,1,0,0,675,676,7, + 2,0,0,676,677,7,1,0,0,677,678,7,3,0,0,678,679,7,8,0,0,679,138,1,0,0,0, + 680,681,7,6,0,0,681,682,7,0,0,0,682,683,7,7,0,0,683,684,7,0,0,0,684,685, + 7,13,0,0,685,686,7,0,0,0,686,687,7,10,0,0,687,688,7,8,0,0,688,140,1,0, + 0,0,689,690,7,6,0,0,690,691,7,13,0,0,691,692,7,7,0,0,692,693,7,2,0,0, + 693,694,7,15,0,0,694,695,7,8,0,0,695,142,1,0,0,0,696,697,7,6,0,0,697, + 698,7,8,0,0,698,699,7,19,0,0,699,700,7,0,0,0,700,701,7,17,0,0,701,702, + 7,3,0,0,702,703,7,7,0,0,703,144,1,0,0,0,704,705,7,6,0,0,705,706,7,8,0, + 0,706,707,7,3,0,0,707,708,7,8,0,0,708,709,7,7,0,0,709,710,7,8,0,0,710, + 146,1,0,0,0,711,712,7,6,0,0,712,713,7,8,0,0,713,714,7,10,0,0,714,715, + 7,1,0,0,715,148,1,0,0,0,716,717,7,6,0,0,717,718,7,8,0,0,718,719,7,10, + 0,0,719,720,7,1,0,0,720,721,7,8,0,0,721,722,7,5,0,0,722,723,7,6,0,0,723, + 724,7,4,0,0,724,725,7,5,0,0,725,726,7,11,0,0,726,150,1,0,0,0,727,728, + 7,6,0,0,728,729,7,8,0,0,729,730,7,7,0,0,730,731,7,0,0,0,731,732,7,1,0, + 0,732,733,7,12,0,0,733,152,1,0,0,0,734,735,7,6,0,0,735,736,7,4,0,0,736, + 737,7,10,0,0,737,738,7,7,0,0,738,739,7,4,0,0,739,740,7,5,0,0,740,741, + 7,1,0,0,741,742,7,7,0,0,742,154,1,0,0,0,743,744,7,6,0,0,744,745,7,9,0, + 0,745,746,7,16,0,0,746,747,7,15,0,0,747,156,1,0,0,0,748,749,7,8,0,0,749, + 750,7,3,0,0,750,751,7,10,0,0,751,752,7,8,0,0,752,158,1,0,0,0,753,754, + 7,8,0,0,754,755,7,5,0,0,755,756,7,6,0,0,756,160,1,0,0,0,757,758,7,8,0, + 0,758,759,7,5,0,0,759,760,7,6,0,0,760,761,7,10,0,0,761,162,1,0,0,0,762, + 763,7,8,0,0,763,764,7,20,0,0,764,765,7,4,0,0,765,766,7,10,0,0,766,767, + 7,7,0,0,767,768,7,10,0,0,768,164,1,0,0,0,769,770,7,8,0,0,770,771,7,20, + 0,0,771,772,7,15,0,0,772,773,7,3,0,0,773,774,7,0,0,0,774,775,7,4,0,0, + 775,776,7,5,0,0,776,166,1,0,0,0,777,778,7,8,0,0,778,779,7,20,0,0,779, + 780,7,15,0,0,780,781,7,16,0,0,781,782,7,9,0,0,782,783,7,7,0,0,783,168, + 1,0,0,0,784,785,7,8,0,0,785,786,7,20,0,0,786,787,7,7,0,0,787,788,7,8, + 0,0,788,789,7,5,0,0,789,790,7,10,0,0,790,791,7,4,0,0,791,792,7,16,0,0, + 792,793,7,5,0,0,793,170,1,0,0,0,794,795,7,19,0,0,795,796,7,0,0,0,796, + 797,7,3,0,0,797,798,7,10,0,0,798,799,7,8,0,0,799,172,1,0,0,0,800,801, + 7,19,0,0,801,802,7,9,0,0,802,803,7,16,0,0,803,804,7,18,0,0,804,174,1, + 0,0,0,805,806,7,19,0,0,806,807,7,16,0,0,807,808,7,9,0,0,808,809,7,1,0, + 0,809,810,7,8,0,0,810,176,1,0,0,0,811,812,7,19,0,0,812,813,7,16,0,0,813, + 814,7,9,0,0,814,178,1,0,0,0,815,816,7,11,0,0,816,817,7,3,0,0,817,818, + 7,16,0,0,818,819,7,13,0,0,819,180,1,0,0,0,820,821,7,11,0,0,821,822,7, + 9,0,0,822,823,7,0,0,0,823,824,7,15,0,0,824,825,7,12,0,0,825,182,1,0,0, + 0,826,827,7,11,0,0,827,828,7,9,0,0,828,829,7,16,0,0,829,830,7,17,0,0, + 830,831,7,15,0,0,831,184,1,0,0,0,832,833,7,12,0,0,833,834,7,8,0,0,834, + 835,7,0,0,0,835,836,7,6,0,0,836,837,7,8,0,0,837,838,7,9,0,0,838,839,7, + 10,0,0,839,186,1,0,0,0,840,841,7,12,0,0,841,842,7,4,0,0,842,843,7,5,0, + 0,843,844,7,7,0,0,844,188,1,0,0,0,845,846,7,4,0,0,846,847,7,18,0,0,847, + 848,7,15,0,0,848,849,7,16,0,0,849,850,7,9,0,0,850,851,7,7,0,0,851,190, + 1,0,0,0,852,853,7,4,0,0,853,854,7,5,0,0,854,855,7,6,0,0,855,856,7,8,0, + 0,856,857,7,20,0,0,857,192,1,0,0,0,858,859,7,4,0,0,859,860,7,19,0,0,860, + 194,1,0,0,0,861,862,7,4,0,0,862,863,7,5,0,0,863,196,1,0,0,0,864,865,7, + 4,0,0,865,866,7,5,0,0,866,867,7,1,0,0,867,868,7,9,0,0,868,869,7,8,0,0, + 869,870,7,18,0,0,870,871,7,8,0,0,871,872,7,5,0,0,872,873,7,7,0,0,873, + 198,1,0,0,0,874,875,7,4,0,0,875,876,7,5,0,0,876,877,7,10,0,0,877,878, + 7,7,0,0,878,879,7,0,0,0,879,880,7,3,0,0,880,881,7,3,0,0,881,200,1,0,0, + 0,882,883,7,4,0,0,883,884,7,10,0,0,884,202,1,0,0,0,885,886,7,21,0,0,886, + 887,7,16,0,0,887,888,7,4,0,0,888,889,7,5,0,0,889,204,1,0,0,0,890,891, + 7,14,0,0,891,892,7,8,0,0,892,893,7,2,0,0,893,206,1,0,0,0,894,895,7,3, + 0,0,895,896,7,4,0,0,896,897,7,18,0,0,897,898,7,4,0,0,898,899,7,7,0,0, + 899,208,1,0,0,0,900,901,7,3,0,0,901,902,7,16,0,0,902,903,7,0,0,0,903, + 904,7,6,0,0,904,210,1,0,0,0,905,906,7,3,0,0,906,907,7,16,0,0,907,908, + 7,11,0,0,908,909,7,4,0,0,909,910,7,1,0,0,910,911,7,0,0,0,911,912,7,3, + 0,0,912,212,1,0,0,0,913,914,7,18,0,0,914,915,7,0,0,0,915,916,7,1,0,0, + 916,917,7,9,0,0,917,918,7,16,0,0,918,214,1,0,0,0,919,920,7,18,0,0,920, + 921,7,0,0,0,921,922,7,7,0,0,922,923,7,1,0,0,923,924,7,12,0,0,924,216, + 1,0,0,0,925,926,7,18,0,0,926,927,7,0,0,0,927,928,7,20,0,0,928,929,7,22, + 0,0,929,930,7,0,0,0,930,931,7,3,0,0,931,932,7,17,0,0,932,933,7,8,0,0, + 933,218,1,0,0,0,934,935,7,18,0,0,935,936,7,8,0,0,936,937,7,9,0,0,937, + 938,7,11,0,0,938,939,7,8,0,0,939,220,1,0,0,0,940,941,7,18,0,0,941,942, + 7,4,0,0,942,943,7,5,0,0,943,944,7,22,0,0,944,945,7,0,0,0,945,946,7,3, + 0,0,946,947,7,17,0,0,947,948,7,8,0,0,948,222,1,0,0,0,949,950,7,18,0,0, + 950,951,7,17,0,0,951,952,7,3,0,0,952,953,7,7,0,0,953,954,7,4,0,0,954, + 955,5,95,0,0,955,956,7,21,0,0,956,957,7,16,0,0,957,958,7,4,0,0,958,959, + 7,5,0,0,959,224,1,0,0,0,960,961,7,5,0,0,961,962,7,16,0,0,962,226,1,0, + 0,0,963,964,7,5,0,0,964,965,7,16,0,0,965,966,7,6,0,0,966,967,7,8,0,0, + 967,228,1,0,0,0,968,969,7,5,0,0,969,970,7,16,0,0,970,971,7,7,0,0,971, + 230,1,0,0,0,972,973,7,5,0,0,973,974,7,16,0,0,974,975,7,5,0,0,975,976, + 7,8,0,0,976,232,1,0,0,0,977,978,7,5,0,0,978,979,7,17,0,0,979,980,7,3, + 0,0,980,981,7,3,0,0,981,234,1,0,0,0,982,983,7,16,0,0,983,984,7,5,0,0, + 984,236,1,0,0,0,985,986,7,16,0,0,986,987,7,5,0,0,987,988,7,3,0,0,988, + 989,7,2,0,0,989,238,1,0,0,0,990,991,7,16,0,0,991,992,7,15,0,0,992,993, + 7,7,0,0,993,994,7,4,0,0,994,995,7,16,0,0,995,996,7,5,0,0,996,997,7,10, + 0,0,997,240,1,0,0,0,998,999,7,16,0,0,999,1000,7,15,0,0,1000,1001,7,7, + 0,0,1001,1002,7,4,0,0,1002,1003,7,16,0,0,1003,1004,7,5,0,0,1004,1005, + 7,0,0,0,1005,1006,7,3,0,0,1006,242,1,0,0,0,1007,1008,7,16,0,0,1008,1009, + 7,9,0,0,1009,244,1,0,0,0,1010,1011,7,16,0,0,1011,1012,7,9,0,0,1012,1013, + 7,6,0,0,1013,1014,7,8,0,0,1014,1015,7,9,0,0,1015,246,1,0,0,0,1016,1017, + 7,15,0,0,1017,1018,7,9,0,0,1018,1019,7,4,0,0,1019,1020,7,18,0,0,1020, + 1021,7,0,0,0,1021,1022,7,9,0,0,1022,1023,7,2,0,0,1023,248,1,0,0,0,1024, + 1025,7,15,0,0,1025,1026,7,9,0,0,1026,1027,7,16,0,0,1027,1028,7,19,0,0, + 1028,1029,7,4,0,0,1029,1030,7,3,0,0,1030,1031,7,8,0,0,1031,250,1,0,0, + 0,1032,1033,7,15,0,0,1033,1034,7,9,0,0,1034,1035,7,16,0,0,1035,1036,7, + 21,0,0,1036,1037,7,8,0,0,1037,1038,7,1,0,0,1038,1039,7,7,0,0,1039,252, + 1,0,0,0,1040,1041,7,9,0,0,1041,1042,7,8,0,0,1042,1043,7,0,0,0,1043,1044, + 7,6,0,0,1044,254,1,0,0,0,1045,1046,7,9,0,0,1046,1047,7,8,0,0,1047,1048, + 7,3,0,0,1048,256,1,0,0,0,1049,1050,7,9,0,0,1050,1051,7,8,0,0,1051,1052, + 7,5,0,0,1052,1053,7,0,0,0,1053,1054,7,18,0,0,1054,1055,7,8,0,0,1055,258, + 1,0,0,0,1056,1057,7,9,0,0,1057,1058,7,8,0,0,1058,1059,7,7,0,0,1059,1060, + 7,17,0,0,1060,1061,7,9,0,0,1061,1062,7,5,0,0,1062,260,1,0,0,0,1063,1064, + 7,9,0,0,1064,1065,7,16,0,0,1065,1066,7,3,0,0,1066,1067,7,3,0,0,1067,1068, + 7,13,0,0,1068,1069,7,0,0,0,1069,1070,7,1,0,0,1070,1071,7,14,0,0,1071, + 262,1,0,0,0,1072,1073,7,9,0,0,1073,1074,7,16,0,0,1074,1075,7,3,0,0,1075, + 1076,7,3,0,0,1076,1077,7,13,0,0,1077,1078,7,0,0,0,1078,1079,7,1,0,0,1079, + 1080,7,14,0,0,1080,1081,5,95,0,0,1081,1082,7,10,0,0,1082,1083,7,14,0, + 0,1083,1084,7,4,0,0,1084,1085,7,15,0,0,1085,1086,5,95,0,0,1086,1087,7, + 1,0,0,1087,1088,7,12,0,0,1088,1089,7,8,0,0,1089,1090,7,1,0,0,1090,1091, + 7,14,0,0,1091,1092,7,15,0,0,1092,1093,7,16,0,0,1093,1094,7,4,0,0,1094, + 1095,7,5,0,0,1095,1096,7,7,0,0,1096,264,1,0,0,0,1097,1098,7,10,0,0,1098, + 1099,7,8,0,0,1099,1100,7,23,0,0,1100,1101,7,17,0,0,1101,1102,7,8,0,0, + 1102,1103,7,5,0,0,1103,1104,7,1,0,0,1104,1105,7,8,0,0,1105,266,1,0,0, + 0,1106,1107,7,10,0,0,1107,1108,7,8,0,0,1108,1109,7,7,0,0,1109,268,1,0, + 0,0,1110,1111,7,10,0,0,1111,1112,7,12,0,0,1112,1113,7,16,0,0,1113,1114, + 7,9,0,0,1114,1115,7,7,0,0,1115,1116,7,8,0,0,1116,1117,7,10,0,0,1117,1118, + 7,7,0,0,1118,270,1,0,0,0,1119,1120,7,10,0,0,1120,1121,7,7,0,0,1121,1122, + 7,0,0,0,1122,1123,7,9,0,0,1123,1124,7,7,0,0,1124,272,1,0,0,0,1125,1126, + 7,10,0,0,1126,1127,7,7,0,0,1127,1128,7,0,0,0,1128,1129,7,9,0,0,1129,1130, + 7,7,0,0,1130,1131,7,10,0,0,1131,274,1,0,0,0,1132,1133,7,10,0,0,1133,1134, + 7,7,0,0,1134,1135,7,9,0,0,1135,1136,7,17,0,0,1136,1137,7,1,0,0,1137,1138, + 7,7,0,0,1138,276,1,0,0,0,1139,1140,7,7,0,0,1140,1141,7,0,0,0,1141,1142, + 7,13,0,0,1142,1143,7,3,0,0,1143,1144,7,8,0,0,1144,278,1,0,0,0,1145,1146, + 7,7,0,0,1146,1147,7,12,0,0,1147,1148,7,8,0,0,1148,1149,7,5,0,0,1149,280, + 1,0,0,0,1150,1151,7,7,0,0,1151,1152,7,16,0,0,1152,282,1,0,0,0,1153,1154, + 7,7,0,0,1154,1155,7,9,0,0,1155,1156,7,0,0,0,1156,1157,7,4,0,0,1157,1158, + 7,3,0,0,1158,284,1,0,0,0,1159,1160,7,7,0,0,1160,1161,7,9,0,0,1161,1162, + 7,0,0,0,1162,1163,7,5,0,0,1163,1164,7,10,0,0,1164,1165,7,0,0,0,1165,1166, + 7,1,0,0,1166,1167,7,7,0,0,1167,1168,7,4,0,0,1168,1169,7,16,0,0,1169,1170, + 7,5,0,0,1170,286,1,0,0,0,1171,1172,7,7,0,0,1172,1173,7,9,0,0,1173,1174, + 7,17,0,0,1174,1175,7,8,0,0,1175,288,1,0,0,0,1176,1177,7,7,0,0,1177,1178, + 7,2,0,0,1178,1179,7,15,0,0,1179,1180,7,8,0,0,1180,290,1,0,0,0,1181,1182, + 7,17,0,0,1182,1183,7,5,0,0,1183,1184,7,4,0,0,1184,1185,7,16,0,0,1185, + 1186,7,5,0,0,1186,292,1,0,0,0,1187,1188,7,17,0,0,1188,1189,7,5,0,0,1189, + 1190,7,24,0,0,1190,1191,7,4,0,0,1191,1192,7,5,0,0,1192,1193,7,6,0,0,1193, + 294,1,0,0,0,1194,1195,7,17,0,0,1195,1196,7,5,0,0,1196,1197,7,4,0,0,1197, + 1198,7,5,0,0,1198,1199,7,10,0,0,1199,1200,7,7,0,0,1200,1201,7,0,0,0,1201, + 1202,7,3,0,0,1202,1203,7,3,0,0,1203,296,1,0,0,0,1204,1205,7,17,0,0,1205, + 1206,7,15,0,0,1206,1207,7,6,0,0,1207,1208,7,0,0,0,1208,1209,7,7,0,0,1209, + 1210,7,8,0,0,1210,298,1,0,0,0,1211,1212,7,17,0,0,1212,1213,7,10,0,0,1213, + 1214,7,8,0,0,1214,300,1,0,0,0,1215,1216,7,24,0,0,1216,1217,7,12,0,0,1217, + 1218,7,8,0,0,1218,1219,7,5,0,0,1219,302,1,0,0,0,1220,1221,7,24,0,0,1221, + 1222,7,12,0,0,1222,1223,7,8,0,0,1223,1224,7,9,0,0,1224,1225,7,8,0,0,1225, + 304,1,0,0,0,1226,1227,7,24,0,0,1227,1228,7,4,0,0,1228,1229,7,7,0,0,1229, + 1230,7,12,0,0,1230,306,1,0,0,0,1231,1232,7,24,0,0,1232,1233,7,9,0,0,1233, + 1234,7,4,0,0,1234,1235,7,7,0,0,1235,1236,7,8,0,0,1236,308,1,0,0,0,1237, + 1238,7,24,0,0,1238,1239,7,10,0,0,1239,1240,7,12,0,0,1240,1241,7,16,0, + 0,1241,1242,7,9,0,0,1242,1243,7,7,0,0,1243,1244,7,8,0,0,1244,1245,7,10, + 0,0,1245,1246,7,7,0,0,1246,310,1,0,0,0,1247,1248,7,20,0,0,1248,1249,7, + 16,0,0,1249,1250,7,9,0,0,1250,312,1,0,0,0,1251,1252,7,10,0,0,1252,1253, + 7,4,0,0,1253,1254,7,5,0,0,1254,1255,7,11,0,0,1255,1256,7,3,0,0,1256,1257, + 7,8,0,0,1257,314,1,0,0,0,1258,1259,7,2,0,0,1259,1260,7,4,0,0,1260,1261, + 7,8,0,0,1261,1262,7,3,0,0,1262,1263,7,6,0,0,1263,316,1,0,0,0,1264,1265, + 7,17,0,0,1265,1266,7,10,0,0,1266,1267,7,8,0,0,1267,1268,7,9,0,0,1268, + 318,1,0,0,0,1269,1270,7,15,0,0,1270,1271,7,0,0,0,1271,1272,7,10,0,0,1272, + 1273,7,10,0,0,1273,1274,7,24,0,0,1274,1275,7,16,0,0,1275,1276,7,9,0,0, + 1276,1277,7,6,0,0,1277,320,1,0,0,0,1278,1279,7,9,0,0,1279,1280,7,16,0, + 0,1280,1281,7,3,0,0,1281,1282,7,8,0,0,1282,322,1,0,0,0,1283,1284,7,18, + 0,0,1284,1285,7,0,0,0,1285,1286,7,15,0,0,1286,324,1,0,0,0,1287,1288,7, + 6,0,0,1288,1289,7,8,0,0,1289,1290,7,1,0,0,1290,1291,7,4,0,0,1291,1292, + 7,18,0,0,1292,1293,7,0,0,0,1293,1294,7,3,0,0,1294,326,1,0,0,0,1295,1296, + 5,42,0,0,1296,328,1,0,0,0,1297,1298,7,10,0,0,1298,1299,7,14,0,0,1299, + 1300,7,4,0,0,1300,1301,7,15,0,0,1301,330,1,0,0,0,1302,1303,5,33,0,0,1303, + 1304,5,61,0,0,1304,332,1,0,0,0,1305,1306,5,58,0,0,1306,334,1,0,0,0,1307, + 1308,5,46,0,0,1308,1309,5,46,0,0,1309,336,1,0,0,0,1310,1311,5,45,0,0, + 1311,338,1,0,0,0,1312,1313,5,33,0,0,1313,340,1,0,0,0,1314,1319,5,34,0, + 0,1315,1318,3,407,203,0,1316,1318,3,343,171,0,1317,1315,1,0,0,0,1317, + 1316,1,0,0,0,1318,1321,1,0,0,0,1319,1317,1,0,0,0,1319,1320,1,0,0,0,1320, + 1322,1,0,0,0,1321,1319,1,0,0,0,1322,1333,5,34,0,0,1323,1328,5,39,0,0, + 1324,1327,3,387,193,0,1325,1327,3,343,171,0,1326,1324,1,0,0,0,1326,1325, + 1,0,0,0,1327,1330,1,0,0,0,1328,1326,1,0,0,0,1328,1329,1,0,0,0,1329,1331, + 1,0,0,0,1330,1328,1,0,0,0,1331,1333,5,39,0,0,1332,1314,1,0,0,0,1332,1323, + 1,0,0,0,1333,342,1,0,0,0,1334,1356,5,92,0,0,1335,1357,7,25,0,0,1336,1337, + 7,20,0,0,1337,1338,3,349,174,0,1338,1339,3,349,174,0,1339,1357,1,0,0, + 0,1340,1341,7,17,0,0,1341,1342,3,349,174,0,1342,1343,3,349,174,0,1343, + 1344,3,349,174,0,1344,1345,3,349,174,0,1345,1357,1,0,0,0,1346,1347,7, + 17,0,0,1347,1348,3,349,174,0,1348,1349,3,349,174,0,1349,1350,3,349,174, + 0,1350,1351,3,349,174,0,1351,1352,3,349,174,0,1352,1353,3,349,174,0,1353, + 1354,3,349,174,0,1354,1355,3,349,174,0,1355,1357,1,0,0,0,1356,1335,1, + 0,0,0,1356,1336,1,0,0,0,1356,1340,1,0,0,0,1356,1346,1,0,0,0,1357,344, + 1,0,0,0,1358,1367,3,357,178,0,1359,1363,3,353,176,0,1360,1362,3,351,175, + 0,1361,1360,1,0,0,0,1362,1365,1,0,0,0,1363,1361,1,0,0,0,1363,1364,1,0, + 0,0,1364,1367,1,0,0,0,1365,1363,1,0,0,0,1366,1358,1,0,0,0,1366,1359,1, + 0,0,0,1367,346,1,0,0,0,1368,1370,7,26,0,0,1369,1368,1,0,0,0,1370,348, + 1,0,0,0,1371,1374,3,351,175,0,1372,1374,3,347,173,0,1373,1371,1,0,0,0, + 1373,1372,1,0,0,0,1374,350,1,0,0,0,1375,1378,3,357,178,0,1376,1378,3, + 353,176,0,1377,1375,1,0,0,0,1377,1376,1,0,0,0,1378,352,1,0,0,0,1379,1382, + 3,355,177,0,1380,1382,2,56,57,0,1381,1379,1,0,0,0,1381,1380,1,0,0,0,1382, + 354,1,0,0,0,1383,1384,2,49,55,0,1384,356,1,0,0,0,1385,1386,5,48,0,0,1386, + 358,1,0,0,0,1387,1389,3,351,175,0,1388,1387,1,0,0,0,1389,1390,1,0,0,0, + 1390,1388,1,0,0,0,1390,1391,1,0,0,0,1391,1410,1,0,0,0,1392,1394,3,351, + 175,0,1393,1392,1,0,0,0,1394,1395,1,0,0,0,1395,1393,1,0,0,0,1395,1396, + 1,0,0,0,1396,1397,1,0,0,0,1397,1399,5,46,0,0,1398,1400,3,351,175,0,1399, + 1398,1,0,0,0,1400,1401,1,0,0,0,1401,1399,1,0,0,0,1401,1402,1,0,0,0,1402, + 1410,1,0,0,0,1403,1405,5,46,0,0,1404,1406,3,351,175,0,1405,1404,1,0,0, + 0,1406,1407,1,0,0,0,1407,1405,1,0,0,0,1407,1408,1,0,0,0,1408,1410,1,0, + 0,0,1409,1388,1,0,0,0,1409,1393,1,0,0,0,1409,1403,1,0,0,0,1410,1411,1, + 0,0,0,1411,1413,7,8,0,0,1412,1414,5,45,0,0,1413,1412,1,0,0,0,1413,1414, + 1,0,0,0,1414,1416,1,0,0,0,1415,1417,3,351,175,0,1416,1415,1,0,0,0,1417, + 1418,1,0,0,0,1418,1416,1,0,0,0,1418,1419,1,0,0,0,1419,360,1,0,0,0,1420, + 1422,3,351,175,0,1421,1420,1,0,0,0,1422,1425,1,0,0,0,1423,1421,1,0,0, + 0,1423,1424,1,0,0,0,1424,1426,1,0,0,0,1425,1423,1,0,0,0,1426,1428,5,46, + 0,0,1427,1429,3,351,175,0,1428,1427,1,0,0,0,1429,1430,1,0,0,0,1430,1428, + 1,0,0,0,1430,1431,1,0,0,0,1431,362,1,0,0,0,1432,1436,3,365,182,0,1433, + 1435,3,367,183,0,1434,1433,1,0,0,0,1435,1438,1,0,0,0,1436,1434,1,0,0, + 0,1436,1437,1,0,0,0,1437,364,1,0,0,0,1438,1436,1,0,0,0,1439,1442,3,415, + 207,0,1440,1442,3,403,201,0,1441,1439,1,0,0,0,1441,1440,1,0,0,0,1442, + 366,1,0,0,0,1443,1446,3,383,191,0,1444,1446,3,399,199,0,1445,1443,1,0, + 0,0,1445,1444,1,0,0,0,1446,368,1,0,0,0,1447,1451,5,96,0,0,1448,1450,3, + 379,189,0,1449,1448,1,0,0,0,1450,1453,1,0,0,0,1451,1449,1,0,0,0,1451, + 1452,1,0,0,0,1452,1454,1,0,0,0,1453,1451,1,0,0,0,1454,1456,5,96,0,0,1455, + 1447,1,0,0,0,1456,1457,1,0,0,0,1457,1455,1,0,0,0,1457,1458,1,0,0,0,1458, + 370,1,0,0,0,1459,1461,3,373,186,0,1460,1459,1,0,0,0,1461,1462,1,0,0,0, + 1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463,372,1,0,0,0,1464,1477,3,401, + 200,0,1465,1477,3,405,202,0,1466,1477,3,409,204,0,1467,1477,3,411,205, + 0,1468,1477,3,377,188,0,1469,1477,3,397,198,0,1470,1477,3,395,197,0,1471, + 1477,3,393,196,0,1472,1477,3,381,190,0,1473,1477,3,413,206,0,1474,1477, + 7,27,0,0,1475,1477,3,375,187,0,1476,1464,1,0,0,0,1476,1465,1,0,0,0,1476, + 1466,1,0,0,0,1476,1467,1,0,0,0,1476,1468,1,0,0,0,1476,1469,1,0,0,0,1476, + 1470,1,0,0,0,1476,1471,1,0,0,0,1476,1472,1,0,0,0,1476,1473,1,0,0,0,1476, + 1474,1,0,0,0,1476,1475,1,0,0,0,1477,374,1,0,0,0,1478,1479,5,47,0,0,1479, + 1480,5,42,0,0,1480,1486,1,0,0,0,1481,1485,3,385,192,0,1482,1483,5,42, + 0,0,1483,1485,3,391,195,0,1484,1481,1,0,0,0,1484,1482,1,0,0,0,1485,1488, + 1,0,0,0,1486,1484,1,0,0,0,1486,1487,1,0,0,0,1487,1489,1,0,0,0,1488,1486, + 1,0,0,0,1489,1490,5,42,0,0,1490,1508,5,47,0,0,1491,1492,5,47,0,0,1492, + 1493,5,47,0,0,1493,1497,1,0,0,0,1494,1496,3,389,194,0,1495,1494,1,0,0, + 0,1496,1499,1,0,0,0,1497,1495,1,0,0,0,1497,1498,1,0,0,0,1498,1501,1,0, + 0,0,1499,1497,1,0,0,0,1500,1502,3,397,198,0,1501,1500,1,0,0,0,1501,1502, + 1,0,0,0,1502,1505,1,0,0,0,1503,1506,3,409,204,0,1504,1506,5,0,0,1,1505, + 1503,1,0,0,0,1505,1504,1,0,0,0,1506,1508,1,0,0,0,1507,1478,1,0,0,0,1507, + 1491,1,0,0,0,1508,376,1,0,0,0,1509,1510,7,28,0,0,1510,378,1,0,0,0,1511, + 1512,8,29,0,0,1512,380,1,0,0,0,1513,1514,7,30,0,0,1514,382,1,0,0,0,1515, + 1516,7,31,0,0,1516,384,1,0,0,0,1517,1518,8,32,0,0,1518,386,1,0,0,0,1519, + 1520,8,33,0,0,1520,388,1,0,0,0,1521,1522,8,34,0,0,1522,390,1,0,0,0,1523, + 1524,8,35,0,0,1524,392,1,0,0,0,1525,1526,7,36,0,0,1526,394,1,0,0,0,1527, + 1528,7,37,0,0,1528,396,1,0,0,0,1529,1530,7,38,0,0,1530,398,1,0,0,0,1531, + 1532,7,39,0,0,1532,400,1,0,0,0,1533,1534,7,40,0,0,1534,402,1,0,0,0,1535, + 1536,7,41,0,0,1536,404,1,0,0,0,1537,1538,7,42,0,0,1538,406,1,0,0,0,1539, + 1540,8,43,0,0,1540,408,1,0,0,0,1541,1542,7,44,0,0,1542,410,1,0,0,0,1543, + 1544,7,45,0,0,1544,412,1,0,0,0,1545,1546,7,46,0,0,1546,414,1,0,0,0,1547, + 1548,7,47,0,0,1548,416,1,0,0,0,1549,1550,9,0,0,0,1550,418,1,0,0,0,35, + 0,1317,1319,1326,1328,1332,1356,1363,1366,1369,1373,1377,1381,1390,1395, + 1401,1407,1409,1413,1418,1423,1430,1436,1441,1445,1451,1457,1462,1476, + 1484,1486,1497,1501,1505,1507,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index 7b3bdaa145..d1a41f0039 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -57,11 +57,12 @@ void cypherParserInitialize() { "iC_DetachDatabase", "iC_UseDatabase", "iC_CreateGraph", "iC_UseGraph", "iC_StandaloneCall", "iC_CommentOn", "iC_CreateMacro", "iC_PositionalArgs", "iC_DefaultArg", "iC_FilePaths", "iC_IfNotExists", "iC_CreateNodeTable", - "iC_CreateRelTable", "iC_FromToConnections", "iC_FromToConnection", - "iC_CreateSequence", "iC_CreateType", "iC_SequenceOptions", "iC_WithPasswd", - "iC_CreateUser", "iC_CreateRole", "iC_IncrementBy", "iC_MinValue", - "iC_MaxValue", "iC_StartWith", "iC_Cycle", "iC_IfExists", "iC_Drop", - "iC_AlterTable", "iC_AlterOptions", "iC_AddProperty", "iC_Default", + "iC_CreateRelTable", "iC_CreateIndex", "iC_IndexPattern", "iC_IndexNodePattern", + "iC_IndexRelationshipPattern", "iC_IndexPropertyPattern", "iC_FromToConnections", + "iC_FromToConnection", "iC_CreateSequence", "iC_CreateType", "iC_SequenceOptions", + "iC_WithPasswd", "iC_CreateUser", "iC_CreateRole", "iC_IncrementBy", + "iC_MinValue", "iC_MaxValue", "iC_StartWith", "iC_Cycle", "iC_IfExists", + "iC_Drop", "iC_AlterTable", "iC_AlterOptions", "iC_AddProperty", "iC_Default", "iC_DropProperty", "iC_RenameTable", "iC_RenameProperty", "iC_AddFromToConnection", "iC_DropFromToConnection", "iC_ColumnDefinitions", "iC_ColumnDefinition", "iC_PropertyDefinitions", "iC_PropertyDefinition", "iC_CreateNodeConstraint", @@ -114,8 +115,9 @@ void cypherParserInitialize() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", "", "'!='", - "':'", "'..'", "'-'", "'!'", "", "", "", "", "", "", "", "", "'0'" + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "'*'", + "", "'!='", "':'", "'..'", "'-'", "'!'", "", "", "", "", "", "", "", + "", "'0'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", @@ -126,26 +128,26 @@ void cypherParserInitialize() { "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", - "EXTENSION", "FALSE", "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", - "HINT", "IMPORT", "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", - "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", - "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", - "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", - "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", - "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", - "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", - "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", - "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", "MAP", "DECIMAL", - "STAR", "L_SKIP", "INVALID_NOT_EQUAL", "COLON", "DOTDOT", "MINUS", - "FACTORIAL", "StringLiteral", "EscapedChar", "DecimalInteger", "HexLetter", - "HexDigit", "Digit", "NonZeroDigit", "NonZeroOctDigit", "ZeroDigit", - "ExponentDecimalReal", "RegularDecimalReal", "UnescapedSymbolicName", - "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", "SP", - "WHITESPACE", "CypherComment", "Unknown" + "EXTENSION", "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", + "HEADERS", "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", + "IS", "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", + "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", + "NONE", "NULL", "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", + "PRIMARY", "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", + "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", + "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", + "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", + "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", + "PASSWORD", "ROLE", "MAP", "DECIMAL", "STAR", "L_SKIP", "INVALID_NOT_EQUAL", + "COLON", "DOTDOT", "MINUS", "FACTORIAL", "StringLiteral", "EscapedChar", + "DecimalInteger", "HexLetter", "HexDigit", "Digit", "NonZeroDigit", + "NonZeroOctDigit", "ZeroDigit", "ExponentDecimalReal", "RegularDecimalReal", + "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", "EscapedSymbolicName", + "SP", "WHITESPACE", "CypherComment", "Unknown" } ); static const int32_t serializedATNSegment[] = { - 4,1,186,2953,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6, + 4,1,189,3065,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6, 2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, @@ -172,1160 +174,1208 @@ void cypherParserInitialize() { 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170, 7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176, - 7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,1,0,1,0,3,0,365, - 8,0,1,0,1,0,3,0,369,8,0,1,0,5,0,372,8,0,10,0,12,0,375,9,0,1,0,3,0,378, - 8,0,1,0,1,0,1,1,3,1,383,8,1,1,1,3,1,386,8,1,1,1,1,1,3,1,390,8,1,1,1,3, - 1,393,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,419,8,2,1,3,1,3,1,3,1,3,3,3,425, - 8,3,1,3,1,3,1,3,1,3,1,3,3,3,432,8,3,1,3,1,3,3,3,436,8,3,1,3,1,3,3,3,440, - 8,3,1,3,1,3,3,3,444,8,3,1,4,3,4,447,8,4,1,4,1,4,3,4,451,8,4,1,4,1,4,3, - 4,455,8,4,1,4,1,4,3,4,459,8,4,1,4,5,4,462,8,4,10,4,12,4,465,9,4,1,4,3, - 4,468,8,4,3,4,470,8,4,1,4,1,4,1,5,1,5,1,5,3,5,477,8,5,1,5,1,5,3,5,481, - 8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,490,8,5,1,5,1,5,1,5,3,5,495,8,5,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,505,8,6,1,6,1,6,3,6,509,8,6,1,6,1,6, - 3,6,513,8,6,1,6,5,6,516,8,6,10,6,12,6,519,9,6,1,6,1,6,1,6,1,6,1,6,1,6, - 1,7,1,7,1,7,1,7,3,7,531,8,7,1,7,1,7,3,7,535,8,7,1,7,1,7,1,7,1,7,1,7,1, - 7,3,7,543,8,7,1,7,1,7,3,7,547,8,7,1,7,1,7,3,7,551,8,7,1,7,1,7,3,7,555, - 8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,563,8,8,1,8,1,8,3,8,567,8,8,1,8,1,8,3, - 8,571,8,8,1,8,1,8,3,8,575,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,3,10,590,8,10,1,10,1,10,1,10,3,10,595,8,10,1,10,1, - 10,1,10,1,10,3,10,601,8,10,1,10,1,10,3,10,605,8,10,1,10,3,10,608,8,10, - 1,10,3,10,611,8,10,1,10,1,10,1,11,1,11,3,11,617,8,11,1,11,1,11,3,11,621, - 8,11,1,11,5,11,624,8,11,10,11,12,11,627,9,11,3,11,629,8,11,1,11,1,11, - 1,11,3,11,634,8,11,1,12,1,12,3,12,638,8,12,1,12,1,12,3,12,642,8,12,1, - 12,5,12,645,8,12,10,12,12,12,648,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1, - 14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,665,8,15,1,16,1,16,1, - 16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,3,17,677,8,17,1,17,1,17,3,17,681, - 8,17,1,17,1,17,1,17,1,17,1,17,3,17,688,8,17,1,18,1,18,1,18,1,18,1,18, - 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19, - 708,8,19,1,19,1,19,3,19,712,8,19,1,19,3,19,715,8,19,1,19,3,19,718,8,19, - 1,19,3,19,721,8,19,1,19,3,19,724,8,19,1,19,1,19,3,19,728,8,19,1,19,5, - 19,731,8,19,10,19,12,19,734,9,19,1,19,3,19,737,8,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,20,1,20,3,20,747,8,20,1,20,1,20,3,20,751,8,20,1,20,5,20, - 754,8,20,10,20,12,20,757,9,20,1,21,1,21,3,21,761,8,21,1,21,1,21,1,21, - 3,21,766,8,21,1,21,1,21,1,22,1,22,3,22,772,8,22,1,22,1,22,3,22,776,8, - 22,1,22,1,22,3,22,780,8,22,1,22,5,22,783,8,22,10,22,12,22,786,9,22,1, - 22,1,22,1,22,1,22,3,22,792,8,22,1,22,1,22,3,22,796,8,22,1,22,1,22,3,22, - 800,8,22,1,22,3,22,803,8,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1, - 24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,820,8,24,1,24,1,24,3,24,824,8,24, - 1,24,1,24,3,24,828,8,24,1,24,1,24,3,24,832,8,24,1,24,1,24,3,24,836,8, - 24,1,24,3,24,839,8,24,1,24,3,24,842,8,24,1,24,1,24,1,24,1,24,1,24,1,24, - 3,24,850,8,24,1,24,1,24,1,24,3,24,855,8,24,1,24,1,24,3,24,859,8,24,1, - 24,1,24,3,24,863,8,24,1,24,1,24,3,24,867,8,24,1,25,1,25,1,25,1,25,1,25, - 1,25,1,25,3,25,876,8,25,1,25,1,25,3,25,880,8,25,1,25,1,25,1,25,3,25,885, - 8,25,1,25,1,25,3,25,889,8,25,1,25,1,25,3,25,893,8,25,1,25,1,25,3,25,897, - 8,25,1,25,1,25,3,25,901,8,25,3,25,903,8,25,1,25,1,25,3,25,907,8,25,1, - 25,1,25,3,25,911,8,25,3,25,913,8,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25, - 921,8,25,1,25,1,25,1,25,3,25,926,8,25,1,25,1,25,3,25,930,8,25,1,25,1, - 25,3,25,934,8,25,1,25,1,25,3,25,938,8,25,1,26,1,26,3,26,942,8,26,1,26, - 1,26,3,26,946,8,26,1,26,5,26,949,8,26,10,26,12,26,952,9,26,1,27,1,27, - 1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28, - 969,8,28,1,28,1,28,1,28,5,28,974,8,28,10,28,12,28,977,9,28,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,989,8,29,1,30,1,30,1,30, - 1,30,1,30,3,30,996,8,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32, - 1,32,1,32,1,32,1,32,1,32,3,32,1012,8,32,1,32,1,32,3,32,1016,8,32,1,33, - 1,33,1,33,1,33,1,33,1,33,1,33,3,33,1025,8,33,1,33,1,33,1,34,1,34,1,34, - 1,34,3,34,1033,8,34,1,34,3,34,1036,8,34,1,34,1,34,1,35,1,35,1,35,1,35, - 1,35,1,35,3,35,1046,8,35,1,35,3,35,1049,8,35,1,36,1,36,1,36,1,36,1,36, - 1,36,3,36,1057,8,36,1,36,3,36,1060,8,36,1,37,1,37,1,37,1,37,3,37,1066, - 8,37,1,37,3,37,1069,8,37,1,37,1,37,1,38,1,38,3,38,1075,8,38,1,38,1,38, - 1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1090,8,40, - 1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42, - 1,42,1,42,3,42,1108,8,42,1,43,1,43,1,43,1,43,1,43,3,43,1115,8,43,1,43, - 1,43,1,43,1,43,1,43,3,43,1122,8,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45, - 1,45,1,45,3,45,1133,8,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,47, - 1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,3,48,1156, - 8,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,3,49,1165,8,49,1,49,1,49,1,50, - 1,50,3,50,1171,8,50,1,50,1,50,3,50,1175,8,50,1,50,5,50,1178,8,50,10,50, - 12,50,1181,9,50,1,51,1,51,1,51,1,51,1,52,1,52,3,52,1189,8,52,1,52,1,52, - 3,52,1193,8,52,1,52,5,52,1196,8,52,10,52,12,52,1199,9,52,1,53,1,53,1, - 53,3,53,1204,8,53,1,53,1,53,1,53,1,53,3,53,1210,8,53,1,54,1,54,1,54,1, - 54,3,54,1216,8,54,1,54,1,54,3,54,1220,8,54,1,54,1,54,3,54,1224,8,54,1, - 54,1,54,1,55,1,55,3,55,1230,8,55,1,55,1,55,3,55,1234,8,55,1,55,1,55,3, - 55,1238,8,55,1,55,1,55,1,56,1,56,3,56,1244,8,56,1,56,1,56,3,56,1248,8, - 56,1,56,1,56,3,56,1252,8,56,1,56,1,56,1,57,1,57,3,57,1258,8,57,1,57,1, - 57,3,57,1262,8,57,1,57,1,57,3,57,1266,8,57,1,57,1,57,3,57,1270,8,57,1, - 57,1,57,3,57,1274,8,57,1,57,1,57,1,58,1,58,3,58,1280,8,58,1,58,1,58,3, - 58,1284,8,58,1,58,1,58,3,58,1288,8,58,1,58,1,58,3,58,1292,8,58,1,58,1, - 58,3,58,1296,8,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,3,59,1306,8, - 59,1,59,1,59,5,59,1310,8,59,10,59,12,59,1313,9,59,1,60,1,60,5,60,1317, - 8,60,10,60,12,60,1320,9,60,1,61,1,61,3,61,1324,8,61,1,61,1,61,1,62,1, - 62,3,62,1330,8,62,1,63,1,63,1,63,3,63,1335,8,63,1,64,1,64,1,65,1,65,1, - 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,1352,8,65,1, - 66,1,66,1,66,1,66,3,66,1358,8,66,1,67,1,67,1,67,1,67,3,67,1364,8,67,1, - 67,1,67,3,67,1368,8,67,1,68,1,68,3,68,1372,8,68,1,68,1,68,1,68,1,68,1, - 68,1,68,1,68,3,68,1381,8,68,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1, - 71,1,71,1,72,1,72,3,72,1395,8,72,1,72,5,72,1398,8,72,10,72,12,72,1401, - 9,72,1,72,1,72,3,72,1405,8,72,4,72,1407,8,72,11,72,12,72,1408,1,72,1, - 72,1,72,3,72,1414,8,72,1,73,1,73,1,73,1,73,3,73,1420,8,73,1,73,1,73,1, - 73,3,73,1425,8,73,1,73,3,73,1428,8,73,1,74,1,74,3,74,1432,8,74,1,75,1, - 75,3,75,1436,8,75,5,75,1438,8,75,10,75,12,75,1441,9,75,1,75,1,75,1,75, - 3,75,1446,8,75,5,75,1448,8,75,10,75,12,75,1451,9,75,1,75,1,75,3,75,1455, - 8,75,1,75,5,75,1458,8,75,10,75,12,75,1461,9,75,1,75,3,75,1464,8,75,1, - 75,3,75,1467,8,75,3,75,1469,8,75,1,76,1,76,3,76,1473,8,76,4,76,1475,8, - 76,11,76,12,76,1476,1,76,1,76,1,77,1,77,3,77,1483,8,77,5,77,1485,8,77, - 10,77,12,77,1488,9,77,1,77,1,77,3,77,1492,8,77,5,77,1494,8,77,10,77,12, - 77,1497,9,77,1,77,1,77,1,78,1,78,1,78,1,78,3,78,1505,8,78,1,79,1,79,1, - 79,1,79,3,79,1511,8,79,1,80,1,80,1,80,1,80,1,80,1,80,3,80,1519,8,80,1, - 80,1,80,3,80,1523,8,80,1,80,1,80,3,80,1527,8,80,1,80,1,80,3,80,1531,8, - 80,1,80,1,80,1,80,1,80,1,80,3,80,1538,8,80,1,80,1,80,3,80,1542,8,80,1, - 80,1,80,3,80,1546,8,80,1,80,1,80,3,80,1550,8,80,1,80,3,80,1553,8,80,1, - 80,3,80,1556,8,80,1,81,1,81,1,81,1,81,1,81,3,81,1563,8,81,1,81,1,81,1, - 82,1,82,3,82,1569,8,82,1,82,1,82,3,82,1573,8,82,1,82,5,82,1576,8,82,10, - 82,12,82,1579,9,82,1,83,1,83,1,83,1,83,3,83,1585,8,83,1,83,3,83,1588, - 8,83,1,83,3,83,1591,8,83,1,83,1,83,1,83,3,83,1596,8,83,1,84,1,84,3,84, - 1600,8,84,1,84,1,84,3,84,1604,8,84,1,84,1,84,1,84,3,84,1609,8,84,1,84, - 1,84,3,84,1613,8,84,1,85,1,85,1,85,1,85,1,86,1,86,1,86,3,86,1622,8,86, - 1,86,1,86,3,86,1626,8,86,1,86,1,86,1,86,3,86,1631,8,86,1,86,1,86,1,86, - 1,86,1,86,1,86,1,86,1,86,1,86,1,86,4,86,1643,8,86,11,86,12,86,1644,5, - 86,1647,8,86,10,86,12,86,1650,9,86,1,87,1,87,3,87,1654,8,87,1,87,1,87, - 1,87,1,87,1,87,1,87,1,88,1,88,3,88,1664,8,88,1,88,1,88,1,89,1,89,3,89, - 1670,8,89,1,89,1,89,1,89,5,89,1675,8,89,10,89,12,89,1678,9,89,1,90,1, - 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1690,8,90,1,91,1,91,3, - 91,1694,8,91,1,91,1,91,3,91,1698,8,91,1,91,1,91,3,91,1702,8,91,1,91,5, - 91,1705,8,91,10,91,12,91,1708,9,91,1,91,1,91,3,91,1712,8,91,1,91,1,91, - 3,91,1716,8,91,1,91,1,91,3,91,1720,8,91,1,91,1,91,3,91,1724,8,91,1,92, - 1,92,3,92,1728,8,92,1,92,1,92,3,92,1732,8,92,1,92,1,92,1,93,1,93,3,93, - 1738,8,93,1,93,1,93,3,93,1742,8,93,1,93,1,93,3,93,1746,8,93,1,93,1,93, - 3,93,1750,8,93,1,93,5,93,1753,8,93,10,93,12,93,1756,9,93,1,94,1,94,1, - 94,3,94,1761,8,94,1,94,3,94,1764,8,94,1,95,1,95,1,95,1,96,3,96,1770,8, - 96,1,96,3,96,1773,8,96,1,96,1,96,1,96,1,96,3,96,1779,8,96,1,96,1,96,3, - 96,1783,8,96,1,96,1,96,3,96,1787,8,96,1,97,1,97,3,97,1791,8,97,1,97,1, - 97,3,97,1795,8,97,1,97,5,97,1798,8,97,10,97,12,97,1801,9,97,1,97,1,97, - 3,97,1805,8,97,1,97,1,97,3,97,1809,8,97,1,97,5,97,1812,8,97,10,97,12, - 97,1815,9,97,3,97,1817,8,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,1826, - 8,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,1835,8,99,1,99,5,99,1838, - 8,99,10,99,12,99,1841,9,99,1,100,1,100,1,100,1,100,1,101,1,101,1,101, - 1,101,1,102,1,102,3,102,1853,8,102,1,102,3,102,1856,8,102,1,103,1,103, - 1,103,1,103,1,104,1,104,3,104,1864,8,104,1,104,1,104,3,104,1868,8,104, - 1,104,5,104,1871,8,104,10,104,12,104,1874,9,104,1,105,1,105,3,105,1878, - 8,105,1,105,1,105,3,105,1882,8,105,1,105,1,105,1,105,3,105,1887,8,105, - 1,106,1,106,1,107,1,107,3,107,1893,8,107,1,107,5,107,1896,8,107,10,107, - 12,107,1899,9,107,1,107,1,107,1,107,1,107,3,107,1905,8,107,1,108,1,108, - 3,108,1909,8,108,1,108,1,108,3,108,1913,8,108,3,108,1915,8,108,1,108, - 1,108,3,108,1919,8,108,3,108,1921,8,108,1,108,1,108,3,108,1925,8,108, - 3,108,1927,8,108,1,108,1,108,1,109,1,109,3,109,1933,8,109,1,109,1,109, - 1,110,1,110,3,110,1939,8,110,1,110,1,110,3,110,1943,8,110,1,110,3,110, - 1946,8,110,1,110,3,110,1949,8,110,1,110,1,110,1,110,1,110,3,110,1955, - 8,110,1,110,3,110,1958,8,110,1,110,3,110,1961,8,110,1,110,1,110,3,110, - 1965,8,110,1,110,1,110,1,110,1,110,3,110,1971,8,110,1,110,3,110,1974, - 8,110,1,110,3,110,1977,8,110,1,110,1,110,3,110,1981,8,110,1,111,1,111, - 3,111,1985,8,111,1,111,1,111,3,111,1989,8,111,3,111,1991,8,111,1,111, - 1,111,3,111,1995,8,111,3,111,1997,8,111,1,111,1,111,3,111,2001,8,111, - 3,111,2003,8,111,1,111,1,111,3,111,2007,8,111,3,111,2009,8,111,1,111, - 1,111,1,112,1,112,3,112,2015,8,112,1,112,1,112,3,112,2019,8,112,1,112, - 1,112,3,112,2023,8,112,1,112,1,112,3,112,2027,8,112,1,112,1,112,3,112, - 2031,8,112,1,112,1,112,3,112,2035,8,112,1,112,1,112,3,112,2039,8,112, - 1,112,1,112,3,112,2043,8,112,5,112,2045,8,112,10,112,12,112,2048,9,112, - 3,112,2050,8,112,1,112,1,112,1,113,1,113,3,113,2056,8,113,1,113,1,113, - 3,113,2060,8,113,1,113,1,113,3,113,2064,8,113,1,113,3,113,2067,8,113, - 1,113,5,113,2070,8,113,10,113,12,113,2073,9,113,1,114,1,114,3,114,2077, - 8,114,1,114,1,114,3,114,2081,8,114,1,114,1,114,3,114,2085,8,114,1,114, - 3,114,2088,8,114,1,114,3,114,2091,8,114,1,114,5,114,2094,8,114,10,114, - 12,114,2097,9,114,1,115,1,115,3,115,2101,8,115,1,115,3,115,2104,8,115, - 1,115,3,115,2107,8,115,1,115,3,115,2110,8,115,1,115,3,115,2113,8,115, - 1,115,3,115,2116,8,115,1,116,1,116,3,116,2120,8,116,1,116,1,116,3,116, - 2124,8,116,1,116,1,116,3,116,2128,8,116,1,116,1,116,3,116,2132,8,116, - 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2142,8,116,1,117, - 3,117,2145,8,117,1,117,3,117,2148,8,117,1,117,1,117,3,117,2152,8,117, - 1,117,3,117,2155,8,117,1,117,3,117,2158,8,117,1,118,1,118,3,118,2162, - 8,118,1,118,1,118,3,118,2166,8,118,1,118,1,118,3,118,2170,8,118,1,118, - 1,118,3,118,2174,8,118,1,118,1,118,3,118,2178,8,118,1,118,1,118,3,118, - 2182,8,118,3,118,2184,8,118,1,118,3,118,2187,8,118,1,118,1,118,3,118, - 2191,8,118,1,118,1,118,3,118,2195,8,118,1,118,1,118,3,118,2199,8,118, - 1,118,1,118,3,118,2203,8,118,3,118,2205,8,118,1,118,1,118,1,119,1,119, - 3,119,2211,8,119,1,119,3,119,2214,8,119,1,119,3,119,2217,8,119,1,119, - 1,119,1,120,1,120,1,121,1,121,1,122,1,122,1,122,3,122,2228,8,122,1,123, - 1,123,1,124,1,124,1,125,1,125,1,125,1,125,1,125,5,125,2239,8,125,10,125, - 12,125,2242,9,125,1,126,1,126,1,126,1,126,1,126,5,126,2249,8,126,10,126, - 12,126,2252,9,126,1,127,1,127,1,127,1,127,1,127,5,127,2259,8,127,10,127, - 12,127,2262,9,127,1,128,1,128,3,128,2266,8,128,5,128,2268,8,128,10,128, - 12,128,2271,9,128,1,128,1,128,1,129,1,129,3,129,2277,8,129,1,129,1,129, - 3,129,2281,8,129,1,129,1,129,3,129,2285,8,129,1,129,1,129,3,129,2289, - 8,129,1,129,1,129,3,129,2293,8,129,1,129,1,129,1,129,1,129,1,129,1,129, - 3,129,2301,8,129,1,129,1,129,3,129,2305,8,129,1,129,1,129,3,129,2309, - 8,129,1,129,1,129,3,129,2313,8,129,1,129,1,129,4,129,2317,8,129,11,129, - 12,129,2318,1,129,1,129,3,129,2323,8,129,1,130,1,130,1,131,1,131,3,131, - 2329,8,131,1,131,1,131,3,131,2333,8,131,1,131,5,131,2336,8,131,10,131, - 12,131,2339,9,131,1,132,1,132,3,132,2343,8,132,1,132,1,132,3,132,2347, - 8,132,1,132,5,132,2350,8,132,10,132,12,132,2353,9,132,1,133,1,133,3,133, - 2357,8,133,1,133,1,133,3,133,2361,8,133,1,133,1,133,5,133,2365,8,133, - 10,133,12,133,2368,9,133,1,134,1,134,1,135,1,135,3,135,2374,8,135,1,135, - 1,135,3,135,2378,8,135,1,135,1,135,5,135,2382,8,135,10,135,12,135,2385, - 9,135,1,136,1,136,1,137,1,137,3,137,2391,8,137,1,137,1,137,3,137,2395, - 8,137,1,137,1,137,5,137,2399,8,137,10,137,12,137,2402,9,137,1,138,1,138, - 1,139,1,139,3,139,2408,8,139,1,139,1,139,3,139,2412,8,139,1,139,5,139, - 2415,8,139,10,139,12,139,2418,9,139,1,140,1,140,1,140,4,140,2423,8,140, - 11,140,12,140,2424,1,140,3,140,2428,8,140,1,141,1,141,1,141,3,141,2433, - 8,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2442,8,141,1,141, - 1,141,3,141,2446,8,141,1,141,3,141,2449,8,141,1,142,1,142,1,142,1,142, - 1,142,1,142,1,142,1,142,1,142,1,142,1,142,3,142,2462,8,142,1,142,3,142, - 2465,8,142,1,142,1,142,1,143,3,143,2470,8,143,1,143,1,143,1,144,1,144, - 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,3,144,2484,8,144,1,145, - 1,145,3,145,2488,8,145,5,145,2490,8,145,10,145,12,145,2493,9,145,1,145, - 1,145,3,145,2497,8,145,1,145,3,145,2500,8,145,1,146,1,146,3,146,2504, - 8,146,1,146,5,146,2507,8,146,10,146,12,146,2510,9,146,1,147,1,147,1,147, - 1,147,1,147,1,147,1,147,1,147,1,147,3,147,2521,8,147,1,148,1,148,3,148, - 2525,8,148,1,148,1,148,3,148,2529,8,148,1,148,1,148,3,148,2533,8,148, - 1,148,1,148,1,148,1,148,3,148,2539,8,148,1,148,1,148,3,148,2543,8,148, - 1,148,1,148,3,148,2547,8,148,1,148,1,148,1,148,1,148,3,148,2553,8,148, - 1,148,1,148,3,148,2557,8,148,1,148,1,148,3,148,2561,8,148,1,148,1,148, - 1,148,1,148,3,148,2567,8,148,1,148,1,148,3,148,2571,8,148,1,148,1,148, - 3,148,2575,8,148,1,148,1,148,3,148,2579,8,148,1,149,1,149,1,149,1,149, - 1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,151, - 3,151,2597,8,151,1,152,1,152,1,153,1,153,3,153,2603,8,153,1,153,1,153, - 3,153,2607,8,153,1,153,1,153,3,153,2611,8,153,5,153,2613,8,153,10,153, - 12,153,2616,9,153,3,153,2618,8,153,1,153,1,153,1,154,1,154,3,154,2624, - 8,154,1,154,3,154,2627,8,154,1,155,1,155,3,155,2631,8,155,1,155,1,155, - 3,155,2635,8,155,1,155,1,155,3,155,2639,8,155,1,155,1,155,3,155,2643, - 8,155,5,155,2645,8,155,10,155,12,155,2648,9,155,1,155,1,155,1,156,1,156, - 3,156,2654,8,156,1,156,3,156,2657,8,156,1,156,1,156,3,156,2661,8,156, - 1,156,1,156,1,157,1,157,3,157,2667,8,157,1,157,1,157,3,157,2671,8,157, - 1,157,1,157,1,158,1,158,3,158,2677,8,158,1,158,1,158,3,158,2681,8,158, - 1,158,1,158,3,158,2685,8,158,1,158,1,158,1,158,3,158,2690,8,158,1,158, - 1,158,3,158,2694,8,158,1,158,1,158,3,158,2698,8,158,1,158,1,158,3,158, - 2702,8,158,1,158,1,158,1,158,3,158,2707,8,158,1,158,3,158,2710,8,158, - 1,158,3,158,2713,8,158,1,158,1,158,1,158,1,158,3,158,2719,8,158,1,158, - 1,158,3,158,2723,8,158,1,158,1,158,3,158,2727,8,158,3,158,2729,8,158, - 1,158,1,158,3,158,2733,8,158,1,158,1,158,3,158,2737,8,158,1,158,1,158, - 3,158,2741,8,158,5,158,2743,8,158,10,158,12,158,2746,9,158,3,158,2748, - 8,158,1,158,1,158,3,158,2752,8,158,1,159,1,159,1,160,1,160,3,160,2758, - 8,160,1,160,1,160,1,160,3,160,2763,8,160,3,160,2765,8,160,1,160,1,160, - 3,160,2769,8,160,1,161,1,161,3,161,2773,8,161,1,161,1,161,1,161,3,161, - 2778,8,161,1,161,1,161,3,161,2782,8,161,1,162,1,162,1,162,3,162,2787, - 8,162,1,162,1,162,3,162,2791,8,162,1,162,1,162,3,162,2795,8,162,1,162, - 1,162,3,162,2799,8,162,5,162,2801,8,162,10,162,12,162,2804,9,162,1,162, - 1,162,3,162,2808,8,162,1,163,1,163,3,163,2812,8,163,1,163,4,163,2815, - 8,163,11,163,12,163,2816,1,164,1,164,3,164,2821,8,164,1,164,1,164,3,164, - 2825,8,164,1,164,1,164,3,164,2829,8,164,1,164,1,164,3,164,2833,8,164, - 1,164,3,164,2836,8,164,1,164,3,164,2839,8,164,1,164,3,164,2842,8,164, - 1,164,3,164,2845,8,164,1,164,1,164,1,165,1,165,3,165,2851,8,165,1,165, - 1,165,3,165,2855,8,165,1,166,1,166,3,166,2859,8,166,1,166,4,166,2862, - 8,166,11,166,12,166,2863,1,166,1,166,3,166,2868,8,166,1,166,1,166,3,166, - 2872,8,166,1,166,4,166,2875,8,166,11,166,12,166,2876,3,166,2879,8,166, - 1,166,3,166,2882,8,166,1,166,1,166,3,166,2886,8,166,1,166,3,166,2889, - 8,166,1,166,3,166,2892,8,166,1,166,1,166,1,167,1,167,3,167,2898,8,167, - 1,167,1,167,3,167,2902,8,167,1,167,1,167,3,167,2906,8,167,1,167,1,167, - 1,168,1,168,1,169,1,169,3,169,2914,8,169,1,170,1,170,1,170,3,170,2919, - 8,170,1,171,1,171,3,171,2923,8,171,1,171,1,171,1,172,1,172,1,173,1,173, - 1,174,1,174,1,175,1,175,1,175,3,175,2936,8,175,1,176,1,176,1,176,1,176, - 1,176,3,176,2943,8,176,1,177,1,177,1,178,1,178,1,179,1,179,1,180,1,180, - 1,180,0,2,118,172,181,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, - 36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80, - 82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120, - 122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156, - 158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192, - 194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228, - 230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264, - 266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300, - 302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336, - 338,340,342,344,346,348,350,352,354,356,358,360,0,14,4,0,90,90,105,105, - 130,130,136,136,2,0,52,53,74,75,2,0,6,6,12,16,1,0,18,19,2,0,20,20,166, - 166,2,0,21,22,161,161,1,0,164,165,2,0,86,86,141,141,2,0,67,67,82,82,1, - 0,177,178,31,0,47,47,49,49,51,51,54,57,60,60,62,63,65,67,69,70,73,73, - 76,76,78,78,83,85,87,88,90,90,94,95,97,97,99,99,101,104,106,109,111,112, - 123,128,130,131,133,133,135,135,138,138,140,140,142,142,145,147,151,151, - 155,160,162,162,2,0,13,13,26,29,2,0,15,15,30,33,2,0,34,44,166,166,3345, - 0,362,1,0,0,0,2,382,1,0,0,0,4,418,1,0,0,0,6,420,1,0,0,0,8,446,1,0,0,0, - 10,494,1,0,0,0,12,496,1,0,0,0,14,526,1,0,0,0,16,556,1,0,0,0,18,576,1, - 0,0,0,20,582,1,0,0,0,22,633,1,0,0,0,24,635,1,0,0,0,26,649,1,0,0,0,28, - 653,1,0,0,0,30,657,1,0,0,0,32,666,1,0,0,0,34,687,1,0,0,0,36,689,1,0,0, - 0,38,701,1,0,0,0,40,744,1,0,0,0,42,758,1,0,0,0,44,802,1,0,0,0,46,804, - 1,0,0,0,48,810,1,0,0,0,50,868,1,0,0,0,52,939,1,0,0,0,54,953,1,0,0,0,56, - 961,1,0,0,0,58,978,1,0,0,0,60,995,1,0,0,0,62,997,1,0,0,0,64,1004,1,0, - 0,0,66,1017,1,0,0,0,68,1028,1,0,0,0,70,1048,1,0,0,0,72,1059,1,0,0,0,74, - 1061,1,0,0,0,76,1074,1,0,0,0,78,1078,1,0,0,0,80,1082,1,0,0,0,82,1093, - 1,0,0,0,84,1107,1,0,0,0,86,1109,1,0,0,0,88,1123,1,0,0,0,90,1127,1,0,0, - 0,92,1136,1,0,0,0,94,1142,1,0,0,0,96,1150,1,0,0,0,98,1159,1,0,0,0,100, - 1168,1,0,0,0,102,1182,1,0,0,0,104,1186,1,0,0,0,106,1200,1,0,0,0,108,1211, - 1,0,0,0,110,1227,1,0,0,0,112,1241,1,0,0,0,114,1255,1,0,0,0,116,1277,1, - 0,0,0,118,1305,1,0,0,0,120,1314,1,0,0,0,122,1321,1,0,0,0,124,1329,1,0, - 0,0,126,1331,1,0,0,0,128,1336,1,0,0,0,130,1351,1,0,0,0,132,1357,1,0,0, - 0,134,1359,1,0,0,0,136,1371,1,0,0,0,138,1382,1,0,0,0,140,1386,1,0,0,0, - 142,1390,1,0,0,0,144,1413,1,0,0,0,146,1427,1,0,0,0,148,1431,1,0,0,0,150, - 1468,1,0,0,0,152,1474,1,0,0,0,154,1486,1,0,0,0,156,1504,1,0,0,0,158,1510, - 1,0,0,0,160,1512,1,0,0,0,162,1562,1,0,0,0,164,1566,1,0,0,0,166,1580,1, - 0,0,0,168,1599,1,0,0,0,170,1614,1,0,0,0,172,1630,1,0,0,0,174,1651,1,0, - 0,0,176,1661,1,0,0,0,178,1667,1,0,0,0,180,1689,1,0,0,0,182,1723,1,0,0, - 0,184,1725,1,0,0,0,186,1737,1,0,0,0,188,1757,1,0,0,0,190,1765,1,0,0,0, - 192,1772,1,0,0,0,194,1816,1,0,0,0,196,1825,1,0,0,0,198,1827,1,0,0,0,200, - 1842,1,0,0,0,202,1846,1,0,0,0,204,1850,1,0,0,0,206,1857,1,0,0,0,208,1861, - 1,0,0,0,210,1886,1,0,0,0,212,1888,1,0,0,0,214,1904,1,0,0,0,216,1906,1, - 0,0,0,218,1930,1,0,0,0,220,1980,1,0,0,0,222,1982,1,0,0,0,224,2012,1,0, - 0,0,226,2053,1,0,0,0,228,2074,1,0,0,0,230,2098,1,0,0,0,232,2141,1,0,0, - 0,234,2157,1,0,0,0,236,2159,1,0,0,0,238,2208,1,0,0,0,240,2220,1,0,0,0, - 242,2222,1,0,0,0,244,2224,1,0,0,0,246,2229,1,0,0,0,248,2231,1,0,0,0,250, - 2233,1,0,0,0,252,2243,1,0,0,0,254,2253,1,0,0,0,256,2269,1,0,0,0,258,2322, - 1,0,0,0,260,2324,1,0,0,0,262,2326,1,0,0,0,264,2340,1,0,0,0,266,2354,1, - 0,0,0,268,2369,1,0,0,0,270,2371,1,0,0,0,272,2386,1,0,0,0,274,2388,1,0, - 0,0,276,2403,1,0,0,0,278,2405,1,0,0,0,280,2419,1,0,0,0,282,2448,1,0,0, - 0,284,2461,1,0,0,0,286,2469,1,0,0,0,288,2483,1,0,0,0,290,2491,1,0,0,0, - 292,2501,1,0,0,0,294,2520,1,0,0,0,296,2578,1,0,0,0,298,2580,1,0,0,0,300, - 2584,1,0,0,0,302,2596,1,0,0,0,304,2598,1,0,0,0,306,2600,1,0,0,0,308,2621, - 1,0,0,0,310,2628,1,0,0,0,312,2653,1,0,0,0,314,2664,1,0,0,0,316,2751,1, - 0,0,0,318,2753,1,0,0,0,320,2768,1,0,0,0,322,2770,1,0,0,0,324,2807,1,0, - 0,0,326,2809,1,0,0,0,328,2818,1,0,0,0,330,2848,1,0,0,0,332,2878,1,0,0, - 0,334,2895,1,0,0,0,336,2909,1,0,0,0,338,2913,1,0,0,0,340,2915,1,0,0,0, - 342,2920,1,0,0,0,344,2926,1,0,0,0,346,2928,1,0,0,0,348,2930,1,0,0,0,350, - 2932,1,0,0,0,352,2942,1,0,0,0,354,2944,1,0,0,0,356,2946,1,0,0,0,358,2948, - 1,0,0,0,360,2950,1,0,0,0,362,373,3,2,1,0,363,365,5,183,0,0,364,363,1, - 0,0,0,364,365,1,0,0,0,365,366,1,0,0,0,366,368,5,1,0,0,367,369,5,183,0, - 0,368,367,1,0,0,0,368,369,1,0,0,0,369,370,1,0,0,0,370,372,3,2,1,0,371, - 364,1,0,0,0,372,375,1,0,0,0,373,371,1,0,0,0,373,374,1,0,0,0,374,377,1, - 0,0,0,375,373,1,0,0,0,376,378,5,183,0,0,377,376,1,0,0,0,377,378,1,0,0, - 0,378,379,1,0,0,0,379,380,5,0,0,1,380,1,1,0,0,0,381,383,3,124,62,0,382, - 381,1,0,0,0,382,383,1,0,0,0,383,385,1,0,0,0,384,386,5,183,0,0,385,384, - 1,0,0,0,385,386,1,0,0,0,386,387,1,0,0,0,387,392,3,4,2,0,388,390,5,183, - 0,0,389,388,1,0,0,0,389,390,1,0,0,0,390,391,1,0,0,0,391,393,5,1,0,0,392, - 389,1,0,0,0,392,393,1,0,0,0,393,3,1,0,0,0,394,419,3,142,71,0,395,419, - 3,64,32,0,396,419,3,66,33,0,397,419,3,48,24,0,398,419,3,50,25,0,399,419, - 3,56,28,0,400,419,3,58,29,0,401,419,3,80,40,0,402,419,3,82,41,0,403,419, - 3,6,3,0,404,419,3,12,6,0,405,419,3,14,7,0,406,419,3,34,17,0,407,419,3, - 38,19,0,408,419,3,36,18,0,409,419,3,130,65,0,410,419,3,132,66,0,411,419, - 3,16,8,0,412,419,3,18,9,0,413,419,3,20,10,0,414,419,3,26,13,0,415,419, - 3,28,14,0,416,419,3,30,15,0,417,419,3,32,16,0,418,394,1,0,0,0,418,395, - 1,0,0,0,418,396,1,0,0,0,418,397,1,0,0,0,418,398,1,0,0,0,418,399,1,0,0, - 0,418,400,1,0,0,0,418,401,1,0,0,0,418,402,1,0,0,0,418,403,1,0,0,0,418, - 404,1,0,0,0,418,405,1,0,0,0,418,406,1,0,0,0,418,407,1,0,0,0,418,408,1, - 0,0,0,418,409,1,0,0,0,418,410,1,0,0,0,418,411,1,0,0,0,418,412,1,0,0,0, - 418,413,1,0,0,0,418,414,1,0,0,0,418,415,1,0,0,0,418,416,1,0,0,0,418,417, - 1,0,0,0,419,5,1,0,0,0,420,421,5,66,0,0,421,422,5,183,0,0,422,424,3,350, - 175,0,423,425,3,8,4,0,424,423,1,0,0,0,424,425,1,0,0,0,425,426,1,0,0,0, - 426,427,5,183,0,0,427,428,5,87,0,0,428,429,5,183,0,0,429,443,3,10,5,0, - 430,432,5,183,0,0,431,430,1,0,0,0,431,432,1,0,0,0,432,433,1,0,0,0,433, - 435,5,2,0,0,434,436,5,183,0,0,435,434,1,0,0,0,435,436,1,0,0,0,436,437, - 1,0,0,0,437,439,3,24,12,0,438,440,5,183,0,0,439,438,1,0,0,0,439,440,1, - 0,0,0,440,441,1,0,0,0,441,442,5,3,0,0,442,444,1,0,0,0,443,431,1,0,0,0, - 443,444,1,0,0,0,444,7,1,0,0,0,445,447,5,183,0,0,446,445,1,0,0,0,446,447, - 1,0,0,0,447,448,1,0,0,0,448,450,5,2,0,0,449,451,5,183,0,0,450,449,1,0, - 0,0,450,451,1,0,0,0,451,469,1,0,0,0,452,463,3,350,175,0,453,455,5,183, - 0,0,454,453,1,0,0,0,454,455,1,0,0,0,455,456,1,0,0,0,456,458,5,4,0,0,457, - 459,5,183,0,0,458,457,1,0,0,0,458,459,1,0,0,0,459,460,1,0,0,0,460,462, - 3,350,175,0,461,454,1,0,0,0,462,465,1,0,0,0,463,461,1,0,0,0,463,464,1, - 0,0,0,464,467,1,0,0,0,465,463,1,0,0,0,466,468,5,183,0,0,467,466,1,0,0, - 0,467,468,1,0,0,0,468,470,1,0,0,0,469,452,1,0,0,0,469,470,1,0,0,0,470, - 471,1,0,0,0,471,472,5,3,0,0,472,9,1,0,0,0,473,495,3,44,22,0,474,476,5, - 2,0,0,475,477,5,183,0,0,476,475,1,0,0,0,476,477,1,0,0,0,477,478,1,0,0, - 0,478,480,3,142,71,0,479,481,5,183,0,0,480,479,1,0,0,0,480,481,1,0,0, - 0,481,482,1,0,0,0,482,483,5,3,0,0,483,495,1,0,0,0,484,495,3,340,170,0, - 485,495,3,336,168,0,486,487,3,336,168,0,487,489,5,5,0,0,488,490,5,183, - 0,0,489,488,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492,3,350,175, - 0,492,495,1,0,0,0,493,495,3,316,158,0,494,473,1,0,0,0,494,474,1,0,0,0, - 494,484,1,0,0,0,494,485,1,0,0,0,494,486,1,0,0,0,494,493,1,0,0,0,495,11, - 1,0,0,0,496,497,5,66,0,0,497,498,5,183,0,0,498,499,3,350,175,0,499,500, - 5,183,0,0,500,501,5,87,0,0,501,502,5,183,0,0,502,504,5,2,0,0,503,505, - 5,183,0,0,504,503,1,0,0,0,504,505,1,0,0,0,505,506,1,0,0,0,506,517,5,168, - 0,0,507,509,5,183,0,0,508,507,1,0,0,0,508,509,1,0,0,0,509,510,1,0,0,0, - 510,512,5,4,0,0,511,513,5,183,0,0,512,511,1,0,0,0,512,513,1,0,0,0,513, - 514,1,0,0,0,514,516,5,168,0,0,515,508,1,0,0,0,516,519,1,0,0,0,517,515, - 1,0,0,0,517,518,1,0,0,0,518,520,1,0,0,0,519,517,1,0,0,0,520,521,5,3,0, - 0,521,522,5,183,0,0,522,523,5,56,0,0,523,524,5,183,0,0,524,525,5,61,0, - 0,525,13,1,0,0,0,526,527,5,66,0,0,527,528,5,183,0,0,528,530,5,2,0,0,529, - 531,5,183,0,0,530,529,1,0,0,0,530,531,1,0,0,0,531,532,1,0,0,0,532,534, - 3,142,71,0,533,535,5,183,0,0,534,533,1,0,0,0,534,535,1,0,0,0,535,536, - 1,0,0,0,536,537,5,3,0,0,537,538,5,183,0,0,538,539,5,138,0,0,539,540,5, - 183,0,0,540,554,5,168,0,0,541,543,5,183,0,0,542,541,1,0,0,0,542,543,1, - 0,0,0,543,544,1,0,0,0,544,546,5,2,0,0,545,547,5,183,0,0,546,545,1,0,0, - 0,546,547,1,0,0,0,547,548,1,0,0,0,548,550,3,24,12,0,549,551,5,183,0,0, - 550,549,1,0,0,0,550,551,1,0,0,0,551,552,1,0,0,0,552,553,5,3,0,0,553,555, - 1,0,0,0,554,542,1,0,0,0,554,555,1,0,0,0,555,15,1,0,0,0,556,557,5,84,0, - 0,557,558,5,183,0,0,558,559,5,70,0,0,559,560,5,183,0,0,560,574,5,168, - 0,0,561,563,5,183,0,0,562,561,1,0,0,0,562,563,1,0,0,0,563,564,1,0,0,0, - 564,566,5,2,0,0,565,567,5,183,0,0,566,565,1,0,0,0,566,567,1,0,0,0,567, - 568,1,0,0,0,568,570,3,24,12,0,569,571,5,183,0,0,570,569,1,0,0,0,570,571, - 1,0,0,0,571,572,1,0,0,0,572,573,5,3,0,0,573,575,1,0,0,0,574,562,1,0,0, - 0,574,575,1,0,0,0,575,17,1,0,0,0,576,577,5,94,0,0,577,578,5,183,0,0,578, - 579,5,70,0,0,579,580,5,183,0,0,580,581,5,168,0,0,581,19,1,0,0,0,582,583, - 5,54,0,0,583,584,5,183,0,0,584,589,5,168,0,0,585,586,5,183,0,0,586,587, - 5,51,0,0,587,588,5,183,0,0,588,590,3,350,175,0,589,585,1,0,0,0,589,590, - 1,0,0,0,590,591,1,0,0,0,591,592,5,183,0,0,592,594,5,2,0,0,593,595,5,183, - 0,0,594,593,1,0,0,0,594,595,1,0,0,0,595,596,1,0,0,0,596,597,5,71,0,0, - 597,598,5,183,0,0,598,607,3,352,176,0,599,601,5,183,0,0,600,599,1,0,0, - 0,600,601,1,0,0,0,601,602,1,0,0,0,602,604,5,4,0,0,603,605,5,183,0,0,604, - 603,1,0,0,0,604,605,1,0,0,0,605,606,1,0,0,0,606,608,3,24,12,0,607,600, - 1,0,0,0,607,608,1,0,0,0,608,610,1,0,0,0,609,611,5,183,0,0,610,609,1,0, - 0,0,610,611,1,0,0,0,611,612,1,0,0,0,612,613,5,3,0,0,613,21,1,0,0,0,614, - 628,3,352,176,0,615,617,5,183,0,0,616,615,1,0,0,0,616,617,1,0,0,0,617, - 618,1,0,0,0,618,620,5,6,0,0,619,621,5,183,0,0,620,619,1,0,0,0,620,621, - 1,0,0,0,621,629,1,0,0,0,622,624,5,183,0,0,623,622,1,0,0,0,624,627,1,0, - 0,0,625,623,1,0,0,0,625,626,1,0,0,0,626,629,1,0,0,0,627,625,1,0,0,0,628, - 616,1,0,0,0,628,625,1,0,0,0,629,630,1,0,0,0,630,631,3,302,151,0,631,634, - 1,0,0,0,632,634,3,352,176,0,633,614,1,0,0,0,633,632,1,0,0,0,634,23,1, - 0,0,0,635,646,3,22,11,0,636,638,5,183,0,0,637,636,1,0,0,0,637,638,1,0, - 0,0,638,639,1,0,0,0,639,641,5,4,0,0,640,642,5,183,0,0,641,640,1,0,0,0, - 641,642,1,0,0,0,642,643,1,0,0,0,643,645,3,22,11,0,644,637,1,0,0,0,645, - 648,1,0,0,0,646,644,1,0,0,0,646,647,1,0,0,0,647,25,1,0,0,0,648,646,1, - 0,0,0,649,650,5,76,0,0,650,651,5,183,0,0,651,652,3,350,175,0,652,27,1, - 0,0,0,653,654,5,147,0,0,654,655,5,183,0,0,655,656,3,350,175,0,656,29, - 1,0,0,0,657,658,5,68,0,0,658,659,5,183,0,0,659,660,5,90,0,0,660,661,5, - 183,0,0,661,664,3,350,175,0,662,663,5,183,0,0,663,665,5,46,0,0,664,662, - 1,0,0,0,664,665,1,0,0,0,665,31,1,0,0,0,666,667,5,147,0,0,667,668,5,183, - 0,0,668,669,5,90,0,0,669,670,5,183,0,0,670,671,3,350,175,0,671,33,1,0, - 0,0,672,673,5,57,0,0,673,674,5,183,0,0,674,676,3,352,176,0,675,677,5, - 183,0,0,676,675,1,0,0,0,676,677,1,0,0,0,677,678,1,0,0,0,678,680,5,6,0, - 0,679,681,5,183,0,0,680,679,1,0,0,0,680,681,1,0,0,0,681,682,1,0,0,0,682, - 683,3,248,124,0,683,688,1,0,0,0,684,685,5,57,0,0,685,686,5,183,0,0,686, - 688,3,316,158,0,687,672,1,0,0,0,687,684,1,0,0,0,688,35,1,0,0,0,689,690, - 5,62,0,0,690,691,5,183,0,0,691,692,5,116,0,0,692,693,5,183,0,0,693,694, - 5,136,0,0,694,695,5,183,0,0,695,696,3,350,175,0,696,697,5,183,0,0,697, - 698,5,99,0,0,698,699,5,183,0,0,699,700,5,168,0,0,700,37,1,0,0,0,701,702, - 5,68,0,0,702,703,5,183,0,0,703,704,5,105,0,0,704,705,5,183,0,0,705,707, - 3,318,159,0,706,708,5,183,0,0,707,706,1,0,0,0,707,708,1,0,0,0,708,709, - 1,0,0,0,709,711,5,2,0,0,710,712,5,183,0,0,711,710,1,0,0,0,711,712,1,0, - 0,0,712,714,1,0,0,0,713,715,3,40,20,0,714,713,1,0,0,0,714,715,1,0,0,0, - 715,717,1,0,0,0,716,718,5,183,0,0,717,716,1,0,0,0,717,718,1,0,0,0,718, - 720,1,0,0,0,719,721,3,42,21,0,720,719,1,0,0,0,720,721,1,0,0,0,721,732, - 1,0,0,0,722,724,5,183,0,0,723,722,1,0,0,0,723,724,1,0,0,0,724,725,1,0, - 0,0,725,727,5,4,0,0,726,728,5,183,0,0,727,726,1,0,0,0,727,728,1,0,0,0, - 728,729,1,0,0,0,729,731,3,42,21,0,730,723,1,0,0,0,731,734,1,0,0,0,732, - 730,1,0,0,0,732,733,1,0,0,0,733,736,1,0,0,0,734,732,1,0,0,0,735,737,5, - 183,0,0,736,735,1,0,0,0,736,737,1,0,0,0,737,738,1,0,0,0,738,739,5,3,0, - 0,739,740,5,183,0,0,740,741,5,51,0,0,741,742,5,183,0,0,742,743,3,248, - 124,0,743,39,1,0,0,0,744,755,3,352,176,0,745,747,5,183,0,0,746,745,1, - 0,0,0,746,747,1,0,0,0,747,748,1,0,0,0,748,750,5,4,0,0,749,751,5,183,0, - 0,750,749,1,0,0,0,750,751,1,0,0,0,751,752,1,0,0,0,752,754,3,352,176,0, - 753,746,1,0,0,0,754,757,1,0,0,0,755,753,1,0,0,0,755,756,1,0,0,0,756,41, - 1,0,0,0,757,755,1,0,0,0,758,760,3,352,176,0,759,761,5,183,0,0,760,759, - 1,0,0,0,760,761,1,0,0,0,761,762,1,0,0,0,762,763,5,164,0,0,763,765,5,6, - 0,0,764,766,5,183,0,0,765,764,1,0,0,0,765,766,1,0,0,0,766,767,1,0,0,0, - 767,768,3,302,151,0,768,43,1,0,0,0,769,771,5,7,0,0,770,772,5,183,0,0, - 771,770,1,0,0,0,771,772,1,0,0,0,772,773,1,0,0,0,773,784,5,168,0,0,774, - 776,5,183,0,0,775,774,1,0,0,0,775,776,1,0,0,0,776,777,1,0,0,0,777,779, - 5,4,0,0,778,780,5,183,0,0,779,778,1,0,0,0,779,780,1,0,0,0,780,781,1,0, - 0,0,781,783,5,168,0,0,782,775,1,0,0,0,783,786,1,0,0,0,784,782,1,0,0,0, - 784,785,1,0,0,0,785,787,1,0,0,0,786,784,1,0,0,0,787,803,5,8,0,0,788,803, - 5,168,0,0,789,791,5,89,0,0,790,792,5,183,0,0,791,790,1,0,0,0,791,792, - 1,0,0,0,792,793,1,0,0,0,793,795,5,2,0,0,794,796,5,183,0,0,795,794,1,0, - 0,0,795,796,1,0,0,0,796,797,1,0,0,0,797,799,5,168,0,0,798,800,5,183,0, - 0,799,798,1,0,0,0,799,800,1,0,0,0,800,801,1,0,0,0,801,803,5,3,0,0,802, - 769,1,0,0,0,802,788,1,0,0,0,802,789,1,0,0,0,803,45,1,0,0,0,804,805,5, - 95,0,0,805,806,5,183,0,0,806,807,5,113,0,0,807,808,5,183,0,0,808,809, - 5,82,0,0,809,47,1,0,0,0,810,811,5,68,0,0,811,812,5,183,0,0,812,813,5, - 112,0,0,813,814,5,183,0,0,814,815,5,136,0,0,815,819,5,183,0,0,816,817, - 3,46,23,0,817,818,5,183,0,0,818,820,1,0,0,0,819,816,1,0,0,0,819,820,1, - 0,0,0,820,821,1,0,0,0,821,849,3,350,175,0,822,824,5,183,0,0,823,822,1, - 0,0,0,823,824,1,0,0,0,824,825,1,0,0,0,825,827,5,2,0,0,826,828,5,183,0, - 0,827,826,1,0,0,0,827,828,1,0,0,0,828,829,1,0,0,0,829,831,3,104,52,0, - 830,832,5,183,0,0,831,830,1,0,0,0,831,832,1,0,0,0,832,838,1,0,0,0,833, - 835,5,4,0,0,834,836,5,183,0,0,835,834,1,0,0,0,835,836,1,0,0,0,836,837, - 1,0,0,0,837,839,3,108,54,0,838,833,1,0,0,0,838,839,1,0,0,0,839,841,1, - 0,0,0,840,842,5,183,0,0,841,840,1,0,0,0,841,842,1,0,0,0,842,843,1,0,0, - 0,843,844,5,3,0,0,844,850,1,0,0,0,845,846,5,183,0,0,846,847,5,51,0,0, - 847,848,5,183,0,0,848,850,3,142,71,0,849,823,1,0,0,0,849,845,1,0,0,0, - 850,866,1,0,0,0,851,852,5,183,0,0,852,854,5,150,0,0,853,855,5,183,0,0, - 854,853,1,0,0,0,854,855,1,0,0,0,855,856,1,0,0,0,856,858,5,2,0,0,857,859, - 5,183,0,0,858,857,1,0,0,0,858,859,1,0,0,0,859,860,1,0,0,0,860,862,3,24, - 12,0,861,863,5,183,0,0,862,861,1,0,0,0,862,863,1,0,0,0,863,864,1,0,0, - 0,864,865,5,3,0,0,865,867,1,0,0,0,866,851,1,0,0,0,866,867,1,0,0,0,867, - 49,1,0,0,0,868,869,5,68,0,0,869,870,5,183,0,0,870,871,5,125,0,0,871,872, - 5,183,0,0,872,875,5,136,0,0,873,874,5,183,0,0,874,876,5,91,0,0,875,873, - 1,0,0,0,875,876,1,0,0,0,876,879,1,0,0,0,877,878,5,183,0,0,878,880,3,46, - 23,0,879,877,1,0,0,0,879,880,1,0,0,0,880,881,1,0,0,0,881,882,5,183,0, - 0,882,884,3,350,175,0,883,885,5,183,0,0,884,883,1,0,0,0,884,885,1,0,0, - 0,885,886,1,0,0,0,886,888,5,2,0,0,887,889,5,183,0,0,888,887,1,0,0,0,888, - 889,1,0,0,0,889,890,1,0,0,0,890,892,3,52,26,0,891,893,5,183,0,0,892,891, - 1,0,0,0,892,893,1,0,0,0,893,920,1,0,0,0,894,896,5,4,0,0,895,897,5,183, - 0,0,896,895,1,0,0,0,896,897,1,0,0,0,897,898,1,0,0,0,898,900,3,104,52, - 0,899,901,5,183,0,0,900,899,1,0,0,0,900,901,1,0,0,0,901,903,1,0,0,0,902, - 894,1,0,0,0,902,903,1,0,0,0,903,912,1,0,0,0,904,906,5,4,0,0,905,907,5, - 183,0,0,906,905,1,0,0,0,906,907,1,0,0,0,907,908,1,0,0,0,908,910,3,352, - 176,0,909,911,5,183,0,0,910,909,1,0,0,0,910,911,1,0,0,0,911,913,1,0,0, - 0,912,904,1,0,0,0,912,913,1,0,0,0,913,914,1,0,0,0,914,921,5,3,0,0,915, - 916,5,3,0,0,916,917,5,183,0,0,917,918,5,51,0,0,918,919,5,183,0,0,919, - 921,3,142,71,0,920,902,1,0,0,0,920,915,1,0,0,0,921,937,1,0,0,0,922,923, - 5,183,0,0,923,925,5,150,0,0,924,926,5,183,0,0,925,924,1,0,0,0,925,926, - 1,0,0,0,926,927,1,0,0,0,927,929,5,2,0,0,928,930,5,183,0,0,929,928,1,0, - 0,0,929,930,1,0,0,0,930,931,1,0,0,0,931,933,3,24,12,0,932,934,5,183,0, - 0,933,932,1,0,0,0,933,934,1,0,0,0,934,935,1,0,0,0,935,936,5,3,0,0,936, - 938,1,0,0,0,937,922,1,0,0,0,937,938,1,0,0,0,938,51,1,0,0,0,939,950,3, - 54,27,0,940,942,5,183,0,0,941,940,1,0,0,0,941,942,1,0,0,0,942,943,1,0, - 0,0,943,945,5,4,0,0,944,946,5,183,0,0,945,944,1,0,0,0,945,946,1,0,0,0, - 946,947,1,0,0,0,947,949,3,54,27,0,948,941,1,0,0,0,949,952,1,0,0,0,950, - 948,1,0,0,0,950,951,1,0,0,0,951,53,1,0,0,0,952,950,1,0,0,0,953,954,5, - 87,0,0,954,955,5,183,0,0,955,956,3,350,175,0,956,957,5,183,0,0,957,958, - 5,138,0,0,958,959,5,183,0,0,959,960,3,350,175,0,960,55,1,0,0,0,961,962, - 5,68,0,0,962,963,5,183,0,0,963,964,5,130,0,0,964,968,5,183,0,0,965,966, - 3,46,23,0,966,967,5,183,0,0,967,969,1,0,0,0,968,965,1,0,0,0,968,969,1, - 0,0,0,969,970,1,0,0,0,970,975,3,350,175,0,971,972,5,183,0,0,972,974,3, - 60,30,0,973,971,1,0,0,0,974,977,1,0,0,0,975,973,1,0,0,0,975,976,1,0,0, - 0,976,57,1,0,0,0,977,975,1,0,0,0,978,979,5,68,0,0,979,980,5,183,0,0,980, - 981,5,142,0,0,981,982,5,183,0,0,982,983,3,350,175,0,983,984,5,183,0,0, - 984,985,5,51,0,0,985,986,5,183,0,0,986,988,3,118,59,0,987,989,5,183,0, - 0,988,987,1,0,0,0,988,989,1,0,0,0,989,59,1,0,0,0,990,996,3,68,34,0,991, - 996,3,70,35,0,992,996,3,72,36,0,993,996,3,74,37,0,994,996,3,76,38,0,995, - 990,1,0,0,0,995,991,1,0,0,0,995,992,1,0,0,0,995,993,1,0,0,0,995,994,1, - 0,0,0,996,61,1,0,0,0,997,998,5,183,0,0,998,999,5,150,0,0,999,1000,5,183, - 0,0,1000,1001,5,157,0,0,1001,1002,5,183,0,0,1002,1003,5,168,0,0,1003, - 63,1,0,0,0,1004,1005,5,68,0,0,1005,1006,5,183,0,0,1006,1007,5,156,0,0, - 1007,1011,5,183,0,0,1008,1009,3,46,23,0,1009,1010,5,183,0,0,1010,1012, - 1,0,0,0,1011,1008,1,0,0,0,1011,1012,1,0,0,0,1012,1013,1,0,0,0,1013,1015, - 3,336,168,0,1014,1016,3,62,31,0,1015,1014,1,0,0,0,1015,1016,1,0,0,0,1016, - 65,1,0,0,0,1017,1018,5,68,0,0,1018,1019,5,183,0,0,1019,1020,5,158,0,0, - 1020,1024,5,183,0,0,1021,1022,3,46,23,0,1022,1023,5,183,0,0,1023,1025, - 1,0,0,0,1024,1021,1,0,0,0,1024,1025,1,0,0,0,1025,1026,1,0,0,0,1026,1027, - 3,336,168,0,1027,67,1,0,0,0,1028,1029,5,97,0,0,1029,1032,5,183,0,0,1030, - 1031,5,56,0,0,1031,1033,5,183,0,0,1032,1030,1,0,0,0,1032,1033,1,0,0,0, - 1033,1035,1,0,0,0,1034,1036,5,166,0,0,1035,1034,1,0,0,0,1035,1036,1,0, - 0,0,1036,1037,1,0,0,0,1037,1038,3,346,173,0,1038,69,1,0,0,0,1039,1040, - 5,111,0,0,1040,1041,5,183,0,0,1041,1049,5,109,0,0,1042,1043,5,109,0,0, - 1043,1045,5,183,0,0,1044,1046,5,166,0,0,1045,1044,1,0,0,0,1045,1046,1, - 0,0,0,1046,1047,1,0,0,0,1047,1049,3,346,173,0,1048,1039,1,0,0,0,1048, - 1042,1,0,0,0,1049,71,1,0,0,0,1050,1051,5,111,0,0,1051,1052,5,183,0,0, - 1052,1060,5,107,0,0,1053,1054,5,107,0,0,1054,1056,5,183,0,0,1055,1057, - 5,166,0,0,1056,1055,1,0,0,0,1056,1057,1,0,0,0,1057,1058,1,0,0,0,1058, - 1060,3,346,173,0,1059,1050,1,0,0,0,1059,1053,1,0,0,0,1060,73,1,0,0,0, - 1061,1062,5,133,0,0,1062,1065,5,183,0,0,1063,1064,5,150,0,0,1064,1066, - 5,183,0,0,1065,1063,1,0,0,0,1065,1066,1,0,0,0,1066,1068,1,0,0,0,1067, - 1069,5,166,0,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0,0,0, - 1070,1071,3,346,173,0,1071,75,1,0,0,0,1072,1073,5,111,0,0,1073,1075,5, - 183,0,0,1074,1072,1,0,0,0,1074,1075,1,0,0,0,1075,1076,1,0,0,0,1076,1077, - 5,69,0,0,1077,77,1,0,0,0,1078,1079,5,95,0,0,1079,1080,5,183,0,0,1080, - 1081,5,82,0,0,1081,79,1,0,0,0,1082,1083,5,78,0,0,1083,1084,5,183,0,0, - 1084,1085,7,0,0,0,1085,1089,5,183,0,0,1086,1087,3,78,39,0,1087,1088,5, - 183,0,0,1088,1090,1,0,0,0,1089,1086,1,0,0,0,1089,1090,1,0,0,0,1090,1091, - 1,0,0,0,1091,1092,3,350,175,0,1092,81,1,0,0,0,1093,1094,5,49,0,0,1094, - 1095,5,183,0,0,1095,1096,5,136,0,0,1096,1097,5,183,0,0,1097,1098,3,350, - 175,0,1098,1099,5,183,0,0,1099,1100,3,84,42,0,1100,83,1,0,0,0,1101,1108, - 3,86,43,0,1102,1108,3,90,45,0,1103,1108,3,92,46,0,1104,1108,3,94,47,0, - 1105,1108,3,96,48,0,1106,1108,3,98,49,0,1107,1101,1,0,0,0,1107,1102,1, - 0,0,0,1107,1103,1,0,0,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1107,1106, - 1,0,0,0,1108,85,1,0,0,0,1109,1110,5,47,0,0,1110,1114,5,183,0,0,1111,1112, - 3,46,23,0,1112,1113,5,183,0,0,1113,1115,1,0,0,0,1114,1111,1,0,0,0,1114, - 1115,1,0,0,0,1115,1116,1,0,0,0,1116,1117,3,344,172,0,1117,1118,5,183, - 0,0,1118,1121,3,118,59,0,1119,1120,5,183,0,0,1120,1122,3,88,44,0,1121, - 1119,1,0,0,0,1121,1122,1,0,0,0,1122,87,1,0,0,0,1123,1124,5,72,0,0,1124, - 1125,5,183,0,0,1125,1126,3,248,124,0,1126,89,1,0,0,0,1127,1128,5,78,0, - 0,1128,1132,5,183,0,0,1129,1130,3,78,39,0,1130,1131,5,183,0,0,1131,1133, - 1,0,0,0,1132,1129,1,0,0,0,1132,1133,1,0,0,0,1133,1134,1,0,0,0,1134,1135, - 3,344,172,0,1135,91,1,0,0,0,1136,1137,5,126,0,0,1137,1138,5,183,0,0,1138, - 1139,5,138,0,0,1139,1140,5,183,0,0,1140,1141,3,350,175,0,1141,93,1,0, - 0,0,1142,1143,5,126,0,0,1143,1144,5,183,0,0,1144,1145,3,344,172,0,1145, - 1146,5,183,0,0,1146,1147,5,138,0,0,1147,1148,5,183,0,0,1148,1149,3,344, - 172,0,1149,95,1,0,0,0,1150,1151,5,47,0,0,1151,1155,5,183,0,0,1152,1153, - 3,46,23,0,1153,1154,5,183,0,0,1154,1156,1,0,0,0,1155,1152,1,0,0,0,1155, - 1156,1,0,0,0,1156,1157,1,0,0,0,1157,1158,3,54,27,0,1158,97,1,0,0,0,1159, - 1160,5,78,0,0,1160,1164,5,183,0,0,1161,1162,3,78,39,0,1162,1163,5,183, - 0,0,1163,1165,1,0,0,0,1164,1161,1,0,0,0,1164,1165,1,0,0,0,1165,1166,1, - 0,0,0,1166,1167,3,54,27,0,1167,99,1,0,0,0,1168,1179,3,102,51,0,1169,1171, - 5,183,0,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0,1171,1172,1,0,0,0,1172, - 1174,5,4,0,0,1173,1175,5,183,0,0,1174,1173,1,0,0,0,1174,1175,1,0,0,0, - 1175,1176,1,0,0,0,1176,1178,3,102,51,0,1177,1170,1,0,0,0,1178,1181,1, - 0,0,0,1179,1177,1,0,0,0,1179,1180,1,0,0,0,1180,101,1,0,0,0,1181,1179, - 1,0,0,0,1182,1183,3,344,172,0,1183,1184,5,183,0,0,1184,1185,3,118,59, - 0,1185,103,1,0,0,0,1186,1197,3,106,53,0,1187,1189,5,183,0,0,1188,1187, - 1,0,0,0,1188,1189,1,0,0,0,1189,1190,1,0,0,0,1190,1192,5,4,0,0,1191,1193, - 5,183,0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0,1193,1194,1,0,0,0,1194, - 1196,3,106,53,0,1195,1188,1,0,0,0,1196,1199,1,0,0,0,1197,1195,1,0,0,0, - 1197,1198,1,0,0,0,1198,105,1,0,0,0,1199,1197,1,0,0,0,1200,1203,3,102, - 51,0,1201,1202,5,183,0,0,1202,1204,3,88,44,0,1203,1201,1,0,0,0,1203,1204, - 1,0,0,0,1204,1209,1,0,0,0,1205,1206,5,183,0,0,1206,1207,5,121,0,0,1207, - 1208,5,183,0,0,1208,1210,5,101,0,0,1209,1205,1,0,0,0,1209,1210,1,0,0, - 0,1210,107,1,0,0,0,1211,1212,5,121,0,0,1212,1213,5,183,0,0,1213,1215, - 5,101,0,0,1214,1216,5,183,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216, - 1217,1,0,0,0,1217,1219,5,2,0,0,1218,1220,5,183,0,0,1219,1218,1,0,0,0, - 1219,1220,1,0,0,0,1220,1221,1,0,0,0,1221,1223,3,344,172,0,1222,1224,5, - 183,0,0,1223,1222,1,0,0,0,1223,1224,1,0,0,0,1224,1225,1,0,0,0,1225,1226, - 5,3,0,0,1226,109,1,0,0,0,1227,1229,5,143,0,0,1228,1230,5,183,0,0,1229, - 1228,1,0,0,0,1229,1230,1,0,0,0,1230,1231,1,0,0,0,1231,1233,5,2,0,0,1232, - 1234,5,183,0,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234,1235,1,0,0,0, - 1235,1237,3,100,50,0,1236,1238,5,183,0,0,1237,1236,1,0,0,0,1237,1238, - 1,0,0,0,1238,1239,1,0,0,0,1239,1240,5,3,0,0,1240,111,1,0,0,0,1241,1243, - 5,135,0,0,1242,1244,5,183,0,0,1243,1242,1,0,0,0,1243,1244,1,0,0,0,1244, - 1245,1,0,0,0,1245,1247,5,2,0,0,1246,1248,5,183,0,0,1247,1246,1,0,0,0, - 1247,1248,1,0,0,0,1248,1249,1,0,0,0,1249,1251,3,100,50,0,1250,1252,5, - 183,0,0,1251,1250,1,0,0,0,1251,1252,1,0,0,0,1252,1253,1,0,0,0,1253,1254, - 5,3,0,0,1254,113,1,0,0,0,1255,1257,5,159,0,0,1256,1258,5,183,0,0,1257, - 1256,1,0,0,0,1257,1258,1,0,0,0,1258,1259,1,0,0,0,1259,1261,5,2,0,0,1260, - 1262,5,183,0,0,1261,1260,1,0,0,0,1261,1262,1,0,0,0,1262,1263,1,0,0,0, - 1263,1265,3,118,59,0,1264,1266,5,183,0,0,1265,1264,1,0,0,0,1265,1266, - 1,0,0,0,1266,1267,1,0,0,0,1267,1269,5,4,0,0,1268,1270,5,183,0,0,1269, - 1268,1,0,0,0,1269,1270,1,0,0,0,1270,1271,1,0,0,0,1271,1273,3,118,59,0, - 1272,1274,5,183,0,0,1273,1272,1,0,0,0,1273,1274,1,0,0,0,1274,1275,1,0, - 0,0,1275,1276,5,3,0,0,1276,115,1,0,0,0,1277,1279,5,160,0,0,1278,1280, - 5,183,0,0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1281,1,0,0,0,1281, - 1283,5,2,0,0,1282,1284,5,183,0,0,1283,1282,1,0,0,0,1283,1284,1,0,0,0, - 1284,1285,1,0,0,0,1285,1287,3,346,173,0,1286,1288,5,183,0,0,1287,1286, - 1,0,0,0,1287,1288,1,0,0,0,1288,1289,1,0,0,0,1289,1291,5,4,0,0,1290,1292, - 5,183,0,0,1291,1290,1,0,0,0,1291,1292,1,0,0,0,1292,1293,1,0,0,0,1293, - 1295,3,346,173,0,1294,1296,5,183,0,0,1295,1294,1,0,0,0,1295,1296,1,0, - 0,0,1296,1297,1,0,0,0,1297,1298,5,3,0,0,1298,117,1,0,0,0,1299,1300,6, - 59,-1,0,1300,1306,3,352,176,0,1301,1306,3,110,55,0,1302,1306,3,112,56, - 0,1303,1306,3,114,57,0,1304,1306,3,116,58,0,1305,1299,1,0,0,0,1305,1301, - 1,0,0,0,1305,1302,1,0,0,0,1305,1303,1,0,0,0,1305,1304,1,0,0,0,1306,1311, - 1,0,0,0,1307,1308,10,5,0,0,1308,1310,3,120,60,0,1309,1307,1,0,0,0,1310, - 1313,1,0,0,0,1311,1309,1,0,0,0,1311,1312,1,0,0,0,1312,119,1,0,0,0,1313, - 1311,1,0,0,0,1314,1318,3,122,61,0,1315,1317,3,122,61,0,1316,1315,1,0, - 0,0,1317,1320,1,0,0,0,1318,1316,1,0,0,0,1318,1319,1,0,0,0,1319,121,1, - 0,0,0,1320,1318,1,0,0,0,1321,1323,5,7,0,0,1322,1324,3,346,173,0,1323, - 1322,1,0,0,0,1323,1324,1,0,0,0,1324,1325,1,0,0,0,1325,1326,5,8,0,0,1326, - 123,1,0,0,0,1327,1330,3,126,63,0,1328,1330,3,128,64,0,1329,1327,1,0,0, - 0,1329,1328,1,0,0,0,1330,125,1,0,0,0,1331,1334,5,83,0,0,1332,1333,5,183, - 0,0,1333,1335,5,104,0,0,1334,1332,1,0,0,0,1334,1335,1,0,0,0,1335,127, - 1,0,0,0,1336,1337,5,122,0,0,1337,129,1,0,0,0,1338,1339,5,55,0,0,1339, - 1340,5,183,0,0,1340,1352,5,140,0,0,1341,1342,5,55,0,0,1342,1343,5,183, - 0,0,1343,1344,5,140,0,0,1344,1345,5,183,0,0,1345,1346,5,124,0,0,1346, - 1347,5,183,0,0,1347,1352,5,117,0,0,1348,1352,5,63,0,0,1349,1352,5,128, - 0,0,1350,1352,5,60,0,0,1351,1338,1,0,0,0,1351,1341,1,0,0,0,1351,1348, - 1,0,0,0,1351,1349,1,0,0,0,1351,1350,1,0,0,0,1352,131,1,0,0,0,1353,1358, - 3,134,67,0,1354,1358,3,136,68,0,1355,1358,3,138,69,0,1356,1358,3,140, - 70,0,1357,1353,1,0,0,0,1357,1354,1,0,0,0,1357,1355,1,0,0,0,1357,1356, - 1,0,0,0,1358,133,1,0,0,0,1359,1360,5,103,0,0,1360,1363,5,183,0,0,1361, - 1362,5,85,0,0,1362,1364,5,183,0,0,1363,1361,1,0,0,0,1363,1364,1,0,0,0, - 1364,1367,1,0,0,0,1365,1368,5,168,0,0,1366,1368,3,336,168,0,1367,1365, - 1,0,0,0,1367,1366,1,0,0,0,1368,135,1,0,0,0,1369,1370,5,88,0,0,1370,1372, - 5,183,0,0,1371,1369,1,0,0,0,1371,1372,1,0,0,0,1372,1373,1,0,0,0,1373, - 1374,5,98,0,0,1374,1375,5,183,0,0,1375,1380,3,336,168,0,1376,1377,5,183, - 0,0,1377,1378,5,87,0,0,1378,1379,5,183,0,0,1379,1381,5,168,0,0,1380,1376, - 1,0,0,0,1380,1381,1,0,0,0,1381,137,1,0,0,0,1382,1383,5,145,0,0,1383,1384, - 5,183,0,0,1384,1385,3,336,168,0,1385,139,1,0,0,0,1386,1387,5,146,0,0, - 1387,1388,5,183,0,0,1388,1389,3,336,168,0,1389,141,1,0,0,0,1390,1391, - 3,144,72,0,1391,143,1,0,0,0,1392,1399,3,148,74,0,1393,1395,5,183,0,0, - 1394,1393,1,0,0,0,1394,1395,1,0,0,0,1395,1396,1,0,0,0,1396,1398,3,146, - 73,0,1397,1394,1,0,0,0,1398,1401,1,0,0,0,1399,1397,1,0,0,0,1399,1400, - 1,0,0,0,1400,1414,1,0,0,0,1401,1399,1,0,0,0,1402,1404,3,190,95,0,1403, - 1405,5,183,0,0,1404,1403,1,0,0,0,1404,1405,1,0,0,0,1405,1407,1,0,0,0, - 1406,1402,1,0,0,0,1407,1408,1,0,0,0,1408,1406,1,0,0,0,1408,1409,1,0,0, - 0,1409,1410,1,0,0,0,1410,1411,3,148,74,0,1411,1412,6,72,-1,0,1412,1414, - 1,0,0,0,1413,1392,1,0,0,0,1413,1406,1,0,0,0,1414,145,1,0,0,0,1415,1416, - 5,143,0,0,1416,1417,5,183,0,0,1417,1419,5,48,0,0,1418,1420,5,183,0,0, - 1419,1418,1,0,0,0,1419,1420,1,0,0,0,1420,1421,1,0,0,0,1421,1428,3,148, - 74,0,1422,1424,5,143,0,0,1423,1425,5,183,0,0,1424,1423,1,0,0,0,1424,1425, - 1,0,0,0,1425,1426,1,0,0,0,1426,1428,3,148,74,0,1427,1415,1,0,0,0,1427, - 1422,1,0,0,0,1428,147,1,0,0,0,1429,1432,3,150,75,0,1430,1432,3,152,76, - 0,1431,1429,1,0,0,0,1431,1430,1,0,0,0,1432,149,1,0,0,0,1433,1435,3,158, - 79,0,1434,1436,5,183,0,0,1435,1434,1,0,0,0,1435,1436,1,0,0,0,1436,1438, - 1,0,0,0,1437,1433,1,0,0,0,1438,1441,1,0,0,0,1439,1437,1,0,0,0,1439,1440, - 1,0,0,0,1440,1442,1,0,0,0,1441,1439,1,0,0,0,1442,1469,3,190,95,0,1443, - 1445,3,158,79,0,1444,1446,5,183,0,0,1445,1444,1,0,0,0,1445,1446,1,0,0, - 0,1446,1448,1,0,0,0,1447,1443,1,0,0,0,1448,1451,1,0,0,0,1449,1447,1,0, - 0,0,1449,1450,1,0,0,0,1450,1452,1,0,0,0,1451,1449,1,0,0,0,1452,1459,3, - 156,78,0,1453,1455,5,183,0,0,1454,1453,1,0,0,0,1454,1455,1,0,0,0,1455, - 1456,1,0,0,0,1456,1458,3,156,78,0,1457,1454,1,0,0,0,1458,1461,1,0,0,0, - 1459,1457,1,0,0,0,1459,1460,1,0,0,0,1460,1466,1,0,0,0,1461,1459,1,0,0, - 0,1462,1464,5,183,0,0,1463,1462,1,0,0,0,1463,1464,1,0,0,0,1464,1465,1, - 0,0,0,1465,1467,3,190,95,0,1466,1463,1,0,0,0,1466,1467,1,0,0,0,1467,1469, - 1,0,0,0,1468,1439,1,0,0,0,1468,1449,1,0,0,0,1469,151,1,0,0,0,1470,1472, - 3,154,77,0,1471,1473,5,183,0,0,1472,1471,1,0,0,0,1472,1473,1,0,0,0,1473, - 1475,1,0,0,0,1474,1470,1,0,0,0,1475,1476,1,0,0,0,1476,1474,1,0,0,0,1476, - 1477,1,0,0,0,1477,1478,1,0,0,0,1478,1479,3,150,75,0,1479,153,1,0,0,0, - 1480,1482,3,158,79,0,1481,1483,5,183,0,0,1482,1481,1,0,0,0,1482,1483, - 1,0,0,0,1483,1485,1,0,0,0,1484,1480,1,0,0,0,1485,1488,1,0,0,0,1486,1484, - 1,0,0,0,1486,1487,1,0,0,0,1487,1495,1,0,0,0,1488,1486,1,0,0,0,1489,1491, - 3,156,78,0,1490,1492,5,183,0,0,1491,1490,1,0,0,0,1491,1492,1,0,0,0,1492, - 1494,1,0,0,0,1493,1489,1,0,0,0,1494,1497,1,0,0,0,1495,1493,1,0,0,0,1495, - 1496,1,0,0,0,1496,1498,1,0,0,0,1497,1495,1,0,0,0,1498,1499,3,188,94,0, - 1499,155,1,0,0,0,1500,1505,3,176,88,0,1501,1505,3,178,89,0,1502,1505, - 3,182,91,0,1503,1505,3,186,93,0,1504,1500,1,0,0,0,1504,1501,1,0,0,0,1504, - 1502,1,0,0,0,1504,1503,1,0,0,0,1505,157,1,0,0,0,1506,1511,3,168,84,0, - 1507,1511,3,174,87,0,1508,1511,3,166,83,0,1509,1511,3,160,80,0,1510,1506, - 1,0,0,0,1510,1507,1,0,0,0,1510,1508,1,0,0,0,1510,1509,1,0,0,0,1511,159, - 1,0,0,0,1512,1530,5,103,0,0,1513,1514,5,183,0,0,1514,1515,5,150,0,0,1515, - 1516,5,183,0,0,1516,1518,5,92,0,0,1517,1519,5,183,0,0,1518,1517,1,0,0, - 0,1518,1519,1,0,0,0,1519,1520,1,0,0,0,1520,1522,5,2,0,0,1521,1523,5,183, - 0,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523,1524,1,0,0,0,1524,1526,3, - 100,50,0,1525,1527,5,183,0,0,1526,1525,1,0,0,0,1526,1527,1,0,0,0,1527, - 1528,1,0,0,0,1528,1529,5,3,0,0,1529,1531,1,0,0,0,1530,1513,1,0,0,0,1530, - 1531,1,0,0,0,1531,1532,1,0,0,0,1532,1533,5,183,0,0,1533,1534,5,87,0,0, - 1534,1535,5,183,0,0,1535,1549,3,10,5,0,1536,1538,5,183,0,0,1537,1536, - 1,0,0,0,1537,1538,1,0,0,0,1538,1539,1,0,0,0,1539,1541,5,2,0,0,1540,1542, - 5,183,0,0,1541,1540,1,0,0,0,1541,1542,1,0,0,0,1542,1543,1,0,0,0,1543, - 1545,3,24,12,0,1544,1546,5,183,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0, - 0,1546,1547,1,0,0,0,1547,1548,5,3,0,0,1548,1550,1,0,0,0,1549,1537,1,0, - 0,0,1549,1550,1,0,0,0,1550,1555,1,0,0,0,1551,1553,5,183,0,0,1552,1551, - 1,0,0,0,1552,1553,1,0,0,0,1553,1554,1,0,0,0,1554,1556,3,206,103,0,1555, - 1552,1,0,0,0,1555,1556,1,0,0,0,1556,161,1,0,0,0,1557,1558,3,336,168,0, - 1558,1559,5,183,0,0,1559,1560,5,51,0,0,1560,1561,5,183,0,0,1561,1563, - 1,0,0,0,1562,1557,1,0,0,0,1562,1563,1,0,0,0,1563,1564,1,0,0,0,1564,1565, - 3,336,168,0,1565,163,1,0,0,0,1566,1577,3,162,81,0,1567,1569,5,183,0,0, - 1568,1567,1,0,0,0,1568,1569,1,0,0,0,1569,1570,1,0,0,0,1570,1572,5,4,0, - 0,1571,1573,5,183,0,0,1572,1571,1,0,0,0,1572,1573,1,0,0,0,1573,1574,1, - 0,0,0,1574,1576,3,162,81,0,1575,1568,1,0,0,0,1576,1579,1,0,0,0,1577,1575, - 1,0,0,0,1577,1578,1,0,0,0,1578,165,1,0,0,0,1579,1577,1,0,0,0,1580,1581, - 5,57,0,0,1581,1582,5,183,0,0,1582,1587,3,316,158,0,1583,1585,5,183,0, - 0,1584,1583,1,0,0,0,1584,1585,1,0,0,0,1585,1586,1,0,0,0,1586,1588,3,206, - 103,0,1587,1584,1,0,0,0,1587,1588,1,0,0,0,1588,1595,1,0,0,0,1589,1591, - 5,183,0,0,1590,1589,1,0,0,0,1590,1591,1,0,0,0,1591,1592,1,0,0,0,1592, - 1593,5,155,0,0,1593,1594,5,183,0,0,1594,1596,3,164,82,0,1595,1590,1,0, - 0,0,1595,1596,1,0,0,0,1596,167,1,0,0,0,1597,1598,5,118,0,0,1598,1600, - 5,183,0,0,1599,1597,1,0,0,0,1599,1600,1,0,0,0,1600,1601,1,0,0,0,1601, - 1603,5,106,0,0,1602,1604,5,183,0,0,1603,1602,1,0,0,0,1603,1604,1,0,0, - 0,1604,1605,1,0,0,0,1605,1608,3,208,104,0,1606,1607,5,183,0,0,1607,1609, - 3,206,103,0,1608,1606,1,0,0,0,1608,1609,1,0,0,0,1609,1612,1,0,0,0,1610, - 1611,5,183,0,0,1611,1613,3,170,85,0,1612,1610,1,0,0,0,1612,1613,1,0,0, - 0,1613,169,1,0,0,0,1614,1615,5,93,0,0,1615,1616,5,183,0,0,1616,1617,3, - 172,86,0,1617,171,1,0,0,0,1618,1619,6,86,-1,0,1619,1621,5,2,0,0,1620, - 1622,5,183,0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0,1622,1623,1,0,0,0, - 1623,1625,3,172,86,0,1624,1626,5,183,0,0,1625,1624,1,0,0,0,1625,1626, - 1,0,0,0,1626,1627,1,0,0,0,1627,1628,5,3,0,0,1628,1631,1,0,0,0,1629,1631, - 3,350,175,0,1630,1618,1,0,0,0,1630,1629,1,0,0,0,1631,1648,1,0,0,0,1632, - 1633,10,4,0,0,1633,1634,5,183,0,0,1634,1635,5,100,0,0,1635,1636,5,183, - 0,0,1636,1647,3,172,86,5,1637,1642,10,3,0,0,1638,1639,5,183,0,0,1639, - 1640,5,110,0,0,1640,1641,5,183,0,0,1641,1643,3,350,175,0,1642,1638,1, - 0,0,0,1643,1644,1,0,0,0,1644,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1647, - 1,0,0,0,1646,1632,1,0,0,0,1646,1637,1,0,0,0,1647,1650,1,0,0,0,1648,1646, - 1,0,0,0,1648,1649,1,0,0,0,1649,173,1,0,0,0,1650,1648,1,0,0,0,1651,1653, - 5,144,0,0,1652,1654,5,183,0,0,1653,1652,1,0,0,0,1653,1654,1,0,0,0,1654, - 1655,1,0,0,0,1655,1656,3,248,124,0,1656,1657,5,183,0,0,1657,1658,5,51, - 0,0,1658,1659,5,183,0,0,1659,1660,3,336,168,0,1660,175,1,0,0,0,1661,1663, - 5,68,0,0,1662,1664,5,183,0,0,1663,1662,1,0,0,0,1663,1664,1,0,0,0,1664, - 1665,1,0,0,0,1665,1666,3,208,104,0,1666,177,1,0,0,0,1667,1669,5,108,0, - 0,1668,1670,5,183,0,0,1669,1668,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1, - 0,0,0,1671,1676,3,208,104,0,1672,1673,5,183,0,0,1673,1675,3,180,90,0, - 1674,1672,1,0,0,0,1675,1678,1,0,0,0,1676,1674,1,0,0,0,1676,1677,1,0,0, - 0,1677,179,1,0,0,0,1678,1676,1,0,0,0,1679,1680,5,116,0,0,1680,1681,5, - 183,0,0,1681,1682,5,106,0,0,1682,1683,5,183,0,0,1683,1690,3,182,91,0, - 1684,1685,5,116,0,0,1685,1686,5,183,0,0,1686,1687,5,68,0,0,1687,1688, - 5,183,0,0,1688,1690,3,182,91,0,1689,1679,1,0,0,0,1689,1684,1,0,0,0,1690, - 181,1,0,0,0,1691,1693,5,131,0,0,1692,1694,5,183,0,0,1693,1692,1,0,0,0, - 1693,1694,1,0,0,0,1694,1695,1,0,0,0,1695,1706,3,184,92,0,1696,1698,5, - 183,0,0,1697,1696,1,0,0,0,1697,1698,1,0,0,0,1698,1699,1,0,0,0,1699,1701, - 5,4,0,0,1700,1702,5,183,0,0,1701,1700,1,0,0,0,1701,1702,1,0,0,0,1702, - 1703,1,0,0,0,1703,1705,3,184,92,0,1704,1697,1,0,0,0,1705,1708,1,0,0,0, - 1706,1704,1,0,0,0,1706,1707,1,0,0,0,1707,1724,1,0,0,0,1708,1706,1,0,0, - 0,1709,1711,5,131,0,0,1710,1712,5,183,0,0,1711,1710,1,0,0,0,1711,1712, - 1,0,0,0,1712,1713,1,0,0,0,1713,1715,3,294,147,0,1714,1716,5,183,0,0,1715, - 1714,1,0,0,0,1715,1716,1,0,0,0,1716,1717,1,0,0,0,1717,1719,5,6,0,0,1718, - 1720,5,183,0,0,1719,1718,1,0,0,0,1719,1720,1,0,0,0,1720,1721,1,0,0,0, - 1721,1722,3,224,112,0,1722,1724,1,0,0,0,1723,1691,1,0,0,0,1723,1709,1, - 0,0,0,1724,183,1,0,0,0,1725,1727,3,342,171,0,1726,1728,5,183,0,0,1727, - 1726,1,0,0,0,1727,1728,1,0,0,0,1728,1729,1,0,0,0,1729,1731,5,6,0,0,1730, - 1732,5,183,0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732,1733,1,0,0,0, - 1733,1734,3,248,124,0,1734,185,1,0,0,0,1735,1736,5,76,0,0,1736,1738,5, - 183,0,0,1737,1735,1,0,0,0,1737,1738,1,0,0,0,1738,1739,1,0,0,0,1739,1741, - 5,73,0,0,1740,1742,5,183,0,0,1741,1740,1,0,0,0,1741,1742,1,0,0,0,1742, - 1743,1,0,0,0,1743,1754,3,248,124,0,1744,1746,5,183,0,0,1745,1744,1,0, - 0,0,1745,1746,1,0,0,0,1746,1747,1,0,0,0,1747,1749,5,4,0,0,1748,1750,5, - 183,0,0,1749,1748,1,0,0,0,1749,1750,1,0,0,0,1750,1751,1,0,0,0,1751,1753, - 3,248,124,0,1752,1745,1,0,0,0,1753,1756,1,0,0,0,1754,1752,1,0,0,0,1754, - 1755,1,0,0,0,1755,187,1,0,0,0,1756,1754,1,0,0,0,1757,1758,5,150,0,0,1758, - 1763,3,192,96,0,1759,1761,5,183,0,0,1760,1759,1,0,0,0,1760,1761,1,0,0, - 0,1761,1762,1,0,0,0,1762,1764,3,206,103,0,1763,1760,1,0,0,0,1763,1764, - 1,0,0,0,1764,189,1,0,0,0,1765,1766,5,127,0,0,1766,1767,3,192,96,0,1767, - 191,1,0,0,0,1768,1770,5,183,0,0,1769,1768,1,0,0,0,1769,1770,1,0,0,0,1770, - 1771,1,0,0,0,1771,1773,5,77,0,0,1772,1769,1,0,0,0,1772,1773,1,0,0,0,1773, - 1774,1,0,0,0,1774,1775,5,183,0,0,1775,1778,3,194,97,0,1776,1777,5,183, - 0,0,1777,1779,3,198,99,0,1778,1776,1,0,0,0,1778,1779,1,0,0,0,1779,1782, - 1,0,0,0,1780,1781,5,183,0,0,1781,1783,3,200,100,0,1782,1780,1,0,0,0,1782, - 1783,1,0,0,0,1783,1786,1,0,0,0,1784,1785,5,183,0,0,1785,1787,3,202,101, - 0,1786,1784,1,0,0,0,1786,1787,1,0,0,0,1787,193,1,0,0,0,1788,1799,5,161, - 0,0,1789,1791,5,183,0,0,1790,1789,1,0,0,0,1790,1791,1,0,0,0,1791,1792, - 1,0,0,0,1792,1794,5,4,0,0,1793,1795,5,183,0,0,1794,1793,1,0,0,0,1794, - 1795,1,0,0,0,1795,1796,1,0,0,0,1796,1798,3,196,98,0,1797,1790,1,0,0,0, - 1798,1801,1,0,0,0,1799,1797,1,0,0,0,1799,1800,1,0,0,0,1800,1817,1,0,0, - 0,1801,1799,1,0,0,0,1802,1813,3,196,98,0,1803,1805,5,183,0,0,1804,1803, - 1,0,0,0,1804,1805,1,0,0,0,1805,1806,1,0,0,0,1806,1808,5,4,0,0,1807,1809, - 5,183,0,0,1808,1807,1,0,0,0,1808,1809,1,0,0,0,1809,1810,1,0,0,0,1810, - 1812,3,196,98,0,1811,1804,1,0,0,0,1812,1815,1,0,0,0,1813,1811,1,0,0,0, - 1813,1814,1,0,0,0,1814,1817,1,0,0,0,1815,1813,1,0,0,0,1816,1788,1,0,0, - 0,1816,1802,1,0,0,0,1817,195,1,0,0,0,1818,1819,3,248,124,0,1819,1820, - 5,183,0,0,1820,1821,5,51,0,0,1821,1822,5,183,0,0,1822,1823,3,336,168, - 0,1823,1826,1,0,0,0,1824,1826,3,248,124,0,1825,1818,1,0,0,0,1825,1824, - 1,0,0,0,1826,197,1,0,0,0,1827,1828,5,120,0,0,1828,1829,5,183,0,0,1829, - 1830,5,56,0,0,1830,1831,5,183,0,0,1831,1839,3,204,102,0,1832,1834,5,4, - 0,0,1833,1835,5,183,0,0,1834,1833,1,0,0,0,1834,1835,1,0,0,0,1835,1836, - 1,0,0,0,1836,1838,3,204,102,0,1837,1832,1,0,0,0,1838,1841,1,0,0,0,1839, - 1837,1,0,0,0,1839,1840,1,0,0,0,1840,199,1,0,0,0,1841,1839,1,0,0,0,1842, - 1843,5,162,0,0,1843,1844,5,183,0,0,1844,1845,3,248,124,0,1845,201,1,0, - 0,0,1846,1847,5,102,0,0,1847,1848,5,183,0,0,1848,1849,3,248,124,0,1849, - 203,1,0,0,0,1850,1855,3,248,124,0,1851,1853,5,183,0,0,1852,1851,1,0,0, - 0,1852,1853,1,0,0,0,1853,1854,1,0,0,0,1854,1856,7,1,0,0,1855,1852,1,0, - 0,0,1855,1856,1,0,0,0,1856,205,1,0,0,0,1857,1858,5,149,0,0,1858,1859, - 5,183,0,0,1859,1860,3,248,124,0,1860,207,1,0,0,0,1861,1872,3,210,105, - 0,1862,1864,5,183,0,0,1863,1862,1,0,0,0,1863,1864,1,0,0,0,1864,1865,1, - 0,0,0,1865,1867,5,4,0,0,1866,1868,5,183,0,0,1867,1866,1,0,0,0,1867,1868, - 1,0,0,0,1868,1869,1,0,0,0,1869,1871,3,210,105,0,1870,1863,1,0,0,0,1871, - 1874,1,0,0,0,1872,1870,1,0,0,0,1872,1873,1,0,0,0,1873,209,1,0,0,0,1874, - 1872,1,0,0,0,1875,1877,3,336,168,0,1876,1878,5,183,0,0,1877,1876,1,0, - 0,0,1877,1878,1,0,0,0,1878,1879,1,0,0,0,1879,1881,5,6,0,0,1880,1882,5, - 183,0,0,1881,1880,1,0,0,0,1881,1882,1,0,0,0,1882,1883,1,0,0,0,1883,1884, - 3,212,106,0,1884,1887,1,0,0,0,1885,1887,3,212,106,0,1886,1875,1,0,0,0, - 1886,1885,1,0,0,0,1887,211,1,0,0,0,1888,1889,3,214,107,0,1889,213,1,0, - 0,0,1890,1897,3,216,108,0,1891,1893,5,183,0,0,1892,1891,1,0,0,0,1892, - 1893,1,0,0,0,1893,1894,1,0,0,0,1894,1896,3,218,109,0,1895,1892,1,0,0, - 0,1896,1899,1,0,0,0,1897,1895,1,0,0,0,1897,1898,1,0,0,0,1898,1905,1,0, - 0,0,1899,1897,1,0,0,0,1900,1901,5,2,0,0,1901,1902,3,214,107,0,1902,1903, - 5,3,0,0,1903,1905,1,0,0,0,1904,1890,1,0,0,0,1904,1900,1,0,0,0,1905,215, - 1,0,0,0,1906,1908,5,2,0,0,1907,1909,5,183,0,0,1908,1907,1,0,0,0,1908, - 1909,1,0,0,0,1909,1914,1,0,0,0,1910,1912,3,336,168,0,1911,1913,5,183, - 0,0,1912,1911,1,0,0,0,1912,1913,1,0,0,0,1913,1915,1,0,0,0,1914,1910,1, - 0,0,0,1914,1915,1,0,0,0,1915,1920,1,0,0,0,1916,1918,3,228,114,0,1917, - 1919,5,183,0,0,1918,1917,1,0,0,0,1918,1919,1,0,0,0,1919,1921,1,0,0,0, - 1920,1916,1,0,0,0,1920,1921,1,0,0,0,1921,1926,1,0,0,0,1922,1924,3,224, - 112,0,1923,1925,5,183,0,0,1924,1923,1,0,0,0,1924,1925,1,0,0,0,1925,1927, - 1,0,0,0,1926,1922,1,0,0,0,1926,1927,1,0,0,0,1927,1928,1,0,0,0,1928,1929, - 5,3,0,0,1929,217,1,0,0,0,1930,1932,3,220,110,0,1931,1933,5,183,0,0,1932, - 1931,1,0,0,0,1932,1933,1,0,0,0,1933,1934,1,0,0,0,1934,1935,3,216,108, - 0,1935,219,1,0,0,0,1936,1938,3,356,178,0,1937,1939,5,183,0,0,1938,1937, - 1,0,0,0,1938,1939,1,0,0,0,1939,1940,1,0,0,0,1940,1942,3,360,180,0,1941, - 1943,5,183,0,0,1942,1941,1,0,0,0,1942,1943,1,0,0,0,1943,1945,1,0,0,0, - 1944,1946,3,222,111,0,1945,1944,1,0,0,0,1945,1946,1,0,0,0,1946,1948,1, - 0,0,0,1947,1949,5,183,0,0,1948,1947,1,0,0,0,1948,1949,1,0,0,0,1949,1950, - 1,0,0,0,1950,1951,3,360,180,0,1951,1981,1,0,0,0,1952,1954,3,360,180,0, - 1953,1955,5,183,0,0,1954,1953,1,0,0,0,1954,1955,1,0,0,0,1955,1957,1,0, - 0,0,1956,1958,3,222,111,0,1957,1956,1,0,0,0,1957,1958,1,0,0,0,1958,1960, - 1,0,0,0,1959,1961,5,183,0,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961, - 1962,1,0,0,0,1962,1964,3,360,180,0,1963,1965,5,183,0,0,1964,1963,1,0, - 0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,1967,3,358,179,0,1967,1981, - 1,0,0,0,1968,1970,3,360,180,0,1969,1971,5,183,0,0,1970,1969,1,0,0,0,1970, - 1971,1,0,0,0,1971,1973,1,0,0,0,1972,1974,3,222,111,0,1973,1972,1,0,0, - 0,1973,1974,1,0,0,0,1974,1976,1,0,0,0,1975,1977,5,183,0,0,1976,1975,1, - 0,0,0,1976,1977,1,0,0,0,1977,1978,1,0,0,0,1978,1979,3,360,180,0,1979, - 1981,1,0,0,0,1980,1936,1,0,0,0,1980,1952,1,0,0,0,1980,1968,1,0,0,0,1981, - 221,1,0,0,0,1982,1984,5,7,0,0,1983,1985,5,183,0,0,1984,1983,1,0,0,0,1984, - 1985,1,0,0,0,1985,1990,1,0,0,0,1986,1988,3,336,168,0,1987,1989,5,183, - 0,0,1988,1987,1,0,0,0,1988,1989,1,0,0,0,1989,1991,1,0,0,0,1990,1986,1, - 0,0,0,1990,1991,1,0,0,0,1991,1996,1,0,0,0,1992,1994,3,226,113,0,1993, - 1995,5,183,0,0,1994,1993,1,0,0,0,1994,1995,1,0,0,0,1995,1997,1,0,0,0, - 1996,1992,1,0,0,0,1996,1997,1,0,0,0,1997,2002,1,0,0,0,1998,2000,3,230, - 115,0,1999,2001,5,183,0,0,2000,1999,1,0,0,0,2000,2001,1,0,0,0,2001,2003, - 1,0,0,0,2002,1998,1,0,0,0,2002,2003,1,0,0,0,2003,2008,1,0,0,0,2004,2006, - 3,224,112,0,2005,2007,5,183,0,0,2006,2005,1,0,0,0,2006,2007,1,0,0,0,2007, - 2009,1,0,0,0,2008,2004,1,0,0,0,2008,2009,1,0,0,0,2009,2010,1,0,0,0,2010, - 2011,5,8,0,0,2011,223,1,0,0,0,2012,2014,5,9,0,0,2013,2015,5,183,0,0,2014, - 2013,1,0,0,0,2014,2015,1,0,0,0,2015,2049,1,0,0,0,2016,2018,3,344,172, - 0,2017,2019,5,183,0,0,2018,2017,1,0,0,0,2018,2019,1,0,0,0,2019,2020,1, - 0,0,0,2020,2022,5,164,0,0,2021,2023,5,183,0,0,2022,2021,1,0,0,0,2022, - 2023,1,0,0,0,2023,2024,1,0,0,0,2024,2026,3,248,124,0,2025,2027,5,183, - 0,0,2026,2025,1,0,0,0,2026,2027,1,0,0,0,2027,2046,1,0,0,0,2028,2030,5, - 4,0,0,2029,2031,5,183,0,0,2030,2029,1,0,0,0,2030,2031,1,0,0,0,2031,2032, - 1,0,0,0,2032,2034,3,344,172,0,2033,2035,5,183,0,0,2034,2033,1,0,0,0,2034, - 2035,1,0,0,0,2035,2036,1,0,0,0,2036,2038,5,164,0,0,2037,2039,5,183,0, - 0,2038,2037,1,0,0,0,2038,2039,1,0,0,0,2039,2040,1,0,0,0,2040,2042,3,248, - 124,0,2041,2043,5,183,0,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043,2045, - 1,0,0,0,2044,2028,1,0,0,0,2045,2048,1,0,0,0,2046,2044,1,0,0,0,2046,2047, - 1,0,0,0,2047,2050,1,0,0,0,2048,2046,1,0,0,0,2049,2016,1,0,0,0,2049,2050, - 1,0,0,0,2050,2051,1,0,0,0,2051,2052,5,10,0,0,2052,225,1,0,0,0,2053,2055, - 5,164,0,0,2054,2056,5,183,0,0,2055,2054,1,0,0,0,2055,2056,1,0,0,0,2056, - 2057,1,0,0,0,2057,2071,3,246,123,0,2058,2060,5,183,0,0,2059,2058,1,0, - 0,0,2059,2060,1,0,0,0,2060,2061,1,0,0,0,2061,2063,5,11,0,0,2062,2064, - 5,164,0,0,2063,2062,1,0,0,0,2063,2064,1,0,0,0,2064,2066,1,0,0,0,2065, - 2067,5,183,0,0,2066,2065,1,0,0,0,2066,2067,1,0,0,0,2067,2068,1,0,0,0, - 2068,2070,3,246,123,0,2069,2059,1,0,0,0,2070,2073,1,0,0,0,2071,2069,1, - 0,0,0,2071,2072,1,0,0,0,2072,227,1,0,0,0,2073,2071,1,0,0,0,2074,2076, - 5,164,0,0,2075,2077,5,183,0,0,2076,2075,1,0,0,0,2076,2077,1,0,0,0,2077, - 2078,1,0,0,0,2078,2095,3,244,122,0,2079,2081,5,183,0,0,2080,2079,1,0, - 0,0,2080,2081,1,0,0,0,2081,2087,1,0,0,0,2082,2084,5,11,0,0,2083,2085, - 5,164,0,0,2084,2083,1,0,0,0,2084,2085,1,0,0,0,2085,2088,1,0,0,0,2086, - 2088,5,164,0,0,2087,2082,1,0,0,0,2087,2086,1,0,0,0,2088,2090,1,0,0,0, - 2089,2091,5,183,0,0,2090,2089,1,0,0,0,2090,2091,1,0,0,0,2091,2092,1,0, - 0,0,2092,2094,3,244,122,0,2093,2080,1,0,0,0,2094,2097,1,0,0,0,2095,2093, - 1,0,0,0,2095,2096,1,0,0,0,2096,229,1,0,0,0,2097,2095,1,0,0,0,2098,2103, - 5,161,0,0,2099,2101,5,183,0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101, - 2102,1,0,0,0,2102,2104,3,232,116,0,2103,2100,1,0,0,0,2103,2104,1,0,0, - 0,2104,2109,1,0,0,0,2105,2107,5,183,0,0,2106,2105,1,0,0,0,2106,2107,1, - 0,0,0,2107,2108,1,0,0,0,2108,2110,3,234,117,0,2109,2106,1,0,0,0,2109, - 2110,1,0,0,0,2110,2115,1,0,0,0,2111,2113,5,183,0,0,2112,2111,1,0,0,0, - 2112,2113,1,0,0,0,2113,2114,1,0,0,0,2114,2116,3,236,118,0,2115,2112,1, - 0,0,0,2115,2116,1,0,0,0,2116,231,1,0,0,0,2117,2118,5,48,0,0,2118,2120, - 5,183,0,0,2119,2117,1,0,0,0,2119,2120,1,0,0,0,2120,2121,1,0,0,0,2121, - 2123,5,152,0,0,2122,2124,5,183,0,0,2123,2122,1,0,0,0,2123,2124,1,0,0, - 0,2124,2125,1,0,0,0,2125,2127,5,2,0,0,2126,2128,5,183,0,0,2127,2126,1, - 0,0,0,2127,2128,1,0,0,0,2128,2129,1,0,0,0,2129,2131,3,344,172,0,2130, - 2132,5,183,0,0,2131,2130,1,0,0,0,2131,2132,1,0,0,0,2132,2133,1,0,0,0, - 2133,2134,5,3,0,0,2134,2142,1,0,0,0,2135,2142,5,132,0,0,2136,2137,5,48, - 0,0,2137,2138,5,183,0,0,2138,2142,5,132,0,0,2139,2142,5,139,0,0,2140, - 2142,5,45,0,0,2141,2119,1,0,0,0,2141,2135,1,0,0,0,2141,2136,1,0,0,0,2141, - 2139,1,0,0,0,2141,2140,1,0,0,0,2142,233,1,0,0,0,2143,2145,3,240,120,0, - 2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,2147,1,0,0,0,2146,2148,5,183, - 0,0,2147,2146,1,0,0,0,2147,2148,1,0,0,0,2148,2149,1,0,0,0,2149,2151,5, - 165,0,0,2150,2152,5,183,0,0,2151,2150,1,0,0,0,2151,2152,1,0,0,0,2152, - 2154,1,0,0,0,2153,2155,3,242,121,0,2154,2153,1,0,0,0,2154,2155,1,0,0, - 0,2155,2158,1,0,0,0,2156,2158,3,346,173,0,2157,2144,1,0,0,0,2157,2156, - 1,0,0,0,2158,235,1,0,0,0,2159,2161,5,2,0,0,2160,2162,5,183,0,0,2161,2160, - 1,0,0,0,2161,2162,1,0,0,0,2162,2163,1,0,0,0,2163,2165,3,336,168,0,2164, - 2166,5,183,0,0,2165,2164,1,0,0,0,2165,2166,1,0,0,0,2166,2167,1,0,0,0, - 2167,2169,5,4,0,0,2168,2170,5,183,0,0,2169,2168,1,0,0,0,2169,2170,1,0, - 0,0,2170,2171,1,0,0,0,2171,2183,3,336,168,0,2172,2174,5,183,0,0,2173, - 2172,1,0,0,0,2173,2174,1,0,0,0,2174,2175,1,0,0,0,2175,2177,5,11,0,0,2176, - 2178,5,183,0,0,2177,2176,1,0,0,0,2177,2178,1,0,0,0,2178,2179,1,0,0,0, - 2179,2181,3,206,103,0,2180,2182,5,183,0,0,2181,2180,1,0,0,0,2181,2182, - 1,0,0,0,2182,2184,1,0,0,0,2183,2173,1,0,0,0,2183,2184,1,0,0,0,2184,2204, - 1,0,0,0,2185,2187,5,183,0,0,2186,2185,1,0,0,0,2186,2187,1,0,0,0,2187, - 2188,1,0,0,0,2188,2190,5,11,0,0,2189,2191,5,183,0,0,2190,2189,1,0,0,0, - 2190,2191,1,0,0,0,2191,2192,1,0,0,0,2192,2194,3,238,119,0,2193,2195,5, - 183,0,0,2194,2193,1,0,0,0,2194,2195,1,0,0,0,2195,2196,1,0,0,0,2196,2198, - 5,4,0,0,2197,2199,5,183,0,0,2198,2197,1,0,0,0,2198,2199,1,0,0,0,2199, - 2200,1,0,0,0,2200,2202,3,238,119,0,2201,2203,5,183,0,0,2202,2201,1,0, - 0,0,2202,2203,1,0,0,0,2203,2205,1,0,0,0,2204,2186,1,0,0,0,2204,2205,1, - 0,0,0,2205,2206,1,0,0,0,2206,2207,5,3,0,0,2207,237,1,0,0,0,2208,2210, - 5,9,0,0,2209,2211,5,183,0,0,2210,2209,1,0,0,0,2210,2211,1,0,0,0,2211, - 2213,1,0,0,0,2212,2214,3,194,97,0,2213,2212,1,0,0,0,2213,2214,1,0,0,0, - 2214,2216,1,0,0,0,2215,2217,5,183,0,0,2216,2215,1,0,0,0,2216,2217,1,0, - 0,0,2217,2218,1,0,0,0,2218,2219,5,10,0,0,2219,239,1,0,0,0,2220,2221,5, - 170,0,0,2221,241,1,0,0,0,2222,2223,5,170,0,0,2223,243,1,0,0,0,2224,2227, - 3,350,175,0,2225,2226,5,5,0,0,2226,2228,3,350,175,0,2227,2225,1,0,0,0, - 2227,2228,1,0,0,0,2228,245,1,0,0,0,2229,2230,3,350,175,0,2230,247,1,0, - 0,0,2231,2232,3,250,125,0,2232,249,1,0,0,0,2233,2240,3,252,126,0,2234, - 2235,5,183,0,0,2235,2236,5,119,0,0,2236,2237,5,183,0,0,2237,2239,3,252, - 126,0,2238,2234,1,0,0,0,2239,2242,1,0,0,0,2240,2238,1,0,0,0,2240,2241, - 1,0,0,0,2241,251,1,0,0,0,2242,2240,1,0,0,0,2243,2250,3,254,127,0,2244, - 2245,5,183,0,0,2245,2246,5,153,0,0,2246,2247,5,183,0,0,2247,2249,3,254, - 127,0,2248,2244,1,0,0,0,2249,2252,1,0,0,0,2250,2248,1,0,0,0,2250,2251, - 1,0,0,0,2251,253,1,0,0,0,2252,2250,1,0,0,0,2253,2260,3,256,128,0,2254, - 2255,5,183,0,0,2255,2256,5,50,0,0,2256,2257,5,183,0,0,2257,2259,3,256, - 128,0,2258,2254,1,0,0,0,2259,2262,1,0,0,0,2260,2258,1,0,0,0,2260,2261, - 1,0,0,0,2261,255,1,0,0,0,2262,2260,1,0,0,0,2263,2265,5,113,0,0,2264,2266, - 5,183,0,0,2265,2264,1,0,0,0,2265,2266,1,0,0,0,2266,2268,1,0,0,0,2267, - 2263,1,0,0,0,2268,2271,1,0,0,0,2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270, - 2272,1,0,0,0,2271,2269,1,0,0,0,2272,2273,3,258,129,0,2273,257,1,0,0,0, - 2274,2284,3,262,131,0,2275,2277,5,183,0,0,2276,2275,1,0,0,0,2276,2277, - 1,0,0,0,2277,2278,1,0,0,0,2278,2280,3,260,130,0,2279,2281,5,183,0,0,2280, - 2279,1,0,0,0,2280,2281,1,0,0,0,2281,2282,1,0,0,0,2282,2283,3,262,131, - 0,2283,2285,1,0,0,0,2284,2276,1,0,0,0,2284,2285,1,0,0,0,2285,2323,1,0, - 0,0,2286,2288,3,262,131,0,2287,2289,5,183,0,0,2288,2287,1,0,0,0,2288, - 2289,1,0,0,0,2289,2290,1,0,0,0,2290,2292,5,163,0,0,2291,2293,5,183,0, - 0,2292,2291,1,0,0,0,2292,2293,1,0,0,0,2293,2294,1,0,0,0,2294,2295,3,262, - 131,0,2295,2296,1,0,0,0,2296,2297,6,129,-1,0,2297,2323,1,0,0,0,2298,2300, - 3,262,131,0,2299,2301,5,183,0,0,2300,2299,1,0,0,0,2300,2301,1,0,0,0,2301, - 2302,1,0,0,0,2302,2304,3,260,130,0,2303,2305,5,183,0,0,2304,2303,1,0, - 0,0,2304,2305,1,0,0,0,2305,2306,1,0,0,0,2306,2316,3,262,131,0,2307,2309, - 5,183,0,0,2308,2307,1,0,0,0,2308,2309,1,0,0,0,2309,2310,1,0,0,0,2310, - 2312,3,260,130,0,2311,2313,5,183,0,0,2312,2311,1,0,0,0,2312,2313,1,0, - 0,0,2313,2314,1,0,0,0,2314,2315,3,262,131,0,2315,2317,1,0,0,0,2316,2308, - 1,0,0,0,2317,2318,1,0,0,0,2318,2316,1,0,0,0,2318,2319,1,0,0,0,2319,2320, - 1,0,0,0,2320,2321,6,129,-1,0,2321,2323,1,0,0,0,2322,2274,1,0,0,0,2322, - 2286,1,0,0,0,2322,2298,1,0,0,0,2323,259,1,0,0,0,2324,2325,7,2,0,0,2325, - 261,1,0,0,0,2326,2337,3,264,132,0,2327,2329,5,183,0,0,2328,2327,1,0,0, - 0,2328,2329,1,0,0,0,2329,2330,1,0,0,0,2330,2332,5,11,0,0,2331,2333,5, - 183,0,0,2332,2331,1,0,0,0,2332,2333,1,0,0,0,2333,2334,1,0,0,0,2334,2336, - 3,264,132,0,2335,2328,1,0,0,0,2336,2339,1,0,0,0,2337,2335,1,0,0,0,2337, - 2338,1,0,0,0,2338,263,1,0,0,0,2339,2337,1,0,0,0,2340,2351,3,266,133,0, - 2341,2343,5,183,0,0,2342,2341,1,0,0,0,2342,2343,1,0,0,0,2343,2344,1,0, - 0,0,2344,2346,5,17,0,0,2345,2347,5,183,0,0,2346,2345,1,0,0,0,2346,2347, - 1,0,0,0,2347,2348,1,0,0,0,2348,2350,3,266,133,0,2349,2342,1,0,0,0,2350, - 2353,1,0,0,0,2351,2349,1,0,0,0,2351,2352,1,0,0,0,2352,265,1,0,0,0,2353, - 2351,1,0,0,0,2354,2366,3,270,135,0,2355,2357,5,183,0,0,2356,2355,1,0, - 0,0,2356,2357,1,0,0,0,2357,2358,1,0,0,0,2358,2360,3,268,134,0,2359,2361, - 5,183,0,0,2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361,2362,1,0,0,0,2362, - 2363,3,270,135,0,2363,2365,1,0,0,0,2364,2356,1,0,0,0,2365,2368,1,0,0, - 0,2366,2364,1,0,0,0,2366,2367,1,0,0,0,2367,267,1,0,0,0,2368,2366,1,0, - 0,0,2369,2370,7,3,0,0,2370,269,1,0,0,0,2371,2383,3,274,137,0,2372,2374, - 5,183,0,0,2373,2372,1,0,0,0,2373,2374,1,0,0,0,2374,2375,1,0,0,0,2375, - 2377,3,272,136,0,2376,2378,5,183,0,0,2377,2376,1,0,0,0,2377,2378,1,0, - 0,0,2378,2379,1,0,0,0,2379,2380,3,274,137,0,2380,2382,1,0,0,0,2381,2373, - 1,0,0,0,2382,2385,1,0,0,0,2383,2381,1,0,0,0,2383,2384,1,0,0,0,2384,271, - 1,0,0,0,2385,2383,1,0,0,0,2386,2387,7,4,0,0,2387,273,1,0,0,0,2388,2400, - 3,278,139,0,2389,2391,5,183,0,0,2390,2389,1,0,0,0,2390,2391,1,0,0,0,2391, - 2392,1,0,0,0,2392,2394,3,276,138,0,2393,2395,5,183,0,0,2394,2393,1,0, - 0,0,2394,2395,1,0,0,0,2395,2396,1,0,0,0,2396,2397,3,278,139,0,2397,2399, - 1,0,0,0,2398,2390,1,0,0,0,2399,2402,1,0,0,0,2400,2398,1,0,0,0,2400,2401, - 1,0,0,0,2401,275,1,0,0,0,2402,2400,1,0,0,0,2403,2404,7,5,0,0,2404,277, - 1,0,0,0,2405,2416,3,280,140,0,2406,2408,5,183,0,0,2407,2406,1,0,0,0,2407, - 2408,1,0,0,0,2408,2409,1,0,0,0,2409,2411,5,23,0,0,2410,2412,5,183,0,0, - 2411,2410,1,0,0,0,2411,2412,1,0,0,0,2412,2413,1,0,0,0,2413,2415,3,280, - 140,0,2414,2407,1,0,0,0,2415,2418,1,0,0,0,2416,2414,1,0,0,0,2416,2417, - 1,0,0,0,2417,279,1,0,0,0,2418,2416,1,0,0,0,2419,2427,3,290,145,0,2420, - 2428,3,284,142,0,2421,2423,3,282,141,0,2422,2421,1,0,0,0,2423,2424,1, - 0,0,0,2424,2422,1,0,0,0,2424,2425,1,0,0,0,2425,2428,1,0,0,0,2426,2428, - 3,288,144,0,2427,2420,1,0,0,0,2427,2422,1,0,0,0,2427,2426,1,0,0,0,2427, - 2428,1,0,0,0,2428,281,1,0,0,0,2429,2430,5,183,0,0,2430,2432,5,96,0,0, - 2431,2433,5,183,0,0,2432,2431,1,0,0,0,2432,2433,1,0,0,0,2433,2434,1,0, - 0,0,2434,2449,3,292,146,0,2435,2436,5,7,0,0,2436,2437,3,248,124,0,2437, - 2438,5,8,0,0,2438,2449,1,0,0,0,2439,2441,5,7,0,0,2440,2442,3,248,124, - 0,2441,2440,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0,2443,2445,7,6, - 0,0,2444,2446,3,248,124,0,2445,2444,1,0,0,0,2445,2446,1,0,0,0,2446,2447, - 1,0,0,0,2447,2449,5,8,0,0,2448,2429,1,0,0,0,2448,2435,1,0,0,0,2448,2439, - 1,0,0,0,2449,283,1,0,0,0,2450,2462,3,286,143,0,2451,2452,5,183,0,0,2452, - 2453,5,134,0,0,2453,2454,5,183,0,0,2454,2462,5,150,0,0,2455,2456,5,183, - 0,0,2456,2457,5,81,0,0,2457,2458,5,183,0,0,2458,2462,5,150,0,0,2459,2460, - 5,183,0,0,2460,2462,5,65,0,0,2461,2450,1,0,0,0,2461,2451,1,0,0,0,2461, - 2455,1,0,0,0,2461,2459,1,0,0,0,2462,2464,1,0,0,0,2463,2465,5,183,0,0, - 2464,2463,1,0,0,0,2464,2465,1,0,0,0,2465,2466,1,0,0,0,2466,2467,3,292, - 146,0,2467,285,1,0,0,0,2468,2470,5,183,0,0,2469,2468,1,0,0,0,2469,2470, - 1,0,0,0,2470,2471,1,0,0,0,2471,2472,5,24,0,0,2472,287,1,0,0,0,2473,2474, - 5,183,0,0,2474,2475,5,99,0,0,2475,2476,5,183,0,0,2476,2484,5,115,0,0, - 2477,2478,5,183,0,0,2478,2479,5,99,0,0,2479,2480,5,183,0,0,2480,2481, - 5,113,0,0,2481,2482,5,183,0,0,2482,2484,5,115,0,0,2483,2473,1,0,0,0,2483, - 2477,1,0,0,0,2484,289,1,0,0,0,2485,2487,5,166,0,0,2486,2488,5,183,0,0, - 2487,2486,1,0,0,0,2487,2488,1,0,0,0,2488,2490,1,0,0,0,2489,2485,1,0,0, - 0,2490,2493,1,0,0,0,2491,2489,1,0,0,0,2491,2492,1,0,0,0,2492,2494,1,0, - 0,0,2493,2491,1,0,0,0,2494,2499,3,292,146,0,2495,2497,5,183,0,0,2496, - 2495,1,0,0,0,2496,2497,1,0,0,0,2497,2498,1,0,0,0,2498,2500,5,167,0,0, - 2499,2496,1,0,0,0,2499,2500,1,0,0,0,2500,291,1,0,0,0,2501,2508,3,294, - 147,0,2502,2504,5,183,0,0,2503,2502,1,0,0,0,2503,2504,1,0,0,0,2504,2505, - 1,0,0,0,2505,2507,3,330,165,0,2506,2503,1,0,0,0,2507,2510,1,0,0,0,2508, - 2506,1,0,0,0,2508,2509,1,0,0,0,2509,293,1,0,0,0,2510,2508,1,0,0,0,2511, - 2521,3,302,151,0,2512,2521,3,340,170,0,2513,2521,3,332,166,0,2514,2521, - 3,314,157,0,2515,2521,3,316,158,0,2516,2521,3,326,163,0,2517,2521,3,328, - 164,0,2518,2521,3,336,168,0,2519,2521,3,296,148,0,2520,2511,1,0,0,0,2520, - 2512,1,0,0,0,2520,2513,1,0,0,0,2520,2514,1,0,0,0,2520,2515,1,0,0,0,2520, - 2516,1,0,0,0,2520,2517,1,0,0,0,2520,2518,1,0,0,0,2520,2519,1,0,0,0,2521, - 295,1,0,0,0,2522,2524,5,48,0,0,2523,2525,5,183,0,0,2524,2523,1,0,0,0, - 2524,2525,1,0,0,0,2525,2526,1,0,0,0,2526,2528,5,2,0,0,2527,2529,5,183, - 0,0,2528,2527,1,0,0,0,2528,2529,1,0,0,0,2529,2530,1,0,0,0,2530,2532,3, - 298,149,0,2531,2533,5,183,0,0,2532,2531,1,0,0,0,2532,2533,1,0,0,0,2533, - 2534,1,0,0,0,2534,2535,5,3,0,0,2535,2579,1,0,0,0,2536,2538,5,46,0,0,2537, - 2539,5,183,0,0,2538,2537,1,0,0,0,2538,2539,1,0,0,0,2539,2540,1,0,0,0, - 2540,2542,5,2,0,0,2541,2543,5,183,0,0,2542,2541,1,0,0,0,2542,2543,1,0, - 0,0,2543,2544,1,0,0,0,2544,2546,3,298,149,0,2545,2547,5,183,0,0,2546, - 2545,1,0,0,0,2546,2547,1,0,0,0,2547,2548,1,0,0,0,2548,2549,5,3,0,0,2549, - 2579,1,0,0,0,2550,2552,5,114,0,0,2551,2553,5,183,0,0,2552,2551,1,0,0, - 0,2552,2553,1,0,0,0,2553,2554,1,0,0,0,2554,2556,5,2,0,0,2555,2557,5,183, - 0,0,2556,2555,1,0,0,0,2556,2557,1,0,0,0,2557,2558,1,0,0,0,2558,2560,3, - 298,149,0,2559,2561,5,183,0,0,2560,2559,1,0,0,0,2560,2561,1,0,0,0,2561, - 2562,1,0,0,0,2562,2563,5,3,0,0,2563,2579,1,0,0,0,2564,2566,5,154,0,0, - 2565,2567,5,183,0,0,2566,2565,1,0,0,0,2566,2567,1,0,0,0,2567,2568,1,0, - 0,0,2568,2570,5,2,0,0,2569,2571,5,183,0,0,2570,2569,1,0,0,0,2570,2571, - 1,0,0,0,2571,2572,1,0,0,0,2572,2574,3,298,149,0,2573,2575,5,183,0,0,2574, - 2573,1,0,0,0,2574,2575,1,0,0,0,2575,2576,1,0,0,0,2576,2577,5,3,0,0,2577, - 2579,1,0,0,0,2578,2522,1,0,0,0,2578,2536,1,0,0,0,2578,2550,1,0,0,0,2578, - 2564,1,0,0,0,2579,297,1,0,0,0,2580,2581,3,300,150,0,2581,2582,5,183,0, - 0,2582,2583,3,206,103,0,2583,299,1,0,0,0,2584,2585,3,336,168,0,2585,2586, - 5,183,0,0,2586,2587,5,96,0,0,2587,2588,5,183,0,0,2588,2589,3,248,124, - 0,2589,301,1,0,0,0,2590,2597,3,338,169,0,2591,2597,5,168,0,0,2592,2597, - 3,304,152,0,2593,2597,5,115,0,0,2594,2597,3,306,153,0,2595,2597,3,310, - 155,0,2596,2590,1,0,0,0,2596,2591,1,0,0,0,2596,2592,1,0,0,0,2596,2593, - 1,0,0,0,2596,2594,1,0,0,0,2596,2595,1,0,0,0,2597,303,1,0,0,0,2598,2599, - 7,7,0,0,2599,305,1,0,0,0,2600,2602,5,7,0,0,2601,2603,5,183,0,0,2602,2601, - 1,0,0,0,2602,2603,1,0,0,0,2603,2617,1,0,0,0,2604,2606,3,248,124,0,2605, - 2607,5,183,0,0,2606,2605,1,0,0,0,2606,2607,1,0,0,0,2607,2614,1,0,0,0, - 2608,2610,3,308,154,0,2609,2611,5,183,0,0,2610,2609,1,0,0,0,2610,2611, - 1,0,0,0,2611,2613,1,0,0,0,2612,2608,1,0,0,0,2613,2616,1,0,0,0,2614,2612, - 1,0,0,0,2614,2615,1,0,0,0,2615,2618,1,0,0,0,2616,2614,1,0,0,0,2617,2604, - 1,0,0,0,2617,2618,1,0,0,0,2618,2619,1,0,0,0,2619,2620,5,8,0,0,2620,307, - 1,0,0,0,2621,2623,5,4,0,0,2622,2624,5,183,0,0,2623,2622,1,0,0,0,2623, - 2624,1,0,0,0,2624,2626,1,0,0,0,2625,2627,3,248,124,0,2626,2625,1,0,0, - 0,2626,2627,1,0,0,0,2627,309,1,0,0,0,2628,2630,5,9,0,0,2629,2631,5,183, - 0,0,2630,2629,1,0,0,0,2630,2631,1,0,0,0,2631,2632,1,0,0,0,2632,2634,3, - 312,156,0,2633,2635,5,183,0,0,2634,2633,1,0,0,0,2634,2635,1,0,0,0,2635, - 2646,1,0,0,0,2636,2638,5,4,0,0,2637,2639,5,183,0,0,2638,2637,1,0,0,0, - 2638,2639,1,0,0,0,2639,2640,1,0,0,0,2640,2642,3,312,156,0,2641,2643,5, - 183,0,0,2642,2641,1,0,0,0,2642,2643,1,0,0,0,2643,2645,1,0,0,0,2644,2636, - 1,0,0,0,2645,2648,1,0,0,0,2646,2644,1,0,0,0,2646,2647,1,0,0,0,2647,2649, - 1,0,0,0,2648,2646,1,0,0,0,2649,2650,5,10,0,0,2650,311,1,0,0,0,2651,2654, - 3,352,176,0,2652,2654,5,168,0,0,2653,2651,1,0,0,0,2653,2652,1,0,0,0,2654, - 2656,1,0,0,0,2655,2657,5,183,0,0,2656,2655,1,0,0,0,2656,2657,1,0,0,0, - 2657,2658,1,0,0,0,2658,2660,5,164,0,0,2659,2661,5,183,0,0,2660,2659,1, - 0,0,0,2660,2661,1,0,0,0,2661,2662,1,0,0,0,2662,2663,3,248,124,0,2663, - 313,1,0,0,0,2664,2666,5,2,0,0,2665,2667,5,183,0,0,2666,2665,1,0,0,0,2666, - 2667,1,0,0,0,2667,2668,1,0,0,0,2668,2670,3,248,124,0,2669,2671,5,183, - 0,0,2670,2669,1,0,0,0,2670,2671,1,0,0,0,2671,2672,1,0,0,0,2672,2673,5, - 3,0,0,2673,315,1,0,0,0,2674,2676,5,67,0,0,2675,2677,5,183,0,0,2676,2675, - 1,0,0,0,2676,2677,1,0,0,0,2677,2678,1,0,0,0,2678,2680,5,2,0,0,2679,2681, - 5,183,0,0,2680,2679,1,0,0,0,2680,2681,1,0,0,0,2681,2682,1,0,0,0,2682, - 2684,5,161,0,0,2683,2685,5,183,0,0,2684,2683,1,0,0,0,2684,2685,1,0,0, - 0,2685,2686,1,0,0,0,2686,2752,5,3,0,0,2687,2689,5,59,0,0,2688,2690,5, - 183,0,0,2689,2688,1,0,0,0,2689,2690,1,0,0,0,2690,2691,1,0,0,0,2691,2693, - 5,2,0,0,2692,2694,5,183,0,0,2693,2692,1,0,0,0,2693,2694,1,0,0,0,2694, - 2695,1,0,0,0,2695,2697,3,320,160,0,2696,2698,5,183,0,0,2697,2696,1,0, - 0,0,2697,2698,1,0,0,0,2698,2709,1,0,0,0,2699,2701,5,51,0,0,2700,2702, - 5,183,0,0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,2703,1,0,0,0,2703, - 2710,3,118,59,0,2704,2706,5,4,0,0,2705,2707,5,183,0,0,2706,2705,1,0,0, - 0,2706,2707,1,0,0,0,2707,2708,1,0,0,0,2708,2710,3,320,160,0,2709,2699, - 1,0,0,0,2709,2704,1,0,0,0,2710,2712,1,0,0,0,2711,2713,5,183,0,0,2712, - 2711,1,0,0,0,2712,2713,1,0,0,0,2713,2714,1,0,0,0,2714,2715,5,3,0,0,2715, - 2752,1,0,0,0,2716,2718,3,318,159,0,2717,2719,5,183,0,0,2718,2717,1,0, - 0,0,2718,2719,1,0,0,0,2719,2720,1,0,0,0,2720,2722,5,2,0,0,2721,2723,5, - 183,0,0,2722,2721,1,0,0,0,2722,2723,1,0,0,0,2723,2728,1,0,0,0,2724,2726, - 5,77,0,0,2725,2727,5,183,0,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727, - 2729,1,0,0,0,2728,2724,1,0,0,0,2728,2729,1,0,0,0,2729,2747,1,0,0,0,2730, - 2732,3,320,160,0,2731,2733,5,183,0,0,2732,2731,1,0,0,0,2732,2733,1,0, - 0,0,2733,2744,1,0,0,0,2734,2736,5,4,0,0,2735,2737,5,183,0,0,2736,2735, - 1,0,0,0,2736,2737,1,0,0,0,2737,2738,1,0,0,0,2738,2740,3,320,160,0,2739, - 2741,5,183,0,0,2740,2739,1,0,0,0,2740,2741,1,0,0,0,2741,2743,1,0,0,0, - 2742,2734,1,0,0,0,2743,2746,1,0,0,0,2744,2742,1,0,0,0,2744,2745,1,0,0, - 0,2745,2748,1,0,0,0,2746,2744,1,0,0,0,2747,2730,1,0,0,0,2747,2748,1,0, - 0,0,2748,2749,1,0,0,0,2749,2750,5,3,0,0,2750,2752,1,0,0,0,2751,2674,1, - 0,0,0,2751,2687,1,0,0,0,2751,2716,1,0,0,0,2752,317,1,0,0,0,2753,2754, - 3,352,176,0,2754,319,1,0,0,0,2755,2757,3,352,176,0,2756,2758,5,183,0, - 0,2757,2756,1,0,0,0,2757,2758,1,0,0,0,2758,2759,1,0,0,0,2759,2760,5,164, - 0,0,2760,2762,5,6,0,0,2761,2763,5,183,0,0,2762,2761,1,0,0,0,2762,2763, - 1,0,0,0,2763,2765,1,0,0,0,2764,2755,1,0,0,0,2764,2765,1,0,0,0,2765,2766, - 1,0,0,0,2766,2769,3,248,124,0,2767,2769,3,322,161,0,2768,2764,1,0,0,0, - 2768,2767,1,0,0,0,2769,321,1,0,0,0,2770,2772,3,324,162,0,2771,2773,5, - 183,0,0,2772,2771,1,0,0,0,2772,2773,1,0,0,0,2773,2774,1,0,0,0,2774,2775, - 5,166,0,0,2775,2777,5,15,0,0,2776,2778,5,183,0,0,2777,2776,1,0,0,0,2777, - 2778,1,0,0,0,2778,2779,1,0,0,0,2779,2781,3,248,124,0,2780,2782,5,183, - 0,0,2781,2780,1,0,0,0,2781,2782,1,0,0,0,2782,323,1,0,0,0,2783,2808,3, - 352,176,0,2784,2786,5,2,0,0,2785,2787,5,183,0,0,2786,2785,1,0,0,0,2786, - 2787,1,0,0,0,2787,2788,1,0,0,0,2788,2790,3,352,176,0,2789,2791,5,183, - 0,0,2790,2789,1,0,0,0,2790,2791,1,0,0,0,2791,2802,1,0,0,0,2792,2794,5, - 4,0,0,2793,2795,5,183,0,0,2794,2793,1,0,0,0,2794,2795,1,0,0,0,2795,2796, - 1,0,0,0,2796,2798,3,352,176,0,2797,2799,5,183,0,0,2798,2797,1,0,0,0,2798, - 2799,1,0,0,0,2799,2801,1,0,0,0,2800,2792,1,0,0,0,2801,2804,1,0,0,0,2802, - 2800,1,0,0,0,2802,2803,1,0,0,0,2803,2805,1,0,0,0,2804,2802,1,0,0,0,2805, - 2806,5,3,0,0,2806,2808,1,0,0,0,2807,2783,1,0,0,0,2807,2784,1,0,0,0,2808, - 325,1,0,0,0,2809,2814,3,216,108,0,2810,2812,5,183,0,0,2811,2810,1,0,0, - 0,2811,2812,1,0,0,0,2812,2813,1,0,0,0,2813,2815,3,218,109,0,2814,2811, - 1,0,0,0,2815,2816,1,0,0,0,2816,2814,1,0,0,0,2816,2817,1,0,0,0,2817,327, - 1,0,0,0,2818,2820,7,8,0,0,2819,2821,5,183,0,0,2820,2819,1,0,0,0,2820, - 2821,1,0,0,0,2821,2822,1,0,0,0,2822,2824,5,9,0,0,2823,2825,5,183,0,0, - 2824,2823,1,0,0,0,2824,2825,1,0,0,0,2825,2826,1,0,0,0,2826,2828,5,106, - 0,0,2827,2829,5,183,0,0,2828,2827,1,0,0,0,2828,2829,1,0,0,0,2829,2830, - 1,0,0,0,2830,2835,3,208,104,0,2831,2833,5,183,0,0,2832,2831,1,0,0,0,2832, - 2833,1,0,0,0,2833,2834,1,0,0,0,2834,2836,3,206,103,0,2835,2832,1,0,0, - 0,2835,2836,1,0,0,0,2836,2841,1,0,0,0,2837,2839,5,183,0,0,2838,2837,1, - 0,0,0,2838,2839,1,0,0,0,2839,2840,1,0,0,0,2840,2842,3,170,85,0,2841,2838, - 1,0,0,0,2841,2842,1,0,0,0,2842,2844,1,0,0,0,2843,2845,5,183,0,0,2844, - 2843,1,0,0,0,2844,2845,1,0,0,0,2845,2846,1,0,0,0,2846,2847,5,10,0,0,2847, - 329,1,0,0,0,2848,2850,5,5,0,0,2849,2851,5,183,0,0,2850,2849,1,0,0,0,2850, - 2851,1,0,0,0,2851,2854,1,0,0,0,2852,2855,3,344,172,0,2853,2855,5,161, - 0,0,2854,2852,1,0,0,0,2854,2853,1,0,0,0,2855,331,1,0,0,0,2856,2861,5, - 58,0,0,2857,2859,5,183,0,0,2858,2857,1,0,0,0,2858,2859,1,0,0,0,2859,2860, - 1,0,0,0,2860,2862,3,334,167,0,2861,2858,1,0,0,0,2862,2863,1,0,0,0,2863, - 2861,1,0,0,0,2863,2864,1,0,0,0,2864,2879,1,0,0,0,2865,2867,5,58,0,0,2866, - 2868,5,183,0,0,2867,2866,1,0,0,0,2867,2868,1,0,0,0,2868,2869,1,0,0,0, - 2869,2874,3,248,124,0,2870,2872,5,183,0,0,2871,2870,1,0,0,0,2871,2872, - 1,0,0,0,2872,2873,1,0,0,0,2873,2875,3,334,167,0,2874,2871,1,0,0,0,2875, - 2876,1,0,0,0,2876,2874,1,0,0,0,2876,2877,1,0,0,0,2877,2879,1,0,0,0,2878, - 2856,1,0,0,0,2878,2865,1,0,0,0,2879,2888,1,0,0,0,2880,2882,5,183,0,0, - 2881,2880,1,0,0,0,2881,2882,1,0,0,0,2882,2883,1,0,0,0,2883,2885,5,79, - 0,0,2884,2886,5,183,0,0,2885,2884,1,0,0,0,2885,2886,1,0,0,0,2886,2887, - 1,0,0,0,2887,2889,3,248,124,0,2888,2881,1,0,0,0,2888,2889,1,0,0,0,2889, - 2891,1,0,0,0,2890,2892,5,183,0,0,2891,2890,1,0,0,0,2891,2892,1,0,0,0, - 2892,2893,1,0,0,0,2893,2894,5,80,0,0,2894,333,1,0,0,0,2895,2897,5,148, - 0,0,2896,2898,5,183,0,0,2897,2896,1,0,0,0,2897,2898,1,0,0,0,2898,2899, - 1,0,0,0,2899,2901,3,248,124,0,2900,2902,5,183,0,0,2901,2900,1,0,0,0,2901, - 2902,1,0,0,0,2902,2903,1,0,0,0,2903,2905,5,137,0,0,2904,2906,5,183,0, - 0,2905,2904,1,0,0,0,2905,2906,1,0,0,0,2906,2907,1,0,0,0,2907,2908,3,248, - 124,0,2908,335,1,0,0,0,2909,2910,3,352,176,0,2910,337,1,0,0,0,2911,2914, - 3,348,174,0,2912,2914,3,346,173,0,2913,2911,1,0,0,0,2913,2912,1,0,0,0, - 2914,339,1,0,0,0,2915,2918,5,25,0,0,2916,2919,3,352,176,0,2917,2919,5, - 170,0,0,2918,2916,1,0,0,0,2918,2917,1,0,0,0,2919,341,1,0,0,0,2920,2922, - 3,294,147,0,2921,2923,5,183,0,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923, - 2924,1,0,0,0,2924,2925,3,330,165,0,2925,343,1,0,0,0,2926,2927,3,352,176, - 0,2927,345,1,0,0,0,2928,2929,5,170,0,0,2929,347,1,0,0,0,2930,2931,7,9, - 0,0,2931,349,1,0,0,0,2932,2935,3,352,176,0,2933,2934,5,5,0,0,2934,2936, - 3,352,176,0,2935,2933,1,0,0,0,2935,2936,1,0,0,0,2936,351,1,0,0,0,2937, - 2943,5,179,0,0,2938,2939,5,182,0,0,2939,2943,6,176,-1,0,2940,2943,5,171, - 0,0,2941,2943,3,354,177,0,2942,2937,1,0,0,0,2942,2938,1,0,0,0,2942,2940, - 1,0,0,0,2942,2941,1,0,0,0,2943,353,1,0,0,0,2944,2945,7,10,0,0,2945,355, - 1,0,0,0,2946,2947,7,11,0,0,2947,357,1,0,0,0,2948,2949,7,12,0,0,2949,359, - 1,0,0,0,2950,2951,7,13,0,0,2951,361,1,0,0,0,502,364,368,373,377,382,385, - 389,392,418,424,431,435,439,443,446,450,454,458,463,467,469,476,480,489, - 494,504,508,512,517,530,534,542,546,550,554,562,566,570,574,589,594,600, - 604,607,610,616,620,625,628,633,637,641,646,664,676,680,687,707,711,714, - 717,720,723,727,732,736,746,750,755,760,765,771,775,779,784,791,795,799, - 802,819,823,827,831,835,838,841,849,854,858,862,866,875,879,884,888,892, - 896,900,902,906,910,912,920,925,929,933,937,941,945,950,968,975,988,995, - 1011,1015,1024,1032,1035,1045,1048,1056,1059,1065,1068,1074,1089,1107, - 1114,1121,1132,1155,1164,1170,1174,1179,1188,1192,1197,1203,1209,1215, - 1219,1223,1229,1233,1237,1243,1247,1251,1257,1261,1265,1269,1273,1279, - 1283,1287,1291,1295,1305,1311,1318,1323,1329,1334,1351,1357,1363,1367, - 1371,1380,1394,1399,1404,1408,1413,1419,1424,1427,1431,1435,1439,1445, - 1449,1454,1459,1463,1466,1468,1472,1476,1482,1486,1491,1495,1504,1510, - 1518,1522,1526,1530,1537,1541,1545,1549,1552,1555,1562,1568,1572,1577, - 1584,1587,1590,1595,1599,1603,1608,1612,1621,1625,1630,1644,1646,1648, - 1653,1663,1669,1676,1689,1693,1697,1701,1706,1711,1715,1719,1723,1727, - 1731,1737,1741,1745,1749,1754,1760,1763,1769,1772,1778,1782,1786,1790, - 1794,1799,1804,1808,1813,1816,1825,1834,1839,1852,1855,1863,1867,1872, - 1877,1881,1886,1892,1897,1904,1908,1912,1914,1918,1920,1924,1926,1932, - 1938,1942,1945,1948,1954,1957,1960,1964,1970,1973,1976,1980,1984,1988, - 1990,1994,1996,2000,2002,2006,2008,2014,2018,2022,2026,2030,2034,2038, - 2042,2046,2049,2055,2059,2063,2066,2071,2076,2080,2084,2087,2090,2095, - 2100,2103,2106,2109,2112,2115,2119,2123,2127,2131,2141,2144,2147,2151, - 2154,2157,2161,2165,2169,2173,2177,2181,2183,2186,2190,2194,2198,2202, - 2204,2210,2213,2216,2227,2240,2250,2260,2265,2269,2276,2280,2284,2288, - 2292,2300,2304,2308,2312,2318,2322,2328,2332,2337,2342,2346,2351,2356, - 2360,2366,2373,2377,2383,2390,2394,2400,2407,2411,2416,2424,2427,2432, - 2441,2445,2448,2461,2464,2469,2483,2487,2491,2496,2499,2503,2508,2520, - 2524,2528,2532,2538,2542,2546,2552,2556,2560,2566,2570,2574,2578,2596, - 2602,2606,2610,2614,2617,2623,2626,2630,2634,2638,2642,2646,2653,2656, - 2660,2666,2670,2676,2680,2684,2689,2693,2697,2701,2706,2709,2712,2718, - 2722,2726,2728,2732,2736,2740,2744,2747,2751,2757,2762,2764,2768,2772, - 2777,2781,2786,2790,2794,2798,2802,2807,2811,2816,2820,2824,2828,2832, - 2835,2838,2841,2844,2850,2854,2858,2863,2867,2871,2876,2878,2881,2885, - 2888,2891,2897,2901,2905,2913,2918,2922,2935,2942 + 7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182, + 7,182,2,183,7,183,2,184,7,184,2,185,7,185,1,0,1,0,3,0,375,8,0,1,0,1,0, + 3,0,379,8,0,1,0,5,0,382,8,0,10,0,12,0,385,9,0,1,0,3,0,388,8,0,1,0,1,0, + 1,1,3,1,393,8,1,1,1,3,1,396,8,1,1,1,1,1,3,1,400,8,1,1,1,3,1,403,8,1,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, + 1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,430,8,2,1,3,1,3,1,3,1,3,3,3,436,8,3,1, + 3,1,3,1,3,1,3,1,3,3,3,443,8,3,1,3,1,3,3,3,447,8,3,1,3,1,3,3,3,451,8,3, + 1,3,1,3,3,3,455,8,3,1,4,3,4,458,8,4,1,4,1,4,3,4,462,8,4,1,4,1,4,3,4,466, + 8,4,1,4,1,4,3,4,470,8,4,1,4,5,4,473,8,4,10,4,12,4,476,9,4,1,4,3,4,479, + 8,4,3,4,481,8,4,1,4,1,4,1,5,1,5,1,5,3,5,488,8,5,1,5,1,5,3,5,492,8,5,1, + 5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,501,8,5,1,5,1,5,1,5,3,5,506,8,5,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,3,6,516,8,6,1,6,1,6,3,6,520,8,6,1,6,1,6,3,6,524, + 8,6,1,6,5,6,527,8,6,10,6,12,6,530,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7, + 1,7,1,7,3,7,542,8,7,1,7,1,7,3,7,546,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,554, + 8,7,1,7,1,7,3,7,558,8,7,1,7,1,7,3,7,562,8,7,1,7,1,7,3,7,566,8,7,1,8,1, + 8,1,8,1,8,1,8,1,8,3,8,574,8,8,1,8,1,8,3,8,578,8,8,1,8,1,8,3,8,582,8,8, + 1,8,1,8,3,8,586,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,3,10,601,8,10,1,10,1,10,1,10,3,10,606,8,10,1,10,1,10,1,10,1, + 10,3,10,612,8,10,1,10,1,10,3,10,616,8,10,1,10,3,10,619,8,10,1,10,3,10, + 622,8,10,1,10,1,10,1,11,1,11,3,11,628,8,11,1,11,1,11,3,11,632,8,11,1, + 11,5,11,635,8,11,10,11,12,11,638,9,11,3,11,640,8,11,1,11,1,11,1,11,3, + 11,645,8,11,1,12,1,12,3,12,649,8,12,1,12,1,12,3,12,653,8,12,1,12,5,12, + 656,8,12,10,12,12,12,659,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14, + 1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,676,8,15,1,16,1,16,1,16,1,16, + 1,16,1,16,1,17,1,17,1,17,1,17,3,17,688,8,17,1,17,1,17,3,17,692,8,17,1, + 17,1,17,1,17,1,17,1,17,3,17,699,8,17,1,18,1,18,1,18,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,719,8, + 19,1,19,1,19,3,19,723,8,19,1,19,3,19,726,8,19,1,19,3,19,729,8,19,1,19, + 3,19,732,8,19,1,19,3,19,735,8,19,1,19,1,19,3,19,739,8,19,1,19,5,19,742, + 8,19,10,19,12,19,745,9,19,1,19,3,19,748,8,19,1,19,1,19,1,19,1,19,1,19, + 1,19,1,20,1,20,3,20,758,8,20,1,20,1,20,3,20,762,8,20,1,20,5,20,765,8, + 20,10,20,12,20,768,9,20,1,21,1,21,3,21,772,8,21,1,21,1,21,1,21,3,21,777, + 8,21,1,21,1,21,1,22,1,22,3,22,783,8,22,1,22,1,22,3,22,787,8,22,1,22,1, + 22,3,22,791,8,22,1,22,5,22,794,8,22,10,22,12,22,797,9,22,1,22,1,22,1, + 22,1,22,3,22,803,8,22,1,22,1,22,3,22,807,8,22,1,22,1,22,3,22,811,8,22, + 1,22,3,22,814,8,22,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,3,24,831,8,24,1,24,1,24,3,24,835,8,24,1,24,1, + 24,3,24,839,8,24,1,24,1,24,3,24,843,8,24,1,24,1,24,3,24,847,8,24,1,24, + 3,24,850,8,24,1,24,3,24,853,8,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,861, + 8,24,1,24,1,24,1,24,3,24,866,8,24,1,24,1,24,3,24,870,8,24,1,24,1,24,3, + 24,874,8,24,1,24,1,24,3,24,878,8,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25, + 3,25,887,8,25,1,25,1,25,3,25,891,8,25,1,25,1,25,1,25,3,25,896,8,25,1, + 25,1,25,3,25,900,8,25,1,25,1,25,3,25,904,8,25,1,25,1,25,3,25,908,8,25, + 1,25,1,25,3,25,912,8,25,3,25,914,8,25,1,25,1,25,3,25,918,8,25,1,25,1, + 25,3,25,922,8,25,3,25,924,8,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,932, + 8,25,1,25,1,25,1,25,3,25,937,8,25,1,25,1,25,3,25,941,8,25,1,25,1,25,3, + 25,945,8,25,1,25,1,25,3,25,949,8,25,1,26,1,26,1,26,3,26,954,8,26,1,26, + 1,26,1,26,1,26,3,26,960,8,26,1,26,1,26,3,26,964,8,26,1,26,1,26,1,26,1, + 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,977,8,26,1,26,1,26,3,26,981, + 8,26,1,26,3,26,984,8,26,1,26,3,26,987,8,26,1,26,3,26,990,8,26,1,27,1, + 27,3,27,994,8,27,1,28,1,28,3,28,998,8,28,1,28,3,28,1001,8,28,1,28,3,28, + 1004,8,28,1,28,1,28,3,28,1008,8,28,1,28,1,28,3,28,1012,8,28,1,28,1,28, + 1,29,1,29,3,29,1018,8,29,1,29,1,29,3,29,1022,8,29,1,29,1,29,3,29,1026, + 8,29,1,29,1,29,3,29,1030,8,29,1,29,1,29,1,30,1,30,3,30,1036,8,30,1,30, + 1,30,3,30,1040,8,30,1,30,1,30,3,30,1044,8,30,1,30,1,30,3,30,1048,8,30, + 1,30,1,30,1,31,1,31,3,31,1054,8,31,1,31,1,31,3,31,1058,8,31,1,31,5,31, + 1061,8,31,10,31,12,31,1064,9,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1081,8,33,1,33,1,33,1,33,5, + 33,1086,8,33,10,33,12,33,1089,9,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34, + 1,34,1,34,1,34,3,34,1101,8,34,1,35,1,35,1,35,1,35,1,35,3,35,1108,8,35, + 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 3,37,1124,8,37,1,37,1,37,3,37,1128,8,37,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,3,38,1137,8,38,1,38,1,38,1,39,1,39,1,39,1,39,3,39,1145,8,39,1,39, + 3,39,1148,8,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1158,8,40, + 1,40,3,40,1161,8,40,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1169,8,41,1,41, + 3,41,1172,8,41,1,42,1,42,1,42,1,42,3,42,1178,8,42,1,42,3,42,1181,8,42, + 1,42,1,42,1,43,1,43,3,43,1187,8,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45, + 1,45,1,45,1,45,1,45,1,45,1,45,3,45,1202,8,45,1,45,1,45,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1220,8,47, + 1,48,1,48,1,48,1,48,1,48,3,48,1227,8,48,1,48,1,48,1,48,1,48,1,48,3,48, + 1234,8,48,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,3,50,1245,8,50, + 1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52, + 1,52,1,52,1,53,1,53,1,53,1,53,1,53,3,53,1268,8,53,1,53,1,53,1,54,1,54, + 1,54,1,54,1,54,3,54,1277,8,54,1,54,1,54,1,55,1,55,3,55,1283,8,55,1,55, + 1,55,3,55,1287,8,55,1,55,5,55,1290,8,55,10,55,12,55,1293,9,55,1,56,1, + 56,1,56,1,56,1,57,1,57,3,57,1301,8,57,1,57,1,57,3,57,1305,8,57,1,57,5, + 57,1308,8,57,10,57,12,57,1311,9,57,1,58,1,58,1,58,3,58,1316,8,58,1,58, + 1,58,1,58,1,58,3,58,1322,8,58,1,59,1,59,1,59,1,59,3,59,1328,8,59,1,59, + 1,59,3,59,1332,8,59,1,59,1,59,3,59,1336,8,59,1,59,1,59,1,60,1,60,3,60, + 1342,8,60,1,60,1,60,3,60,1346,8,60,1,60,1,60,3,60,1350,8,60,1,60,1,60, + 1,61,1,61,3,61,1356,8,61,1,61,1,61,3,61,1360,8,61,1,61,1,61,3,61,1364, + 8,61,1,61,1,61,1,62,1,62,3,62,1370,8,62,1,62,1,62,3,62,1374,8,62,1,62, + 1,62,3,62,1378,8,62,1,62,1,62,3,62,1382,8,62,1,62,1,62,3,62,1386,8,62, + 1,62,1,62,1,63,1,63,3,63,1392,8,63,1,63,1,63,3,63,1396,8,63,1,63,1,63, + 3,63,1400,8,63,1,63,1,63,3,63,1404,8,63,1,63,1,63,3,63,1408,8,63,1,63, + 1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,1418,8,64,1,64,1,64,5,64,1422, + 8,64,10,64,12,64,1425,9,64,1,65,1,65,5,65,1429,8,65,10,65,12,65,1432, + 9,65,1,66,1,66,3,66,1436,8,66,1,66,1,66,1,67,1,67,3,67,1442,8,67,1,68, + 1,68,1,68,3,68,1447,8,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,70,1,70,1,70,1,70,3,70,1464,8,70,1,71,1,71,1,71,1,71,3,71, + 1470,8,71,1,72,1,72,1,72,1,72,3,72,1476,8,72,1,72,1,72,3,72,1480,8,72, + 1,73,1,73,3,73,1484,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,1493, + 8,73,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,77,1,77,3,77, + 1507,8,77,1,77,5,77,1510,8,77,10,77,12,77,1513,9,77,1,77,1,77,3,77,1517, + 8,77,4,77,1519,8,77,11,77,12,77,1520,1,77,1,77,1,77,3,77,1526,8,77,1, + 78,1,78,1,78,1,78,3,78,1532,8,78,1,78,1,78,1,78,3,78,1537,8,78,1,78,3, + 78,1540,8,78,1,79,1,79,3,79,1544,8,79,1,80,1,80,3,80,1548,8,80,5,80,1550, + 8,80,10,80,12,80,1553,9,80,1,80,1,80,1,80,3,80,1558,8,80,5,80,1560,8, + 80,10,80,12,80,1563,9,80,1,80,1,80,3,80,1567,8,80,1,80,5,80,1570,8,80, + 10,80,12,80,1573,9,80,1,80,3,80,1576,8,80,1,80,3,80,1579,8,80,3,80,1581, + 8,80,1,81,1,81,3,81,1585,8,81,4,81,1587,8,81,11,81,12,81,1588,1,81,1, + 81,1,82,1,82,3,82,1595,8,82,5,82,1597,8,82,10,82,12,82,1600,9,82,1,82, + 1,82,3,82,1604,8,82,5,82,1606,8,82,10,82,12,82,1609,9,82,1,82,1,82,1, + 83,1,83,1,83,1,83,3,83,1617,8,83,1,84,1,84,1,84,1,84,3,84,1623,8,84,1, + 85,1,85,1,85,1,85,1,85,1,85,3,85,1631,8,85,1,85,1,85,3,85,1635,8,85,1, + 85,1,85,3,85,1639,8,85,1,85,1,85,3,85,1643,8,85,1,85,1,85,1,85,1,85,1, + 85,3,85,1650,8,85,1,85,1,85,3,85,1654,8,85,1,85,1,85,3,85,1658,8,85,1, + 85,1,85,3,85,1662,8,85,1,85,3,85,1665,8,85,1,85,3,85,1668,8,85,1,86,1, + 86,1,86,1,86,1,86,3,86,1675,8,86,1,86,1,86,1,87,1,87,3,87,1681,8,87,1, + 87,1,87,3,87,1685,8,87,1,87,5,87,1688,8,87,10,87,12,87,1691,9,87,1,88, + 1,88,1,88,1,88,3,88,1697,8,88,1,88,3,88,1700,8,88,1,88,3,88,1703,8,88, + 1,88,1,88,1,88,3,88,1708,8,88,1,89,1,89,3,89,1712,8,89,1,89,1,89,3,89, + 1716,8,89,1,89,1,89,1,89,3,89,1721,8,89,1,89,1,89,3,89,1725,8,89,1,90, + 1,90,1,90,1,90,1,91,1,91,1,91,3,91,1734,8,91,1,91,1,91,3,91,1738,8,91, + 1,91,1,91,1,91,3,91,1743,8,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91, + 1,91,1,91,4,91,1755,8,91,11,91,12,91,1756,5,91,1759,8,91,10,91,12,91, + 1762,9,91,1,92,1,92,3,92,1766,8,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93, + 1,93,3,93,1776,8,93,1,93,1,93,1,94,1,94,3,94,1782,8,94,1,94,1,94,1,94, + 5,94,1787,8,94,10,94,12,94,1790,9,94,1,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,95,1,95,1,95,3,95,1802,8,95,1,96,1,96,3,96,1806,8,96,1,96,1,96,3, + 96,1810,8,96,1,96,1,96,3,96,1814,8,96,1,96,5,96,1817,8,96,10,96,12,96, + 1820,9,96,1,96,1,96,3,96,1824,8,96,1,96,1,96,3,96,1828,8,96,1,96,1,96, + 3,96,1832,8,96,1,96,1,96,3,96,1836,8,96,1,97,1,97,3,97,1840,8,97,1,97, + 1,97,3,97,1844,8,97,1,97,1,97,1,98,1,98,3,98,1850,8,98,1,98,1,98,3,98, + 1854,8,98,1,98,1,98,3,98,1858,8,98,1,98,1,98,3,98,1862,8,98,1,98,5,98, + 1865,8,98,10,98,12,98,1868,9,98,1,99,1,99,1,99,3,99,1873,8,99,1,99,3, + 99,1876,8,99,1,100,1,100,1,100,1,101,3,101,1882,8,101,1,101,3,101,1885, + 8,101,1,101,1,101,1,101,1,101,3,101,1891,8,101,1,101,1,101,3,101,1895, + 8,101,1,101,1,101,3,101,1899,8,101,1,102,1,102,3,102,1903,8,102,1,102, + 1,102,3,102,1907,8,102,1,102,5,102,1910,8,102,10,102,12,102,1913,9,102, + 1,102,1,102,3,102,1917,8,102,1,102,1,102,3,102,1921,8,102,1,102,5,102, + 1924,8,102,10,102,12,102,1927,9,102,3,102,1929,8,102,1,103,1,103,1,103, + 1,103,1,103,1,103,1,103,3,103,1938,8,103,1,104,1,104,1,104,1,104,1,104, + 1,104,1,104,3,104,1947,8,104,1,104,5,104,1950,8,104,10,104,12,104,1953, + 9,104,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,3,107, + 1965,8,107,1,107,3,107,1968,8,107,1,108,1,108,1,108,1,108,1,109,1,109, + 3,109,1976,8,109,1,109,1,109,3,109,1980,8,109,1,109,5,109,1983,8,109, + 10,109,12,109,1986,9,109,1,110,1,110,3,110,1990,8,110,1,110,1,110,3,110, + 1994,8,110,1,110,1,110,1,110,3,110,1999,8,110,1,111,1,111,1,112,1,112, + 3,112,2005,8,112,1,112,5,112,2008,8,112,10,112,12,112,2011,9,112,1,112, + 1,112,1,112,1,112,3,112,2017,8,112,1,113,1,113,3,113,2021,8,113,1,113, + 1,113,3,113,2025,8,113,3,113,2027,8,113,1,113,1,113,3,113,2031,8,113, + 3,113,2033,8,113,1,113,1,113,3,113,2037,8,113,3,113,2039,8,113,1,113, + 1,113,1,114,1,114,3,114,2045,8,114,1,114,1,114,1,115,1,115,3,115,2051, + 8,115,1,115,1,115,3,115,2055,8,115,1,115,3,115,2058,8,115,1,115,3,115, + 2061,8,115,1,115,1,115,1,115,1,115,3,115,2067,8,115,1,115,3,115,2070, + 8,115,1,115,3,115,2073,8,115,1,115,1,115,3,115,2077,8,115,1,115,1,115, + 1,115,1,115,3,115,2083,8,115,1,115,3,115,2086,8,115,1,115,3,115,2089, + 8,115,1,115,1,115,3,115,2093,8,115,1,116,1,116,3,116,2097,8,116,1,116, + 1,116,3,116,2101,8,116,3,116,2103,8,116,1,116,1,116,3,116,2107,8,116, + 3,116,2109,8,116,1,116,1,116,3,116,2113,8,116,3,116,2115,8,116,1,116, + 1,116,3,116,2119,8,116,3,116,2121,8,116,1,116,1,116,1,117,1,117,3,117, + 2127,8,117,1,117,1,117,3,117,2131,8,117,1,117,1,117,3,117,2135,8,117, + 1,117,1,117,3,117,2139,8,117,1,117,1,117,3,117,2143,8,117,1,117,1,117, + 3,117,2147,8,117,1,117,1,117,3,117,2151,8,117,1,117,1,117,3,117,2155, + 8,117,5,117,2157,8,117,10,117,12,117,2160,9,117,3,117,2162,8,117,1,117, + 1,117,1,118,1,118,3,118,2168,8,118,1,118,1,118,3,118,2172,8,118,1,118, + 1,118,3,118,2176,8,118,1,118,3,118,2179,8,118,1,118,5,118,2182,8,118, + 10,118,12,118,2185,9,118,1,119,1,119,3,119,2189,8,119,1,119,1,119,3,119, + 2193,8,119,1,119,1,119,3,119,2197,8,119,1,119,3,119,2200,8,119,1,119, + 3,119,2203,8,119,1,119,5,119,2206,8,119,10,119,12,119,2209,9,119,1,120, + 1,120,3,120,2213,8,120,1,120,3,120,2216,8,120,1,120,3,120,2219,8,120, + 1,120,3,120,2222,8,120,1,120,3,120,2225,8,120,1,120,3,120,2228,8,120, + 1,121,1,121,3,121,2232,8,121,1,121,1,121,3,121,2236,8,121,1,121,1,121, + 3,121,2240,8,121,1,121,1,121,3,121,2244,8,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,1,121,3,121,2254,8,121,1,122,3,122,2257,8,122,1,122, + 3,122,2260,8,122,1,122,1,122,3,122,2264,8,122,1,122,3,122,2267,8,122, + 1,122,3,122,2270,8,122,1,123,1,123,3,123,2274,8,123,1,123,1,123,3,123, + 2278,8,123,1,123,1,123,3,123,2282,8,123,1,123,1,123,3,123,2286,8,123, + 1,123,1,123,3,123,2290,8,123,1,123,1,123,3,123,2294,8,123,3,123,2296, + 8,123,1,123,3,123,2299,8,123,1,123,1,123,3,123,2303,8,123,1,123,1,123, + 3,123,2307,8,123,1,123,1,123,3,123,2311,8,123,1,123,1,123,3,123,2315, + 8,123,3,123,2317,8,123,1,123,1,123,1,124,1,124,3,124,2323,8,124,1,124, + 3,124,2326,8,124,1,124,3,124,2329,8,124,1,124,1,124,1,125,1,125,1,126, + 1,126,1,127,1,127,1,127,3,127,2340,8,127,1,128,1,128,1,129,1,129,1,130, + 1,130,1,130,1,130,1,130,5,130,2351,8,130,10,130,12,130,2354,9,130,1,131, + 1,131,1,131,1,131,1,131,5,131,2361,8,131,10,131,12,131,2364,9,131,1,132, + 1,132,1,132,1,132,1,132,5,132,2371,8,132,10,132,12,132,2374,9,132,1,133, + 1,133,3,133,2378,8,133,5,133,2380,8,133,10,133,12,133,2383,9,133,1,133, + 1,133,1,134,1,134,3,134,2389,8,134,1,134,1,134,3,134,2393,8,134,1,134, + 1,134,3,134,2397,8,134,1,134,1,134,3,134,2401,8,134,1,134,1,134,3,134, + 2405,8,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,2413,8,134,1,134, + 1,134,3,134,2417,8,134,1,134,1,134,3,134,2421,8,134,1,134,1,134,3,134, + 2425,8,134,1,134,1,134,4,134,2429,8,134,11,134,12,134,2430,1,134,1,134, + 3,134,2435,8,134,1,135,1,135,1,136,1,136,3,136,2441,8,136,1,136,1,136, + 3,136,2445,8,136,1,136,5,136,2448,8,136,10,136,12,136,2451,9,136,1,137, + 1,137,3,137,2455,8,137,1,137,1,137,3,137,2459,8,137,1,137,5,137,2462, + 8,137,10,137,12,137,2465,9,137,1,138,1,138,3,138,2469,8,138,1,138,1,138, + 3,138,2473,8,138,1,138,1,138,5,138,2477,8,138,10,138,12,138,2480,9,138, + 1,139,1,139,1,140,1,140,3,140,2486,8,140,1,140,1,140,3,140,2490,8,140, + 1,140,1,140,5,140,2494,8,140,10,140,12,140,2497,9,140,1,141,1,141,1,142, + 1,142,3,142,2503,8,142,1,142,1,142,3,142,2507,8,142,1,142,1,142,5,142, + 2511,8,142,10,142,12,142,2514,9,142,1,143,1,143,1,144,1,144,3,144,2520, + 8,144,1,144,1,144,3,144,2524,8,144,1,144,5,144,2527,8,144,10,144,12,144, + 2530,9,144,1,145,1,145,1,145,4,145,2535,8,145,11,145,12,145,2536,1,145, + 3,145,2540,8,145,1,146,1,146,1,146,3,146,2545,8,146,1,146,1,146,1,146, + 1,146,1,146,1,146,1,146,3,146,2554,8,146,1,146,1,146,3,146,2558,8,146, + 1,146,3,146,2561,8,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147, + 1,147,1,147,1,147,3,147,2574,8,147,1,147,3,147,2577,8,147,1,147,1,147, + 1,148,3,148,2582,8,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149, + 1,149,1,149,1,149,1,149,3,149,2596,8,149,1,150,1,150,3,150,2600,8,150, + 5,150,2602,8,150,10,150,12,150,2605,9,150,1,150,1,150,3,150,2609,8,150, + 1,150,3,150,2612,8,150,1,151,1,151,3,151,2616,8,151,1,151,5,151,2619, + 8,151,10,151,12,151,2622,9,151,1,152,1,152,1,152,1,152,1,152,1,152,1, + 152,1,152,1,152,3,152,2633,8,152,1,153,1,153,3,153,2637,8,153,1,153,1, + 153,3,153,2641,8,153,1,153,1,153,3,153,2645,8,153,1,153,1,153,1,153,1, + 153,3,153,2651,8,153,1,153,1,153,3,153,2655,8,153,1,153,1,153,3,153,2659, + 8,153,1,153,1,153,1,153,1,153,3,153,2665,8,153,1,153,1,153,3,153,2669, + 8,153,1,153,1,153,3,153,2673,8,153,1,153,1,153,1,153,1,153,3,153,2679, + 8,153,1,153,1,153,3,153,2683,8,153,1,153,1,153,3,153,2687,8,153,1,153, + 1,153,3,153,2691,8,153,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, + 1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2709,8,156,1,157, + 1,157,1,158,1,158,3,158,2715,8,158,1,158,1,158,3,158,2719,8,158,1,158, + 1,158,3,158,2723,8,158,5,158,2725,8,158,10,158,12,158,2728,9,158,3,158, + 2730,8,158,1,158,1,158,1,159,1,159,3,159,2736,8,159,1,159,3,159,2739, + 8,159,1,160,1,160,3,160,2743,8,160,1,160,1,160,3,160,2747,8,160,1,160, + 1,160,3,160,2751,8,160,1,160,1,160,3,160,2755,8,160,5,160,2757,8,160, + 10,160,12,160,2760,9,160,1,160,1,160,1,161,1,161,3,161,2766,8,161,1,161, + 3,161,2769,8,161,1,161,1,161,3,161,2773,8,161,1,161,1,161,1,162,1,162, + 3,162,2779,8,162,1,162,1,162,3,162,2783,8,162,1,162,1,162,1,163,1,163, + 3,163,2789,8,163,1,163,1,163,3,163,2793,8,163,1,163,1,163,3,163,2797, + 8,163,1,163,1,163,1,163,3,163,2802,8,163,1,163,1,163,3,163,2806,8,163, + 1,163,1,163,3,163,2810,8,163,1,163,1,163,3,163,2814,8,163,1,163,1,163, + 1,163,3,163,2819,8,163,1,163,3,163,2822,8,163,1,163,3,163,2825,8,163, + 1,163,1,163,1,163,1,163,3,163,2831,8,163,1,163,1,163,3,163,2835,8,163, + 1,163,1,163,3,163,2839,8,163,3,163,2841,8,163,1,163,1,163,3,163,2845, + 8,163,1,163,1,163,3,163,2849,8,163,1,163,1,163,3,163,2853,8,163,5,163, + 2855,8,163,10,163,12,163,2858,9,163,3,163,2860,8,163,1,163,1,163,3,163, + 2864,8,163,1,164,1,164,1,165,1,165,3,165,2870,8,165,1,165,1,165,1,165, + 3,165,2875,8,165,3,165,2877,8,165,1,165,1,165,3,165,2881,8,165,1,166, + 1,166,3,166,2885,8,166,1,166,1,166,1,166,3,166,2890,8,166,1,166,1,166, + 3,166,2894,8,166,1,167,1,167,1,167,3,167,2899,8,167,1,167,1,167,3,167, + 2903,8,167,1,167,1,167,3,167,2907,8,167,1,167,1,167,3,167,2911,8,167, + 5,167,2913,8,167,10,167,12,167,2916,9,167,1,167,1,167,3,167,2920,8,167, + 1,168,1,168,3,168,2924,8,168,1,168,4,168,2927,8,168,11,168,12,168,2928, + 1,169,1,169,3,169,2933,8,169,1,169,1,169,3,169,2937,8,169,1,169,1,169, + 3,169,2941,8,169,1,169,1,169,3,169,2945,8,169,1,169,3,169,2948,8,169, + 1,169,3,169,2951,8,169,1,169,3,169,2954,8,169,1,169,3,169,2957,8,169, + 1,169,1,169,1,170,1,170,3,170,2963,8,170,1,170,1,170,3,170,2967,8,170, + 1,171,1,171,3,171,2971,8,171,1,171,4,171,2974,8,171,11,171,12,171,2975, + 1,171,1,171,3,171,2980,8,171,1,171,1,171,3,171,2984,8,171,1,171,4,171, + 2987,8,171,11,171,12,171,2988,3,171,2991,8,171,1,171,3,171,2994,8,171, + 1,171,1,171,3,171,2998,8,171,1,171,3,171,3001,8,171,1,171,3,171,3004, + 8,171,1,171,1,171,1,172,1,172,3,172,3010,8,172,1,172,1,172,3,172,3014, + 8,172,1,172,1,172,3,172,3018,8,172,1,172,1,172,1,173,1,173,1,174,1,174, + 3,174,3026,8,174,1,175,1,175,1,175,3,175,3031,8,175,1,176,1,176,3,176, + 3035,8,176,1,176,1,176,1,177,1,177,1,178,1,178,1,179,1,179,1,180,1,180, + 1,180,3,180,3048,8,180,1,181,1,181,1,181,1,181,1,181,3,181,3055,8,181, + 1,182,1,182,1,183,1,183,1,184,1,184,1,185,1,185,1,185,0,2,128,182,186, + 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48, + 50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94, + 96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130, + 132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166, + 168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202, + 204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238, + 240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274, + 276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310, + 312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346, + 348,350,352,354,356,358,360,362,364,366,368,370,0,14,4,0,91,91,107,107, + 133,133,139,139,2,0,52,53,74,75,2,0,6,6,12,16,1,0,18,19,2,0,20,20,169, + 169,2,0,21,22,164,164,1,0,167,168,2,0,86,86,144,144,2,0,67,67,82,82,1, + 0,180,181,32,0,47,47,49,49,51,51,54,57,60,60,62,63,65,67,69,70,73,73, + 76,76,78,78,83,85,87,88,91,91,95,95,97,97,99,99,101,101,103,106,108,111, + 113,114,126,131,133,134,136,136,138,138,141,141,143,143,145,145,148,150, + 154,154,158,163,165,165,2,0,13,13,26,29,2,0,15,15,30,33,2,0,34,44,169, + 169,3475,0,372,1,0,0,0,2,392,1,0,0,0,4,429,1,0,0,0,6,431,1,0,0,0,8,457, + 1,0,0,0,10,505,1,0,0,0,12,507,1,0,0,0,14,537,1,0,0,0,16,567,1,0,0,0,18, + 587,1,0,0,0,20,593,1,0,0,0,22,644,1,0,0,0,24,646,1,0,0,0,26,660,1,0,0, + 0,28,664,1,0,0,0,30,668,1,0,0,0,32,677,1,0,0,0,34,698,1,0,0,0,36,700, + 1,0,0,0,38,712,1,0,0,0,40,755,1,0,0,0,42,769,1,0,0,0,44,813,1,0,0,0,46, + 815,1,0,0,0,48,821,1,0,0,0,50,879,1,0,0,0,52,950,1,0,0,0,54,993,1,0,0, + 0,56,995,1,0,0,0,58,1015,1,0,0,0,60,1033,1,0,0,0,62,1051,1,0,0,0,64,1065, + 1,0,0,0,66,1073,1,0,0,0,68,1090,1,0,0,0,70,1107,1,0,0,0,72,1109,1,0,0, + 0,74,1116,1,0,0,0,76,1129,1,0,0,0,78,1140,1,0,0,0,80,1160,1,0,0,0,82, + 1171,1,0,0,0,84,1173,1,0,0,0,86,1186,1,0,0,0,88,1190,1,0,0,0,90,1194, + 1,0,0,0,92,1205,1,0,0,0,94,1219,1,0,0,0,96,1221,1,0,0,0,98,1235,1,0,0, + 0,100,1239,1,0,0,0,102,1248,1,0,0,0,104,1254,1,0,0,0,106,1262,1,0,0,0, + 108,1271,1,0,0,0,110,1280,1,0,0,0,112,1294,1,0,0,0,114,1298,1,0,0,0,116, + 1312,1,0,0,0,118,1323,1,0,0,0,120,1339,1,0,0,0,122,1353,1,0,0,0,124,1367, + 1,0,0,0,126,1389,1,0,0,0,128,1417,1,0,0,0,130,1426,1,0,0,0,132,1433,1, + 0,0,0,134,1441,1,0,0,0,136,1443,1,0,0,0,138,1448,1,0,0,0,140,1463,1,0, + 0,0,142,1469,1,0,0,0,144,1471,1,0,0,0,146,1483,1,0,0,0,148,1494,1,0,0, + 0,150,1498,1,0,0,0,152,1502,1,0,0,0,154,1525,1,0,0,0,156,1539,1,0,0,0, + 158,1543,1,0,0,0,160,1580,1,0,0,0,162,1586,1,0,0,0,164,1598,1,0,0,0,166, + 1616,1,0,0,0,168,1622,1,0,0,0,170,1624,1,0,0,0,172,1674,1,0,0,0,174,1678, + 1,0,0,0,176,1692,1,0,0,0,178,1711,1,0,0,0,180,1726,1,0,0,0,182,1742,1, + 0,0,0,184,1763,1,0,0,0,186,1773,1,0,0,0,188,1779,1,0,0,0,190,1801,1,0, + 0,0,192,1835,1,0,0,0,194,1837,1,0,0,0,196,1849,1,0,0,0,198,1869,1,0,0, + 0,200,1877,1,0,0,0,202,1884,1,0,0,0,204,1928,1,0,0,0,206,1937,1,0,0,0, + 208,1939,1,0,0,0,210,1954,1,0,0,0,212,1958,1,0,0,0,214,1962,1,0,0,0,216, + 1969,1,0,0,0,218,1973,1,0,0,0,220,1998,1,0,0,0,222,2000,1,0,0,0,224,2016, + 1,0,0,0,226,2018,1,0,0,0,228,2042,1,0,0,0,230,2092,1,0,0,0,232,2094,1, + 0,0,0,234,2124,1,0,0,0,236,2165,1,0,0,0,238,2186,1,0,0,0,240,2210,1,0, + 0,0,242,2253,1,0,0,0,244,2269,1,0,0,0,246,2271,1,0,0,0,248,2320,1,0,0, + 0,250,2332,1,0,0,0,252,2334,1,0,0,0,254,2336,1,0,0,0,256,2341,1,0,0,0, + 258,2343,1,0,0,0,260,2345,1,0,0,0,262,2355,1,0,0,0,264,2365,1,0,0,0,266, + 2381,1,0,0,0,268,2434,1,0,0,0,270,2436,1,0,0,0,272,2438,1,0,0,0,274,2452, + 1,0,0,0,276,2466,1,0,0,0,278,2481,1,0,0,0,280,2483,1,0,0,0,282,2498,1, + 0,0,0,284,2500,1,0,0,0,286,2515,1,0,0,0,288,2517,1,0,0,0,290,2531,1,0, + 0,0,292,2560,1,0,0,0,294,2573,1,0,0,0,296,2581,1,0,0,0,298,2595,1,0,0, + 0,300,2603,1,0,0,0,302,2613,1,0,0,0,304,2632,1,0,0,0,306,2690,1,0,0,0, + 308,2692,1,0,0,0,310,2696,1,0,0,0,312,2708,1,0,0,0,314,2710,1,0,0,0,316, + 2712,1,0,0,0,318,2733,1,0,0,0,320,2740,1,0,0,0,322,2765,1,0,0,0,324,2776, + 1,0,0,0,326,2863,1,0,0,0,328,2865,1,0,0,0,330,2880,1,0,0,0,332,2882,1, + 0,0,0,334,2919,1,0,0,0,336,2921,1,0,0,0,338,2930,1,0,0,0,340,2960,1,0, + 0,0,342,2990,1,0,0,0,344,3007,1,0,0,0,346,3021,1,0,0,0,348,3025,1,0,0, + 0,350,3027,1,0,0,0,352,3032,1,0,0,0,354,3038,1,0,0,0,356,3040,1,0,0,0, + 358,3042,1,0,0,0,360,3044,1,0,0,0,362,3054,1,0,0,0,364,3056,1,0,0,0,366, + 3058,1,0,0,0,368,3060,1,0,0,0,370,3062,1,0,0,0,372,383,3,2,1,0,373,375, + 5,186,0,0,374,373,1,0,0,0,374,375,1,0,0,0,375,376,1,0,0,0,376,378,5,1, + 0,0,377,379,5,186,0,0,378,377,1,0,0,0,378,379,1,0,0,0,379,380,1,0,0,0, + 380,382,3,2,1,0,381,374,1,0,0,0,382,385,1,0,0,0,383,381,1,0,0,0,383,384, + 1,0,0,0,384,387,1,0,0,0,385,383,1,0,0,0,386,388,5,186,0,0,387,386,1,0, + 0,0,387,388,1,0,0,0,388,389,1,0,0,0,389,390,5,0,0,1,390,1,1,0,0,0,391, + 393,3,134,67,0,392,391,1,0,0,0,392,393,1,0,0,0,393,395,1,0,0,0,394,396, + 5,186,0,0,395,394,1,0,0,0,395,396,1,0,0,0,396,397,1,0,0,0,397,402,3,4, + 2,0,398,400,5,186,0,0,399,398,1,0,0,0,399,400,1,0,0,0,400,401,1,0,0,0, + 401,403,5,1,0,0,402,399,1,0,0,0,402,403,1,0,0,0,403,3,1,0,0,0,404,430, + 3,152,76,0,405,430,3,74,37,0,406,430,3,76,38,0,407,430,3,48,24,0,408, + 430,3,50,25,0,409,430,3,52,26,0,410,430,3,66,33,0,411,430,3,68,34,0,412, + 430,3,90,45,0,413,430,3,92,46,0,414,430,3,6,3,0,415,430,3,12,6,0,416, + 430,3,14,7,0,417,430,3,34,17,0,418,430,3,38,19,0,419,430,3,36,18,0,420, + 430,3,140,70,0,421,430,3,142,71,0,422,430,3,16,8,0,423,430,3,18,9,0,424, + 430,3,20,10,0,425,430,3,26,13,0,426,430,3,28,14,0,427,430,3,30,15,0,428, + 430,3,32,16,0,429,404,1,0,0,0,429,405,1,0,0,0,429,406,1,0,0,0,429,407, + 1,0,0,0,429,408,1,0,0,0,429,409,1,0,0,0,429,410,1,0,0,0,429,411,1,0,0, + 0,429,412,1,0,0,0,429,413,1,0,0,0,429,414,1,0,0,0,429,415,1,0,0,0,429, + 416,1,0,0,0,429,417,1,0,0,0,429,418,1,0,0,0,429,419,1,0,0,0,429,420,1, + 0,0,0,429,421,1,0,0,0,429,422,1,0,0,0,429,423,1,0,0,0,429,424,1,0,0,0, + 429,425,1,0,0,0,429,426,1,0,0,0,429,427,1,0,0,0,429,428,1,0,0,0,430,5, + 1,0,0,0,431,432,5,66,0,0,432,433,5,186,0,0,433,435,3,360,180,0,434,436, + 3,8,4,0,435,434,1,0,0,0,435,436,1,0,0,0,436,437,1,0,0,0,437,438,5,186, + 0,0,438,439,5,87,0,0,439,440,5,186,0,0,440,454,3,10,5,0,441,443,5,186, + 0,0,442,441,1,0,0,0,442,443,1,0,0,0,443,444,1,0,0,0,444,446,5,2,0,0,445, + 447,5,186,0,0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,450, + 3,24,12,0,449,451,5,186,0,0,450,449,1,0,0,0,450,451,1,0,0,0,451,452,1, + 0,0,0,452,453,5,3,0,0,453,455,1,0,0,0,454,442,1,0,0,0,454,455,1,0,0,0, + 455,7,1,0,0,0,456,458,5,186,0,0,457,456,1,0,0,0,457,458,1,0,0,0,458,459, + 1,0,0,0,459,461,5,2,0,0,460,462,5,186,0,0,461,460,1,0,0,0,461,462,1,0, + 0,0,462,480,1,0,0,0,463,474,3,360,180,0,464,466,5,186,0,0,465,464,1,0, + 0,0,465,466,1,0,0,0,466,467,1,0,0,0,467,469,5,4,0,0,468,470,5,186,0,0, + 469,468,1,0,0,0,469,470,1,0,0,0,470,471,1,0,0,0,471,473,3,360,180,0,472, + 465,1,0,0,0,473,476,1,0,0,0,474,472,1,0,0,0,474,475,1,0,0,0,475,478,1, + 0,0,0,476,474,1,0,0,0,477,479,5,186,0,0,478,477,1,0,0,0,478,479,1,0,0, + 0,479,481,1,0,0,0,480,463,1,0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482, + 483,5,3,0,0,483,9,1,0,0,0,484,506,3,44,22,0,485,487,5,2,0,0,486,488,5, + 186,0,0,487,486,1,0,0,0,487,488,1,0,0,0,488,489,1,0,0,0,489,491,3,152, + 76,0,490,492,5,186,0,0,491,490,1,0,0,0,491,492,1,0,0,0,492,493,1,0,0, + 0,493,494,5,3,0,0,494,506,1,0,0,0,495,506,3,350,175,0,496,506,3,346,173, + 0,497,498,3,346,173,0,498,500,5,5,0,0,499,501,5,186,0,0,500,499,1,0,0, + 0,500,501,1,0,0,0,501,502,1,0,0,0,502,503,3,360,180,0,503,506,1,0,0,0, + 504,506,3,326,163,0,505,484,1,0,0,0,505,485,1,0,0,0,505,495,1,0,0,0,505, + 496,1,0,0,0,505,497,1,0,0,0,505,504,1,0,0,0,506,11,1,0,0,0,507,508,5, + 66,0,0,508,509,5,186,0,0,509,510,3,360,180,0,510,511,5,186,0,0,511,512, + 5,87,0,0,512,513,5,186,0,0,513,515,5,2,0,0,514,516,5,186,0,0,515,514, + 1,0,0,0,515,516,1,0,0,0,516,517,1,0,0,0,517,528,5,171,0,0,518,520,5,186, + 0,0,519,518,1,0,0,0,519,520,1,0,0,0,520,521,1,0,0,0,521,523,5,4,0,0,522, + 524,5,186,0,0,523,522,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,527, + 5,171,0,0,526,519,1,0,0,0,527,530,1,0,0,0,528,526,1,0,0,0,528,529,1,0, + 0,0,529,531,1,0,0,0,530,528,1,0,0,0,531,532,5,3,0,0,532,533,5,186,0,0, + 533,534,5,56,0,0,534,535,5,186,0,0,535,536,5,61,0,0,536,13,1,0,0,0,537, + 538,5,66,0,0,538,539,5,186,0,0,539,541,5,2,0,0,540,542,5,186,0,0,541, + 540,1,0,0,0,541,542,1,0,0,0,542,543,1,0,0,0,543,545,3,152,76,0,544,546, + 5,186,0,0,545,544,1,0,0,0,545,546,1,0,0,0,546,547,1,0,0,0,547,548,5,3, + 0,0,548,549,5,186,0,0,549,550,5,141,0,0,550,551,5,186,0,0,551,565,5,171, + 0,0,552,554,5,186,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0, + 555,557,5,2,0,0,556,558,5,186,0,0,557,556,1,0,0,0,557,558,1,0,0,0,558, + 559,1,0,0,0,559,561,3,24,12,0,560,562,5,186,0,0,561,560,1,0,0,0,561,562, + 1,0,0,0,562,563,1,0,0,0,563,564,5,3,0,0,564,566,1,0,0,0,565,553,1,0,0, + 0,565,566,1,0,0,0,566,15,1,0,0,0,567,568,5,84,0,0,568,569,5,186,0,0,569, + 570,5,70,0,0,570,571,5,186,0,0,571,585,5,171,0,0,572,574,5,186,0,0,573, + 572,1,0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,577,5,2,0,0,576,578,5, + 186,0,0,577,576,1,0,0,0,577,578,1,0,0,0,578,579,1,0,0,0,579,581,3,24, + 12,0,580,582,5,186,0,0,581,580,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0, + 0,583,584,5,3,0,0,584,586,1,0,0,0,585,573,1,0,0,0,585,586,1,0,0,0,586, + 17,1,0,0,0,587,588,5,95,0,0,588,589,5,186,0,0,589,590,5,70,0,0,590,591, + 5,186,0,0,591,592,5,171,0,0,592,19,1,0,0,0,593,594,5,54,0,0,594,595,5, + 186,0,0,595,600,5,171,0,0,596,597,5,186,0,0,597,598,5,51,0,0,598,599, + 5,186,0,0,599,601,3,360,180,0,600,596,1,0,0,0,600,601,1,0,0,0,601,602, + 1,0,0,0,602,603,5,186,0,0,603,605,5,2,0,0,604,606,5,186,0,0,605,604,1, + 0,0,0,605,606,1,0,0,0,606,607,1,0,0,0,607,608,5,71,0,0,608,609,5,186, + 0,0,609,618,3,362,181,0,610,612,5,186,0,0,611,610,1,0,0,0,611,612,1,0, + 0,0,612,613,1,0,0,0,613,615,5,4,0,0,614,616,5,186,0,0,615,614,1,0,0,0, + 615,616,1,0,0,0,616,617,1,0,0,0,617,619,3,24,12,0,618,611,1,0,0,0,618, + 619,1,0,0,0,619,621,1,0,0,0,620,622,5,186,0,0,621,620,1,0,0,0,621,622, + 1,0,0,0,622,623,1,0,0,0,623,624,5,3,0,0,624,21,1,0,0,0,625,639,3,362, + 181,0,626,628,5,186,0,0,627,626,1,0,0,0,627,628,1,0,0,0,628,629,1,0,0, + 0,629,631,5,6,0,0,630,632,5,186,0,0,631,630,1,0,0,0,631,632,1,0,0,0,632, + 640,1,0,0,0,633,635,5,186,0,0,634,633,1,0,0,0,635,638,1,0,0,0,636,634, + 1,0,0,0,636,637,1,0,0,0,637,640,1,0,0,0,638,636,1,0,0,0,639,627,1,0,0, + 0,639,636,1,0,0,0,640,641,1,0,0,0,641,642,3,312,156,0,642,645,1,0,0,0, + 643,645,3,362,181,0,644,625,1,0,0,0,644,643,1,0,0,0,645,23,1,0,0,0,646, + 657,3,22,11,0,647,649,5,186,0,0,648,647,1,0,0,0,648,649,1,0,0,0,649,650, + 1,0,0,0,650,652,5,4,0,0,651,653,5,186,0,0,652,651,1,0,0,0,652,653,1,0, + 0,0,653,654,1,0,0,0,654,656,3,22,11,0,655,648,1,0,0,0,656,659,1,0,0,0, + 657,655,1,0,0,0,657,658,1,0,0,0,658,25,1,0,0,0,659,657,1,0,0,0,660,661, + 5,76,0,0,661,662,5,186,0,0,662,663,3,360,180,0,663,27,1,0,0,0,664,665, + 5,150,0,0,665,666,5,186,0,0,666,667,3,360,180,0,667,29,1,0,0,0,668,669, + 5,68,0,0,669,670,5,186,0,0,670,671,5,91,0,0,671,672,5,186,0,0,672,675, + 3,360,180,0,673,674,5,186,0,0,674,676,5,46,0,0,675,673,1,0,0,0,675,676, + 1,0,0,0,676,31,1,0,0,0,677,678,5,150,0,0,678,679,5,186,0,0,679,680,5, + 91,0,0,680,681,5,186,0,0,681,682,3,360,180,0,682,33,1,0,0,0,683,684,5, + 57,0,0,684,685,5,186,0,0,685,687,3,362,181,0,686,688,5,186,0,0,687,686, + 1,0,0,0,687,688,1,0,0,0,688,689,1,0,0,0,689,691,5,6,0,0,690,692,5,186, + 0,0,691,690,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,694,3,258,129, + 0,694,699,1,0,0,0,695,696,5,57,0,0,696,697,5,186,0,0,697,699,3,326,163, + 0,698,683,1,0,0,0,698,695,1,0,0,0,699,35,1,0,0,0,700,701,5,62,0,0,701, + 702,5,186,0,0,702,703,5,118,0,0,703,704,5,186,0,0,704,705,5,139,0,0,705, + 706,5,186,0,0,706,707,3,360,180,0,707,708,5,186,0,0,708,709,5,101,0,0, + 709,710,5,186,0,0,710,711,5,171,0,0,711,37,1,0,0,0,712,713,5,68,0,0,713, + 714,5,186,0,0,714,715,5,107,0,0,715,716,5,186,0,0,716,718,3,328,164,0, + 717,719,5,186,0,0,718,717,1,0,0,0,718,719,1,0,0,0,719,720,1,0,0,0,720, + 722,5,2,0,0,721,723,5,186,0,0,722,721,1,0,0,0,722,723,1,0,0,0,723,725, + 1,0,0,0,724,726,3,40,20,0,725,724,1,0,0,0,725,726,1,0,0,0,726,728,1,0, + 0,0,727,729,5,186,0,0,728,727,1,0,0,0,728,729,1,0,0,0,729,731,1,0,0,0, + 730,732,3,42,21,0,731,730,1,0,0,0,731,732,1,0,0,0,732,743,1,0,0,0,733, + 735,5,186,0,0,734,733,1,0,0,0,734,735,1,0,0,0,735,736,1,0,0,0,736,738, + 5,4,0,0,737,739,5,186,0,0,738,737,1,0,0,0,738,739,1,0,0,0,739,740,1,0, + 0,0,740,742,3,42,21,0,741,734,1,0,0,0,742,745,1,0,0,0,743,741,1,0,0,0, + 743,744,1,0,0,0,744,747,1,0,0,0,745,743,1,0,0,0,746,748,5,186,0,0,747, + 746,1,0,0,0,747,748,1,0,0,0,748,749,1,0,0,0,749,750,5,3,0,0,750,751,5, + 186,0,0,751,752,5,51,0,0,752,753,5,186,0,0,753,754,3,258,129,0,754,39, + 1,0,0,0,755,766,3,362,181,0,756,758,5,186,0,0,757,756,1,0,0,0,757,758, + 1,0,0,0,758,759,1,0,0,0,759,761,5,4,0,0,760,762,5,186,0,0,761,760,1,0, + 0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,765,3,362,181,0,764,757,1,0,0, + 0,765,768,1,0,0,0,766,764,1,0,0,0,766,767,1,0,0,0,767,41,1,0,0,0,768, + 766,1,0,0,0,769,771,3,362,181,0,770,772,5,186,0,0,771,770,1,0,0,0,771, + 772,1,0,0,0,772,773,1,0,0,0,773,774,5,167,0,0,774,776,5,6,0,0,775,777, + 5,186,0,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778,1,0,0,0,778,779,3,312, + 156,0,779,43,1,0,0,0,780,782,5,7,0,0,781,783,5,186,0,0,782,781,1,0,0, + 0,782,783,1,0,0,0,783,784,1,0,0,0,784,795,5,171,0,0,785,787,5,186,0,0, + 786,785,1,0,0,0,786,787,1,0,0,0,787,788,1,0,0,0,788,790,5,4,0,0,789,791, + 5,186,0,0,790,789,1,0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,794,5,171, + 0,0,793,786,1,0,0,0,794,797,1,0,0,0,795,793,1,0,0,0,795,796,1,0,0,0,796, + 798,1,0,0,0,797,795,1,0,0,0,798,814,5,8,0,0,799,814,5,171,0,0,800,802, + 5,90,0,0,801,803,5,186,0,0,802,801,1,0,0,0,802,803,1,0,0,0,803,804,1, + 0,0,0,804,806,5,2,0,0,805,807,5,186,0,0,806,805,1,0,0,0,806,807,1,0,0, + 0,807,808,1,0,0,0,808,810,5,171,0,0,809,811,5,186,0,0,810,809,1,0,0,0, + 810,811,1,0,0,0,811,812,1,0,0,0,812,814,5,3,0,0,813,780,1,0,0,0,813,799, + 1,0,0,0,813,800,1,0,0,0,814,45,1,0,0,0,815,816,5,97,0,0,816,817,5,186, + 0,0,817,818,5,115,0,0,818,819,5,186,0,0,819,820,5,82,0,0,820,47,1,0,0, + 0,821,822,5,68,0,0,822,823,5,186,0,0,823,824,5,114,0,0,824,825,5,186, + 0,0,825,826,5,139,0,0,826,830,5,186,0,0,827,828,3,46,23,0,828,829,5,186, + 0,0,829,831,1,0,0,0,830,827,1,0,0,0,830,831,1,0,0,0,831,832,1,0,0,0,832, + 860,3,360,180,0,833,835,5,186,0,0,834,833,1,0,0,0,834,835,1,0,0,0,835, + 836,1,0,0,0,836,838,5,2,0,0,837,839,5,186,0,0,838,837,1,0,0,0,838,839, + 1,0,0,0,839,840,1,0,0,0,840,842,3,114,57,0,841,843,5,186,0,0,842,841, + 1,0,0,0,842,843,1,0,0,0,843,849,1,0,0,0,844,846,5,4,0,0,845,847,5,186, + 0,0,846,845,1,0,0,0,846,847,1,0,0,0,847,848,1,0,0,0,848,850,3,118,59, + 0,849,844,1,0,0,0,849,850,1,0,0,0,850,852,1,0,0,0,851,853,5,186,0,0,852, + 851,1,0,0,0,852,853,1,0,0,0,853,854,1,0,0,0,854,855,5,3,0,0,855,861,1, + 0,0,0,856,857,5,186,0,0,857,858,5,51,0,0,858,859,5,186,0,0,859,861,3, + 152,76,0,860,834,1,0,0,0,860,856,1,0,0,0,861,877,1,0,0,0,862,863,5,186, + 0,0,863,865,5,153,0,0,864,866,5,186,0,0,865,864,1,0,0,0,865,866,1,0,0, + 0,866,867,1,0,0,0,867,869,5,2,0,0,868,870,5,186,0,0,869,868,1,0,0,0,869, + 870,1,0,0,0,870,871,1,0,0,0,871,873,3,24,12,0,872,874,5,186,0,0,873,872, + 1,0,0,0,873,874,1,0,0,0,874,875,1,0,0,0,875,876,5,3,0,0,876,878,1,0,0, + 0,877,862,1,0,0,0,877,878,1,0,0,0,878,49,1,0,0,0,879,880,5,68,0,0,880, + 881,5,186,0,0,881,882,5,128,0,0,882,883,5,186,0,0,883,886,5,139,0,0,884, + 885,5,186,0,0,885,887,5,92,0,0,886,884,1,0,0,0,886,887,1,0,0,0,887,890, + 1,0,0,0,888,889,5,186,0,0,889,891,3,46,23,0,890,888,1,0,0,0,890,891,1, + 0,0,0,891,892,1,0,0,0,892,893,5,186,0,0,893,895,3,360,180,0,894,896,5, + 186,0,0,895,894,1,0,0,0,895,896,1,0,0,0,896,897,1,0,0,0,897,899,5,2,0, + 0,898,900,5,186,0,0,899,898,1,0,0,0,899,900,1,0,0,0,900,901,1,0,0,0,901, + 903,3,62,31,0,902,904,5,186,0,0,903,902,1,0,0,0,903,904,1,0,0,0,904,931, + 1,0,0,0,905,907,5,4,0,0,906,908,5,186,0,0,907,906,1,0,0,0,907,908,1,0, + 0,0,908,909,1,0,0,0,909,911,3,114,57,0,910,912,5,186,0,0,911,910,1,0, + 0,0,911,912,1,0,0,0,912,914,1,0,0,0,913,905,1,0,0,0,913,914,1,0,0,0,914, + 923,1,0,0,0,915,917,5,4,0,0,916,918,5,186,0,0,917,916,1,0,0,0,917,918, + 1,0,0,0,918,919,1,0,0,0,919,921,3,362,181,0,920,922,5,186,0,0,921,920, + 1,0,0,0,921,922,1,0,0,0,922,924,1,0,0,0,923,915,1,0,0,0,923,924,1,0,0, + 0,924,925,1,0,0,0,925,932,5,3,0,0,926,927,5,3,0,0,927,928,5,186,0,0,928, + 929,5,51,0,0,929,930,5,186,0,0,930,932,3,152,76,0,931,913,1,0,0,0,931, + 926,1,0,0,0,932,948,1,0,0,0,933,934,5,186,0,0,934,936,5,153,0,0,935,937, + 5,186,0,0,936,935,1,0,0,0,936,937,1,0,0,0,937,938,1,0,0,0,938,940,5,2, + 0,0,939,941,5,186,0,0,940,939,1,0,0,0,940,941,1,0,0,0,941,942,1,0,0,0, + 942,944,3,24,12,0,943,945,5,186,0,0,944,943,1,0,0,0,944,945,1,0,0,0,945, + 946,1,0,0,0,946,947,5,3,0,0,947,949,1,0,0,0,948,933,1,0,0,0,948,949,1, + 0,0,0,949,51,1,0,0,0,950,953,5,68,0,0,951,952,5,186,0,0,952,954,3,362, + 181,0,953,951,1,0,0,0,953,954,1,0,0,0,954,955,1,0,0,0,955,956,5,186,0, + 0,956,959,5,96,0,0,957,958,5,186,0,0,958,960,3,360,180,0,959,957,1,0, + 0,0,959,960,1,0,0,0,960,963,1,0,0,0,961,962,5,186,0,0,962,964,3,46,23, + 0,963,961,1,0,0,0,963,964,1,0,0,0,964,965,1,0,0,0,965,966,5,186,0,0,966, + 967,5,89,0,0,967,968,5,186,0,0,968,969,3,54,27,0,969,970,5,186,0,0,970, + 971,5,118,0,0,971,972,5,186,0,0,972,989,3,60,30,0,973,974,5,186,0,0,974, + 976,5,120,0,0,975,977,5,186,0,0,976,975,1,0,0,0,976,977,1,0,0,0,977,978, + 1,0,0,0,978,980,5,9,0,0,979,981,5,186,0,0,980,979,1,0,0,0,980,981,1,0, + 0,0,981,983,1,0,0,0,982,984,3,24,12,0,983,982,1,0,0,0,983,984,1,0,0,0, + 984,986,1,0,0,0,985,987,5,186,0,0,986,985,1,0,0,0,986,987,1,0,0,0,987, + 988,1,0,0,0,988,990,5,10,0,0,989,973,1,0,0,0,989,990,1,0,0,0,990,53,1, + 0,0,0,991,994,3,56,28,0,992,994,3,58,29,0,993,991,1,0,0,0,993,992,1,0, + 0,0,994,55,1,0,0,0,995,997,5,2,0,0,996,998,5,186,0,0,997,996,1,0,0,0, + 997,998,1,0,0,0,998,1000,1,0,0,0,999,1001,3,346,173,0,1000,999,1,0,0, + 0,1000,1001,1,0,0,0,1001,1003,1,0,0,0,1002,1004,5,186,0,0,1003,1002,1, + 0,0,0,1003,1004,1,0,0,0,1004,1005,1,0,0,0,1005,1007,5,167,0,0,1006,1008, + 5,186,0,0,1007,1006,1,0,0,0,1007,1008,1,0,0,0,1008,1009,1,0,0,0,1009, + 1011,3,254,127,0,1010,1012,5,186,0,0,1011,1010,1,0,0,0,1011,1012,1,0, + 0,0,1012,1013,1,0,0,0,1013,1014,5,3,0,0,1014,57,1,0,0,0,1015,1017,5,2, + 0,0,1016,1018,5,186,0,0,1017,1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019, + 1,0,0,0,1019,1021,5,3,0,0,1020,1022,5,186,0,0,1021,1020,1,0,0,0,1021, + 1022,1,0,0,0,1022,1023,1,0,0,0,1023,1025,3,230,115,0,1024,1026,5,186, + 0,0,1025,1024,1,0,0,0,1025,1026,1,0,0,0,1026,1027,1,0,0,0,1027,1029,5, + 2,0,0,1028,1030,5,186,0,0,1029,1028,1,0,0,0,1029,1030,1,0,0,0,1030,1031, + 1,0,0,0,1031,1032,5,3,0,0,1032,59,1,0,0,0,1033,1035,5,2,0,0,1034,1036, + 5,186,0,0,1035,1034,1,0,0,0,1035,1036,1,0,0,0,1036,1037,1,0,0,0,1037, + 1039,3,346,173,0,1038,1040,5,186,0,0,1039,1038,1,0,0,0,1039,1040,1,0, + 0,0,1040,1041,1,0,0,0,1041,1043,5,5,0,0,1042,1044,5,186,0,0,1043,1042, + 1,0,0,0,1043,1044,1,0,0,0,1044,1045,1,0,0,0,1045,1047,3,354,177,0,1046, + 1048,5,186,0,0,1047,1046,1,0,0,0,1047,1048,1,0,0,0,1048,1049,1,0,0,0, + 1049,1050,5,3,0,0,1050,61,1,0,0,0,1051,1062,3,64,32,0,1052,1054,5,186, + 0,0,1053,1052,1,0,0,0,1053,1054,1,0,0,0,1054,1055,1,0,0,0,1055,1057,5, + 4,0,0,1056,1058,5,186,0,0,1057,1056,1,0,0,0,1057,1058,1,0,0,0,1058,1059, + 1,0,0,0,1059,1061,3,64,32,0,1060,1053,1,0,0,0,1061,1064,1,0,0,0,1062, + 1060,1,0,0,0,1062,1063,1,0,0,0,1063,63,1,0,0,0,1064,1062,1,0,0,0,1065, + 1066,5,87,0,0,1066,1067,5,186,0,0,1067,1068,3,360,180,0,1068,1069,5,186, + 0,0,1069,1070,5,141,0,0,1070,1071,5,186,0,0,1071,1072,3,360,180,0,1072, + 65,1,0,0,0,1073,1074,5,68,0,0,1074,1075,5,186,0,0,1075,1076,5,133,0,0, + 1076,1080,5,186,0,0,1077,1078,3,46,23,0,1078,1079,5,186,0,0,1079,1081, + 1,0,0,0,1080,1077,1,0,0,0,1080,1081,1,0,0,0,1081,1082,1,0,0,0,1082,1087, + 3,360,180,0,1083,1084,5,186,0,0,1084,1086,3,70,35,0,1085,1083,1,0,0,0, + 1086,1089,1,0,0,0,1087,1085,1,0,0,0,1087,1088,1,0,0,0,1088,67,1,0,0,0, + 1089,1087,1,0,0,0,1090,1091,5,68,0,0,1091,1092,5,186,0,0,1092,1093,5, + 145,0,0,1093,1094,5,186,0,0,1094,1095,3,360,180,0,1095,1096,5,186,0,0, + 1096,1097,5,51,0,0,1097,1098,5,186,0,0,1098,1100,3,128,64,0,1099,1101, + 5,186,0,0,1100,1099,1,0,0,0,1100,1101,1,0,0,0,1101,69,1,0,0,0,1102,1108, + 3,78,39,0,1103,1108,3,80,40,0,1104,1108,3,82,41,0,1105,1108,3,84,42,0, + 1106,1108,3,86,43,0,1107,1102,1,0,0,0,1107,1103,1,0,0,0,1107,1104,1,0, + 0,0,1107,1105,1,0,0,0,1107,1106,1,0,0,0,1108,71,1,0,0,0,1109,1110,5,186, + 0,0,1110,1111,5,153,0,0,1111,1112,5,186,0,0,1112,1113,5,160,0,0,1113, + 1114,5,186,0,0,1114,1115,5,171,0,0,1115,73,1,0,0,0,1116,1117,5,68,0,0, + 1117,1118,5,186,0,0,1118,1119,5,159,0,0,1119,1123,5,186,0,0,1120,1121, + 3,46,23,0,1121,1122,5,186,0,0,1122,1124,1,0,0,0,1123,1120,1,0,0,0,1123, + 1124,1,0,0,0,1124,1125,1,0,0,0,1125,1127,3,346,173,0,1126,1128,3,72,36, + 0,1127,1126,1,0,0,0,1127,1128,1,0,0,0,1128,75,1,0,0,0,1129,1130,5,68, + 0,0,1130,1131,5,186,0,0,1131,1132,5,161,0,0,1132,1136,5,186,0,0,1133, + 1134,3,46,23,0,1134,1135,5,186,0,0,1135,1137,1,0,0,0,1136,1133,1,0,0, + 0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1139,3,346,173,0,1139,77,1, + 0,0,0,1140,1141,5,99,0,0,1141,1144,5,186,0,0,1142,1143,5,56,0,0,1143, + 1145,5,186,0,0,1144,1142,1,0,0,0,1144,1145,1,0,0,0,1145,1147,1,0,0,0, + 1146,1148,5,169,0,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,1149,1,0, + 0,0,1149,1150,3,356,178,0,1150,79,1,0,0,0,1151,1152,5,113,0,0,1152,1153, + 5,186,0,0,1153,1161,5,111,0,0,1154,1155,5,111,0,0,1155,1157,5,186,0,0, + 1156,1158,5,169,0,0,1157,1156,1,0,0,0,1157,1158,1,0,0,0,1158,1159,1,0, + 0,0,1159,1161,3,356,178,0,1160,1151,1,0,0,0,1160,1154,1,0,0,0,1161,81, + 1,0,0,0,1162,1163,5,113,0,0,1163,1164,5,186,0,0,1164,1172,5,109,0,0,1165, + 1166,5,109,0,0,1166,1168,5,186,0,0,1167,1169,5,169,0,0,1168,1167,1,0, + 0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0,1170,1172,3,356,178,0,1171,1162, + 1,0,0,0,1171,1165,1,0,0,0,1172,83,1,0,0,0,1173,1174,5,136,0,0,1174,1177, + 5,186,0,0,1175,1176,5,153,0,0,1176,1178,5,186,0,0,1177,1175,1,0,0,0,1177, + 1178,1,0,0,0,1178,1180,1,0,0,0,1179,1181,5,169,0,0,1180,1179,1,0,0,0, + 1180,1181,1,0,0,0,1181,1182,1,0,0,0,1182,1183,3,356,178,0,1183,85,1,0, + 0,0,1184,1185,5,113,0,0,1185,1187,5,186,0,0,1186,1184,1,0,0,0,1186,1187, + 1,0,0,0,1187,1188,1,0,0,0,1188,1189,5,69,0,0,1189,87,1,0,0,0,1190,1191, + 5,97,0,0,1191,1192,5,186,0,0,1192,1193,5,82,0,0,1193,89,1,0,0,0,1194, + 1195,5,78,0,0,1195,1196,5,186,0,0,1196,1197,7,0,0,0,1197,1201,5,186,0, + 0,1198,1199,3,88,44,0,1199,1200,5,186,0,0,1200,1202,1,0,0,0,1201,1198, + 1,0,0,0,1201,1202,1,0,0,0,1202,1203,1,0,0,0,1203,1204,3,360,180,0,1204, + 91,1,0,0,0,1205,1206,5,49,0,0,1206,1207,5,186,0,0,1207,1208,5,139,0,0, + 1208,1209,5,186,0,0,1209,1210,3,360,180,0,1210,1211,5,186,0,0,1211,1212, + 3,94,47,0,1212,93,1,0,0,0,1213,1220,3,96,48,0,1214,1220,3,100,50,0,1215, + 1220,3,102,51,0,1216,1220,3,104,52,0,1217,1220,3,106,53,0,1218,1220,3, + 108,54,0,1219,1213,1,0,0,0,1219,1214,1,0,0,0,1219,1215,1,0,0,0,1219,1216, + 1,0,0,0,1219,1217,1,0,0,0,1219,1218,1,0,0,0,1220,95,1,0,0,0,1221,1222, + 5,47,0,0,1222,1226,5,186,0,0,1223,1224,3,46,23,0,1224,1225,5,186,0,0, + 1225,1227,1,0,0,0,1226,1223,1,0,0,0,1226,1227,1,0,0,0,1227,1228,1,0,0, + 0,1228,1229,3,354,177,0,1229,1230,5,186,0,0,1230,1233,3,128,64,0,1231, + 1232,5,186,0,0,1232,1234,3,98,49,0,1233,1231,1,0,0,0,1233,1234,1,0,0, + 0,1234,97,1,0,0,0,1235,1236,5,72,0,0,1236,1237,5,186,0,0,1237,1238,3, + 258,129,0,1238,99,1,0,0,0,1239,1240,5,78,0,0,1240,1244,5,186,0,0,1241, + 1242,3,88,44,0,1242,1243,5,186,0,0,1243,1245,1,0,0,0,1244,1241,1,0,0, + 0,1244,1245,1,0,0,0,1245,1246,1,0,0,0,1246,1247,3,354,177,0,1247,101, + 1,0,0,0,1248,1249,5,129,0,0,1249,1250,5,186,0,0,1250,1251,5,141,0,0,1251, + 1252,5,186,0,0,1252,1253,3,360,180,0,1253,103,1,0,0,0,1254,1255,5,129, + 0,0,1255,1256,5,186,0,0,1256,1257,3,354,177,0,1257,1258,5,186,0,0,1258, + 1259,5,141,0,0,1259,1260,5,186,0,0,1260,1261,3,354,177,0,1261,105,1,0, + 0,0,1262,1263,5,47,0,0,1263,1267,5,186,0,0,1264,1265,3,46,23,0,1265,1266, + 5,186,0,0,1266,1268,1,0,0,0,1267,1264,1,0,0,0,1267,1268,1,0,0,0,1268, + 1269,1,0,0,0,1269,1270,3,64,32,0,1270,107,1,0,0,0,1271,1272,5,78,0,0, + 1272,1276,5,186,0,0,1273,1274,3,88,44,0,1274,1275,5,186,0,0,1275,1277, + 1,0,0,0,1276,1273,1,0,0,0,1276,1277,1,0,0,0,1277,1278,1,0,0,0,1278,1279, + 3,64,32,0,1279,109,1,0,0,0,1280,1291,3,112,56,0,1281,1283,5,186,0,0,1282, + 1281,1,0,0,0,1282,1283,1,0,0,0,1283,1284,1,0,0,0,1284,1286,5,4,0,0,1285, + 1287,5,186,0,0,1286,1285,1,0,0,0,1286,1287,1,0,0,0,1287,1288,1,0,0,0, + 1288,1290,3,112,56,0,1289,1282,1,0,0,0,1290,1293,1,0,0,0,1291,1289,1, + 0,0,0,1291,1292,1,0,0,0,1292,111,1,0,0,0,1293,1291,1,0,0,0,1294,1295, + 3,354,177,0,1295,1296,5,186,0,0,1296,1297,3,128,64,0,1297,113,1,0,0,0, + 1298,1309,3,116,58,0,1299,1301,5,186,0,0,1300,1299,1,0,0,0,1300,1301, + 1,0,0,0,1301,1302,1,0,0,0,1302,1304,5,4,0,0,1303,1305,5,186,0,0,1304, + 1303,1,0,0,0,1304,1305,1,0,0,0,1305,1306,1,0,0,0,1306,1308,3,116,58,0, + 1307,1300,1,0,0,0,1308,1311,1,0,0,0,1309,1307,1,0,0,0,1309,1310,1,0,0, + 0,1310,115,1,0,0,0,1311,1309,1,0,0,0,1312,1315,3,112,56,0,1313,1314,5, + 186,0,0,1314,1316,3,98,49,0,1315,1313,1,0,0,0,1315,1316,1,0,0,0,1316, + 1321,1,0,0,0,1317,1318,5,186,0,0,1318,1319,5,124,0,0,1319,1320,5,186, + 0,0,1320,1322,5,103,0,0,1321,1317,1,0,0,0,1321,1322,1,0,0,0,1322,117, + 1,0,0,0,1323,1324,5,124,0,0,1324,1325,5,186,0,0,1325,1327,5,103,0,0,1326, + 1328,5,186,0,0,1327,1326,1,0,0,0,1327,1328,1,0,0,0,1328,1329,1,0,0,0, + 1329,1331,5,2,0,0,1330,1332,5,186,0,0,1331,1330,1,0,0,0,1331,1332,1,0, + 0,0,1332,1333,1,0,0,0,1333,1335,3,354,177,0,1334,1336,5,186,0,0,1335, + 1334,1,0,0,0,1335,1336,1,0,0,0,1336,1337,1,0,0,0,1337,1338,5,3,0,0,1338, + 119,1,0,0,0,1339,1341,5,146,0,0,1340,1342,5,186,0,0,1341,1340,1,0,0,0, + 1341,1342,1,0,0,0,1342,1343,1,0,0,0,1343,1345,5,2,0,0,1344,1346,5,186, + 0,0,1345,1344,1,0,0,0,1345,1346,1,0,0,0,1346,1347,1,0,0,0,1347,1349,3, + 110,55,0,1348,1350,5,186,0,0,1349,1348,1,0,0,0,1349,1350,1,0,0,0,1350, + 1351,1,0,0,0,1351,1352,5,3,0,0,1352,121,1,0,0,0,1353,1355,5,138,0,0,1354, + 1356,5,186,0,0,1355,1354,1,0,0,0,1355,1356,1,0,0,0,1356,1357,1,0,0,0, + 1357,1359,5,2,0,0,1358,1360,5,186,0,0,1359,1358,1,0,0,0,1359,1360,1,0, + 0,0,1360,1361,1,0,0,0,1361,1363,3,110,55,0,1362,1364,5,186,0,0,1363,1362, + 1,0,0,0,1363,1364,1,0,0,0,1364,1365,1,0,0,0,1365,1366,5,3,0,0,1366,123, + 1,0,0,0,1367,1369,5,162,0,0,1368,1370,5,186,0,0,1369,1368,1,0,0,0,1369, + 1370,1,0,0,0,1370,1371,1,0,0,0,1371,1373,5,2,0,0,1372,1374,5,186,0,0, + 1373,1372,1,0,0,0,1373,1374,1,0,0,0,1374,1375,1,0,0,0,1375,1377,3,128, + 64,0,1376,1378,5,186,0,0,1377,1376,1,0,0,0,1377,1378,1,0,0,0,1378,1379, + 1,0,0,0,1379,1381,5,4,0,0,1380,1382,5,186,0,0,1381,1380,1,0,0,0,1381, + 1382,1,0,0,0,1382,1383,1,0,0,0,1383,1385,3,128,64,0,1384,1386,5,186,0, + 0,1385,1384,1,0,0,0,1385,1386,1,0,0,0,1386,1387,1,0,0,0,1387,1388,5,3, + 0,0,1388,125,1,0,0,0,1389,1391,5,163,0,0,1390,1392,5,186,0,0,1391,1390, + 1,0,0,0,1391,1392,1,0,0,0,1392,1393,1,0,0,0,1393,1395,5,2,0,0,1394,1396, + 5,186,0,0,1395,1394,1,0,0,0,1395,1396,1,0,0,0,1396,1397,1,0,0,0,1397, + 1399,3,356,178,0,1398,1400,5,186,0,0,1399,1398,1,0,0,0,1399,1400,1,0, + 0,0,1400,1401,1,0,0,0,1401,1403,5,4,0,0,1402,1404,5,186,0,0,1403,1402, + 1,0,0,0,1403,1404,1,0,0,0,1404,1405,1,0,0,0,1405,1407,3,356,178,0,1406, + 1408,5,186,0,0,1407,1406,1,0,0,0,1407,1408,1,0,0,0,1408,1409,1,0,0,0, + 1409,1410,5,3,0,0,1410,127,1,0,0,0,1411,1412,6,64,-1,0,1412,1418,3,362, + 181,0,1413,1418,3,120,60,0,1414,1418,3,122,61,0,1415,1418,3,124,62,0, + 1416,1418,3,126,63,0,1417,1411,1,0,0,0,1417,1413,1,0,0,0,1417,1414,1, + 0,0,0,1417,1415,1,0,0,0,1417,1416,1,0,0,0,1418,1423,1,0,0,0,1419,1420, + 10,5,0,0,1420,1422,3,130,65,0,1421,1419,1,0,0,0,1422,1425,1,0,0,0,1423, + 1421,1,0,0,0,1423,1424,1,0,0,0,1424,129,1,0,0,0,1425,1423,1,0,0,0,1426, + 1430,3,132,66,0,1427,1429,3,132,66,0,1428,1427,1,0,0,0,1429,1432,1,0, + 0,0,1430,1428,1,0,0,0,1430,1431,1,0,0,0,1431,131,1,0,0,0,1432,1430,1, + 0,0,0,1433,1435,5,7,0,0,1434,1436,3,356,178,0,1435,1434,1,0,0,0,1435, + 1436,1,0,0,0,1436,1437,1,0,0,0,1437,1438,5,8,0,0,1438,133,1,0,0,0,1439, + 1442,3,136,68,0,1440,1442,3,138,69,0,1441,1439,1,0,0,0,1441,1440,1,0, + 0,0,1442,135,1,0,0,0,1443,1446,5,83,0,0,1444,1445,5,186,0,0,1445,1447, + 5,106,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,137,1,0,0,0,1448,1449, + 5,125,0,0,1449,139,1,0,0,0,1450,1451,5,55,0,0,1451,1452,5,186,0,0,1452, + 1464,5,143,0,0,1453,1454,5,55,0,0,1454,1455,5,186,0,0,1455,1456,5,143, + 0,0,1456,1457,5,186,0,0,1457,1458,5,127,0,0,1458,1459,5,186,0,0,1459, + 1464,5,119,0,0,1460,1464,5,63,0,0,1461,1464,5,131,0,0,1462,1464,5,60, + 0,0,1463,1450,1,0,0,0,1463,1453,1,0,0,0,1463,1460,1,0,0,0,1463,1461,1, + 0,0,0,1463,1462,1,0,0,0,1464,141,1,0,0,0,1465,1470,3,144,72,0,1466,1470, + 3,146,73,0,1467,1470,3,148,74,0,1468,1470,3,150,75,0,1469,1465,1,0,0, + 0,1469,1466,1,0,0,0,1469,1467,1,0,0,0,1469,1468,1,0,0,0,1470,143,1,0, + 0,0,1471,1472,5,105,0,0,1472,1475,5,186,0,0,1473,1474,5,85,0,0,1474,1476, + 5,186,0,0,1475,1473,1,0,0,0,1475,1476,1,0,0,0,1476,1479,1,0,0,0,1477, + 1480,5,171,0,0,1478,1480,3,346,173,0,1479,1477,1,0,0,0,1479,1478,1,0, + 0,0,1480,145,1,0,0,0,1481,1482,5,88,0,0,1482,1484,5,186,0,0,1483,1481, + 1,0,0,0,1483,1484,1,0,0,0,1484,1485,1,0,0,0,1485,1486,5,100,0,0,1486, + 1487,5,186,0,0,1487,1492,3,346,173,0,1488,1489,5,186,0,0,1489,1490,5, + 87,0,0,1490,1491,5,186,0,0,1491,1493,5,171,0,0,1492,1488,1,0,0,0,1492, + 1493,1,0,0,0,1493,147,1,0,0,0,1494,1495,5,148,0,0,1495,1496,5,186,0,0, + 1496,1497,3,346,173,0,1497,149,1,0,0,0,1498,1499,5,149,0,0,1499,1500, + 5,186,0,0,1500,1501,3,346,173,0,1501,151,1,0,0,0,1502,1503,3,154,77,0, + 1503,153,1,0,0,0,1504,1511,3,158,79,0,1505,1507,5,186,0,0,1506,1505,1, + 0,0,0,1506,1507,1,0,0,0,1507,1508,1,0,0,0,1508,1510,3,156,78,0,1509,1506, + 1,0,0,0,1510,1513,1,0,0,0,1511,1509,1,0,0,0,1511,1512,1,0,0,0,1512,1526, + 1,0,0,0,1513,1511,1,0,0,0,1514,1516,3,200,100,0,1515,1517,5,186,0,0,1516, + 1515,1,0,0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1514,1,0,0,0,1519, + 1520,1,0,0,0,1520,1518,1,0,0,0,1520,1521,1,0,0,0,1521,1522,1,0,0,0,1522, + 1523,3,158,79,0,1523,1524,6,77,-1,0,1524,1526,1,0,0,0,1525,1504,1,0,0, + 0,1525,1518,1,0,0,0,1526,155,1,0,0,0,1527,1528,5,146,0,0,1528,1529,5, + 186,0,0,1529,1531,5,48,0,0,1530,1532,5,186,0,0,1531,1530,1,0,0,0,1531, + 1532,1,0,0,0,1532,1533,1,0,0,0,1533,1540,3,158,79,0,1534,1536,5,146,0, + 0,1535,1537,5,186,0,0,1536,1535,1,0,0,0,1536,1537,1,0,0,0,1537,1538,1, + 0,0,0,1538,1540,3,158,79,0,1539,1527,1,0,0,0,1539,1534,1,0,0,0,1540,157, + 1,0,0,0,1541,1544,3,160,80,0,1542,1544,3,162,81,0,1543,1541,1,0,0,0,1543, + 1542,1,0,0,0,1544,159,1,0,0,0,1545,1547,3,168,84,0,1546,1548,5,186,0, + 0,1547,1546,1,0,0,0,1547,1548,1,0,0,0,1548,1550,1,0,0,0,1549,1545,1,0, + 0,0,1550,1553,1,0,0,0,1551,1549,1,0,0,0,1551,1552,1,0,0,0,1552,1554,1, + 0,0,0,1553,1551,1,0,0,0,1554,1581,3,200,100,0,1555,1557,3,168,84,0,1556, + 1558,5,186,0,0,1557,1556,1,0,0,0,1557,1558,1,0,0,0,1558,1560,1,0,0,0, + 1559,1555,1,0,0,0,1560,1563,1,0,0,0,1561,1559,1,0,0,0,1561,1562,1,0,0, + 0,1562,1564,1,0,0,0,1563,1561,1,0,0,0,1564,1571,3,166,83,0,1565,1567, + 5,186,0,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568,1,0,0,0,1568, + 1570,3,166,83,0,1569,1566,1,0,0,0,1570,1573,1,0,0,0,1571,1569,1,0,0,0, + 1571,1572,1,0,0,0,1572,1578,1,0,0,0,1573,1571,1,0,0,0,1574,1576,5,186, + 0,0,1575,1574,1,0,0,0,1575,1576,1,0,0,0,1576,1577,1,0,0,0,1577,1579,3, + 200,100,0,1578,1575,1,0,0,0,1578,1579,1,0,0,0,1579,1581,1,0,0,0,1580, + 1551,1,0,0,0,1580,1561,1,0,0,0,1581,161,1,0,0,0,1582,1584,3,164,82,0, + 1583,1585,5,186,0,0,1584,1583,1,0,0,0,1584,1585,1,0,0,0,1585,1587,1,0, + 0,0,1586,1582,1,0,0,0,1587,1588,1,0,0,0,1588,1586,1,0,0,0,1588,1589,1, + 0,0,0,1589,1590,1,0,0,0,1590,1591,3,160,80,0,1591,163,1,0,0,0,1592,1594, + 3,168,84,0,1593,1595,5,186,0,0,1594,1593,1,0,0,0,1594,1595,1,0,0,0,1595, + 1597,1,0,0,0,1596,1592,1,0,0,0,1597,1600,1,0,0,0,1598,1596,1,0,0,0,1598, + 1599,1,0,0,0,1599,1607,1,0,0,0,1600,1598,1,0,0,0,1601,1603,3,166,83,0, + 1602,1604,5,186,0,0,1603,1602,1,0,0,0,1603,1604,1,0,0,0,1604,1606,1,0, + 0,0,1605,1601,1,0,0,0,1606,1609,1,0,0,0,1607,1605,1,0,0,0,1607,1608,1, + 0,0,0,1608,1610,1,0,0,0,1609,1607,1,0,0,0,1610,1611,3,198,99,0,1611,165, + 1,0,0,0,1612,1617,3,186,93,0,1613,1617,3,188,94,0,1614,1617,3,192,96, + 0,1615,1617,3,196,98,0,1616,1612,1,0,0,0,1616,1613,1,0,0,0,1616,1614, + 1,0,0,0,1616,1615,1,0,0,0,1617,167,1,0,0,0,1618,1623,3,178,89,0,1619, + 1623,3,184,92,0,1620,1623,3,176,88,0,1621,1623,3,170,85,0,1622,1618,1, + 0,0,0,1622,1619,1,0,0,0,1622,1620,1,0,0,0,1622,1621,1,0,0,0,1623,169, + 1,0,0,0,1624,1642,5,105,0,0,1625,1626,5,186,0,0,1626,1627,5,153,0,0,1627, + 1628,5,186,0,0,1628,1630,5,93,0,0,1629,1631,5,186,0,0,1630,1629,1,0,0, + 0,1630,1631,1,0,0,0,1631,1632,1,0,0,0,1632,1634,5,2,0,0,1633,1635,5,186, + 0,0,1634,1633,1,0,0,0,1634,1635,1,0,0,0,1635,1636,1,0,0,0,1636,1638,3, + 110,55,0,1637,1639,5,186,0,0,1638,1637,1,0,0,0,1638,1639,1,0,0,0,1639, + 1640,1,0,0,0,1640,1641,5,3,0,0,1641,1643,1,0,0,0,1642,1625,1,0,0,0,1642, + 1643,1,0,0,0,1643,1644,1,0,0,0,1644,1645,5,186,0,0,1645,1646,5,87,0,0, + 1646,1647,5,186,0,0,1647,1661,3,10,5,0,1648,1650,5,186,0,0,1649,1648, + 1,0,0,0,1649,1650,1,0,0,0,1650,1651,1,0,0,0,1651,1653,5,2,0,0,1652,1654, + 5,186,0,0,1653,1652,1,0,0,0,1653,1654,1,0,0,0,1654,1655,1,0,0,0,1655, + 1657,3,24,12,0,1656,1658,5,186,0,0,1657,1656,1,0,0,0,1657,1658,1,0,0, + 0,1658,1659,1,0,0,0,1659,1660,5,3,0,0,1660,1662,1,0,0,0,1661,1649,1,0, + 0,0,1661,1662,1,0,0,0,1662,1667,1,0,0,0,1663,1665,5,186,0,0,1664,1663, + 1,0,0,0,1664,1665,1,0,0,0,1665,1666,1,0,0,0,1666,1668,3,216,108,0,1667, + 1664,1,0,0,0,1667,1668,1,0,0,0,1668,171,1,0,0,0,1669,1670,3,346,173,0, + 1670,1671,5,186,0,0,1671,1672,5,51,0,0,1672,1673,5,186,0,0,1673,1675, + 1,0,0,0,1674,1669,1,0,0,0,1674,1675,1,0,0,0,1675,1676,1,0,0,0,1676,1677, + 3,346,173,0,1677,173,1,0,0,0,1678,1689,3,172,86,0,1679,1681,5,186,0,0, + 1680,1679,1,0,0,0,1680,1681,1,0,0,0,1681,1682,1,0,0,0,1682,1684,5,4,0, + 0,1683,1685,5,186,0,0,1684,1683,1,0,0,0,1684,1685,1,0,0,0,1685,1686,1, + 0,0,0,1686,1688,3,172,86,0,1687,1680,1,0,0,0,1688,1691,1,0,0,0,1689,1687, + 1,0,0,0,1689,1690,1,0,0,0,1690,175,1,0,0,0,1691,1689,1,0,0,0,1692,1693, + 5,57,0,0,1693,1694,5,186,0,0,1694,1699,3,326,163,0,1695,1697,5,186,0, + 0,1696,1695,1,0,0,0,1696,1697,1,0,0,0,1697,1698,1,0,0,0,1698,1700,3,216, + 108,0,1699,1696,1,0,0,0,1699,1700,1,0,0,0,1700,1707,1,0,0,0,1701,1703, + 5,186,0,0,1702,1701,1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0,0,0,1704, + 1705,5,158,0,0,1705,1706,5,186,0,0,1706,1708,3,174,87,0,1707,1702,1,0, + 0,0,1707,1708,1,0,0,0,1708,177,1,0,0,0,1709,1710,5,121,0,0,1710,1712, + 5,186,0,0,1711,1709,1,0,0,0,1711,1712,1,0,0,0,1712,1713,1,0,0,0,1713, + 1715,5,108,0,0,1714,1716,5,186,0,0,1715,1714,1,0,0,0,1715,1716,1,0,0, + 0,1716,1717,1,0,0,0,1717,1720,3,218,109,0,1718,1719,5,186,0,0,1719,1721, + 3,216,108,0,1720,1718,1,0,0,0,1720,1721,1,0,0,0,1721,1724,1,0,0,0,1722, + 1723,5,186,0,0,1723,1725,3,180,90,0,1724,1722,1,0,0,0,1724,1725,1,0,0, + 0,1725,179,1,0,0,0,1726,1727,5,94,0,0,1727,1728,5,186,0,0,1728,1729,3, + 182,91,0,1729,181,1,0,0,0,1730,1731,6,91,-1,0,1731,1733,5,2,0,0,1732, + 1734,5,186,0,0,1733,1732,1,0,0,0,1733,1734,1,0,0,0,1734,1735,1,0,0,0, + 1735,1737,3,182,91,0,1736,1738,5,186,0,0,1737,1736,1,0,0,0,1737,1738, + 1,0,0,0,1738,1739,1,0,0,0,1739,1740,5,3,0,0,1740,1743,1,0,0,0,1741,1743, + 3,360,180,0,1742,1730,1,0,0,0,1742,1741,1,0,0,0,1743,1760,1,0,0,0,1744, + 1745,10,4,0,0,1745,1746,5,186,0,0,1746,1747,5,102,0,0,1747,1748,5,186, + 0,0,1748,1759,3,182,91,5,1749,1754,10,3,0,0,1750,1751,5,186,0,0,1751, + 1752,5,112,0,0,1752,1753,5,186,0,0,1753,1755,3,360,180,0,1754,1750,1, + 0,0,0,1755,1756,1,0,0,0,1756,1754,1,0,0,0,1756,1757,1,0,0,0,1757,1759, + 1,0,0,0,1758,1744,1,0,0,0,1758,1749,1,0,0,0,1759,1762,1,0,0,0,1760,1758, + 1,0,0,0,1760,1761,1,0,0,0,1761,183,1,0,0,0,1762,1760,1,0,0,0,1763,1765, + 5,147,0,0,1764,1766,5,186,0,0,1765,1764,1,0,0,0,1765,1766,1,0,0,0,1766, + 1767,1,0,0,0,1767,1768,3,258,129,0,1768,1769,5,186,0,0,1769,1770,5,51, + 0,0,1770,1771,5,186,0,0,1771,1772,3,346,173,0,1772,185,1,0,0,0,1773,1775, + 5,68,0,0,1774,1776,5,186,0,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776, + 1777,1,0,0,0,1777,1778,3,218,109,0,1778,187,1,0,0,0,1779,1781,5,110,0, + 0,1780,1782,5,186,0,0,1781,1780,1,0,0,0,1781,1782,1,0,0,0,1782,1783,1, + 0,0,0,1783,1788,3,218,109,0,1784,1785,5,186,0,0,1785,1787,3,190,95,0, + 1786,1784,1,0,0,0,1787,1790,1,0,0,0,1788,1786,1,0,0,0,1788,1789,1,0,0, + 0,1789,189,1,0,0,0,1790,1788,1,0,0,0,1791,1792,5,118,0,0,1792,1793,5, + 186,0,0,1793,1794,5,108,0,0,1794,1795,5,186,0,0,1795,1802,3,192,96,0, + 1796,1797,5,118,0,0,1797,1798,5,186,0,0,1798,1799,5,68,0,0,1799,1800, + 5,186,0,0,1800,1802,3,192,96,0,1801,1791,1,0,0,0,1801,1796,1,0,0,0,1802, + 191,1,0,0,0,1803,1805,5,134,0,0,1804,1806,5,186,0,0,1805,1804,1,0,0,0, + 1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1818,3,194,97,0,1808,1810,5, + 186,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0,1810,1811,1,0,0,0,1811,1813, + 5,4,0,0,1812,1814,5,186,0,0,1813,1812,1,0,0,0,1813,1814,1,0,0,0,1814, + 1815,1,0,0,0,1815,1817,3,194,97,0,1816,1809,1,0,0,0,1817,1820,1,0,0,0, + 1818,1816,1,0,0,0,1818,1819,1,0,0,0,1819,1836,1,0,0,0,1820,1818,1,0,0, + 0,1821,1823,5,134,0,0,1822,1824,5,186,0,0,1823,1822,1,0,0,0,1823,1824, + 1,0,0,0,1824,1825,1,0,0,0,1825,1827,3,304,152,0,1826,1828,5,186,0,0,1827, + 1826,1,0,0,0,1827,1828,1,0,0,0,1828,1829,1,0,0,0,1829,1831,5,6,0,0,1830, + 1832,5,186,0,0,1831,1830,1,0,0,0,1831,1832,1,0,0,0,1832,1833,1,0,0,0, + 1833,1834,3,234,117,0,1834,1836,1,0,0,0,1835,1803,1,0,0,0,1835,1821,1, + 0,0,0,1836,193,1,0,0,0,1837,1839,3,352,176,0,1838,1840,5,186,0,0,1839, + 1838,1,0,0,0,1839,1840,1,0,0,0,1840,1841,1,0,0,0,1841,1843,5,6,0,0,1842, + 1844,5,186,0,0,1843,1842,1,0,0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0, + 1845,1846,3,258,129,0,1846,195,1,0,0,0,1847,1848,5,76,0,0,1848,1850,5, + 186,0,0,1849,1847,1,0,0,0,1849,1850,1,0,0,0,1850,1851,1,0,0,0,1851,1853, + 5,73,0,0,1852,1854,5,186,0,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0,1854, + 1855,1,0,0,0,1855,1866,3,258,129,0,1856,1858,5,186,0,0,1857,1856,1,0, + 0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1861,5,4,0,0,1860,1862,5, + 186,0,0,1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1863,1,0,0,0,1863,1865, + 3,258,129,0,1864,1857,1,0,0,0,1865,1868,1,0,0,0,1866,1864,1,0,0,0,1866, + 1867,1,0,0,0,1867,197,1,0,0,0,1868,1866,1,0,0,0,1869,1870,5,153,0,0,1870, + 1875,3,202,101,0,1871,1873,5,186,0,0,1872,1871,1,0,0,0,1872,1873,1,0, + 0,0,1873,1874,1,0,0,0,1874,1876,3,216,108,0,1875,1872,1,0,0,0,1875,1876, + 1,0,0,0,1876,199,1,0,0,0,1877,1878,5,130,0,0,1878,1879,3,202,101,0,1879, + 201,1,0,0,0,1880,1882,5,186,0,0,1881,1880,1,0,0,0,1881,1882,1,0,0,0,1882, + 1883,1,0,0,0,1883,1885,5,77,0,0,1884,1881,1,0,0,0,1884,1885,1,0,0,0,1885, + 1886,1,0,0,0,1886,1887,5,186,0,0,1887,1890,3,204,102,0,1888,1889,5,186, + 0,0,1889,1891,3,208,104,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1894, + 1,0,0,0,1892,1893,5,186,0,0,1893,1895,3,210,105,0,1894,1892,1,0,0,0,1894, + 1895,1,0,0,0,1895,1898,1,0,0,0,1896,1897,5,186,0,0,1897,1899,3,212,106, + 0,1898,1896,1,0,0,0,1898,1899,1,0,0,0,1899,203,1,0,0,0,1900,1911,5,164, + 0,0,1901,1903,5,186,0,0,1902,1901,1,0,0,0,1902,1903,1,0,0,0,1903,1904, + 1,0,0,0,1904,1906,5,4,0,0,1905,1907,5,186,0,0,1906,1905,1,0,0,0,1906, + 1907,1,0,0,0,1907,1908,1,0,0,0,1908,1910,3,206,103,0,1909,1902,1,0,0, + 0,1910,1913,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1929,1,0, + 0,0,1913,1911,1,0,0,0,1914,1925,3,206,103,0,1915,1917,5,186,0,0,1916, + 1915,1,0,0,0,1916,1917,1,0,0,0,1917,1918,1,0,0,0,1918,1920,5,4,0,0,1919, + 1921,5,186,0,0,1920,1919,1,0,0,0,1920,1921,1,0,0,0,1921,1922,1,0,0,0, + 1922,1924,3,206,103,0,1923,1916,1,0,0,0,1924,1927,1,0,0,0,1925,1923,1, + 0,0,0,1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,1900, + 1,0,0,0,1928,1914,1,0,0,0,1929,205,1,0,0,0,1930,1931,3,258,129,0,1931, + 1932,5,186,0,0,1932,1933,5,51,0,0,1933,1934,5,186,0,0,1934,1935,3,346, + 173,0,1935,1938,1,0,0,0,1936,1938,3,258,129,0,1937,1930,1,0,0,0,1937, + 1936,1,0,0,0,1938,207,1,0,0,0,1939,1940,5,123,0,0,1940,1941,5,186,0,0, + 1941,1942,5,56,0,0,1942,1943,5,186,0,0,1943,1951,3,214,107,0,1944,1946, + 5,4,0,0,1945,1947,5,186,0,0,1946,1945,1,0,0,0,1946,1947,1,0,0,0,1947, + 1948,1,0,0,0,1948,1950,3,214,107,0,1949,1944,1,0,0,0,1950,1953,1,0,0, + 0,1951,1949,1,0,0,0,1951,1952,1,0,0,0,1952,209,1,0,0,0,1953,1951,1,0, + 0,0,1954,1955,5,165,0,0,1955,1956,5,186,0,0,1956,1957,3,258,129,0,1957, + 211,1,0,0,0,1958,1959,5,104,0,0,1959,1960,5,186,0,0,1960,1961,3,258,129, + 0,1961,213,1,0,0,0,1962,1967,3,258,129,0,1963,1965,5,186,0,0,1964,1963, + 1,0,0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,1968,7,1,0,0,1967,1964, + 1,0,0,0,1967,1968,1,0,0,0,1968,215,1,0,0,0,1969,1970,5,152,0,0,1970,1971, + 5,186,0,0,1971,1972,3,258,129,0,1972,217,1,0,0,0,1973,1984,3,220,110, + 0,1974,1976,5,186,0,0,1975,1974,1,0,0,0,1975,1976,1,0,0,0,1976,1977,1, + 0,0,0,1977,1979,5,4,0,0,1978,1980,5,186,0,0,1979,1978,1,0,0,0,1979,1980, + 1,0,0,0,1980,1981,1,0,0,0,1981,1983,3,220,110,0,1982,1975,1,0,0,0,1983, + 1986,1,0,0,0,1984,1982,1,0,0,0,1984,1985,1,0,0,0,1985,219,1,0,0,0,1986, + 1984,1,0,0,0,1987,1989,3,346,173,0,1988,1990,5,186,0,0,1989,1988,1,0, + 0,0,1989,1990,1,0,0,0,1990,1991,1,0,0,0,1991,1993,5,6,0,0,1992,1994,5, + 186,0,0,1993,1992,1,0,0,0,1993,1994,1,0,0,0,1994,1995,1,0,0,0,1995,1996, + 3,222,111,0,1996,1999,1,0,0,0,1997,1999,3,222,111,0,1998,1987,1,0,0,0, + 1998,1997,1,0,0,0,1999,221,1,0,0,0,2000,2001,3,224,112,0,2001,223,1,0, + 0,0,2002,2009,3,226,113,0,2003,2005,5,186,0,0,2004,2003,1,0,0,0,2004, + 2005,1,0,0,0,2005,2006,1,0,0,0,2006,2008,3,228,114,0,2007,2004,1,0,0, + 0,2008,2011,1,0,0,0,2009,2007,1,0,0,0,2009,2010,1,0,0,0,2010,2017,1,0, + 0,0,2011,2009,1,0,0,0,2012,2013,5,2,0,0,2013,2014,3,224,112,0,2014,2015, + 5,3,0,0,2015,2017,1,0,0,0,2016,2002,1,0,0,0,2016,2012,1,0,0,0,2017,225, + 1,0,0,0,2018,2020,5,2,0,0,2019,2021,5,186,0,0,2020,2019,1,0,0,0,2020, + 2021,1,0,0,0,2021,2026,1,0,0,0,2022,2024,3,346,173,0,2023,2025,5,186, + 0,0,2024,2023,1,0,0,0,2024,2025,1,0,0,0,2025,2027,1,0,0,0,2026,2022,1, + 0,0,0,2026,2027,1,0,0,0,2027,2032,1,0,0,0,2028,2030,3,238,119,0,2029, + 2031,5,186,0,0,2030,2029,1,0,0,0,2030,2031,1,0,0,0,2031,2033,1,0,0,0, + 2032,2028,1,0,0,0,2032,2033,1,0,0,0,2033,2038,1,0,0,0,2034,2036,3,234, + 117,0,2035,2037,5,186,0,0,2036,2035,1,0,0,0,2036,2037,1,0,0,0,2037,2039, + 1,0,0,0,2038,2034,1,0,0,0,2038,2039,1,0,0,0,2039,2040,1,0,0,0,2040,2041, + 5,3,0,0,2041,227,1,0,0,0,2042,2044,3,230,115,0,2043,2045,5,186,0,0,2044, + 2043,1,0,0,0,2044,2045,1,0,0,0,2045,2046,1,0,0,0,2046,2047,3,226,113, + 0,2047,229,1,0,0,0,2048,2050,3,366,183,0,2049,2051,5,186,0,0,2050,2049, + 1,0,0,0,2050,2051,1,0,0,0,2051,2052,1,0,0,0,2052,2054,3,370,185,0,2053, + 2055,5,186,0,0,2054,2053,1,0,0,0,2054,2055,1,0,0,0,2055,2057,1,0,0,0, + 2056,2058,3,232,116,0,2057,2056,1,0,0,0,2057,2058,1,0,0,0,2058,2060,1, + 0,0,0,2059,2061,5,186,0,0,2060,2059,1,0,0,0,2060,2061,1,0,0,0,2061,2062, + 1,0,0,0,2062,2063,3,370,185,0,2063,2093,1,0,0,0,2064,2066,3,370,185,0, + 2065,2067,5,186,0,0,2066,2065,1,0,0,0,2066,2067,1,0,0,0,2067,2069,1,0, + 0,0,2068,2070,3,232,116,0,2069,2068,1,0,0,0,2069,2070,1,0,0,0,2070,2072, + 1,0,0,0,2071,2073,5,186,0,0,2072,2071,1,0,0,0,2072,2073,1,0,0,0,2073, + 2074,1,0,0,0,2074,2076,3,370,185,0,2075,2077,5,186,0,0,2076,2075,1,0, + 0,0,2076,2077,1,0,0,0,2077,2078,1,0,0,0,2078,2079,3,368,184,0,2079,2093, + 1,0,0,0,2080,2082,3,370,185,0,2081,2083,5,186,0,0,2082,2081,1,0,0,0,2082, + 2083,1,0,0,0,2083,2085,1,0,0,0,2084,2086,3,232,116,0,2085,2084,1,0,0, + 0,2085,2086,1,0,0,0,2086,2088,1,0,0,0,2087,2089,5,186,0,0,2088,2087,1, + 0,0,0,2088,2089,1,0,0,0,2089,2090,1,0,0,0,2090,2091,3,370,185,0,2091, + 2093,1,0,0,0,2092,2048,1,0,0,0,2092,2064,1,0,0,0,2092,2080,1,0,0,0,2093, + 231,1,0,0,0,2094,2096,5,7,0,0,2095,2097,5,186,0,0,2096,2095,1,0,0,0,2096, + 2097,1,0,0,0,2097,2102,1,0,0,0,2098,2100,3,346,173,0,2099,2101,5,186, + 0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2103,1,0,0,0,2102,2098,1, + 0,0,0,2102,2103,1,0,0,0,2103,2108,1,0,0,0,2104,2106,3,236,118,0,2105, + 2107,5,186,0,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2109,1,0,0,0, + 2108,2104,1,0,0,0,2108,2109,1,0,0,0,2109,2114,1,0,0,0,2110,2112,3,240, + 120,0,2111,2113,5,186,0,0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2115, + 1,0,0,0,2114,2110,1,0,0,0,2114,2115,1,0,0,0,2115,2120,1,0,0,0,2116,2118, + 3,234,117,0,2117,2119,5,186,0,0,2118,2117,1,0,0,0,2118,2119,1,0,0,0,2119, + 2121,1,0,0,0,2120,2116,1,0,0,0,2120,2121,1,0,0,0,2121,2122,1,0,0,0,2122, + 2123,5,8,0,0,2123,233,1,0,0,0,2124,2126,5,9,0,0,2125,2127,5,186,0,0,2126, + 2125,1,0,0,0,2126,2127,1,0,0,0,2127,2161,1,0,0,0,2128,2130,3,354,177, + 0,2129,2131,5,186,0,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2132,1, + 0,0,0,2132,2134,5,167,0,0,2133,2135,5,186,0,0,2134,2133,1,0,0,0,2134, + 2135,1,0,0,0,2135,2136,1,0,0,0,2136,2138,3,258,129,0,2137,2139,5,186, + 0,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139,2158,1,0,0,0,2140,2142,5, + 4,0,0,2141,2143,5,186,0,0,2142,2141,1,0,0,0,2142,2143,1,0,0,0,2143,2144, + 1,0,0,0,2144,2146,3,354,177,0,2145,2147,5,186,0,0,2146,2145,1,0,0,0,2146, + 2147,1,0,0,0,2147,2148,1,0,0,0,2148,2150,5,167,0,0,2149,2151,5,186,0, + 0,2150,2149,1,0,0,0,2150,2151,1,0,0,0,2151,2152,1,0,0,0,2152,2154,3,258, + 129,0,2153,2155,5,186,0,0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,2157, + 1,0,0,0,2156,2140,1,0,0,0,2157,2160,1,0,0,0,2158,2156,1,0,0,0,2158,2159, + 1,0,0,0,2159,2162,1,0,0,0,2160,2158,1,0,0,0,2161,2128,1,0,0,0,2161,2162, + 1,0,0,0,2162,2163,1,0,0,0,2163,2164,5,10,0,0,2164,235,1,0,0,0,2165,2167, + 5,167,0,0,2166,2168,5,186,0,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168, + 2169,1,0,0,0,2169,2183,3,256,128,0,2170,2172,5,186,0,0,2171,2170,1,0, + 0,0,2171,2172,1,0,0,0,2172,2173,1,0,0,0,2173,2175,5,11,0,0,2174,2176, + 5,167,0,0,2175,2174,1,0,0,0,2175,2176,1,0,0,0,2176,2178,1,0,0,0,2177, + 2179,5,186,0,0,2178,2177,1,0,0,0,2178,2179,1,0,0,0,2179,2180,1,0,0,0, + 2180,2182,3,256,128,0,2181,2171,1,0,0,0,2182,2185,1,0,0,0,2183,2181,1, + 0,0,0,2183,2184,1,0,0,0,2184,237,1,0,0,0,2185,2183,1,0,0,0,2186,2188, + 5,167,0,0,2187,2189,5,186,0,0,2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189, + 2190,1,0,0,0,2190,2207,3,254,127,0,2191,2193,5,186,0,0,2192,2191,1,0, + 0,0,2192,2193,1,0,0,0,2193,2199,1,0,0,0,2194,2196,5,11,0,0,2195,2197, + 5,167,0,0,2196,2195,1,0,0,0,2196,2197,1,0,0,0,2197,2200,1,0,0,0,2198, + 2200,5,167,0,0,2199,2194,1,0,0,0,2199,2198,1,0,0,0,2200,2202,1,0,0,0, + 2201,2203,5,186,0,0,2202,2201,1,0,0,0,2202,2203,1,0,0,0,2203,2204,1,0, + 0,0,2204,2206,3,254,127,0,2205,2192,1,0,0,0,2206,2209,1,0,0,0,2207,2205, + 1,0,0,0,2207,2208,1,0,0,0,2208,239,1,0,0,0,2209,2207,1,0,0,0,2210,2215, + 5,164,0,0,2211,2213,5,186,0,0,2212,2211,1,0,0,0,2212,2213,1,0,0,0,2213, + 2214,1,0,0,0,2214,2216,3,242,121,0,2215,2212,1,0,0,0,2215,2216,1,0,0, + 0,2216,2221,1,0,0,0,2217,2219,5,186,0,0,2218,2217,1,0,0,0,2218,2219,1, + 0,0,0,2219,2220,1,0,0,0,2220,2222,3,244,122,0,2221,2218,1,0,0,0,2221, + 2222,1,0,0,0,2222,2227,1,0,0,0,2223,2225,5,186,0,0,2224,2223,1,0,0,0, + 2224,2225,1,0,0,0,2225,2226,1,0,0,0,2226,2228,3,246,123,0,2227,2224,1, + 0,0,0,2227,2228,1,0,0,0,2228,241,1,0,0,0,2229,2230,5,48,0,0,2230,2232, + 5,186,0,0,2231,2229,1,0,0,0,2231,2232,1,0,0,0,2232,2233,1,0,0,0,2233, + 2235,5,155,0,0,2234,2236,5,186,0,0,2235,2234,1,0,0,0,2235,2236,1,0,0, + 0,2236,2237,1,0,0,0,2237,2239,5,2,0,0,2238,2240,5,186,0,0,2239,2238,1, + 0,0,0,2239,2240,1,0,0,0,2240,2241,1,0,0,0,2241,2243,3,354,177,0,2242, + 2244,5,186,0,0,2243,2242,1,0,0,0,2243,2244,1,0,0,0,2244,2245,1,0,0,0, + 2245,2246,5,3,0,0,2246,2254,1,0,0,0,2247,2254,5,135,0,0,2248,2249,5,48, + 0,0,2249,2250,5,186,0,0,2250,2254,5,135,0,0,2251,2254,5,142,0,0,2252, + 2254,5,45,0,0,2253,2231,1,0,0,0,2253,2247,1,0,0,0,2253,2248,1,0,0,0,2253, + 2251,1,0,0,0,2253,2252,1,0,0,0,2254,243,1,0,0,0,2255,2257,3,250,125,0, + 2256,2255,1,0,0,0,2256,2257,1,0,0,0,2257,2259,1,0,0,0,2258,2260,5,186, + 0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2261,1,0,0,0,2261,2263,5, + 168,0,0,2262,2264,5,186,0,0,2263,2262,1,0,0,0,2263,2264,1,0,0,0,2264, + 2266,1,0,0,0,2265,2267,3,252,126,0,2266,2265,1,0,0,0,2266,2267,1,0,0, + 0,2267,2270,1,0,0,0,2268,2270,3,356,178,0,2269,2256,1,0,0,0,2269,2268, + 1,0,0,0,2270,245,1,0,0,0,2271,2273,5,2,0,0,2272,2274,5,186,0,0,2273,2272, + 1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0,0,2275,2277,3,346,173,0,2276, + 2278,5,186,0,0,2277,2276,1,0,0,0,2277,2278,1,0,0,0,2278,2279,1,0,0,0, + 2279,2281,5,4,0,0,2280,2282,5,186,0,0,2281,2280,1,0,0,0,2281,2282,1,0, + 0,0,2282,2283,1,0,0,0,2283,2295,3,346,173,0,2284,2286,5,186,0,0,2285, + 2284,1,0,0,0,2285,2286,1,0,0,0,2286,2287,1,0,0,0,2287,2289,5,11,0,0,2288, + 2290,5,186,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291,1,0,0,0, + 2291,2293,3,216,108,0,2292,2294,5,186,0,0,2293,2292,1,0,0,0,2293,2294, + 1,0,0,0,2294,2296,1,0,0,0,2295,2285,1,0,0,0,2295,2296,1,0,0,0,2296,2316, + 1,0,0,0,2297,2299,5,186,0,0,2298,2297,1,0,0,0,2298,2299,1,0,0,0,2299, + 2300,1,0,0,0,2300,2302,5,11,0,0,2301,2303,5,186,0,0,2302,2301,1,0,0,0, + 2302,2303,1,0,0,0,2303,2304,1,0,0,0,2304,2306,3,248,124,0,2305,2307,5, + 186,0,0,2306,2305,1,0,0,0,2306,2307,1,0,0,0,2307,2308,1,0,0,0,2308,2310, + 5,4,0,0,2309,2311,5,186,0,0,2310,2309,1,0,0,0,2310,2311,1,0,0,0,2311, + 2312,1,0,0,0,2312,2314,3,248,124,0,2313,2315,5,186,0,0,2314,2313,1,0, + 0,0,2314,2315,1,0,0,0,2315,2317,1,0,0,0,2316,2298,1,0,0,0,2316,2317,1, + 0,0,0,2317,2318,1,0,0,0,2318,2319,5,3,0,0,2319,247,1,0,0,0,2320,2322, + 5,9,0,0,2321,2323,5,186,0,0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323, + 2325,1,0,0,0,2324,2326,3,204,102,0,2325,2324,1,0,0,0,2325,2326,1,0,0, + 0,2326,2328,1,0,0,0,2327,2329,5,186,0,0,2328,2327,1,0,0,0,2328,2329,1, + 0,0,0,2329,2330,1,0,0,0,2330,2331,5,10,0,0,2331,249,1,0,0,0,2332,2333, + 5,173,0,0,2333,251,1,0,0,0,2334,2335,5,173,0,0,2335,253,1,0,0,0,2336, + 2339,3,360,180,0,2337,2338,5,5,0,0,2338,2340,3,360,180,0,2339,2337,1, + 0,0,0,2339,2340,1,0,0,0,2340,255,1,0,0,0,2341,2342,3,360,180,0,2342,257, + 1,0,0,0,2343,2344,3,260,130,0,2344,259,1,0,0,0,2345,2352,3,262,131,0, + 2346,2347,5,186,0,0,2347,2348,5,122,0,0,2348,2349,5,186,0,0,2349,2351, + 3,262,131,0,2350,2346,1,0,0,0,2351,2354,1,0,0,0,2352,2350,1,0,0,0,2352, + 2353,1,0,0,0,2353,261,1,0,0,0,2354,2352,1,0,0,0,2355,2362,3,264,132,0, + 2356,2357,5,186,0,0,2357,2358,5,156,0,0,2358,2359,5,186,0,0,2359,2361, + 3,264,132,0,2360,2356,1,0,0,0,2361,2364,1,0,0,0,2362,2360,1,0,0,0,2362, + 2363,1,0,0,0,2363,263,1,0,0,0,2364,2362,1,0,0,0,2365,2372,3,266,133,0, + 2366,2367,5,186,0,0,2367,2368,5,50,0,0,2368,2369,5,186,0,0,2369,2371, + 3,266,133,0,2370,2366,1,0,0,0,2371,2374,1,0,0,0,2372,2370,1,0,0,0,2372, + 2373,1,0,0,0,2373,265,1,0,0,0,2374,2372,1,0,0,0,2375,2377,5,115,0,0,2376, + 2378,5,186,0,0,2377,2376,1,0,0,0,2377,2378,1,0,0,0,2378,2380,1,0,0,0, + 2379,2375,1,0,0,0,2380,2383,1,0,0,0,2381,2379,1,0,0,0,2381,2382,1,0,0, + 0,2382,2384,1,0,0,0,2383,2381,1,0,0,0,2384,2385,3,268,134,0,2385,267, + 1,0,0,0,2386,2396,3,272,136,0,2387,2389,5,186,0,0,2388,2387,1,0,0,0,2388, + 2389,1,0,0,0,2389,2390,1,0,0,0,2390,2392,3,270,135,0,2391,2393,5,186, + 0,0,2392,2391,1,0,0,0,2392,2393,1,0,0,0,2393,2394,1,0,0,0,2394,2395,3, + 272,136,0,2395,2397,1,0,0,0,2396,2388,1,0,0,0,2396,2397,1,0,0,0,2397, + 2435,1,0,0,0,2398,2400,3,272,136,0,2399,2401,5,186,0,0,2400,2399,1,0, + 0,0,2400,2401,1,0,0,0,2401,2402,1,0,0,0,2402,2404,5,166,0,0,2403,2405, + 5,186,0,0,2404,2403,1,0,0,0,2404,2405,1,0,0,0,2405,2406,1,0,0,0,2406, + 2407,3,272,136,0,2407,2408,1,0,0,0,2408,2409,6,134,-1,0,2409,2435,1,0, + 0,0,2410,2412,3,272,136,0,2411,2413,5,186,0,0,2412,2411,1,0,0,0,2412, + 2413,1,0,0,0,2413,2414,1,0,0,0,2414,2416,3,270,135,0,2415,2417,5,186, + 0,0,2416,2415,1,0,0,0,2416,2417,1,0,0,0,2417,2418,1,0,0,0,2418,2428,3, + 272,136,0,2419,2421,5,186,0,0,2420,2419,1,0,0,0,2420,2421,1,0,0,0,2421, + 2422,1,0,0,0,2422,2424,3,270,135,0,2423,2425,5,186,0,0,2424,2423,1,0, + 0,0,2424,2425,1,0,0,0,2425,2426,1,0,0,0,2426,2427,3,272,136,0,2427,2429, + 1,0,0,0,2428,2420,1,0,0,0,2429,2430,1,0,0,0,2430,2428,1,0,0,0,2430,2431, + 1,0,0,0,2431,2432,1,0,0,0,2432,2433,6,134,-1,0,2433,2435,1,0,0,0,2434, + 2386,1,0,0,0,2434,2398,1,0,0,0,2434,2410,1,0,0,0,2435,269,1,0,0,0,2436, + 2437,7,2,0,0,2437,271,1,0,0,0,2438,2449,3,274,137,0,2439,2441,5,186,0, + 0,2440,2439,1,0,0,0,2440,2441,1,0,0,0,2441,2442,1,0,0,0,2442,2444,5,11, + 0,0,2443,2445,5,186,0,0,2444,2443,1,0,0,0,2444,2445,1,0,0,0,2445,2446, + 1,0,0,0,2446,2448,3,274,137,0,2447,2440,1,0,0,0,2448,2451,1,0,0,0,2449, + 2447,1,0,0,0,2449,2450,1,0,0,0,2450,273,1,0,0,0,2451,2449,1,0,0,0,2452, + 2463,3,276,138,0,2453,2455,5,186,0,0,2454,2453,1,0,0,0,2454,2455,1,0, + 0,0,2455,2456,1,0,0,0,2456,2458,5,17,0,0,2457,2459,5,186,0,0,2458,2457, + 1,0,0,0,2458,2459,1,0,0,0,2459,2460,1,0,0,0,2460,2462,3,276,138,0,2461, + 2454,1,0,0,0,2462,2465,1,0,0,0,2463,2461,1,0,0,0,2463,2464,1,0,0,0,2464, + 275,1,0,0,0,2465,2463,1,0,0,0,2466,2478,3,280,140,0,2467,2469,5,186,0, + 0,2468,2467,1,0,0,0,2468,2469,1,0,0,0,2469,2470,1,0,0,0,2470,2472,3,278, + 139,0,2471,2473,5,186,0,0,2472,2471,1,0,0,0,2472,2473,1,0,0,0,2473,2474, + 1,0,0,0,2474,2475,3,280,140,0,2475,2477,1,0,0,0,2476,2468,1,0,0,0,2477, + 2480,1,0,0,0,2478,2476,1,0,0,0,2478,2479,1,0,0,0,2479,277,1,0,0,0,2480, + 2478,1,0,0,0,2481,2482,7,3,0,0,2482,279,1,0,0,0,2483,2495,3,284,142,0, + 2484,2486,5,186,0,0,2485,2484,1,0,0,0,2485,2486,1,0,0,0,2486,2487,1,0, + 0,0,2487,2489,3,282,141,0,2488,2490,5,186,0,0,2489,2488,1,0,0,0,2489, + 2490,1,0,0,0,2490,2491,1,0,0,0,2491,2492,3,284,142,0,2492,2494,1,0,0, + 0,2493,2485,1,0,0,0,2494,2497,1,0,0,0,2495,2493,1,0,0,0,2495,2496,1,0, + 0,0,2496,281,1,0,0,0,2497,2495,1,0,0,0,2498,2499,7,4,0,0,2499,283,1,0, + 0,0,2500,2512,3,288,144,0,2501,2503,5,186,0,0,2502,2501,1,0,0,0,2502, + 2503,1,0,0,0,2503,2504,1,0,0,0,2504,2506,3,286,143,0,2505,2507,5,186, + 0,0,2506,2505,1,0,0,0,2506,2507,1,0,0,0,2507,2508,1,0,0,0,2508,2509,3, + 288,144,0,2509,2511,1,0,0,0,2510,2502,1,0,0,0,2511,2514,1,0,0,0,2512, + 2510,1,0,0,0,2512,2513,1,0,0,0,2513,285,1,0,0,0,2514,2512,1,0,0,0,2515, + 2516,7,5,0,0,2516,287,1,0,0,0,2517,2528,3,290,145,0,2518,2520,5,186,0, + 0,2519,2518,1,0,0,0,2519,2520,1,0,0,0,2520,2521,1,0,0,0,2521,2523,5,23, + 0,0,2522,2524,5,186,0,0,2523,2522,1,0,0,0,2523,2524,1,0,0,0,2524,2525, + 1,0,0,0,2525,2527,3,290,145,0,2526,2519,1,0,0,0,2527,2530,1,0,0,0,2528, + 2526,1,0,0,0,2528,2529,1,0,0,0,2529,289,1,0,0,0,2530,2528,1,0,0,0,2531, + 2539,3,300,150,0,2532,2540,3,294,147,0,2533,2535,3,292,146,0,2534,2533, + 1,0,0,0,2535,2536,1,0,0,0,2536,2534,1,0,0,0,2536,2537,1,0,0,0,2537,2540, + 1,0,0,0,2538,2540,3,298,149,0,2539,2532,1,0,0,0,2539,2534,1,0,0,0,2539, + 2538,1,0,0,0,2539,2540,1,0,0,0,2540,291,1,0,0,0,2541,2542,5,186,0,0,2542, + 2544,5,98,0,0,2543,2545,5,186,0,0,2544,2543,1,0,0,0,2544,2545,1,0,0,0, + 2545,2546,1,0,0,0,2546,2561,3,302,151,0,2547,2548,5,7,0,0,2548,2549,3, + 258,129,0,2549,2550,5,8,0,0,2550,2561,1,0,0,0,2551,2553,5,7,0,0,2552, + 2554,3,258,129,0,2553,2552,1,0,0,0,2553,2554,1,0,0,0,2554,2555,1,0,0, + 0,2555,2557,7,6,0,0,2556,2558,3,258,129,0,2557,2556,1,0,0,0,2557,2558, + 1,0,0,0,2558,2559,1,0,0,0,2559,2561,5,8,0,0,2560,2541,1,0,0,0,2560,2547, + 1,0,0,0,2560,2551,1,0,0,0,2561,293,1,0,0,0,2562,2574,3,296,148,0,2563, + 2564,5,186,0,0,2564,2565,5,137,0,0,2565,2566,5,186,0,0,2566,2574,5,153, + 0,0,2567,2568,5,186,0,0,2568,2569,5,81,0,0,2569,2570,5,186,0,0,2570,2574, + 5,153,0,0,2571,2572,5,186,0,0,2572,2574,5,65,0,0,2573,2562,1,0,0,0,2573, + 2563,1,0,0,0,2573,2567,1,0,0,0,2573,2571,1,0,0,0,2574,2576,1,0,0,0,2575, + 2577,5,186,0,0,2576,2575,1,0,0,0,2576,2577,1,0,0,0,2577,2578,1,0,0,0, + 2578,2579,3,302,151,0,2579,295,1,0,0,0,2580,2582,5,186,0,0,2581,2580, + 1,0,0,0,2581,2582,1,0,0,0,2582,2583,1,0,0,0,2583,2584,5,24,0,0,2584,297, + 1,0,0,0,2585,2586,5,186,0,0,2586,2587,5,101,0,0,2587,2588,5,186,0,0,2588, + 2596,5,117,0,0,2589,2590,5,186,0,0,2590,2591,5,101,0,0,2591,2592,5,186, + 0,0,2592,2593,5,115,0,0,2593,2594,5,186,0,0,2594,2596,5,117,0,0,2595, + 2585,1,0,0,0,2595,2589,1,0,0,0,2596,299,1,0,0,0,2597,2599,5,169,0,0,2598, + 2600,5,186,0,0,2599,2598,1,0,0,0,2599,2600,1,0,0,0,2600,2602,1,0,0,0, + 2601,2597,1,0,0,0,2602,2605,1,0,0,0,2603,2601,1,0,0,0,2603,2604,1,0,0, + 0,2604,2606,1,0,0,0,2605,2603,1,0,0,0,2606,2611,3,302,151,0,2607,2609, + 5,186,0,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1,0,0,0,2610, + 2612,5,170,0,0,2611,2608,1,0,0,0,2611,2612,1,0,0,0,2612,301,1,0,0,0,2613, + 2620,3,304,152,0,2614,2616,5,186,0,0,2615,2614,1,0,0,0,2615,2616,1,0, + 0,0,2616,2617,1,0,0,0,2617,2619,3,340,170,0,2618,2615,1,0,0,0,2619,2622, + 1,0,0,0,2620,2618,1,0,0,0,2620,2621,1,0,0,0,2621,303,1,0,0,0,2622,2620, + 1,0,0,0,2623,2633,3,312,156,0,2624,2633,3,350,175,0,2625,2633,3,342,171, + 0,2626,2633,3,324,162,0,2627,2633,3,326,163,0,2628,2633,3,336,168,0,2629, + 2633,3,338,169,0,2630,2633,3,346,173,0,2631,2633,3,306,153,0,2632,2623, + 1,0,0,0,2632,2624,1,0,0,0,2632,2625,1,0,0,0,2632,2626,1,0,0,0,2632,2627, + 1,0,0,0,2632,2628,1,0,0,0,2632,2629,1,0,0,0,2632,2630,1,0,0,0,2632,2631, + 1,0,0,0,2633,305,1,0,0,0,2634,2636,5,48,0,0,2635,2637,5,186,0,0,2636, + 2635,1,0,0,0,2636,2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,2,0,0,2639, + 2641,5,186,0,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0, + 2642,2644,3,308,154,0,2643,2645,5,186,0,0,2644,2643,1,0,0,0,2644,2645, + 1,0,0,0,2645,2646,1,0,0,0,2646,2647,5,3,0,0,2647,2691,1,0,0,0,2648,2650, + 5,46,0,0,2649,2651,5,186,0,0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651, + 2652,1,0,0,0,2652,2654,5,2,0,0,2653,2655,5,186,0,0,2654,2653,1,0,0,0, + 2654,2655,1,0,0,0,2655,2656,1,0,0,0,2656,2658,3,308,154,0,2657,2659,5, + 186,0,0,2658,2657,1,0,0,0,2658,2659,1,0,0,0,2659,2660,1,0,0,0,2660,2661, + 5,3,0,0,2661,2691,1,0,0,0,2662,2664,5,116,0,0,2663,2665,5,186,0,0,2664, + 2663,1,0,0,0,2664,2665,1,0,0,0,2665,2666,1,0,0,0,2666,2668,5,2,0,0,2667, + 2669,5,186,0,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2670,1,0,0,0, + 2670,2672,3,308,154,0,2671,2673,5,186,0,0,2672,2671,1,0,0,0,2672,2673, + 1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,3,0,0,2675,2691,1,0,0,0,2676,2678, + 5,157,0,0,2677,2679,5,186,0,0,2678,2677,1,0,0,0,2678,2679,1,0,0,0,2679, + 2680,1,0,0,0,2680,2682,5,2,0,0,2681,2683,5,186,0,0,2682,2681,1,0,0,0, + 2682,2683,1,0,0,0,2683,2684,1,0,0,0,2684,2686,3,308,154,0,2685,2687,5, + 186,0,0,2686,2685,1,0,0,0,2686,2687,1,0,0,0,2687,2688,1,0,0,0,2688,2689, + 5,3,0,0,2689,2691,1,0,0,0,2690,2634,1,0,0,0,2690,2648,1,0,0,0,2690,2662, + 1,0,0,0,2690,2676,1,0,0,0,2691,307,1,0,0,0,2692,2693,3,310,155,0,2693, + 2694,5,186,0,0,2694,2695,3,216,108,0,2695,309,1,0,0,0,2696,2697,3,346, + 173,0,2697,2698,5,186,0,0,2698,2699,5,98,0,0,2699,2700,5,186,0,0,2700, + 2701,3,258,129,0,2701,311,1,0,0,0,2702,2709,3,348,174,0,2703,2709,5,171, + 0,0,2704,2709,3,314,157,0,2705,2709,5,117,0,0,2706,2709,3,316,158,0,2707, + 2709,3,320,160,0,2708,2702,1,0,0,0,2708,2703,1,0,0,0,2708,2704,1,0,0, + 0,2708,2705,1,0,0,0,2708,2706,1,0,0,0,2708,2707,1,0,0,0,2709,313,1,0, + 0,0,2710,2711,7,7,0,0,2711,315,1,0,0,0,2712,2714,5,7,0,0,2713,2715,5, + 186,0,0,2714,2713,1,0,0,0,2714,2715,1,0,0,0,2715,2729,1,0,0,0,2716,2718, + 3,258,129,0,2717,2719,5,186,0,0,2718,2717,1,0,0,0,2718,2719,1,0,0,0,2719, + 2726,1,0,0,0,2720,2722,3,318,159,0,2721,2723,5,186,0,0,2722,2721,1,0, + 0,0,2722,2723,1,0,0,0,2723,2725,1,0,0,0,2724,2720,1,0,0,0,2725,2728,1, + 0,0,0,2726,2724,1,0,0,0,2726,2727,1,0,0,0,2727,2730,1,0,0,0,2728,2726, + 1,0,0,0,2729,2716,1,0,0,0,2729,2730,1,0,0,0,2730,2731,1,0,0,0,2731,2732, + 5,8,0,0,2732,317,1,0,0,0,2733,2735,5,4,0,0,2734,2736,5,186,0,0,2735,2734, + 1,0,0,0,2735,2736,1,0,0,0,2736,2738,1,0,0,0,2737,2739,3,258,129,0,2738, + 2737,1,0,0,0,2738,2739,1,0,0,0,2739,319,1,0,0,0,2740,2742,5,9,0,0,2741, + 2743,5,186,0,0,2742,2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0, + 2744,2746,3,322,161,0,2745,2747,5,186,0,0,2746,2745,1,0,0,0,2746,2747, + 1,0,0,0,2747,2758,1,0,0,0,2748,2750,5,4,0,0,2749,2751,5,186,0,0,2750, + 2749,1,0,0,0,2750,2751,1,0,0,0,2751,2752,1,0,0,0,2752,2754,3,322,161, + 0,2753,2755,5,186,0,0,2754,2753,1,0,0,0,2754,2755,1,0,0,0,2755,2757,1, + 0,0,0,2756,2748,1,0,0,0,2757,2760,1,0,0,0,2758,2756,1,0,0,0,2758,2759, + 1,0,0,0,2759,2761,1,0,0,0,2760,2758,1,0,0,0,2761,2762,5,10,0,0,2762,321, + 1,0,0,0,2763,2766,3,362,181,0,2764,2766,5,171,0,0,2765,2763,1,0,0,0,2765, + 2764,1,0,0,0,2766,2768,1,0,0,0,2767,2769,5,186,0,0,2768,2767,1,0,0,0, + 2768,2769,1,0,0,0,2769,2770,1,0,0,0,2770,2772,5,167,0,0,2771,2773,5,186, + 0,0,2772,2771,1,0,0,0,2772,2773,1,0,0,0,2773,2774,1,0,0,0,2774,2775,3, + 258,129,0,2775,323,1,0,0,0,2776,2778,5,2,0,0,2777,2779,5,186,0,0,2778, + 2777,1,0,0,0,2778,2779,1,0,0,0,2779,2780,1,0,0,0,2780,2782,3,258,129, + 0,2781,2783,5,186,0,0,2782,2781,1,0,0,0,2782,2783,1,0,0,0,2783,2784,1, + 0,0,0,2784,2785,5,3,0,0,2785,325,1,0,0,0,2786,2788,5,67,0,0,2787,2789, + 5,186,0,0,2788,2787,1,0,0,0,2788,2789,1,0,0,0,2789,2790,1,0,0,0,2790, + 2792,5,2,0,0,2791,2793,5,186,0,0,2792,2791,1,0,0,0,2792,2793,1,0,0,0, + 2793,2794,1,0,0,0,2794,2796,5,164,0,0,2795,2797,5,186,0,0,2796,2795,1, + 0,0,0,2796,2797,1,0,0,0,2797,2798,1,0,0,0,2798,2864,5,3,0,0,2799,2801, + 5,59,0,0,2800,2802,5,186,0,0,2801,2800,1,0,0,0,2801,2802,1,0,0,0,2802, + 2803,1,0,0,0,2803,2805,5,2,0,0,2804,2806,5,186,0,0,2805,2804,1,0,0,0, + 2805,2806,1,0,0,0,2806,2807,1,0,0,0,2807,2809,3,330,165,0,2808,2810,5, + 186,0,0,2809,2808,1,0,0,0,2809,2810,1,0,0,0,2810,2821,1,0,0,0,2811,2813, + 5,51,0,0,2812,2814,5,186,0,0,2813,2812,1,0,0,0,2813,2814,1,0,0,0,2814, + 2815,1,0,0,0,2815,2822,3,128,64,0,2816,2818,5,4,0,0,2817,2819,5,186,0, + 0,2818,2817,1,0,0,0,2818,2819,1,0,0,0,2819,2820,1,0,0,0,2820,2822,3,330, + 165,0,2821,2811,1,0,0,0,2821,2816,1,0,0,0,2822,2824,1,0,0,0,2823,2825, + 5,186,0,0,2824,2823,1,0,0,0,2824,2825,1,0,0,0,2825,2826,1,0,0,0,2826, + 2827,5,3,0,0,2827,2864,1,0,0,0,2828,2830,3,328,164,0,2829,2831,5,186, + 0,0,2830,2829,1,0,0,0,2830,2831,1,0,0,0,2831,2832,1,0,0,0,2832,2834,5, + 2,0,0,2833,2835,5,186,0,0,2834,2833,1,0,0,0,2834,2835,1,0,0,0,2835,2840, + 1,0,0,0,2836,2838,5,77,0,0,2837,2839,5,186,0,0,2838,2837,1,0,0,0,2838, + 2839,1,0,0,0,2839,2841,1,0,0,0,2840,2836,1,0,0,0,2840,2841,1,0,0,0,2841, + 2859,1,0,0,0,2842,2844,3,330,165,0,2843,2845,5,186,0,0,2844,2843,1,0, + 0,0,2844,2845,1,0,0,0,2845,2856,1,0,0,0,2846,2848,5,4,0,0,2847,2849,5, + 186,0,0,2848,2847,1,0,0,0,2848,2849,1,0,0,0,2849,2850,1,0,0,0,2850,2852, + 3,330,165,0,2851,2853,5,186,0,0,2852,2851,1,0,0,0,2852,2853,1,0,0,0,2853, + 2855,1,0,0,0,2854,2846,1,0,0,0,2855,2858,1,0,0,0,2856,2854,1,0,0,0,2856, + 2857,1,0,0,0,2857,2860,1,0,0,0,2858,2856,1,0,0,0,2859,2842,1,0,0,0,2859, + 2860,1,0,0,0,2860,2861,1,0,0,0,2861,2862,5,3,0,0,2862,2864,1,0,0,0,2863, + 2786,1,0,0,0,2863,2799,1,0,0,0,2863,2828,1,0,0,0,2864,327,1,0,0,0,2865, + 2866,3,362,181,0,2866,329,1,0,0,0,2867,2869,3,362,181,0,2868,2870,5,186, + 0,0,2869,2868,1,0,0,0,2869,2870,1,0,0,0,2870,2871,1,0,0,0,2871,2872,5, + 167,0,0,2872,2874,5,6,0,0,2873,2875,5,186,0,0,2874,2873,1,0,0,0,2874, + 2875,1,0,0,0,2875,2877,1,0,0,0,2876,2867,1,0,0,0,2876,2877,1,0,0,0,2877, + 2878,1,0,0,0,2878,2881,3,258,129,0,2879,2881,3,332,166,0,2880,2876,1, + 0,0,0,2880,2879,1,0,0,0,2881,331,1,0,0,0,2882,2884,3,334,167,0,2883,2885, + 5,186,0,0,2884,2883,1,0,0,0,2884,2885,1,0,0,0,2885,2886,1,0,0,0,2886, + 2887,5,169,0,0,2887,2889,5,15,0,0,2888,2890,5,186,0,0,2889,2888,1,0,0, + 0,2889,2890,1,0,0,0,2890,2891,1,0,0,0,2891,2893,3,258,129,0,2892,2894, + 5,186,0,0,2893,2892,1,0,0,0,2893,2894,1,0,0,0,2894,333,1,0,0,0,2895,2920, + 3,362,181,0,2896,2898,5,2,0,0,2897,2899,5,186,0,0,2898,2897,1,0,0,0,2898, + 2899,1,0,0,0,2899,2900,1,0,0,0,2900,2902,3,362,181,0,2901,2903,5,186, + 0,0,2902,2901,1,0,0,0,2902,2903,1,0,0,0,2903,2914,1,0,0,0,2904,2906,5, + 4,0,0,2905,2907,5,186,0,0,2906,2905,1,0,0,0,2906,2907,1,0,0,0,2907,2908, + 1,0,0,0,2908,2910,3,362,181,0,2909,2911,5,186,0,0,2910,2909,1,0,0,0,2910, + 2911,1,0,0,0,2911,2913,1,0,0,0,2912,2904,1,0,0,0,2913,2916,1,0,0,0,2914, + 2912,1,0,0,0,2914,2915,1,0,0,0,2915,2917,1,0,0,0,2916,2914,1,0,0,0,2917, + 2918,5,3,0,0,2918,2920,1,0,0,0,2919,2895,1,0,0,0,2919,2896,1,0,0,0,2920, + 335,1,0,0,0,2921,2926,3,226,113,0,2922,2924,5,186,0,0,2923,2922,1,0,0, + 0,2923,2924,1,0,0,0,2924,2925,1,0,0,0,2925,2927,3,228,114,0,2926,2923, + 1,0,0,0,2927,2928,1,0,0,0,2928,2926,1,0,0,0,2928,2929,1,0,0,0,2929,337, + 1,0,0,0,2930,2932,7,8,0,0,2931,2933,5,186,0,0,2932,2931,1,0,0,0,2932, + 2933,1,0,0,0,2933,2934,1,0,0,0,2934,2936,5,9,0,0,2935,2937,5,186,0,0, + 2936,2935,1,0,0,0,2936,2937,1,0,0,0,2937,2938,1,0,0,0,2938,2940,5,108, + 0,0,2939,2941,5,186,0,0,2940,2939,1,0,0,0,2940,2941,1,0,0,0,2941,2942, + 1,0,0,0,2942,2947,3,218,109,0,2943,2945,5,186,0,0,2944,2943,1,0,0,0,2944, + 2945,1,0,0,0,2945,2946,1,0,0,0,2946,2948,3,216,108,0,2947,2944,1,0,0, + 0,2947,2948,1,0,0,0,2948,2953,1,0,0,0,2949,2951,5,186,0,0,2950,2949,1, + 0,0,0,2950,2951,1,0,0,0,2951,2952,1,0,0,0,2952,2954,3,180,90,0,2953,2950, + 1,0,0,0,2953,2954,1,0,0,0,2954,2956,1,0,0,0,2955,2957,5,186,0,0,2956, + 2955,1,0,0,0,2956,2957,1,0,0,0,2957,2958,1,0,0,0,2958,2959,5,10,0,0,2959, + 339,1,0,0,0,2960,2962,5,5,0,0,2961,2963,5,186,0,0,2962,2961,1,0,0,0,2962, + 2963,1,0,0,0,2963,2966,1,0,0,0,2964,2967,3,354,177,0,2965,2967,5,164, + 0,0,2966,2964,1,0,0,0,2966,2965,1,0,0,0,2967,341,1,0,0,0,2968,2973,5, + 58,0,0,2969,2971,5,186,0,0,2970,2969,1,0,0,0,2970,2971,1,0,0,0,2971,2972, + 1,0,0,0,2972,2974,3,344,172,0,2973,2970,1,0,0,0,2974,2975,1,0,0,0,2975, + 2973,1,0,0,0,2975,2976,1,0,0,0,2976,2991,1,0,0,0,2977,2979,5,58,0,0,2978, + 2980,5,186,0,0,2979,2978,1,0,0,0,2979,2980,1,0,0,0,2980,2981,1,0,0,0, + 2981,2986,3,258,129,0,2982,2984,5,186,0,0,2983,2982,1,0,0,0,2983,2984, + 1,0,0,0,2984,2985,1,0,0,0,2985,2987,3,344,172,0,2986,2983,1,0,0,0,2987, + 2988,1,0,0,0,2988,2986,1,0,0,0,2988,2989,1,0,0,0,2989,2991,1,0,0,0,2990, + 2968,1,0,0,0,2990,2977,1,0,0,0,2991,3000,1,0,0,0,2992,2994,5,186,0,0, + 2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994,2995,1,0,0,0,2995,2997,5,79, + 0,0,2996,2998,5,186,0,0,2997,2996,1,0,0,0,2997,2998,1,0,0,0,2998,2999, + 1,0,0,0,2999,3001,3,258,129,0,3000,2993,1,0,0,0,3000,3001,1,0,0,0,3001, + 3003,1,0,0,0,3002,3004,5,186,0,0,3003,3002,1,0,0,0,3003,3004,1,0,0,0, + 3004,3005,1,0,0,0,3005,3006,5,80,0,0,3006,343,1,0,0,0,3007,3009,5,151, + 0,0,3008,3010,5,186,0,0,3009,3008,1,0,0,0,3009,3010,1,0,0,0,3010,3011, + 1,0,0,0,3011,3013,3,258,129,0,3012,3014,5,186,0,0,3013,3012,1,0,0,0,3013, + 3014,1,0,0,0,3014,3015,1,0,0,0,3015,3017,5,140,0,0,3016,3018,5,186,0, + 0,3017,3016,1,0,0,0,3017,3018,1,0,0,0,3018,3019,1,0,0,0,3019,3020,3,258, + 129,0,3020,345,1,0,0,0,3021,3022,3,362,181,0,3022,347,1,0,0,0,3023,3026, + 3,358,179,0,3024,3026,3,356,178,0,3025,3023,1,0,0,0,3025,3024,1,0,0,0, + 3026,349,1,0,0,0,3027,3030,5,25,0,0,3028,3031,3,362,181,0,3029,3031,5, + 173,0,0,3030,3028,1,0,0,0,3030,3029,1,0,0,0,3031,351,1,0,0,0,3032,3034, + 3,304,152,0,3033,3035,5,186,0,0,3034,3033,1,0,0,0,3034,3035,1,0,0,0,3035, + 3036,1,0,0,0,3036,3037,3,340,170,0,3037,353,1,0,0,0,3038,3039,3,362,181, + 0,3039,355,1,0,0,0,3040,3041,5,173,0,0,3041,357,1,0,0,0,3042,3043,7,9, + 0,0,3043,359,1,0,0,0,3044,3047,3,362,181,0,3045,3046,5,5,0,0,3046,3048, + 3,362,181,0,3047,3045,1,0,0,0,3047,3048,1,0,0,0,3048,361,1,0,0,0,3049, + 3055,5,182,0,0,3050,3051,5,185,0,0,3051,3055,6,181,-1,0,3052,3055,5,174, + 0,0,3053,3055,3,364,182,0,3054,3049,1,0,0,0,3054,3050,1,0,0,0,3054,3052, + 1,0,0,0,3054,3053,1,0,0,0,3055,363,1,0,0,0,3056,3057,7,10,0,0,3057,365, + 1,0,0,0,3058,3059,7,11,0,0,3059,367,1,0,0,0,3060,3061,7,12,0,0,3061,369, + 1,0,0,0,3062,3063,7,13,0,0,3063,371,1,0,0,0,524,374,378,383,387,392,395, + 399,402,429,435,442,446,450,454,457,461,465,469,474,478,480,487,491,500, + 505,515,519,523,528,541,545,553,557,561,565,573,577,581,585,600,605,611, + 615,618,621,627,631,636,639,644,648,652,657,675,687,691,698,718,722,725, + 728,731,734,738,743,747,757,761,766,771,776,782,786,790,795,802,806,810, + 813,830,834,838,842,846,849,852,860,865,869,873,877,886,890,895,899,903, + 907,911,913,917,921,923,931,936,940,944,948,953,959,963,976,980,983,986, + 989,993,997,1000,1003,1007,1011,1017,1021,1025,1029,1035,1039,1043,1047, + 1053,1057,1062,1080,1087,1100,1107,1123,1127,1136,1144,1147,1157,1160, + 1168,1171,1177,1180,1186,1201,1219,1226,1233,1244,1267,1276,1282,1286, + 1291,1300,1304,1309,1315,1321,1327,1331,1335,1341,1345,1349,1355,1359, + 1363,1369,1373,1377,1381,1385,1391,1395,1399,1403,1407,1417,1423,1430, + 1435,1441,1446,1463,1469,1475,1479,1483,1492,1506,1511,1516,1520,1525, + 1531,1536,1539,1543,1547,1551,1557,1561,1566,1571,1575,1578,1580,1584, + 1588,1594,1598,1603,1607,1616,1622,1630,1634,1638,1642,1649,1653,1657, + 1661,1664,1667,1674,1680,1684,1689,1696,1699,1702,1707,1711,1715,1720, + 1724,1733,1737,1742,1756,1758,1760,1765,1775,1781,1788,1801,1805,1809, + 1813,1818,1823,1827,1831,1835,1839,1843,1849,1853,1857,1861,1866,1872, + 1875,1881,1884,1890,1894,1898,1902,1906,1911,1916,1920,1925,1928,1937, + 1946,1951,1964,1967,1975,1979,1984,1989,1993,1998,2004,2009,2016,2020, + 2024,2026,2030,2032,2036,2038,2044,2050,2054,2057,2060,2066,2069,2072, + 2076,2082,2085,2088,2092,2096,2100,2102,2106,2108,2112,2114,2118,2120, + 2126,2130,2134,2138,2142,2146,2150,2154,2158,2161,2167,2171,2175,2178, + 2183,2188,2192,2196,2199,2202,2207,2212,2215,2218,2221,2224,2227,2231, + 2235,2239,2243,2253,2256,2259,2263,2266,2269,2273,2277,2281,2285,2289, + 2293,2295,2298,2302,2306,2310,2314,2316,2322,2325,2328,2339,2352,2362, + 2372,2377,2381,2388,2392,2396,2400,2404,2412,2416,2420,2424,2430,2434, + 2440,2444,2449,2454,2458,2463,2468,2472,2478,2485,2489,2495,2502,2506, + 2512,2519,2523,2528,2536,2539,2544,2553,2557,2560,2573,2576,2581,2595, + 2599,2603,2608,2611,2615,2620,2632,2636,2640,2644,2650,2654,2658,2664, + 2668,2672,2678,2682,2686,2690,2708,2714,2718,2722,2726,2729,2735,2738, + 2742,2746,2750,2754,2758,2765,2768,2772,2778,2782,2788,2792,2796,2801, + 2805,2809,2813,2818,2821,2824,2830,2834,2838,2840,2844,2848,2852,2856, + 2859,2863,2869,2874,2876,2880,2884,2889,2893,2898,2902,2906,2910,2914, + 2919,2923,2928,2932,2936,2940,2944,2947,2950,2953,2956,2962,2966,2970, + 2975,2979,2983,2988,2990,2993,2997,3000,3003,3009,3013,3017,3025,3030, + 3034,3047,3054 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1421,29 +1471,29 @@ CypherParser::IC_StatementsContext* CypherParser::iC_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(362); + setState(372); oC_Cypher(); - setState(373); + setState(383); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(364); + setState(374); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(363); + setState(373); match(CypherParser::SP); } - setState(366); + setState(376); match(CypherParser::T__0); - setState(368); + setState(378); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(367); + setState(377); match(CypherParser::SP); break; } @@ -1451,22 +1501,22 @@ CypherParser::IC_StatementsContext* CypherParser::iC_Statements() { default: break; } - setState(370); + setState(380); oC_Cypher(); } - setState(375); + setState(385); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(377); + setState(387); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(376); + setState(386); match(CypherParser::SP); } - setState(379); + setState(389); match(CypherParser::EOF); } @@ -1521,41 +1571,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(382); + setState(392); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(381); + setState(391); oC_AnyCypherOption(); } - setState(385); + setState(395); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(384); + setState(394); match(CypherParser::SP); } - setState(387); + setState(397); oC_Statement(); - setState(392); + setState(402); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(389); + setState(399); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(388); + setState(398); match(CypherParser::SP); } - setState(391); + setState(401); match(CypherParser::T__0); break; } @@ -1600,6 +1650,10 @@ CypherParser::IC_CreateRelTableContext* CypherParser::OC_StatementContext::iC_Cr return getRuleContext(0); } +CypherParser::IC_CreateIndexContext* CypherParser::OC_StatementContext::iC_CreateIndex() { + return getRuleContext(0); +} + CypherParser::IC_CreateSequenceContext* CypherParser::OC_StatementContext::iC_CreateSequence() { return getRuleContext(0); } @@ -1694,173 +1748,180 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(418); + setState(429); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(394); + setState(404); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(395); + setState(405); iC_CreateUser(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(396); + setState(406); iC_CreateRole(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(397); + setState(407); iC_CreateNodeTable(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(398); + setState(408); iC_CreateRelTable(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(399); - iC_CreateSequence(); + setState(409); + iC_CreateIndex(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(400); - iC_CreateType(); + setState(410); + iC_CreateSequence(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(401); - iC_Drop(); + setState(411); + iC_CreateType(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(402); - iC_AlterTable(); + setState(412); + iC_Drop(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(403); - iC_CopyFrom(); + setState(413); + iC_AlterTable(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(404); - iC_CopyFromByColumn(); + setState(414); + iC_CopyFrom(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(405); - iC_CopyTO(); + setState(415); + iC_CopyFromByColumn(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(406); - iC_StandaloneCall(); + setState(416); + iC_CopyTO(); break; } case 14: { enterOuterAlt(_localctx, 14); - setState(407); - iC_CreateMacro(); + setState(417); + iC_StandaloneCall(); break; } case 15: { enterOuterAlt(_localctx, 15); - setState(408); - iC_CommentOn(); + setState(418); + iC_CreateMacro(); break; } case 16: { enterOuterAlt(_localctx, 16); - setState(409); - iC_Transaction(); + setState(419); + iC_CommentOn(); break; } case 17: { enterOuterAlt(_localctx, 17); - setState(410); - iC_Extension(); + setState(420); + iC_Transaction(); break; } case 18: { enterOuterAlt(_localctx, 18); - setState(411); - iC_ExportDatabase(); + setState(421); + iC_Extension(); break; } case 19: { enterOuterAlt(_localctx, 19); - setState(412); - iC_ImportDatabase(); + setState(422); + iC_ExportDatabase(); break; } case 20: { enterOuterAlt(_localctx, 20); - setState(413); - iC_AttachDatabase(); + setState(423); + iC_ImportDatabase(); break; } case 21: { enterOuterAlt(_localctx, 21); - setState(414); - iC_DetachDatabase(); + setState(424); + iC_AttachDatabase(); break; } case 22: { enterOuterAlt(_localctx, 22); - setState(415); - iC_UseDatabase(); + setState(425); + iC_DetachDatabase(); break; } case 23: { enterOuterAlt(_localctx, 23); - setState(416); - iC_CreateGraph(); + setState(426); + iC_UseDatabase(); break; } case 24: { enterOuterAlt(_localctx, 24); - setState(417); + setState(427); + iC_CreateGraph(); + break; + } + + case 25: { + enterOuterAlt(_localctx, 25); + setState(428); iC_UseGraph(); break; } @@ -1937,18 +1998,18 @@ CypherParser::IC_CopyFromContext* CypherParser::iC_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(420); + setState(431); match(CypherParser::COPY); - setState(421); + setState(432); match(CypherParser::SP); - setState(422); + setState(433); oC_SchemaName(); - setState(424); + setState(435); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 9, _ctx)) { case 1: { - setState(423); + setState(434); iC_ColumnNames(); break; } @@ -1956,48 +2017,48 @@ CypherParser::IC_CopyFromContext* CypherParser::iC_CopyFrom() { default: break; } - setState(426); + setState(437); match(CypherParser::SP); - setState(427); + setState(438); match(CypherParser::FROM); - setState(428); + setState(439); match(CypherParser::SP); - setState(429); + setState(440); iC_ScanSource(); - setState(443); + setState(454); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(431); + setState(442); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(430); + setState(441); match(CypherParser::SP); } - setState(433); + setState(444); match(CypherParser::T__1); - setState(435); + setState(446); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(434); + setState(445); match(CypherParser::SP); } - setState(437); + setState(448); iC_Options(); - setState(439); + setState(450); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(438); + setState(449); match(CypherParser::SP); } - setState(441); + setState(452); match(CypherParser::T__2); break; } @@ -2059,74 +2120,74 @@ CypherParser::IC_ColumnNamesContext* CypherParser::iC_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(446); + setState(457); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(445); + setState(456); match(CypherParser::SP); } - setState(448); + setState(459); match(CypherParser::T__1); - setState(450); + setState(461); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(449); + setState(460); match(CypherParser::SP); } - setState(469); + setState(480); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -287985230644762313) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5068755015275819) != 0)) { - setState(452); - oC_SchemaName(); + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { setState(463); + oC_SchemaName(); + setState(474); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(454); + setState(465); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(453); + setState(464); match(CypherParser::SP); } - setState(456); + setState(467); match(CypherParser::T__3); - setState(458); + setState(469); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(457); + setState(468); match(CypherParser::SP); } - setState(460); + setState(471); oC_SchemaName(); } - setState(465); + setState(476); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); } - setState(467); + setState(478); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(466); + setState(477); match(CypherParser::SP); } } - setState(471); + setState(482); match(CypherParser::T__2); } @@ -2196,79 +2257,79 @@ CypherParser::IC_ScanSourceContext* CypherParser::iC_ScanSource() { exitRule(); }); try { - setState(494); + setState(505); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 24, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(473); + setState(484); iC_FilePaths(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(474); + setState(485); match(CypherParser::T__1); - setState(476); + setState(487); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(475); + setState(486); match(CypherParser::SP); } - setState(478); + setState(489); oC_Query(); - setState(480); + setState(491); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(479); + setState(490); match(CypherParser::SP); } - setState(482); + setState(493); match(CypherParser::T__2); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(484); + setState(495); oC_Parameter(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(485); + setState(496); oC_Variable(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(486); + setState(497); oC_Variable(); - setState(487); + setState(498); match(CypherParser::T__4); - setState(489); + setState(500); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(488); + setState(499); match(CypherParser::SP); } - setState(491); + setState(502); oC_SchemaName(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(493); + setState(504); oC_FunctionInvocation(); break; } @@ -2349,67 +2410,67 @@ CypherParser::IC_CopyFromByColumnContext* CypherParser::iC_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(496); + setState(507); match(CypherParser::COPY); - setState(497); + setState(508); match(CypherParser::SP); - setState(498); + setState(509); oC_SchemaName(); - setState(499); + setState(510); match(CypherParser::SP); - setState(500); + setState(511); match(CypherParser::FROM); - setState(501); + setState(512); match(CypherParser::SP); - setState(502); + setState(513); match(CypherParser::T__1); - setState(504); + setState(515); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(503); + setState(514); match(CypherParser::SP); } - setState(506); - match(CypherParser::StringLiteral); setState(517); + match(CypherParser::StringLiteral); + setState(528); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(508); + setState(519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(507); + setState(518); match(CypherParser::SP); } - setState(510); + setState(521); match(CypherParser::T__3); - setState(512); + setState(523); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(511); + setState(522); match(CypherParser::SP); } - setState(514); + setState(525); match(CypherParser::StringLiteral); - setState(519); + setState(530); _errHandler->sync(this); _la = _input->LA(1); } - setState(520); + setState(531); match(CypherParser::T__2); - setState(521); + setState(532); match(CypherParser::SP); - setState(522); + setState(533); match(CypherParser::BY); - setState(523); + setState(534); match(CypherParser::SP); - setState(524); + setState(535); match(CypherParser::COLUMN); } @@ -2476,74 +2537,74 @@ CypherParser::IC_CopyTOContext* CypherParser::iC_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(526); + setState(537); match(CypherParser::COPY); - setState(527); + setState(538); match(CypherParser::SP); - setState(528); + setState(539); match(CypherParser::T__1); - setState(530); + setState(541); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(529); + setState(540); match(CypherParser::SP); } - setState(532); + setState(543); oC_Query(); - setState(534); + setState(545); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(533); + setState(544); match(CypherParser::SP); } - setState(536); + setState(547); match(CypherParser::T__2); - setState(537); + setState(548); match(CypherParser::SP); - setState(538); + setState(549); match(CypherParser::TO); - setState(539); + setState(550); match(CypherParser::SP); - setState(540); + setState(551); match(CypherParser::StringLiteral); - setState(554); + setState(565); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 34, _ctx)) { case 1: { - setState(542); + setState(553); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(541); + setState(552); match(CypherParser::SP); } - setState(544); + setState(555); match(CypherParser::T__1); - setState(546); + setState(557); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(545); + setState(556); match(CypherParser::SP); } - setState(548); + setState(559); iC_Options(); - setState(550); + setState(561); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(549); + setState(560); match(CypherParser::SP); } - setState(552); + setState(563); match(CypherParser::T__2); break; } @@ -2612,50 +2673,50 @@ CypherParser::IC_ExportDatabaseContext* CypherParser::iC_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(556); + setState(567); match(CypherParser::EXPORT); - setState(557); + setState(568); match(CypherParser::SP); - setState(558); + setState(569); match(CypherParser::DATABASE); - setState(559); + setState(570); match(CypherParser::SP); - setState(560); + setState(571); match(CypherParser::StringLiteral); - setState(574); + setState(585); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 38, _ctx)) { case 1: { - setState(562); + setState(573); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(561); + setState(572); match(CypherParser::SP); } - setState(564); + setState(575); match(CypherParser::T__1); - setState(566); + setState(577); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(565); + setState(576); match(CypherParser::SP); } - setState(568); + setState(579); iC_Options(); - setState(570); + setState(581); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(569); + setState(580); match(CypherParser::SP); } - setState(572); + setState(583); match(CypherParser::T__2); break; } @@ -2719,15 +2780,15 @@ CypherParser::IC_ImportDatabaseContext* CypherParser::iC_ImportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(576); + setState(587); match(CypherParser::IMPORT); - setState(577); + setState(588); match(CypherParser::SP); - setState(578); + setState(589); match(CypherParser::DATABASE); - setState(579); + setState(590); match(CypherParser::SP); - setState(580); + setState(591); match(CypherParser::StringLiteral); } @@ -2802,24 +2863,24 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(582); + setState(593); match(CypherParser::ATTACH); - setState(583); + setState(594); match(CypherParser::SP); - setState(584); + setState(595); match(CypherParser::StringLiteral); - setState(589); + setState(600); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) { case 1: { - setState(585); + setState(596); match(CypherParser::SP); - setState(586); + setState(597); match(CypherParser::AS); - setState(587); + setState(598); match(CypherParser::SP); - setState(588); + setState(599); oC_SchemaName(); break; } @@ -2827,48 +2888,48 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { default: break; } - setState(591); + setState(602); match(CypherParser::SP); - setState(592); + setState(603); match(CypherParser::T__1); - setState(594); + setState(605); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(593); + setState(604); match(CypherParser::SP); } - setState(596); + setState(607); match(CypherParser::DBTYPE); - setState(597); + setState(608); match(CypherParser::SP); - setState(598); + setState(609); oC_SymbolicName(); - setState(607); + setState(618); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { - setState(600); + setState(611); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(599); + setState(610); match(CypherParser::SP); } - setState(602); + setState(613); match(CypherParser::T__3); - setState(604); + setState(615); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(603); + setState(614); match(CypherParser::SP); } - setState(606); + setState(617); iC_Options(); break; } @@ -2876,15 +2937,15 @@ CypherParser::IC_AttachDatabaseContext* CypherParser::iC_AttachDatabase() { default: break; } - setState(610); + setState(621); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(609); + setState(620); match(CypherParser::SP); } - setState(612); + setState(623); match(CypherParser::T__2); } @@ -2938,46 +2999,46 @@ CypherParser::IC_OptionContext* CypherParser::iC_Option() { exitRule(); }); try { - setState(633); + setState(644); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(614); + setState(625); oC_SymbolicName(); - setState(628); + setState(639); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 48, _ctx)) { case 1: { - setState(616); + setState(627); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(615); + setState(626); match(CypherParser::SP); } - setState(618); + setState(629); match(CypherParser::T__5); - setState(620); + setState(631); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(619); + setState(630); match(CypherParser::SP); } break; } case 2: { - setState(625); + setState(636); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::SP) { - setState(622); + setState(633); match(CypherParser::SP); - setState(627); + setState(638); _errHandler->sync(this); _la = _input->LA(1); } @@ -2987,14 +3048,14 @@ CypherParser::IC_OptionContext* CypherParser::iC_Option() { default: break; } - setState(630); + setState(641); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(632); + setState(643); oC_SymbolicName(); break; } @@ -3056,35 +3117,35 @@ CypherParser::IC_OptionsContext* CypherParser::iC_Options() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(635); - iC_Option(); setState(646); + iC_Option(); + setState(657); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(637); + setState(648); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(636); + setState(647); match(CypherParser::SP); } - setState(639); + setState(650); match(CypherParser::T__3); - setState(641); + setState(652); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(640); + setState(651); match(CypherParser::SP); } - setState(643); + setState(654); iC_Option(); } - setState(648); + setState(659); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); } @@ -3136,11 +3197,11 @@ CypherParser::IC_DetachDatabaseContext* CypherParser::iC_DetachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(649); + setState(660); match(CypherParser::DETACH); - setState(650); + setState(661); match(CypherParser::SP); - setState(651); + setState(662); oC_SchemaName(); } @@ -3190,11 +3251,11 @@ CypherParser::IC_UseDatabaseContext* CypherParser::iC_UseDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(653); + setState(664); match(CypherParser::USE); - setState(654); + setState(665); match(CypherParser::SP); - setState(655); + setState(666); oC_SchemaName(); } @@ -3256,24 +3317,24 @@ CypherParser::IC_CreateGraphContext* CypherParser::iC_CreateGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(657); + setState(668); match(CypherParser::CREATE); - setState(658); + setState(669); match(CypherParser::SP); - setState(659); + setState(670); match(CypherParser::GRAPH); - setState(660); + setState(671); match(CypherParser::SP); - setState(661); + setState(672); oC_SchemaName(); - setState(664); + setState(675); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 53, _ctx)) { case 1: { - setState(662); + setState(673); match(CypherParser::SP); - setState(663); + setState(674); match(CypherParser::ANY); break; } @@ -3337,15 +3398,15 @@ CypherParser::IC_UseGraphContext* CypherParser::iC_UseGraph() { }); try { enterOuterAlt(_localctx, 1); - setState(666); + setState(677); match(CypherParser::USE); - setState(667); + setState(678); match(CypherParser::SP); - setState(668); + setState(679); match(CypherParser::GRAPH); - setState(669); + setState(680); match(CypherParser::SP); - setState(670); + setState(681); oC_SchemaName(); } @@ -3407,47 +3468,47 @@ CypherParser::IC_StandaloneCallContext* CypherParser::iC_StandaloneCall() { exitRule(); }); try { - setState(687); + setState(698); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 56, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(672); + setState(683); match(CypherParser::CALL); - setState(673); + setState(684); match(CypherParser::SP); - setState(674); + setState(685); oC_SymbolicName(); - setState(676); + setState(687); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(675); + setState(686); match(CypherParser::SP); } - setState(678); + setState(689); match(CypherParser::T__5); - setState(680); + setState(691); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(679); + setState(690); match(CypherParser::SP); } - setState(682); + setState(693); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(684); + setState(695); match(CypherParser::CALL); - setState(685); + setState(696); match(CypherParser::SP); - setState(686); + setState(697); oC_FunctionInvocation(); break; } @@ -3523,27 +3584,27 @@ CypherParser::IC_CommentOnContext* CypherParser::iC_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(689); + setState(700); match(CypherParser::COMMENT); - setState(690); + setState(701); match(CypherParser::SP); - setState(691); + setState(702); match(CypherParser::ON); - setState(692); + setState(703); match(CypherParser::SP); - setState(693); + setState(704); match(CypherParser::TABLE); - setState(694); + setState(705); match(CypherParser::SP); - setState(695); + setState(706); oC_SchemaName(); - setState(696); + setState(707); match(CypherParser::SP); - setState(697); + setState(708); match(CypherParser::IS); - setState(698); + setState(709); match(CypherParser::SP); - setState(699); + setState(710); match(CypherParser::StringLiteral); } @@ -3623,32 +3684,32 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(701); + setState(712); match(CypherParser::CREATE); - setState(702); + setState(713); match(CypherParser::SP); - setState(703); + setState(714); match(CypherParser::MACRO); - setState(704); + setState(715); match(CypherParser::SP); - setState(705); + setState(716); oC_FunctionName(); - setState(707); + setState(718); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(706); + setState(717); match(CypherParser::SP); } - setState(709); + setState(720); match(CypherParser::T__1); - setState(711); + setState(722); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 58, _ctx)) { case 1: { - setState(710); + setState(721); match(CypherParser::SP); break; } @@ -3656,12 +3717,12 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(714); + setState(725); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { case 1: { - setState(713); + setState(724); iC_PositionalArgs(); break; } @@ -3669,12 +3730,12 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(717); + setState(728); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { case 1: { - setState(716); + setState(727); match(CypherParser::SP); break; } @@ -3682,64 +3743,64 @@ CypherParser::IC_CreateMacroContext* CypherParser::iC_CreateMacro() { default: break; } - setState(720); + setState(731); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -287985230644762313) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5068755015275819) != 0)) { - setState(719); + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(730); iC_DefaultArg(); } - setState(732); + setState(743); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(723); + setState(734); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(722); + setState(733); match(CypherParser::SP); } - setState(725); + setState(736); match(CypherParser::T__3); - setState(727); + setState(738); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(726); + setState(737); match(CypherParser::SP); } - setState(729); + setState(740); iC_DefaultArg(); } - setState(734); + setState(745); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); } - setState(736); + setState(747); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(735); + setState(746); match(CypherParser::SP); } - setState(738); + setState(749); match(CypherParser::T__2); - setState(739); + setState(750); match(CypherParser::SP); - setState(740); + setState(751); match(CypherParser::AS); - setState(741); + setState(752); match(CypherParser::SP); - setState(742); + setState(753); oC_Expression(); } @@ -3795,35 +3856,35 @@ CypherParser::IC_PositionalArgsContext* CypherParser::iC_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(744); - oC_SymbolicName(); setState(755); + oC_SymbolicName(); + setState(766); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(746); + setState(757); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(745); + setState(756); match(CypherParser::SP); } - setState(748); + setState(759); match(CypherParser::T__3); - setState(750); + setState(761); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(749); + setState(760); match(CypherParser::SP); } - setState(752); + setState(763); oC_SymbolicName(); } - setState(757); + setState(768); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); } @@ -3884,29 +3945,29 @@ CypherParser::IC_DefaultArgContext* CypherParser::iC_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(758); + setState(769); oC_SymbolicName(); - setState(760); + setState(771); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(759); + setState(770); match(CypherParser::SP); } - setState(762); + setState(773); match(CypherParser::COLON); - setState(763); + setState(774); match(CypherParser::T__5); - setState(765); + setState(776); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(764); + setState(775); match(CypherParser::SP); } - setState(767); + setState(778); oC_Literal(); } @@ -3964,96 +4025,96 @@ CypherParser::IC_FilePathsContext* CypherParser::iC_FilePaths() { exitRule(); }); try { - setState(802); + setState(813); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__6: { enterOuterAlt(_localctx, 1); - setState(769); + setState(780); match(CypherParser::T__6); - setState(771); + setState(782); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(770); + setState(781); match(CypherParser::SP); } - setState(773); - match(CypherParser::StringLiteral); setState(784); + match(CypherParser::StringLiteral); + setState(795); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3 || _la == CypherParser::SP) { - setState(775); + setState(786); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(774); + setState(785); match(CypherParser::SP); } - setState(777); + setState(788); match(CypherParser::T__3); - setState(779); + setState(790); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(778); + setState(789); match(CypherParser::SP); } - setState(781); + setState(792); match(CypherParser::StringLiteral); - setState(786); + setState(797); _errHandler->sync(this); _la = _input->LA(1); } - setState(787); + setState(798); match(CypherParser::T__7); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(788); + setState(799); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(789); + setState(800); match(CypherParser::GLOB); - setState(791); + setState(802); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(790); + setState(801); match(CypherParser::SP); } - setState(793); + setState(804); match(CypherParser::T__1); - setState(795); + setState(806); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(794); + setState(805); match(CypherParser::SP); } - setState(797); + setState(808); match(CypherParser::StringLiteral); - setState(799); + setState(810); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(798); + setState(809); match(CypherParser::SP); } - setState(801); + setState(812); match(CypherParser::T__2); break; } @@ -4117,15 +4178,15 @@ CypherParser::IC_IfNotExistsContext* CypherParser::iC_IfNotExists() { }); try { enterOuterAlt(_localctx, 1); - setState(804); + setState(815); match(CypherParser::IF); - setState(805); + setState(816); match(CypherParser::SP); - setState(806); + setState(817); match(CypherParser::NOT); - setState(807); + setState(818); match(CypherParser::SP); - setState(808); + setState(819); match(CypherParser::EXISTS); } @@ -4216,26 +4277,26 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(810); + setState(821); match(CypherParser::CREATE); - setState(811); + setState(822); match(CypherParser::SP); - setState(812); + setState(823); match(CypherParser::NODE); - setState(813); + setState(824); match(CypherParser::SP); - setState(814); + setState(825); match(CypherParser::TABLE); - setState(815); + setState(826); match(CypherParser::SP); - setState(819); + setState(830); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { case 1: { - setState(816); + setState(827); iC_IfNotExists(); - setState(817); + setState(828); match(CypherParser::SP); break; } @@ -4243,38 +4304,38 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(821); + setState(832); oC_SchemaName(); - setState(849); + setState(860); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 86, _ctx)) { case 1: { - setState(823); + setState(834); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(822); + setState(833); match(CypherParser::SP); } - setState(825); + setState(836); match(CypherParser::T__1); - setState(827); + setState(838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(826); + setState(837); match(CypherParser::SP); } - setState(829); + setState(840); iC_PropertyDefinitions(); - setState(831); + setState(842); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 82, _ctx)) { case 1: { - setState(830); + setState(841); match(CypherParser::SP); break; } @@ -4282,45 +4343,45 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(838); + setState(849); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(833); + setState(844); match(CypherParser::T__3); - setState(835); + setState(846); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(834); + setState(845); match(CypherParser::SP); } - setState(837); + setState(848); iC_CreateNodeConstraint(); } - setState(841); + setState(852); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(840); + setState(851); match(CypherParser::SP); } - setState(843); + setState(854); match(CypherParser::T__2); break; } case 2: { - setState(845); + setState(856); match(CypherParser::SP); - setState(846); + setState(857); match(CypherParser::AS); - setState(847); + setState(858); match(CypherParser::SP); - setState(848); + setState(859); oC_Query(); break; } @@ -4328,44 +4389,44 @@ CypherParser::IC_CreateNodeTableContext* CypherParser::iC_CreateNodeTable() { default: break; } - setState(866); + setState(877); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 90, _ctx)) { case 1: { - setState(851); + setState(862); match(CypherParser::SP); - setState(852); + setState(863); match(CypherParser::WITH); - setState(854); + setState(865); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(853); + setState(864); match(CypherParser::SP); } - setState(856); + setState(867); match(CypherParser::T__1); - setState(858); + setState(869); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(857); + setState(868); match(CypherParser::SP); } - setState(860); + setState(871); iC_Options(); - setState(862); + setState(873); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(861); + setState(872); match(CypherParser::SP); } - setState(864); + setState(875); match(CypherParser::T__2); break; } @@ -4470,24 +4531,24 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(868); + setState(879); match(CypherParser::CREATE); - setState(869); + setState(880); match(CypherParser::SP); - setState(870); + setState(881); match(CypherParser::REL); - setState(871); + setState(882); match(CypherParser::SP); - setState(872); + setState(883); match(CypherParser::TABLE); - setState(875); + setState(886); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) { case 1: { - setState(873); + setState(884); match(CypherParser::SP); - setState(874); + setState(885); match(CypherParser::GROUP); break; } @@ -4495,14 +4556,14 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(879); + setState(890); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 92, _ctx)) { case 1: { - setState(877); + setState(888); match(CypherParser::SP); - setState(878); + setState(889); iC_IfNotExists(); break; } @@ -4510,65 +4571,65 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(881); + setState(892); match(CypherParser::SP); - setState(882); + setState(893); oC_SchemaName(); - setState(884); + setState(895); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(883); + setState(894); match(CypherParser::SP); } - setState(886); + setState(897); match(CypherParser::T__1); - setState(888); + setState(899); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(887); + setState(898); match(CypherParser::SP); } - setState(890); + setState(901); iC_FromToConnections(); - setState(892); + setState(903); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(891); + setState(902); match(CypherParser::SP); } - setState(920); + setState(931); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 102, _ctx)) { case 1: { - setState(902); + setState(913); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 98, _ctx)) { case 1: { - setState(894); + setState(905); match(CypherParser::T__3); - setState(896); + setState(907); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(895); + setState(906); match(CypherParser::SP); } - setState(898); + setState(909); iC_PropertyDefinitions(); - setState(900); + setState(911); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(899); + setState(910); match(CypherParser::SP); } break; @@ -4577,47 +4638,47 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(912); + setState(923); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__3) { - setState(904); + setState(915); match(CypherParser::T__3); - setState(906); + setState(917); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(905); + setState(916); match(CypherParser::SP); } - setState(908); + setState(919); oC_SymbolicName(); - setState(910); + setState(921); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(909); + setState(920); match(CypherParser::SP); } } - setState(914); + setState(925); match(CypherParser::T__2); break; } case 2: { - setState(915); + setState(926); match(CypherParser::T__2); - setState(916); + setState(927); match(CypherParser::SP); - setState(917); + setState(928); match(CypherParser::AS); - setState(918); + setState(929); match(CypherParser::SP); - setState(919); + setState(930); oC_Query(); break; } @@ -4625,44 +4686,44 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { default: break; } - setState(937); + setState(948); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) { case 1: { - setState(922); + setState(933); match(CypherParser::SP); - setState(923); + setState(934); match(CypherParser::WITH); - setState(925); + setState(936); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(924); + setState(935); match(CypherParser::SP); } - setState(927); + setState(938); match(CypherParser::T__1); - setState(929); + setState(940); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(928); + setState(939); match(CypherParser::SP); } - setState(931); + setState(942); iC_Options(); - setState(933); + setState(944); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(932); + setState(943); match(CypherParser::SP); } - setState(935); + setState(946); match(CypherParser::T__2); break; } @@ -4681,18 +4742,595 @@ CypherParser::IC_CreateRelTableContext* CypherParser::iC_CreateRelTable() { return _localctx; } -//----------------- IC_FromToConnectionsContext ------------------------------------------------------------------ +//----------------- IC_CreateIndexContext ------------------------------------------------------------------ -CypherParser::IC_FromToConnectionsContext::IC_FromToConnectionsContext(ParserRuleContext *parent, size_t invokingState) +CypherParser::IC_CreateIndexContext::IC_CreateIndexContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector CypherParser::IC_FromToConnectionsContext::iC_FromToConnection() { - return getRuleContexts(); +tree::TerminalNode* CypherParser::IC_CreateIndexContext::CREATE() { + return getToken(CypherParser::CREATE, 0); } -CypherParser::IC_FromToConnectionContext* CypherParser::IC_FromToConnectionsContext::iC_FromToConnection(size_t i) { - return getRuleContext(i); +std::vector CypherParser::IC_CreateIndexContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_CreateIndexContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + +tree::TerminalNode* CypherParser::IC_CreateIndexContext::INDEX() { + return getToken(CypherParser::INDEX, 0); +} + +tree::TerminalNode* CypherParser::IC_CreateIndexContext::FOR() { + return getToken(CypherParser::FOR, 0); +} + +CypherParser::IC_IndexPatternContext* CypherParser::IC_CreateIndexContext::iC_IndexPattern() { + return getRuleContext(0); +} + +tree::TerminalNode* CypherParser::IC_CreateIndexContext::ON() { + return getToken(CypherParser::ON, 0); +} + +CypherParser::IC_IndexPropertyPatternContext* CypherParser::IC_CreateIndexContext::iC_IndexPropertyPattern() { + return getRuleContext(0); +} + +CypherParser::OC_SymbolicNameContext* CypherParser::IC_CreateIndexContext::oC_SymbolicName() { + return getRuleContext(0); +} + +CypherParser::OC_SchemaNameContext* CypherParser::IC_CreateIndexContext::oC_SchemaName() { + return getRuleContext(0); +} + +CypherParser::IC_IfNotExistsContext* CypherParser::IC_CreateIndexContext::iC_IfNotExists() { + return getRuleContext(0); +} + +tree::TerminalNode* CypherParser::IC_CreateIndexContext::OPTIONS() { + return getToken(CypherParser::OPTIONS, 0); +} + +CypherParser::IC_OptionsContext* CypherParser::IC_CreateIndexContext::iC_Options() { + return getRuleContext(0); +} + + +size_t CypherParser::IC_CreateIndexContext::getRuleIndex() const { + return CypherParser::RuleIC_CreateIndex; +} + + +CypherParser::IC_CreateIndexContext* CypherParser::iC_CreateIndex() { + IC_CreateIndexContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 52, CypherParser::RuleIC_CreateIndex); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(950); + match(CypherParser::CREATE); + setState(953); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 107, _ctx)) { + case 1: { + setState(951); + match(CypherParser::SP); + setState(952); + oC_SymbolicName(); + break; + } + + default: + break; + } + setState(955); + match(CypherParser::SP); + setState(956); + match(CypherParser::INDEX); + setState(959); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 108, _ctx)) { + case 1: { + setState(957); + match(CypherParser::SP); + setState(958); + oC_SchemaName(); + break; + } + + default: + break; + } + setState(963); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 109, _ctx)) { + case 1: { + setState(961); + match(CypherParser::SP); + setState(962); + iC_IfNotExists(); + break; + } + + default: + break; + } + setState(965); + match(CypherParser::SP); + setState(966); + match(CypherParser::FOR); + setState(967); + match(CypherParser::SP); + setState(968); + iC_IndexPattern(); + setState(969); + match(CypherParser::SP); + setState(970); + match(CypherParser::ON); + setState(971); + match(CypherParser::SP); + setState(972); + iC_IndexPropertyPattern(); + setState(989); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 114, _ctx)) { + case 1: { + setState(973); + match(CypherParser::SP); + setState(974); + match(CypherParser::OPTIONS); + setState(976); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(975); + match(CypherParser::SP); + } + setState(978); + match(CypherParser::T__8); + setState(980); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 111, _ctx)) { + case 1: { + setState(979); + match(CypherParser::SP); + break; + } + + default: + break; + } + setState(983); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(982); + iC_Options(); + } + setState(986); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(985); + match(CypherParser::SP); + } + setState(988); + match(CypherParser::T__9); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_IndexPatternContext ------------------------------------------------------------------ + +CypherParser::IC_IndexPatternContext::IC_IndexPatternContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +CypherParser::IC_IndexNodePatternContext* CypherParser::IC_IndexPatternContext::iC_IndexNodePattern() { + return getRuleContext(0); +} + +CypherParser::IC_IndexRelationshipPatternContext* CypherParser::IC_IndexPatternContext::iC_IndexRelationshipPattern() { + return getRuleContext(0); +} + + +size_t CypherParser::IC_IndexPatternContext::getRuleIndex() const { + return CypherParser::RuleIC_IndexPattern; +} + + +CypherParser::IC_IndexPatternContext* CypherParser::iC_IndexPattern() { + IC_IndexPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 54, CypherParser::RuleIC_IndexPattern); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(993); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 115, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(991); + iC_IndexNodePattern(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(992); + iC_IndexRelationshipPattern(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_IndexNodePatternContext ------------------------------------------------------------------ + +CypherParser::IC_IndexNodePatternContext::IC_IndexNodePatternContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* CypherParser::IC_IndexNodePatternContext::COLON() { + return getToken(CypherParser::COLON, 0); +} + +CypherParser::OC_LabelNameContext* CypherParser::IC_IndexNodePatternContext::oC_LabelName() { + return getRuleContext(0); +} + +std::vector CypherParser::IC_IndexNodePatternContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_IndexNodePatternContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + +CypherParser::OC_VariableContext* CypherParser::IC_IndexNodePatternContext::oC_Variable() { + return getRuleContext(0); +} + + +size_t CypherParser::IC_IndexNodePatternContext::getRuleIndex() const { + return CypherParser::RuleIC_IndexNodePattern; +} + + +CypherParser::IC_IndexNodePatternContext* CypherParser::iC_IndexNodePattern() { + IC_IndexNodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 56, CypherParser::RuleIC_IndexNodePattern); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(995); + match(CypherParser::T__1); + setState(997); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 116, _ctx)) { + case 1: { + setState(996); + match(CypherParser::SP); + break; + } + + default: + break; + } + setState(1000); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(999); + oC_Variable(); + } + setState(1003); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1002); + match(CypherParser::SP); + } + setState(1005); + match(CypherParser::COLON); + setState(1007); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1006); + match(CypherParser::SP); + } + setState(1009); + oC_LabelName(); + setState(1011); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1010); + match(CypherParser::SP); + } + setState(1013); + match(CypherParser::T__2); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_IndexRelationshipPatternContext ------------------------------------------------------------------ + +CypherParser::IC_IndexRelationshipPatternContext::IC_IndexRelationshipPatternContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +CypherParser::OC_RelationshipPatternContext* CypherParser::IC_IndexRelationshipPatternContext::oC_RelationshipPattern() { + return getRuleContext(0); +} + +std::vector CypherParser::IC_IndexRelationshipPatternContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_IndexRelationshipPatternContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + + +size_t CypherParser::IC_IndexRelationshipPatternContext::getRuleIndex() const { + return CypherParser::RuleIC_IndexRelationshipPattern; +} + + +CypherParser::IC_IndexRelationshipPatternContext* CypherParser::iC_IndexRelationshipPattern() { + IC_IndexRelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 58, CypherParser::RuleIC_IndexRelationshipPattern); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1015); + match(CypherParser::T__1); + setState(1017); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1016); + match(CypherParser::SP); + } + setState(1019); + match(CypherParser::T__2); + setState(1021); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1020); + match(CypherParser::SP); + } + setState(1023); + oC_RelationshipPattern(); + setState(1025); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1024); + match(CypherParser::SP); + } + setState(1027); + match(CypherParser::T__1); + setState(1029); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1028); + match(CypherParser::SP); + } + setState(1031); + match(CypherParser::T__2); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_IndexPropertyPatternContext ------------------------------------------------------------------ + +CypherParser::IC_IndexPropertyPatternContext::IC_IndexPropertyPatternContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +CypherParser::OC_VariableContext* CypherParser::IC_IndexPropertyPatternContext::oC_Variable() { + return getRuleContext(0); +} + +CypherParser::OC_PropertyKeyNameContext* CypherParser::IC_IndexPropertyPatternContext::oC_PropertyKeyName() { + return getRuleContext(0); +} + +std::vector CypherParser::IC_IndexPropertyPatternContext::SP() { + return getTokens(CypherParser::SP); +} + +tree::TerminalNode* CypherParser::IC_IndexPropertyPatternContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + + +size_t CypherParser::IC_IndexPropertyPatternContext::getRuleIndex() const { + return CypherParser::RuleIC_IndexPropertyPattern; +} + + +CypherParser::IC_IndexPropertyPatternContext* CypherParser::iC_IndexPropertyPattern() { + IC_IndexPropertyPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 60, CypherParser::RuleIC_IndexPropertyPattern); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1033); + match(CypherParser::T__1); + setState(1035); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1034); + match(CypherParser::SP); + } + setState(1037); + oC_Variable(); + setState(1039); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1038); + match(CypherParser::SP); + } + setState(1041); + match(CypherParser::T__4); + setState(1043); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1042); + match(CypherParser::SP); + } + setState(1045); + oC_PropertyKeyName(); + setState(1047); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == CypherParser::SP) { + setState(1046); + match(CypherParser::SP); + } + setState(1049); + match(CypherParser::T__2); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IC_FromToConnectionsContext ------------------------------------------------------------------ + +CypherParser::IC_FromToConnectionsContext::IC_FromToConnectionsContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector CypherParser::IC_FromToConnectionsContext::iC_FromToConnection() { + return getRuleContexts(); +} + +CypherParser::IC_FromToConnectionContext* CypherParser::IC_FromToConnectionsContext::iC_FromToConnection(size_t i) { + return getRuleContext(i); } std::vector CypherParser::IC_FromToConnectionsContext::SP() { @@ -4711,7 +5349,7 @@ size_t CypherParser::IC_FromToConnectionsContext::getRuleIndex() const { CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() { IC_FromToConnectionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, CypherParser::RuleIC_FromToConnections); + enterRule(_localctx, 62, CypherParser::RuleIC_FromToConnections); size_t _la = 0; #if __cplusplus > 201703L @@ -4724,37 +5362,37 @@ CypherParser::IC_FromToConnectionsContext* CypherParser::iC_FromToConnections() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(939); + setState(1051); iC_FromToConnection(); - setState(950); + setState(1062); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 109, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 131, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(941); + setState(1053); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(940); + setState(1052); match(CypherParser::SP); } - setState(943); + setState(1055); match(CypherParser::T__3); - setState(945); + setState(1057); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(944); + setState(1056); match(CypherParser::SP); } - setState(947); + setState(1059); iC_FromToConnection(); } - setState(952); + setState(1064); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 109, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 131, _ctx); } } @@ -4805,7 +5443,7 @@ size_t CypherParser::IC_FromToConnectionContext::getRuleIndex() const { CypherParser::IC_FromToConnectionContext* CypherParser::iC_FromToConnection() { IC_FromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, CypherParser::RuleIC_FromToConnection); + enterRule(_localctx, 64, CypherParser::RuleIC_FromToConnection); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4816,19 +5454,19 @@ CypherParser::IC_FromToConnectionContext* CypherParser::iC_FromToConnection() { }); try { enterOuterAlt(_localctx, 1); - setState(953); + setState(1065); match(CypherParser::FROM); - setState(954); + setState(1066); match(CypherParser::SP); - setState(955); + setState(1067); oC_SchemaName(); - setState(956); + setState(1068); match(CypherParser::SP); - setState(957); + setState(1069); match(CypherParser::TO); - setState(958); + setState(1070); match(CypherParser::SP); - setState(959); + setState(1071); oC_SchemaName(); } @@ -4887,7 +5525,7 @@ size_t CypherParser::IC_CreateSequenceContext::getRuleIndex() const { CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { IC_CreateSequenceContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, CypherParser::RuleIC_CreateSequence); + enterRule(_localctx, 66, CypherParser::RuleIC_CreateSequence); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4899,22 +5537,22 @@ CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(961); + setState(1073); match(CypherParser::CREATE); - setState(962); + setState(1074); match(CypherParser::SP); - setState(963); + setState(1075); match(CypherParser::SEQUENCE); - setState(964); + setState(1076); match(CypherParser::SP); - setState(968); + setState(1080); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 110, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 132, _ctx)) { case 1: { - setState(965); + setState(1077); iC_IfNotExists(); - setState(966); + setState(1078); match(CypherParser::SP); break; } @@ -4922,21 +5560,21 @@ CypherParser::IC_CreateSequenceContext* CypherParser::iC_CreateSequence() { default: break; } - setState(970); + setState(1082); oC_SchemaName(); - setState(975); + setState(1087); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 111, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(971); + setState(1083); match(CypherParser::SP); - setState(972); + setState(1084); iC_SequenceOptions(); } - setState(977); + setState(1089); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 111, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 133, _ctx); } } @@ -4991,7 +5629,7 @@ size_t CypherParser::IC_CreateTypeContext::getRuleIndex() const { CypherParser::IC_CreateTypeContext* CypherParser::iC_CreateType() { IC_CreateTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, CypherParser::RuleIC_CreateType); + enterRule(_localctx, 68, CypherParser::RuleIC_CreateType); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5002,30 +5640,30 @@ CypherParser::IC_CreateTypeContext* CypherParser::iC_CreateType() { }); try { enterOuterAlt(_localctx, 1); - setState(978); + setState(1090); match(CypherParser::CREATE); - setState(979); + setState(1091); match(CypherParser::SP); - setState(980); + setState(1092); match(CypherParser::TYPE); - setState(981); + setState(1093); match(CypherParser::SP); - setState(982); + setState(1094); oC_SchemaName(); - setState(983); + setState(1095); match(CypherParser::SP); - setState(984); + setState(1096); match(CypherParser::AS); - setState(985); + setState(1097); match(CypherParser::SP); - setState(986); + setState(1098); iC_DataType(0); - setState(988); + setState(1100); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 112, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 134, _ctx)) { case 1: { - setState(987); + setState(1099); match(CypherParser::SP); break; } @@ -5078,7 +5716,7 @@ size_t CypherParser::IC_SequenceOptionsContext::getRuleIndex() const { CypherParser::IC_SequenceOptionsContext* CypherParser::iC_SequenceOptions() { IC_SequenceOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, CypherParser::RuleIC_SequenceOptions); + enterRule(_localctx, 70, CypherParser::RuleIC_SequenceOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5088,40 +5726,40 @@ CypherParser::IC_SequenceOptionsContext* CypherParser::iC_SequenceOptions() { exitRule(); }); try { - setState(995); + setState(1107); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 113, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 135, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(990); + setState(1102); iC_IncrementBy(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(991); + setState(1103); iC_MinValue(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(992); + setState(1104); iC_MaxValue(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(993); + setState(1105); iC_StartWith(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(994); + setState(1106); iC_Cycle(); break; } @@ -5174,7 +5812,7 @@ size_t CypherParser::IC_WithPasswdContext::getRuleIndex() const { CypherParser::IC_WithPasswdContext* CypherParser::iC_WithPasswd() { IC_WithPasswdContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, CypherParser::RuleIC_WithPasswd); + enterRule(_localctx, 72, CypherParser::RuleIC_WithPasswd); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5185,17 +5823,17 @@ CypherParser::IC_WithPasswdContext* CypherParser::iC_WithPasswd() { }); try { enterOuterAlt(_localctx, 1); - setState(997); + setState(1109); match(CypherParser::SP); - setState(998); + setState(1110); match(CypherParser::WITH); - setState(999); + setState(1111); match(CypherParser::SP); - setState(1000); + setState(1112); match(CypherParser::PASSWORD); - setState(1001); + setState(1113); match(CypherParser::SP); - setState(1002); + setState(1114); match(CypherParser::StringLiteral); } @@ -5250,7 +5888,7 @@ size_t CypherParser::IC_CreateUserContext::getRuleIndex() const { CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { IC_CreateUserContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, CypherParser::RuleIC_CreateUser); + enterRule(_localctx, 74, CypherParser::RuleIC_CreateUser); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5261,22 +5899,22 @@ CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { }); try { enterOuterAlt(_localctx, 1); - setState(1004); + setState(1116); match(CypherParser::CREATE); - setState(1005); + setState(1117); match(CypherParser::SP); - setState(1006); + setState(1118); match(CypherParser::USER); - setState(1007); + setState(1119); match(CypherParser::SP); - setState(1011); + setState(1123); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 114, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 136, _ctx)) { case 1: { - setState(1008); + setState(1120); iC_IfNotExists(); - setState(1009); + setState(1121); match(CypherParser::SP); break; } @@ -5284,14 +5922,14 @@ CypherParser::IC_CreateUserContext* CypherParser::iC_CreateUser() { default: break; } - setState(1013); + setState(1125); oC_Variable(); - setState(1015); + setState(1127); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 115, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 137, _ctx)) { case 1: { - setState(1014); + setState(1126); iC_WithPasswd(); break; } @@ -5348,7 +5986,7 @@ size_t CypherParser::IC_CreateRoleContext::getRuleIndex() const { CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { IC_CreateRoleContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, CypherParser::RuleIC_CreateRole); + enterRule(_localctx, 76, CypherParser::RuleIC_CreateRole); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5359,22 +5997,22 @@ CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { }); try { enterOuterAlt(_localctx, 1); - setState(1017); + setState(1129); match(CypherParser::CREATE); - setState(1018); + setState(1130); match(CypherParser::SP); - setState(1019); + setState(1131); match(CypherParser::ROLE); - setState(1020); + setState(1132); match(CypherParser::SP); - setState(1024); + setState(1136); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 116, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 138, _ctx)) { case 1: { - setState(1021); + setState(1133); iC_IfNotExists(); - setState(1022); + setState(1134); match(CypherParser::SP); break; } @@ -5382,7 +6020,7 @@ CypherParser::IC_CreateRoleContext* CypherParser::iC_CreateRole() { default: break; } - setState(1026); + setState(1138); oC_Variable(); } @@ -5433,7 +6071,7 @@ size_t CypherParser::IC_IncrementByContext::getRuleIndex() const { CypherParser::IC_IncrementByContext* CypherParser::iC_IncrementBy() { IC_IncrementByContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, CypherParser::RuleIC_IncrementBy); + enterRule(_localctx, 78, CypherParser::RuleIC_IncrementBy); size_t _la = 0; #if __cplusplus > 201703L @@ -5445,29 +6083,29 @@ CypherParser::IC_IncrementByContext* CypherParser::iC_IncrementBy() { }); try { enterOuterAlt(_localctx, 1); - setState(1028); + setState(1140); match(CypherParser::INCREMENT); - setState(1029); + setState(1141); match(CypherParser::SP); - setState(1032); + setState(1144); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::BY) { - setState(1030); + setState(1142); match(CypherParser::BY); - setState(1031); + setState(1143); match(CypherParser::SP); } - setState(1035); + setState(1147); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1034); + setState(1146); match(CypherParser::MINUS); } - setState(1037); + setState(1149); oC_IntegerLiteral(); } @@ -5514,7 +6152,7 @@ size_t CypherParser::IC_MinValueContext::getRuleIndex() const { CypherParser::IC_MinValueContext* CypherParser::iC_MinValue() { IC_MinValueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, CypherParser::RuleIC_MinValue); + enterRule(_localctx, 80, CypherParser::RuleIC_MinValue); size_t _la = 0; #if __cplusplus > 201703L @@ -5525,35 +6163,35 @@ CypherParser::IC_MinValueContext* CypherParser::iC_MinValue() { exitRule(); }); try { - setState(1048); + setState(1160); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(1039); + setState(1151); match(CypherParser::NO); - setState(1040); + setState(1152); match(CypherParser::SP); - setState(1041); + setState(1153); match(CypherParser::MINVALUE); break; } case CypherParser::MINVALUE: { enterOuterAlt(_localctx, 2); - setState(1042); + setState(1154); match(CypherParser::MINVALUE); - setState(1043); + setState(1155); match(CypherParser::SP); - setState(1045); + setState(1157); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1044); + setState(1156); match(CypherParser::MINUS); } - setState(1047); + setState(1159); oC_IntegerLiteral(); break; } @@ -5606,7 +6244,7 @@ size_t CypherParser::IC_MaxValueContext::getRuleIndex() const { CypherParser::IC_MaxValueContext* CypherParser::iC_MaxValue() { IC_MaxValueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, CypherParser::RuleIC_MaxValue); + enterRule(_localctx, 82, CypherParser::RuleIC_MaxValue); size_t _la = 0; #if __cplusplus > 201703L @@ -5617,35 +6255,35 @@ CypherParser::IC_MaxValueContext* CypherParser::iC_MaxValue() { exitRule(); }); try { - setState(1059); + setState(1171); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(1050); + setState(1162); match(CypherParser::NO); - setState(1051); + setState(1163); match(CypherParser::SP); - setState(1052); + setState(1164); match(CypherParser::MAXVALUE); break; } case CypherParser::MAXVALUE: { enterOuterAlt(_localctx, 2); - setState(1053); + setState(1165); match(CypherParser::MAXVALUE); - setState(1054); + setState(1166); match(CypherParser::SP); - setState(1056); + setState(1168); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1055); + setState(1167); match(CypherParser::MINUS); } - setState(1058); + setState(1170); oC_IntegerLiteral(); break; } @@ -5702,7 +6340,7 @@ size_t CypherParser::IC_StartWithContext::getRuleIndex() const { CypherParser::IC_StartWithContext* CypherParser::iC_StartWith() { IC_StartWithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, CypherParser::RuleIC_StartWith); + enterRule(_localctx, 84, CypherParser::RuleIC_StartWith); size_t _la = 0; #if __cplusplus > 201703L @@ -5714,29 +6352,29 @@ CypherParser::IC_StartWithContext* CypherParser::iC_StartWith() { }); try { enterOuterAlt(_localctx, 1); - setState(1061); + setState(1173); match(CypherParser::START); - setState(1062); + setState(1174); match(CypherParser::SP); - setState(1065); + setState(1177); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::WITH) { - setState(1063); + setState(1175); match(CypherParser::WITH); - setState(1064); + setState(1176); match(CypherParser::SP); } - setState(1068); + setState(1180); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(1067); + setState(1179); match(CypherParser::MINUS); } - setState(1070); + setState(1182); oC_IntegerLiteral(); } @@ -5775,7 +6413,7 @@ size_t CypherParser::IC_CycleContext::getRuleIndex() const { CypherParser::IC_CycleContext* CypherParser::iC_Cycle() { IC_CycleContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, CypherParser::RuleIC_Cycle); + enterRule(_localctx, 86, CypherParser::RuleIC_Cycle); size_t _la = 0; #if __cplusplus > 201703L @@ -5787,17 +6425,17 @@ CypherParser::IC_CycleContext* CypherParser::iC_Cycle() { }); try { enterOuterAlt(_localctx, 1); - setState(1074); + setState(1186); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::NO) { - setState(1072); + setState(1184); match(CypherParser::NO); - setState(1073); + setState(1185); match(CypherParser::SP); } - setState(1076); + setState(1188); match(CypherParser::CYCLE); } @@ -5836,7 +6474,7 @@ size_t CypherParser::IC_IfExistsContext::getRuleIndex() const { CypherParser::IC_IfExistsContext* CypherParser::iC_IfExists() { IC_IfExistsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, CypherParser::RuleIC_IfExists); + enterRule(_localctx, 88, CypherParser::RuleIC_IfExists); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5847,11 +6485,11 @@ CypherParser::IC_IfExistsContext* CypherParser::iC_IfExists() { }); try { enterOuterAlt(_localctx, 1); - setState(1078); + setState(1190); match(CypherParser::IF); - setState(1079); + setState(1191); match(CypherParser::SP); - setState(1080); + setState(1192); match(CypherParser::EXISTS); } @@ -5914,7 +6552,7 @@ size_t CypherParser::IC_DropContext::getRuleIndex() const { CypherParser::IC_DropContext* CypherParser::iC_Drop() { IC_DropContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, CypherParser::RuleIC_Drop); + enterRule(_localctx, 90, CypherParser::RuleIC_Drop); size_t _la = 0; #if __cplusplus > 201703L @@ -5926,30 +6564,30 @@ CypherParser::IC_DropContext* CypherParser::iC_Drop() { }); try { enterOuterAlt(_localctx, 1); - setState(1082); + setState(1194); match(CypherParser::DROP); - setState(1083); + setState(1195); match(CypherParser::SP); - setState(1084); + setState(1196); _la = _input->LA(1); - if (!(((((_la - 90) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 90)) & 71468255838209) != 0))) { + if (!(((((_la - 91) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 91)) & 285873023287297) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } - setState(1085); + setState(1197); match(CypherParser::SP); - setState(1089); + setState(1201); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 126, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 148, _ctx)) { case 1: { - setState(1086); + setState(1198); iC_IfExists(); - setState(1087); + setState(1199); match(CypherParser::SP); break; } @@ -5957,7 +6595,7 @@ CypherParser::IC_DropContext* CypherParser::iC_Drop() { default: break; } - setState(1091); + setState(1203); oC_SchemaName(); } @@ -6008,7 +6646,7 @@ size_t CypherParser::IC_AlterTableContext::getRuleIndex() const { CypherParser::IC_AlterTableContext* CypherParser::iC_AlterTable() { IC_AlterTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, CypherParser::RuleIC_AlterTable); + enterRule(_localctx, 92, CypherParser::RuleIC_AlterTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6019,19 +6657,19 @@ CypherParser::IC_AlterTableContext* CypherParser::iC_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1093); + setState(1205); match(CypherParser::ALTER); - setState(1094); + setState(1206); match(CypherParser::SP); - setState(1095); + setState(1207); match(CypherParser::TABLE); - setState(1096); + setState(1208); match(CypherParser::SP); - setState(1097); + setState(1209); oC_SchemaName(); - setState(1098); + setState(1210); match(CypherParser::SP); - setState(1099); + setState(1211); iC_AlterOptions(); } @@ -6082,7 +6720,7 @@ size_t CypherParser::IC_AlterOptionsContext::getRuleIndex() const { CypherParser::IC_AlterOptionsContext* CypherParser::iC_AlterOptions() { IC_AlterOptionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, CypherParser::RuleIC_AlterOptions); + enterRule(_localctx, 94, CypherParser::RuleIC_AlterOptions); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6092,47 +6730,47 @@ CypherParser::IC_AlterOptionsContext* CypherParser::iC_AlterOptions() { exitRule(); }); try { - setState(1107); + setState(1219); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 127, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 149, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1101); + setState(1213); iC_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1102); + setState(1214); iC_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1103); + setState(1215); iC_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1104); + setState(1216); iC_RenameProperty(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1105); + setState(1217); iC_AddFromToConnection(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(1106); + setState(1218); iC_DropFromToConnection(); break; } @@ -6193,7 +6831,7 @@ size_t CypherParser::IC_AddPropertyContext::getRuleIndex() const { CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { IC_AddPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, CypherParser::RuleIC_AddProperty); + enterRule(_localctx, 96, CypherParser::RuleIC_AddProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6204,18 +6842,18 @@ CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1109); + setState(1221); match(CypherParser::ADD); - setState(1110); + setState(1222); match(CypherParser::SP); - setState(1114); + setState(1226); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 128, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 150, _ctx)) { case 1: { - setState(1111); + setState(1223); iC_IfNotExists(); - setState(1112); + setState(1224); match(CypherParser::SP); break; } @@ -6223,20 +6861,20 @@ CypherParser::IC_AddPropertyContext* CypherParser::iC_AddProperty() { default: break; } - setState(1116); + setState(1228); oC_PropertyKeyName(); - setState(1117); + setState(1229); match(CypherParser::SP); - setState(1118); + setState(1230); iC_DataType(0); - setState(1121); + setState(1233); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 129, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 151, _ctx)) { case 1: { - setState(1119); + setState(1231); match(CypherParser::SP); - setState(1120); + setState(1232); iC_Default(); break; } @@ -6281,7 +6919,7 @@ size_t CypherParser::IC_DefaultContext::getRuleIndex() const { CypherParser::IC_DefaultContext* CypherParser::iC_Default() { IC_DefaultContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, CypherParser::RuleIC_Default); + enterRule(_localctx, 98, CypherParser::RuleIC_Default); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6292,11 +6930,11 @@ CypherParser::IC_DefaultContext* CypherParser::iC_Default() { }); try { enterOuterAlt(_localctx, 1); - setState(1123); + setState(1235); match(CypherParser::DEFAULT); - setState(1124); + setState(1236); match(CypherParser::SP); - setState(1125); + setState(1237); oC_Expression(); } @@ -6343,7 +6981,7 @@ size_t CypherParser::IC_DropPropertyContext::getRuleIndex() const { CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { IC_DropPropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, CypherParser::RuleIC_DropProperty); + enterRule(_localctx, 100, CypherParser::RuleIC_DropProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6354,18 +6992,18 @@ CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1127); + setState(1239); match(CypherParser::DROP); - setState(1128); + setState(1240); match(CypherParser::SP); - setState(1132); + setState(1244); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 130, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 152, _ctx)) { case 1: { - setState(1129); + setState(1241); iC_IfExists(); - setState(1130); + setState(1242); match(CypherParser::SP); break; } @@ -6373,7 +7011,7 @@ CypherParser::IC_DropPropertyContext* CypherParser::iC_DropProperty() { default: break; } - setState(1134); + setState(1246); oC_PropertyKeyName(); } @@ -6420,7 +7058,7 @@ size_t CypherParser::IC_RenameTableContext::getRuleIndex() const { CypherParser::IC_RenameTableContext* CypherParser::iC_RenameTable() { IC_RenameTableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, CypherParser::RuleIC_RenameTable); + enterRule(_localctx, 102, CypherParser::RuleIC_RenameTable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6431,15 +7069,15 @@ CypherParser::IC_RenameTableContext* CypherParser::iC_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1136); + setState(1248); match(CypherParser::RENAME); - setState(1137); + setState(1249); match(CypherParser::SP); - setState(1138); + setState(1250); match(CypherParser::TO); - setState(1139); + setState(1251); match(CypherParser::SP); - setState(1140); + setState(1252); oC_SchemaName(); } @@ -6490,7 +7128,7 @@ size_t CypherParser::IC_RenamePropertyContext::getRuleIndex() const { CypherParser::IC_RenamePropertyContext* CypherParser::iC_RenameProperty() { IC_RenamePropertyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, CypherParser::RuleIC_RenameProperty); + enterRule(_localctx, 104, CypherParser::RuleIC_RenameProperty); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6501,19 +7139,19 @@ CypherParser::IC_RenamePropertyContext* CypherParser::iC_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1142); + setState(1254); match(CypherParser::RENAME); - setState(1143); + setState(1255); match(CypherParser::SP); - setState(1144); + setState(1256); oC_PropertyKeyName(); - setState(1145); + setState(1257); match(CypherParser::SP); - setState(1146); + setState(1258); match(CypherParser::TO); - setState(1147); + setState(1259); match(CypherParser::SP); - setState(1148); + setState(1260); oC_PropertyKeyName(); } @@ -6560,7 +7198,7 @@ size_t CypherParser::IC_AddFromToConnectionContext::getRuleIndex() const { CypherParser::IC_AddFromToConnectionContext* CypherParser::iC_AddFromToConnection() { IC_AddFromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, CypherParser::RuleIC_AddFromToConnection); + enterRule(_localctx, 106, CypherParser::RuleIC_AddFromToConnection); size_t _la = 0; #if __cplusplus > 201703L @@ -6572,21 +7210,21 @@ CypherParser::IC_AddFromToConnectionContext* CypherParser::iC_AddFromToConnectio }); try { enterOuterAlt(_localctx, 1); - setState(1150); + setState(1262); match(CypherParser::ADD); - setState(1151); + setState(1263); match(CypherParser::SP); - setState(1155); + setState(1267); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::IF) { - setState(1152); + setState(1264); iC_IfNotExists(); - setState(1153); + setState(1265); match(CypherParser::SP); } - setState(1157); + setState(1269); iC_FromToConnection(); } @@ -6633,7 +7271,7 @@ size_t CypherParser::IC_DropFromToConnectionContext::getRuleIndex() const { CypherParser::IC_DropFromToConnectionContext* CypherParser::iC_DropFromToConnection() { IC_DropFromToConnectionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, CypherParser::RuleIC_DropFromToConnection); + enterRule(_localctx, 108, CypherParser::RuleIC_DropFromToConnection); size_t _la = 0; #if __cplusplus > 201703L @@ -6645,21 +7283,21 @@ CypherParser::IC_DropFromToConnectionContext* CypherParser::iC_DropFromToConnect }); try { enterOuterAlt(_localctx, 1); - setState(1159); + setState(1271); match(CypherParser::DROP); - setState(1160); + setState(1272); match(CypherParser::SP); - setState(1164); + setState(1276); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::IF) { - setState(1161); + setState(1273); iC_IfExists(); - setState(1162); + setState(1274); match(CypherParser::SP); } - setState(1166); + setState(1278); iC_FromToConnection(); } @@ -6702,7 +7340,7 @@ size_t CypherParser::IC_ColumnDefinitionsContext::getRuleIndex() const { CypherParser::IC_ColumnDefinitionsContext* CypherParser::iC_ColumnDefinitions() { IC_ColumnDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, CypherParser::RuleIC_ColumnDefinitions); + enterRule(_localctx, 110, CypherParser::RuleIC_ColumnDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -6715,37 +7353,37 @@ CypherParser::IC_ColumnDefinitionsContext* CypherParser::iC_ColumnDefinitions() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1168); + setState(1280); iC_ColumnDefinition(); - setState(1179); + setState(1291); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 135, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 157, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1170); + setState(1282); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1169); + setState(1281); match(CypherParser::SP); } - setState(1172); + setState(1284); match(CypherParser::T__3); - setState(1174); + setState(1286); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1173); + setState(1285); match(CypherParser::SP); } - setState(1176); + setState(1288); iC_ColumnDefinition(); } - setState(1181); + setState(1293); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 135, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 157, _ctx); } } @@ -6784,7 +7422,7 @@ size_t CypherParser::IC_ColumnDefinitionContext::getRuleIndex() const { CypherParser::IC_ColumnDefinitionContext* CypherParser::iC_ColumnDefinition() { IC_ColumnDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, CypherParser::RuleIC_ColumnDefinition); + enterRule(_localctx, 112, CypherParser::RuleIC_ColumnDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6795,11 +7433,11 @@ CypherParser::IC_ColumnDefinitionContext* CypherParser::iC_ColumnDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1182); + setState(1294); oC_PropertyKeyName(); - setState(1183); + setState(1295); match(CypherParser::SP); - setState(1184); + setState(1296); iC_DataType(0); } @@ -6842,7 +7480,7 @@ size_t CypherParser::IC_PropertyDefinitionsContext::getRuleIndex() const { CypherParser::IC_PropertyDefinitionsContext* CypherParser::iC_PropertyDefinitions() { IC_PropertyDefinitionsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, CypherParser::RuleIC_PropertyDefinitions); + enterRule(_localctx, 114, CypherParser::RuleIC_PropertyDefinitions); size_t _la = 0; #if __cplusplus > 201703L @@ -6855,37 +7493,37 @@ CypherParser::IC_PropertyDefinitionsContext* CypherParser::iC_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1186); + setState(1298); iC_PropertyDefinition(); - setState(1197); + setState(1309); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 138, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 160, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1188); + setState(1300); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1187); + setState(1299); match(CypherParser::SP); } - setState(1190); + setState(1302); match(CypherParser::T__3); - setState(1192); + setState(1304); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1191); + setState(1303); match(CypherParser::SP); } - setState(1194); + setState(1306); iC_PropertyDefinition(); } - setState(1199); + setState(1311); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 138, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 160, _ctx); } } @@ -6936,7 +7574,7 @@ size_t CypherParser::IC_PropertyDefinitionContext::getRuleIndex() const { CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition() { IC_PropertyDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, CypherParser::RuleIC_PropertyDefinition); + enterRule(_localctx, 116, CypherParser::RuleIC_PropertyDefinition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6947,16 +7585,16 @@ CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(1200); + setState(1312); iC_ColumnDefinition(); - setState(1203); + setState(1315); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 139, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 161, _ctx)) { case 1: { - setState(1201); + setState(1313); match(CypherParser::SP); - setState(1202); + setState(1314); iC_Default(); break; } @@ -6964,18 +7602,18 @@ CypherParser::IC_PropertyDefinitionContext* CypherParser::iC_PropertyDefinition( default: break; } - setState(1209); + setState(1321); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 140, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 162, _ctx)) { case 1: { - setState(1205); + setState(1317); match(CypherParser::SP); - setState(1206); + setState(1318); match(CypherParser::PRIMARY); - setState(1207); + setState(1319); match(CypherParser::SP); - setState(1208); + setState(1320); match(CypherParser::KEY); break; } @@ -7028,7 +7666,7 @@ size_t CypherParser::IC_CreateNodeConstraintContext::getRuleIndex() const { CypherParser::IC_CreateNodeConstraintContext* CypherParser::iC_CreateNodeConstraint() { IC_CreateNodeConstraintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, CypherParser::RuleIC_CreateNodeConstraint); + enterRule(_localctx, 118, CypherParser::RuleIC_CreateNodeConstraint); size_t _la = 0; #if __cplusplus > 201703L @@ -7040,41 +7678,41 @@ CypherParser::IC_CreateNodeConstraintContext* CypherParser::iC_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(1211); + setState(1323); match(CypherParser::PRIMARY); - setState(1212); + setState(1324); match(CypherParser::SP); - setState(1213); + setState(1325); match(CypherParser::KEY); - setState(1215); + setState(1327); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1214); + setState(1326); match(CypherParser::SP); } - setState(1217); + setState(1329); match(CypherParser::T__1); - setState(1219); + setState(1331); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1218); + setState(1330); match(CypherParser::SP); } - setState(1221); + setState(1333); oC_PropertyKeyName(); - setState(1223); + setState(1335); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1222); + setState(1334); match(CypherParser::SP); } - setState(1225); + setState(1337); match(CypherParser::T__2); } @@ -7117,7 +7755,7 @@ size_t CypherParser::IC_UnionTypeContext::getRuleIndex() const { CypherParser::IC_UnionTypeContext* CypherParser::iC_UnionType() { IC_UnionTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, CypherParser::RuleIC_UnionType); + enterRule(_localctx, 120, CypherParser::RuleIC_UnionType); size_t _la = 0; #if __cplusplus > 201703L @@ -7129,37 +7767,37 @@ CypherParser::IC_UnionTypeContext* CypherParser::iC_UnionType() { }); try { enterOuterAlt(_localctx, 1); - setState(1227); + setState(1339); match(CypherParser::UNION); - setState(1229); + setState(1341); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1228); + setState(1340); match(CypherParser::SP); } - setState(1231); + setState(1343); match(CypherParser::T__1); - setState(1233); + setState(1345); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1232); + setState(1344); match(CypherParser::SP); } - setState(1235); + setState(1347); iC_ColumnDefinitions(); - setState(1237); + setState(1349); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1236); + setState(1348); match(CypherParser::SP); } - setState(1239); + setState(1351); match(CypherParser::T__2); } @@ -7202,7 +7840,7 @@ size_t CypherParser::IC_StructTypeContext::getRuleIndex() const { CypherParser::IC_StructTypeContext* CypherParser::iC_StructType() { IC_StructTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, CypherParser::RuleIC_StructType); + enterRule(_localctx, 122, CypherParser::RuleIC_StructType); size_t _la = 0; #if __cplusplus > 201703L @@ -7214,37 +7852,37 @@ CypherParser::IC_StructTypeContext* CypherParser::iC_StructType() { }); try { enterOuterAlt(_localctx, 1); - setState(1241); + setState(1353); match(CypherParser::STRUCT); - setState(1243); + setState(1355); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1242); + setState(1354); match(CypherParser::SP); } - setState(1245); + setState(1357); match(CypherParser::T__1); - setState(1247); + setState(1359); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1246); + setState(1358); match(CypherParser::SP); } - setState(1249); + setState(1361); iC_ColumnDefinitions(); - setState(1251); + setState(1363); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1250); + setState(1362); match(CypherParser::SP); } - setState(1253); + setState(1365); match(CypherParser::T__2); } @@ -7291,7 +7929,7 @@ size_t CypherParser::IC_MapTypeContext::getRuleIndex() const { CypherParser::IC_MapTypeContext* CypherParser::iC_MapType() { IC_MapTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, CypherParser::RuleIC_MapType); + enterRule(_localctx, 124, CypherParser::RuleIC_MapType); size_t _la = 0; #if __cplusplus > 201703L @@ -7303,57 +7941,57 @@ CypherParser::IC_MapTypeContext* CypherParser::iC_MapType() { }); try { enterOuterAlt(_localctx, 1); - setState(1255); + setState(1367); match(CypherParser::MAP); - setState(1257); + setState(1369); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1256); + setState(1368); match(CypherParser::SP); } - setState(1259); + setState(1371); match(CypherParser::T__1); - setState(1261); + setState(1373); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1260); + setState(1372); match(CypherParser::SP); } - setState(1263); + setState(1375); iC_DataType(0); - setState(1265); + setState(1377); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1264); + setState(1376); match(CypherParser::SP); } - setState(1267); + setState(1379); match(CypherParser::T__3); - setState(1269); + setState(1381); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1268); + setState(1380); match(CypherParser::SP); } - setState(1271); + setState(1383); iC_DataType(0); - setState(1273); + setState(1385); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1272); + setState(1384); match(CypherParser::SP); } - setState(1275); + setState(1387); match(CypherParser::T__2); } @@ -7400,7 +8038,7 @@ size_t CypherParser::IC_DecimalTypeContext::getRuleIndex() const { CypherParser::IC_DecimalTypeContext* CypherParser::iC_DecimalType() { IC_DecimalTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, CypherParser::RuleIC_DecimalType); + enterRule(_localctx, 126, CypherParser::RuleIC_DecimalType); size_t _la = 0; #if __cplusplus > 201703L @@ -7412,57 +8050,57 @@ CypherParser::IC_DecimalTypeContext* CypherParser::iC_DecimalType() { }); try { enterOuterAlt(_localctx, 1); - setState(1277); + setState(1389); match(CypherParser::DECIMAL); - setState(1279); + setState(1391); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1278); + setState(1390); match(CypherParser::SP); } - setState(1281); + setState(1393); match(CypherParser::T__1); - setState(1283); + setState(1395); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1282); + setState(1394); match(CypherParser::SP); } - setState(1285); + setState(1397); oC_IntegerLiteral(); - setState(1287); + setState(1399); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1286); + setState(1398); match(CypherParser::SP); } - setState(1289); + setState(1401); match(CypherParser::T__3); - setState(1291); + setState(1403); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1290); + setState(1402); match(CypherParser::SP); } - setState(1293); + setState(1405); oC_IntegerLiteral(); - setState(1295); + setState(1407); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1294); + setState(1406); match(CypherParser::SP); } - setState(1297); + setState(1409); match(CypherParser::T__2); } @@ -7526,8 +8164,8 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { CypherParser::IC_DataTypeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::IC_DataTypeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 118; - enterRecursionRule(_localctx, 118, CypherParser::RuleIC_DataType, precedence); + size_t startState = 128; + enterRecursionRule(_localctx, 128, CypherParser::RuleIC_DataType, precedence); @@ -7541,35 +8179,35 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1305); + setState(1417); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 160, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 182, _ctx)) { case 1: { - setState(1300); + setState(1412); oC_SymbolicName(); break; } case 2: { - setState(1301); + setState(1413); iC_UnionType(); break; } case 3: { - setState(1302); + setState(1414); iC_StructType(); break; } case 4: { - setState(1303); + setState(1415); iC_MapType(); break; } case 5: { - setState(1304); + setState(1416); iC_DecimalType(); break; } @@ -7578,9 +8216,9 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(1311); + setState(1423); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 161, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 183, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) @@ -7588,15 +8226,15 @@ CypherParser::IC_DataTypeContext* CypherParser::iC_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_DataType); - setState(1307); + setState(1419); if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(1308); + setState(1420); iC_ListIdentifiers(); } - setState(1313); + setState(1425); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 161, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 183, _ctx); } } catch (RecognitionException &e) { @@ -7629,7 +8267,7 @@ size_t CypherParser::IC_ListIdentifiersContext::getRuleIndex() const { CypherParser::IC_ListIdentifiersContext* CypherParser::iC_ListIdentifiers() { IC_ListIdentifiersContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleIC_ListIdentifiers); + enterRule(_localctx, 130, CypherParser::RuleIC_ListIdentifiers); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7641,19 +8279,19 @@ CypherParser::IC_ListIdentifiersContext* CypherParser::iC_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1314); + setState(1426); iC_ListIdentifier(); - setState(1318); + setState(1430); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 162, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 184, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1315); + setState(1427); iC_ListIdentifier(); } - setState(1320); + setState(1432); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 162, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 184, _ctx); } } @@ -7684,7 +8322,7 @@ size_t CypherParser::IC_ListIdentifierContext::getRuleIndex() const { CypherParser::IC_ListIdentifierContext* CypherParser::iC_ListIdentifier() { IC_ListIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleIC_ListIdentifier); + enterRule(_localctx, 132, CypherParser::RuleIC_ListIdentifier); size_t _la = 0; #if __cplusplus > 201703L @@ -7696,17 +8334,17 @@ CypherParser::IC_ListIdentifierContext* CypherParser::iC_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(1321); + setState(1433); match(CypherParser::T__6); - setState(1323); + setState(1435); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1322); + setState(1434); oC_IntegerLiteral(); } - setState(1325); + setState(1437); match(CypherParser::T__7); } @@ -7741,7 +8379,7 @@ size_t CypherParser::OC_AnyCypherOptionContext::getRuleIndex() const { CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { OC_AnyCypherOptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleOC_AnyCypherOption); + enterRule(_localctx, 134, CypherParser::RuleOC_AnyCypherOption); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7751,19 +8389,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(1329); + setState(1441); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(1327); + setState(1439); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(1328); + setState(1440); oC_Profile(); break; } @@ -7808,7 +8446,7 @@ size_t CypherParser::OC_ExplainContext::getRuleIndex() const { CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { OC_ExplainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleOC_Explain); + enterRule(_localctx, 136, CypherParser::RuleOC_Explain); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7819,16 +8457,16 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(1331); + setState(1443); match(CypherParser::EXPLAIN); - setState(1334); + setState(1446); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 165, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 187, _ctx)) { case 1: { - setState(1332); + setState(1444); match(CypherParser::SP); - setState(1333); + setState(1445); match(CypherParser::LOGICAL); break; } @@ -7865,7 +8503,7 @@ size_t CypherParser::OC_ProfileContext::getRuleIndex() const { CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { OC_ProfileContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, CypherParser::RuleOC_Profile); + enterRule(_localctx, 138, CypherParser::RuleOC_Profile); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7876,7 +8514,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(1336); + setState(1448); match(CypherParser::PROFILE); } @@ -7939,7 +8577,7 @@ size_t CypherParser::IC_TransactionContext::getRuleIndex() const { CypherParser::IC_TransactionContext* CypherParser::iC_Transaction() { IC_TransactionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleIC_Transaction); + enterRule(_localctx, 140, CypherParser::RuleIC_Transaction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7949,56 +8587,56 @@ CypherParser::IC_TransactionContext* CypherParser::iC_Transaction() { exitRule(); }); try { - setState(1351); + setState(1463); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 166, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 188, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1338); + setState(1450); match(CypherParser::BEGIN); - setState(1339); + setState(1451); match(CypherParser::SP); - setState(1340); + setState(1452); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1341); + setState(1453); match(CypherParser::BEGIN); - setState(1342); + setState(1454); match(CypherParser::SP); - setState(1343); + setState(1455); match(CypherParser::TRANSACTION); - setState(1344); + setState(1456); match(CypherParser::SP); - setState(1345); + setState(1457); match(CypherParser::READ); - setState(1346); + setState(1458); match(CypherParser::SP); - setState(1347); + setState(1459); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1348); + setState(1460); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1349); + setState(1461); match(CypherParser::ROLLBACK); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1350); + setState(1462); match(CypherParser::CHECKPOINT); break; } @@ -8047,7 +8685,7 @@ size_t CypherParser::IC_ExtensionContext::getRuleIndex() const { CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { IC_ExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleIC_Extension); + enterRule(_localctx, 142, CypherParser::RuleIC_Extension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8057,12 +8695,12 @@ CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { exitRule(); }); try { - setState(1357); + setState(1469); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(1353); + setState(1465); iC_LoadExtension(); break; } @@ -8070,21 +8708,21 @@ CypherParser::IC_ExtensionContext* CypherParser::iC_Extension() { case CypherParser::FORCE: case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(1354); + setState(1466); iC_InstallExtension(); break; } case CypherParser::UNINSTALL: { enterOuterAlt(_localctx, 3); - setState(1355); + setState(1467); iC_UninstallExtension(); break; } case CypherParser::UPDATE: { enterOuterAlt(_localctx, 4); - setState(1356); + setState(1468); iC_UpdateExtension(); break; } @@ -8141,7 +8779,7 @@ size_t CypherParser::IC_LoadExtensionContext::getRuleIndex() const { CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { IC_LoadExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleIC_LoadExtension); + enterRule(_localctx, 144, CypherParser::RuleIC_LoadExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8152,18 +8790,18 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1359); + setState(1471); match(CypherParser::LOAD); - setState(1360); + setState(1472); match(CypherParser::SP); - setState(1363); + setState(1475); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 168, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 190, _ctx)) { case 1: { - setState(1361); + setState(1473); match(CypherParser::EXTENSION); - setState(1362); + setState(1474); match(CypherParser::SP); break; } @@ -8171,11 +8809,11 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { default: break; } - setState(1367); + setState(1479); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(1365); + setState(1477); match(CypherParser::StringLiteral); break; } @@ -8245,7 +8883,7 @@ CypherParser::IC_LoadExtensionContext* CypherParser::iC_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1366); + setState(1478); oC_Variable(); break; } @@ -8306,7 +8944,7 @@ size_t CypherParser::IC_InstallExtensionContext::getRuleIndex() const { CypherParser::IC_InstallExtensionContext* CypherParser::iC_InstallExtension() { IC_InstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleIC_InstallExtension); + enterRule(_localctx, 146, CypherParser::RuleIC_InstallExtension); size_t _la = 0; #if __cplusplus > 201703L @@ -8318,34 +8956,34 @@ CypherParser::IC_InstallExtensionContext* CypherParser::iC_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1371); + setState(1483); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::FORCE) { - setState(1369); + setState(1481); match(CypherParser::FORCE); - setState(1370); + setState(1482); match(CypherParser::SP); } - setState(1373); + setState(1485); match(CypherParser::INSTALL); - setState(1374); + setState(1486); match(CypherParser::SP); - setState(1375); + setState(1487); oC_Variable(); - setState(1380); + setState(1492); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 171, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 193, _ctx)) { case 1: { - setState(1376); + setState(1488); match(CypherParser::SP); - setState(1377); + setState(1489); match(CypherParser::FROM); - setState(1378); + setState(1490); match(CypherParser::SP); - setState(1379); + setState(1491); match(CypherParser::StringLiteral); break; } @@ -8390,7 +9028,7 @@ size_t CypherParser::IC_UninstallExtensionContext::getRuleIndex() const { CypherParser::IC_UninstallExtensionContext* CypherParser::iC_UninstallExtension() { IC_UninstallExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleIC_UninstallExtension); + enterRule(_localctx, 148, CypherParser::RuleIC_UninstallExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8401,11 +9039,11 @@ CypherParser::IC_UninstallExtensionContext* CypherParser::iC_UninstallExtension( }); try { enterOuterAlt(_localctx, 1); - setState(1382); + setState(1494); match(CypherParser::UNINSTALL); - setState(1383); + setState(1495); match(CypherParser::SP); - setState(1384); + setState(1496); oC_Variable(); } @@ -8444,7 +9082,7 @@ size_t CypherParser::IC_UpdateExtensionContext::getRuleIndex() const { CypherParser::IC_UpdateExtensionContext* CypherParser::iC_UpdateExtension() { IC_UpdateExtensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleIC_UpdateExtension); + enterRule(_localctx, 150, CypherParser::RuleIC_UpdateExtension); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8455,11 +9093,11 @@ CypherParser::IC_UpdateExtensionContext* CypherParser::iC_UpdateExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1386); + setState(1498); match(CypherParser::UPDATE); - setState(1387); + setState(1499); match(CypherParser::SP); - setState(1388); + setState(1500); oC_Variable(); } @@ -8490,7 +9128,7 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleOC_Query); + enterRule(_localctx, 152, CypherParser::RuleOC_Query); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8501,7 +9139,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(1390); + setState(1502); oC_RegularQuery(); } @@ -8556,7 +9194,7 @@ size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleOC_RegularQuery); + enterRule(_localctx, 154, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -8568,52 +9206,52 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { }); try { size_t alt; - setState(1413); + setState(1525); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 176, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 198, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1392); + setState(1504); oC_SingleQuery(); - setState(1399); + setState(1511); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 173, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 195, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1394); + setState(1506); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1393); + setState(1505); match(CypherParser::SP); } - setState(1396); + setState(1508); oC_Union(); } - setState(1401); + setState(1513); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 173, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 195, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1406); + setState(1518); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1402); + setState(1514); oC_Return(); - setState(1404); + setState(1516); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1403); + setState(1515); match(CypherParser::SP); } break; @@ -8622,11 +9260,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(1408); + setState(1520); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 175, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 197, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1410); + setState(1522); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -8680,7 +9318,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleOC_Union); + enterRule(_localctx, 156, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -8691,43 +9329,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(1427); + setState(1539); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 179, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 201, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1415); + setState(1527); match(CypherParser::UNION); - setState(1416); + setState(1528); match(CypherParser::SP); - setState(1417); + setState(1529); match(CypherParser::ALL); - setState(1419); + setState(1531); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1418); + setState(1530); match(CypherParser::SP); } - setState(1421); + setState(1533); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1422); + setState(1534); match(CypherParser::UNION); - setState(1424); + setState(1536); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1423); + setState(1535); match(CypherParser::SP); } - setState(1426); + setState(1538); oC_SingleQuery(); break; } @@ -8768,7 +9406,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 158, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8778,19 +9416,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1431); + setState(1543); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 180, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 202, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1429); + setState(1541); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1430); + setState(1542); oC_MultiPartQuery(); break; } @@ -8851,7 +9489,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 160, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -8863,92 +9501,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1468); + setState(1580); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 189, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 211, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1439); + setState(1551); _errHandler->sync(this); _la = _input->LA(1); - while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 2199023288329) != 0)) { - setState(1433); + while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 105)) & 4398046576649) != 0)) { + setState(1545); oC_ReadingClause(); - setState(1435); + setState(1547); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1434); + setState(1546); match(CypherParser::SP); } - setState(1441); + setState(1553); _errHandler->sync(this); _la = _input->LA(1); } - setState(1442); + setState(1554); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1449); + setState(1561); _errHandler->sync(this); _la = _input->LA(1); - while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 2199023288329) != 0)) { - setState(1443); + while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 105)) & 4398046576649) != 0)) { + setState(1555); oC_ReadingClause(); - setState(1445); + setState(1557); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1444); + setState(1556); match(CypherParser::SP); } - setState(1451); + setState(1563); _errHandler->sync(this); _la = _input->LA(1); } - setState(1452); + setState(1564); oC_UpdatingClause(); - setState(1459); + setState(1571); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 186, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 208, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1454); + setState(1566); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1453); + setState(1565); match(CypherParser::SP); } - setState(1456); + setState(1568); oC_UpdatingClause(); } - setState(1461); + setState(1573); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 186, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 208, _ctx); } - setState(1466); + setState(1578); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 188, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 210, _ctx)) { case 1: { - setState(1463); + setState(1575); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1462); + setState(1574); match(CypherParser::SP); } - setState(1465); + setState(1577); oC_Return(); break; } @@ -9007,7 +9645,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 162, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -9020,20 +9658,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1474); + setState(1586); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1470); + setState(1582); iC_QueryPart(); - setState(1472); + setState(1584); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1471); + setState(1583); match(CypherParser::SP); } break; @@ -9042,11 +9680,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1476); + setState(1588); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 191, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 213, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1478); + setState(1590); oC_SinglePartQuery(); } @@ -9101,7 +9739,7 @@ size_t CypherParser::IC_QueryPartContext::getRuleIndex() const { CypherParser::IC_QueryPartContext* CypherParser::iC_QueryPart() { IC_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, CypherParser::RuleIC_QueryPart); + enterRule(_localctx, 164, CypherParser::RuleIC_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -9113,45 +9751,45 @@ CypherParser::IC_QueryPartContext* CypherParser::iC_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1486); + setState(1598); _errHandler->sync(this); _la = _input->LA(1); - while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 2199023288329) != 0)) { - setState(1480); + while (_la == CypherParser::CALL || ((((_la - 105) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 105)) & 4398046576649) != 0)) { + setState(1592); oC_ReadingClause(); - setState(1482); + setState(1594); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1481); + setState(1593); match(CypherParser::SP); } - setState(1488); + setState(1600); _errHandler->sync(this); _la = _input->LA(1); } - setState(1495); + setState(1607); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 68) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 68)) & -9223370937343147743) != 0)) { - setState(1489); + ((1ULL << (_la - 68)) & 4398046511393) != 0) || _la == CypherParser::SET) { + setState(1601); oC_UpdatingClause(); - setState(1491); + setState(1603); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1490); + setState(1602); match(CypherParser::SP); } - setState(1497); + setState(1609); _errHandler->sync(this); _la = _input->LA(1); } - setState(1498); + setState(1610); oC_With(); } @@ -9194,7 +9832,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 166, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9204,26 +9842,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1504); + setState(1616); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1500); + setState(1612); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1501); + setState(1613); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1502); + setState(1614); oC_Set(); break; } @@ -9231,7 +9869,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DELETE: case CypherParser::DETACH: { enterOuterAlt(_localctx, 4); - setState(1503); + setState(1615); oC_Delete(); break; } @@ -9280,7 +9918,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 168, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9290,34 +9928,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1510); + setState(1622); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::MATCH: case CypherParser::OPTIONAL: { enterOuterAlt(_localctx, 1); - setState(1506); + setState(1618); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1507); + setState(1619); oC_Unwind(); break; } case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1508); + setState(1620); iC_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1509); + setState(1621); iC_LoadFrom(); break; } @@ -9390,7 +10028,7 @@ size_t CypherParser::IC_LoadFromContext::getRuleIndex() const { CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { IC_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleIC_LoadFrom); + enterRule(_localctx, 170, CypherParser::RuleIC_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -9402,50 +10040,50 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1512); + setState(1624); match(CypherParser::LOAD); - setState(1530); + setState(1642); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 201, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 223, _ctx)) { case 1: { - setState(1513); + setState(1625); match(CypherParser::SP); - setState(1514); + setState(1626); match(CypherParser::WITH); - setState(1515); + setState(1627); match(CypherParser::SP); - setState(1516); + setState(1628); match(CypherParser::HEADERS); - setState(1518); + setState(1630); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1517); + setState(1629); match(CypherParser::SP); } - setState(1520); + setState(1632); match(CypherParser::T__1); - setState(1522); + setState(1634); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1521); + setState(1633); match(CypherParser::SP); } - setState(1524); + setState(1636); iC_ColumnDefinitions(); - setState(1526); + setState(1638); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1525); + setState(1637); match(CypherParser::SP); } - setState(1528); + setState(1640); match(CypherParser::T__2); break; } @@ -9453,48 +10091,48 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { default: break; } - setState(1532); + setState(1644); match(CypherParser::SP); - setState(1533); + setState(1645); match(CypherParser::FROM); - setState(1534); + setState(1646); match(CypherParser::SP); - setState(1535); + setState(1647); iC_ScanSource(); - setState(1549); + setState(1661); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 205, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { case 1: { - setState(1537); + setState(1649); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1536); + setState(1648); match(CypherParser::SP); } - setState(1539); + setState(1651); match(CypherParser::T__1); - setState(1541); + setState(1653); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1540); + setState(1652); match(CypherParser::SP); } - setState(1543); + setState(1655); iC_Options(); - setState(1545); + setState(1657); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1544); + setState(1656); match(CypherParser::SP); } - setState(1547); + setState(1659); match(CypherParser::T__2); break; } @@ -9502,20 +10140,20 @@ CypherParser::IC_LoadFromContext* CypherParser::iC_LoadFrom() { default: break; } - setState(1555); + setState(1667); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 207, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 229, _ctx)) { case 1: { - setState(1552); + setState(1664); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1551); + setState(1663); match(CypherParser::SP); } - setState(1554); + setState(1666); oC_Where(); break; } @@ -9568,7 +10206,7 @@ size_t CypherParser::OC_YieldItemContext::getRuleIndex() const { CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { OC_YieldItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_YieldItem); + enterRule(_localctx, 172, CypherParser::RuleOC_YieldItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9579,18 +10217,18 @@ CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1562); + setState(1674); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 208, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 230, _ctx)) { case 1: { - setState(1557); + setState(1669); oC_Variable(); - setState(1558); + setState(1670); match(CypherParser::SP); - setState(1559); + setState(1671); match(CypherParser::AS); - setState(1560); + setState(1672); match(CypherParser::SP); break; } @@ -9598,7 +10236,7 @@ CypherParser::OC_YieldItemContext* CypherParser::oC_YieldItem() { default: break; } - setState(1564); + setState(1676); oC_Variable(); } @@ -9641,7 +10279,7 @@ size_t CypherParser::OC_YieldItemsContext::getRuleIndex() const { CypherParser::OC_YieldItemsContext* CypherParser::oC_YieldItems() { OC_YieldItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleOC_YieldItems); + enterRule(_localctx, 174, CypherParser::RuleOC_YieldItems); size_t _la = 0; #if __cplusplus > 201703L @@ -9654,37 +10292,37 @@ CypherParser::OC_YieldItemsContext* CypherParser::oC_YieldItems() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1566); + setState(1678); oC_YieldItem(); - setState(1577); + setState(1689); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 211, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 233, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1568); + setState(1680); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1567); + setState(1679); match(CypherParser::SP); } - setState(1570); + setState(1682); match(CypherParser::T__3); - setState(1572); + setState(1684); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1571); + setState(1683); match(CypherParser::SP); } - setState(1574); + setState(1686); oC_YieldItem(); } - setState(1579); + setState(1691); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 211, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 233, _ctx); } } @@ -9739,7 +10377,7 @@ size_t CypherParser::IC_InQueryCallContext::getRuleIndex() const { CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { IC_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleIC_InQueryCall); + enterRule(_localctx, 176, CypherParser::RuleIC_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -9751,26 +10389,26 @@ CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1580); + setState(1692); match(CypherParser::CALL); - setState(1581); + setState(1693); match(CypherParser::SP); - setState(1582); + setState(1694); oC_FunctionInvocation(); - setState(1587); + setState(1699); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 213, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 235, _ctx)) { case 1: { - setState(1584); + setState(1696); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1583); + setState(1695); match(CypherParser::SP); } - setState(1586); + setState(1698); oC_Where(); break; } @@ -9778,24 +10416,24 @@ CypherParser::IC_InQueryCallContext* CypherParser::iC_InQueryCall() { default: break; } - setState(1595); + setState(1707); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 215, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 237, _ctx)) { case 1: { - setState(1590); + setState(1702); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1589); + setState(1701); match(CypherParser::SP); } - setState(1592); + setState(1704); match(CypherParser::YIELD); - setState(1593); + setState(1705); match(CypherParser::SP); - setState(1594); + setState(1706); oC_YieldItems(); break; } @@ -9856,7 +10494,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleOC_Match); + enterRule(_localctx, 178, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -9868,36 +10506,36 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1599); + setState(1711); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1597); + setState(1709); match(CypherParser::OPTIONAL); - setState(1598); + setState(1710); match(CypherParser::SP); } - setState(1601); + setState(1713); match(CypherParser::MATCH); - setState(1603); + setState(1715); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1602); + setState(1714); match(CypherParser::SP); } - setState(1605); + setState(1717); oC_Pattern(); - setState(1608); + setState(1720); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 218, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 240, _ctx)) { case 1: { - setState(1606); + setState(1718); match(CypherParser::SP); - setState(1607); + setState(1719); oC_Where(); break; } @@ -9905,14 +10543,14 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { default: break; } - setState(1612); + setState(1724); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 219, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 241, _ctx)) { case 1: { - setState(1610); + setState(1722); match(CypherParser::SP); - setState(1611); + setState(1723); iC_Hint(); break; } @@ -9957,7 +10595,7 @@ size_t CypherParser::IC_HintContext::getRuleIndex() const { CypherParser::IC_HintContext* CypherParser::iC_Hint() { IC_HintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleIC_Hint); + enterRule(_localctx, 180, CypherParser::RuleIC_Hint); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9968,11 +10606,11 @@ CypherParser::IC_HintContext* CypherParser::iC_Hint() { }); try { enterOuterAlt(_localctx, 1); - setState(1614); + setState(1726); match(CypherParser::HINT); - setState(1615); + setState(1727); match(CypherParser::SP); - setState(1616); + setState(1728); iC_JoinNode(0); } @@ -10044,8 +10682,8 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { CypherParser::IC_JoinNodeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::IC_JoinNodeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 172; - enterRecursionRule(_localctx, 172, CypherParser::RuleIC_JoinNode, precedence); + size_t startState = 182; + enterRecursionRule(_localctx, 182, CypherParser::RuleIC_JoinNode, precedence); size_t _la = 0; @@ -10059,31 +10697,31 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1630); + setState(1742); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__1: { - setState(1619); + setState(1731); match(CypherParser::T__1); - setState(1621); + setState(1733); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1620); + setState(1732); match(CypherParser::SP); } - setState(1623); + setState(1735); iC_JoinNode(0); - setState(1625); + setState(1737); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1624); + setState(1736); match(CypherParser::SP); } - setState(1627); + setState(1739); match(CypherParser::T__2); break; } @@ -10153,7 +10791,7 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1629); + setState(1741); oC_SchemaName(); break; } @@ -10162,30 +10800,30 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { throw NoViableAltException(this); } _ctx->stop = _input->LT(-1); - setState(1648); + setState(1760); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 225, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 247, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; - setState(1646); + setState(1758); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 224, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 246, _ctx)) { case 1: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_JoinNode); - setState(1632); + setState(1744); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(1633); + setState(1745); match(CypherParser::SP); - setState(1634); + setState(1746); match(CypherParser::JOIN); - setState(1635); + setState(1747); match(CypherParser::SP); - setState(1636); + setState(1748); iC_JoinNode(5); break; } @@ -10193,22 +10831,22 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { case 2: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleIC_JoinNode); - setState(1637); + setState(1749); if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1642); + setState(1754); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1638); + setState(1750); match(CypherParser::SP); - setState(1639); + setState(1751); match(CypherParser::MULTI_JOIN); - setState(1640); + setState(1752); match(CypherParser::SP); - setState(1641); + setState(1753); oC_SchemaName(); break; } @@ -10216,9 +10854,9 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { default: throw NoViableAltException(this); } - setState(1644); + setState(1756); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 223, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 245, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -10227,9 +10865,9 @@ CypherParser::IC_JoinNodeContext* CypherParser::iC_JoinNode(int precedence) { break; } } - setState(1650); + setState(1762); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 225, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 247, _ctx); } } catch (RecognitionException &e) { @@ -10278,7 +10916,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 184, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -10290,25 +10928,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1651); + setState(1763); match(CypherParser::UNWIND); - setState(1653); + setState(1765); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1652); + setState(1764); match(CypherParser::SP); } - setState(1655); + setState(1767); oC_Expression(); - setState(1656); + setState(1768); match(CypherParser::SP); - setState(1657); + setState(1769); match(CypherParser::AS); - setState(1658); + setState(1770); match(CypherParser::SP); - setState(1659); + setState(1771); oC_Variable(); } @@ -10347,7 +10985,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleOC_Create); + enterRule(_localctx, 186, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -10359,17 +10997,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1661); + setState(1773); match(CypherParser::CREATE); - setState(1663); + setState(1775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1662); + setState(1774); match(CypherParser::SP); } - setState(1665); + setState(1777); oC_Pattern(); } @@ -10420,7 +11058,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleOC_Merge); + enterRule(_localctx, 188, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -10433,31 +11071,31 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1667); + setState(1779); match(CypherParser::MERGE); - setState(1669); + setState(1781); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1668); + setState(1780); match(CypherParser::SP); } - setState(1671); + setState(1783); oC_Pattern(); - setState(1676); + setState(1788); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 229, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1672); + setState(1784); match(CypherParser::SP); - setState(1673); + setState(1785); oC_MergeAction(); } - setState(1678); + setState(1790); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 229, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); } } @@ -10508,7 +11146,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 190, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10518,35 +11156,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1689); + setState(1801); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 230, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 252, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1679); + setState(1791); match(CypherParser::ON); - setState(1680); + setState(1792); match(CypherParser::SP); - setState(1681); + setState(1793); match(CypherParser::MATCH); - setState(1682); + setState(1794); match(CypherParser::SP); - setState(1683); + setState(1795); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1684); + setState(1796); match(CypherParser::ON); - setState(1685); + setState(1797); match(CypherParser::SP); - setState(1686); + setState(1798); match(CypherParser::CREATE); - setState(1687); + setState(1799); match(CypherParser::SP); - setState(1688); + setState(1800); oC_Set(); break; } @@ -10607,7 +11245,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, CypherParser::RuleOC_Set); + enterRule(_localctx, 192, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -10619,89 +11257,89 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { }); try { size_t alt; - setState(1723); + setState(1835); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 238, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1691); + setState(1803); match(CypherParser::SET); - setState(1693); + setState(1805); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1692); + setState(1804); match(CypherParser::SP); } - setState(1695); + setState(1807); oC_SetItem(); - setState(1706); + setState(1818); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 234, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 256, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1697); + setState(1809); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1696); + setState(1808); match(CypherParser::SP); } - setState(1699); + setState(1811); match(CypherParser::T__3); - setState(1701); + setState(1813); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1700); + setState(1812); match(CypherParser::SP); } - setState(1703); + setState(1815); oC_SetItem(); } - setState(1708); + setState(1820); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 234, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 256, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1709); + setState(1821); match(CypherParser::SET); - setState(1711); + setState(1823); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1710); + setState(1822); match(CypherParser::SP); } - setState(1713); + setState(1825); oC_Atom(); - setState(1715); + setState(1827); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1714); + setState(1826); match(CypherParser::SP); } - setState(1717); + setState(1829); match(CypherParser::T__5); - setState(1719); + setState(1831); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1718); + setState(1830); match(CypherParser::SP); } - setState(1721); + setState(1833); iC_Properties(); break; } @@ -10750,7 +11388,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 194, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -10762,27 +11400,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1725); + setState(1837); oC_PropertyExpression(); - setState(1727); + setState(1839); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1726); + setState(1838); match(CypherParser::SP); } - setState(1729); + setState(1841); match(CypherParser::T__5); - setState(1731); + setState(1843); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1730); + setState(1842); match(CypherParser::SP); } - setState(1733); + setState(1845); oC_Expression(); } @@ -10833,7 +11471,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_Delete); + enterRule(_localctx, 196, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -10846,57 +11484,57 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1737); + setState(1849); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1735); + setState(1847); match(CypherParser::DETACH); - setState(1736); + setState(1848); match(CypherParser::SP); } - setState(1739); + setState(1851); match(CypherParser::DELETE); - setState(1741); + setState(1853); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1740); + setState(1852); match(CypherParser::SP); } - setState(1743); + setState(1855); oC_Expression(); - setState(1754); + setState(1866); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 245, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1745); + setState(1857); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1744); + setState(1856); match(CypherParser::SP); } - setState(1747); + setState(1859); match(CypherParser::T__3); - setState(1749); + setState(1861); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1748); + setState(1860); match(CypherParser::SP); } - setState(1751); + setState(1863); oC_Expression(); } - setState(1756); + setState(1868); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 245, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); } } @@ -10939,7 +11577,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_With); + enterRule(_localctx, 198, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -10951,24 +11589,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1757); + setState(1869); match(CypherParser::WITH); - setState(1758); + setState(1870); oC_ProjectionBody(); - setState(1763); + setState(1875); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 247, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 269, _ctx)) { case 1: { - setState(1760); + setState(1872); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1759); + setState(1871); match(CypherParser::SP); } - setState(1762); + setState(1874); oC_Where(); break; } @@ -11009,7 +11647,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_Return); + enterRule(_localctx, 200, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11020,9 +11658,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1765); + setState(1877); match(CypherParser::RETURN); - setState(1766); + setState(1878); oC_ProjectionBody(); } @@ -11077,7 +11715,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 202, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -11089,20 +11727,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1772); + setState(1884); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 249, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 271, _ctx)) { case 1: { - setState(1769); + setState(1881); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1768); + setState(1880); match(CypherParser::SP); } - setState(1771); + setState(1883); match(CypherParser::DISTINCT); break; } @@ -11110,18 +11748,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1774); + setState(1886); match(CypherParser::SP); - setState(1775); + setState(1887); oC_ProjectionItems(); - setState(1778); + setState(1890); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 250, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 272, _ctx)) { case 1: { - setState(1776); + setState(1888); match(CypherParser::SP); - setState(1777); + setState(1889); oC_Order(); break; } @@ -11129,14 +11767,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1782); + setState(1894); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 251, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 273, _ctx)) { case 1: { - setState(1780); + setState(1892); match(CypherParser::SP); - setState(1781); + setState(1893); oC_Skip(); break; } @@ -11144,14 +11782,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1786); + setState(1898); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 252, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 274, _ctx)) { case 1: { - setState(1784); + setState(1896); match(CypherParser::SP); - setState(1785); + setState(1897); oC_Limit(); break; } @@ -11204,7 +11842,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 204, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -11216,42 +11854,42 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1816); + setState(1928); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1788); + setState(1900); match(CypherParser::STAR); - setState(1799); + setState(1911); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 255, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 277, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1790); + setState(1902); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1789); + setState(1901); match(CypherParser::SP); } - setState(1792); + setState(1904); match(CypherParser::T__3); - setState(1794); + setState(1906); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1793); + setState(1905); match(CypherParser::SP); } - setState(1796); + setState(1908); oC_ProjectionItem(); } - setState(1801); + setState(1913); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 255, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 277, _ctx); } break; } @@ -11342,37 +11980,37 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1802); + setState(1914); oC_ProjectionItem(); - setState(1813); + setState(1925); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 258, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 280, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1804); + setState(1916); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1803); + setState(1915); match(CypherParser::SP); } - setState(1806); + setState(1918); match(CypherParser::T__3); - setState(1808); + setState(1920); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1807); + setState(1919); match(CypherParser::SP); } - setState(1810); + setState(1922); oC_ProjectionItem(); } - setState(1815); + setState(1927); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 258, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 280, _ctx); } break; } @@ -11425,7 +12063,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 206, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11435,27 +12073,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1825); + setState(1937); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 282, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1818); + setState(1930); oC_Expression(); - setState(1819); + setState(1931); match(CypherParser::SP); - setState(1820); + setState(1932); match(CypherParser::AS); - setState(1821); + setState(1933); match(CypherParser::SP); - setState(1822); + setState(1934); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1824); + setState(1936); oC_Expression(); break; } @@ -11512,7 +12150,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleOC_Order); + enterRule(_localctx, 208, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -11524,33 +12162,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1827); + setState(1939); match(CypherParser::ORDER); - setState(1828); + setState(1940); match(CypherParser::SP); - setState(1829); + setState(1941); match(CypherParser::BY); - setState(1830); + setState(1942); match(CypherParser::SP); - setState(1831); + setState(1943); oC_SortItem(); - setState(1839); + setState(1951); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(1832); + setState(1944); match(CypherParser::T__3); - setState(1834); + setState(1946); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1833); + setState(1945); match(CypherParser::SP); } - setState(1836); + setState(1948); oC_SortItem(); - setState(1841); + setState(1953); _errHandler->sync(this); _la = _input->LA(1); } @@ -11591,7 +12229,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleOC_Skip); + enterRule(_localctx, 210, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11602,11 +12240,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1842); + setState(1954); match(CypherParser::L_SKIP); - setState(1843); + setState(1955); match(CypherParser::SP); - setState(1844); + setState(1956); oC_Expression(); } @@ -11645,7 +12283,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleOC_Limit); + enterRule(_localctx, 212, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11656,11 +12294,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1846); + setState(1958); match(CypherParser::LIMIT); - setState(1847); + setState(1959); match(CypherParser::SP); - setState(1848); + setState(1960); oC_Expression(); } @@ -11711,7 +12349,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 214, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -11723,22 +12361,22 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1850); + setState(1962); oC_Expression(); - setState(1855); + setState(1967); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 286, _ctx)) { case 1: { - setState(1852); + setState(1964); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1851); + setState(1963); match(CypherParser::SP); } - setState(1854); + setState(1966); _la = _input->LA(1); if (!(((((_la - 52) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 52)) & 12582915) != 0))) { @@ -11791,7 +12429,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleOC_Where); + enterRule(_localctx, 216, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11802,11 +12440,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1857); + setState(1969); match(CypherParser::WHERE); - setState(1858); + setState(1970); match(CypherParser::SP); - setState(1859); + setState(1971); oC_Expression(); } @@ -11849,7 +12487,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 218, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -11862,37 +12500,37 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1861); + setState(1973); oC_PatternPart(); - setState(1872); + setState(1984); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 289, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1863); + setState(1975); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1862); + setState(1974); match(CypherParser::SP); } - setState(1865); + setState(1977); match(CypherParser::T__3); - setState(1867); + setState(1979); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1866); + setState(1978); match(CypherParser::SP); } - setState(1869); + setState(1981); oC_PatternPart(); } - setState(1874); + setState(1986); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 267, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 289, _ctx); } } @@ -11935,7 +12573,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 220, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -11946,7 +12584,7 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1886); + setState(1998); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -12015,34 +12653,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1875); + setState(1987); oC_Variable(); - setState(1877); + setState(1989); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1876); + setState(1988); match(CypherParser::SP); } - setState(1879); + setState(1991); match(CypherParser::T__5); - setState(1881); + setState(1993); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1880); + setState(1992); match(CypherParser::SP); } - setState(1883); + setState(1995); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1885); + setState(1997); oC_AnonymousPatternPart(); break; } @@ -12079,7 +12717,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 222, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12090,7 +12728,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(1888); + setState(2000); oC_PatternElement(); } @@ -12141,7 +12779,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 224, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -12153,43 +12791,43 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(1904); + setState(2016); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 273, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 295, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1890); + setState(2002); oC_NodePattern(); - setState(1897); + setState(2009); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 272, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 294, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1892); + setState(2004); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1891); + setState(2003); match(CypherParser::SP); } - setState(1894); + setState(2006); oC_PatternElementChain(); } - setState(1899); + setState(2011); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 272, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 294, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1900); + setState(2012); match(CypherParser::T__1); - setState(1901); + setState(2013); oC_PatternElement(); - setState(1902); + setState(2014); match(CypherParser::T__2); break; } @@ -12242,7 +12880,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 226, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -12254,68 +12892,68 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(1906); + setState(2018); match(CypherParser::T__1); - setState(1908); + setState(2020); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1907); + setState(2019); match(CypherParser::SP); } - setState(1914); + setState(2026); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -287985230644762313) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5068755015275819) != 0)) { - setState(1910); + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(2022); oC_Variable(); - setState(1912); + setState(2024); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1911); + setState(2023); match(CypherParser::SP); } } - setState(1920); + setState(2032); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1916); + setState(2028); oC_NodeLabels(); - setState(1918); + setState(2030); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1917); + setState(2029); match(CypherParser::SP); } } - setState(1926); + setState(2038); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(1922); + setState(2034); iC_Properties(); - setState(1924); + setState(2036); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1923); + setState(2035); match(CypherParser::SP); } } - setState(1928); + setState(2040); match(CypherParser::T__2); } @@ -12354,7 +12992,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 228, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -12366,17 +13004,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(1930); + setState(2042); oC_RelationshipPattern(); - setState(1932); + setState(2044); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1931); + setState(2043); match(CypherParser::SP); } - setState(1934); + setState(2046); oC_NodePattern(); } @@ -12431,7 +13069,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 230, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -12442,29 +13080,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(1980); + setState(2092); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 293, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 315, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1936); + setState(2048); oC_LeftArrowHead(); - setState(1938); + setState(2050); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1937); + setState(2049); match(CypherParser::SP); } - setState(1940); + setState(2052); oC_Dash(); - setState(1942); + setState(2054); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 283, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 305, _ctx)) { case 1: { - setState(1941); + setState(2053); match(CypherParser::SP); break; } @@ -12472,37 +13110,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1945); + setState(2057); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1944); + setState(2056); oC_RelationshipDetail(); } - setState(1948); + setState(2060); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1947); + setState(2059); match(CypherParser::SP); } - setState(1950); + setState(2062); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1952); + setState(2064); oC_Dash(); - setState(1954); + setState(2066); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 286, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 308, _ctx)) { case 1: { - setState(1953); + setState(2065); match(CypherParser::SP); break; } @@ -12510,47 +13148,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1957); + setState(2069); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1956); + setState(2068); oC_RelationshipDetail(); } - setState(1960); + setState(2072); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1959); + setState(2071); match(CypherParser::SP); } - setState(1962); + setState(2074); oC_Dash(); - setState(1964); + setState(2076); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1963); + setState(2075); match(CypherParser::SP); } - setState(1966); + setState(2078); oC_RightArrowHead(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1968); + setState(2080); oC_Dash(); - setState(1970); + setState(2082); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 290, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 312, _ctx)) { case 1: { - setState(1969); + setState(2081); match(CypherParser::SP); break; } @@ -12558,23 +13196,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1973); + setState(2085); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1972); + setState(2084); oC_RelationshipDetail(); } - setState(1976); + setState(2088); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1975); + setState(2087); match(CypherParser::SP); } - setState(1978); + setState(2090); oC_Dash(); break; } @@ -12631,7 +13269,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 232, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -12643,84 +13281,84 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(1982); + setState(2094); match(CypherParser::T__6); - setState(1984); + setState(2096); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1983); + setState(2095); match(CypherParser::SP); } - setState(1990); + setState(2102); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -287985230644762313) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5068755015275819) != 0)) { - setState(1986); + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(2098); oC_Variable(); - setState(1988); + setState(2100); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1987); + setState(2099); match(CypherParser::SP); } } - setState(1996); + setState(2108); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1992); + setState(2104); oC_RelationshipTypes(); - setState(1994); + setState(2106); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1993); + setState(2105); match(CypherParser::SP); } } - setState(2002); + setState(2114); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(1998); + setState(2110); iC_RecursiveDetail(); - setState(2000); + setState(2112); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1999); + setState(2111); match(CypherParser::SP); } } - setState(2008); + setState(2120); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(2004); + setState(2116); iC_Properties(); - setState(2006); + setState(2118); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2005); + setState(2117); match(CypherParser::SP); } } - setState(2010); + setState(2122); match(CypherParser::T__7); } @@ -12779,7 +13417,7 @@ size_t CypherParser::IC_PropertiesContext::getRuleIndex() const { CypherParser::IC_PropertiesContext* CypherParser::iC_Properties() { IC_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleIC_Properties); + enterRule(_localctx, 234, CypherParser::RuleIC_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -12791,104 +13429,104 @@ CypherParser::IC_PropertiesContext* CypherParser::iC_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(2012); + setState(2124); match(CypherParser::T__8); - setState(2014); + setState(2126); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2013); + setState(2125); match(CypherParser::SP); } - setState(2049); + setState(2161); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -3185593048922849280) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -287985230644762313) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5068755015275819) != 0)) { - setState(2016); + ((1ULL << (_la - 65)) & -2304862428370032329) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 81100080244413111) != 0)) { + setState(2128); oC_PropertyKeyName(); - setState(2018); + setState(2130); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2017); + setState(2129); match(CypherParser::SP); } - setState(2020); + setState(2132); match(CypherParser::COLON); - setState(2022); + setState(2134); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2021); + setState(2133); match(CypherParser::SP); } - setState(2024); + setState(2136); oC_Expression(); - setState(2026); + setState(2138); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2025); + setState(2137); match(CypherParser::SP); } - setState(2046); + setState(2158); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2028); + setState(2140); match(CypherParser::T__3); - setState(2030); + setState(2142); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2029); + setState(2141); match(CypherParser::SP); } - setState(2032); + setState(2144); oC_PropertyKeyName(); - setState(2034); + setState(2146); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2033); + setState(2145); match(CypherParser::SP); } - setState(2036); + setState(2148); match(CypherParser::COLON); - setState(2038); + setState(2150); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2037); + setState(2149); match(CypherParser::SP); } - setState(2040); + setState(2152); oC_Expression(); - setState(2042); + setState(2154); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2041); + setState(2153); match(CypherParser::SP); } - setState(2048); + setState(2160); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2051); + setState(2163); match(CypherParser::T__9); } @@ -12939,7 +13577,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 236, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -12952,55 +13590,55 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2053); + setState(2165); match(CypherParser::COLON); - setState(2055); + setState(2167); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2054); + setState(2166); match(CypherParser::SP); } - setState(2057); + setState(2169); oC_RelTypeName(); - setState(2071); + setState(2183); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 317, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 339, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2059); + setState(2171); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2058); + setState(2170); match(CypherParser::SP); } - setState(2061); + setState(2173); match(CypherParser::T__10); - setState(2063); + setState(2175); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2062); + setState(2174); match(CypherParser::COLON); } - setState(2066); + setState(2178); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2065); + setState(2177); match(CypherParser::SP); } - setState(2068); + setState(2180); oC_RelTypeName(); } - setState(2073); + setState(2185); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 317, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 339, _ctx); } } @@ -13051,7 +13689,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 238, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -13064,50 +13702,50 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2074); + setState(2186); match(CypherParser::COLON); - setState(2076); + setState(2188); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2075); + setState(2187); match(CypherParser::SP); } - setState(2078); + setState(2190); oC_LabelName(); - setState(2095); + setState(2207); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 323, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2080); + setState(2192); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2079); + setState(2191); match(CypherParser::SP); } - setState(2087); + setState(2199); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__10: { - setState(2082); + setState(2194); match(CypherParser::T__10); - setState(2084); + setState(2196); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(2083); + setState(2195); match(CypherParser::COLON); } break; } case CypherParser::COLON: { - setState(2086); + setState(2198); match(CypherParser::COLON); break; } @@ -13115,20 +13753,20 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { default: throw NoViableAltException(this); } - setState(2090); + setState(2202); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2089); + setState(2201); match(CypherParser::SP); } - setState(2092); + setState(2204); oC_LabelName(); } - setState(2097); + setState(2209); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 323, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); } } @@ -13179,7 +13817,7 @@ size_t CypherParser::IC_RecursiveDetailContext::getRuleIndex() const { CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { IC_RecursiveDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleIC_RecursiveDetail); + enterRule(_localctx, 240, CypherParser::RuleIC_RecursiveDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -13191,22 +13829,22 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { }); try { enterOuterAlt(_localctx, 1); - setState(2098); + setState(2210); match(CypherParser::STAR); - setState(2103); + setState(2215); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 325, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 347, _ctx)) { case 1: { - setState(2100); + setState(2212); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2099); + setState(2211); match(CypherParser::SP); } - setState(2102); + setState(2214); iC_RecursiveType(); break; } @@ -13214,17 +13852,17 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2109); + setState(2221); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 327, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 349, _ctx)) { case 1: { - setState(2106); + setState(2218); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 326, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 348, _ctx)) { case 1: { - setState(2105); + setState(2217); match(CypherParser::SP); break; } @@ -13232,7 +13870,7 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2108); + setState(2220); oC_RangeLiteral(); break; } @@ -13240,20 +13878,20 @@ CypherParser::IC_RecursiveDetailContext* CypherParser::iC_RecursiveDetail() { default: break; } - setState(2115); + setState(2227); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 329, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 351, _ctx)) { case 1: { - setState(2112); + setState(2224); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2111); + setState(2223); match(CypherParser::SP); } - setState(2114); + setState(2226); iC_RecursiveComprehension(); break; } @@ -13318,7 +13956,7 @@ size_t CypherParser::IC_RecursiveTypeContext::getRuleIndex() const { CypherParser::IC_RecursiveTypeContext* CypherParser::iC_RecursiveType() { IC_RecursiveTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleIC_RecursiveType); + enterRule(_localctx, 242, CypherParser::RuleIC_RecursiveType); size_t _la = 0; #if __cplusplus > 201703L @@ -13329,84 +13967,84 @@ CypherParser::IC_RecursiveTypeContext* CypherParser::iC_RecursiveType() { exitRule(); }); try { - setState(2141); + setState(2253); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 334, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 356, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2119); + setState(2231); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::ALL) { - setState(2117); + setState(2229); match(CypherParser::ALL); - setState(2118); + setState(2230); match(CypherParser::SP); } - setState(2121); + setState(2233); match(CypherParser::WSHORTEST); - setState(2123); + setState(2235); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2122); + setState(2234); match(CypherParser::SP); } - setState(2125); + setState(2237); match(CypherParser::T__1); - setState(2127); + setState(2239); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2126); + setState(2238); match(CypherParser::SP); } - setState(2129); + setState(2241); oC_PropertyKeyName(); - setState(2131); + setState(2243); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2130); + setState(2242); match(CypherParser::SP); } - setState(2133); + setState(2245); match(CypherParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2135); + setState(2247); match(CypherParser::SHORTEST); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2136); + setState(2248); match(CypherParser::ALL); - setState(2137); + setState(2249); match(CypherParser::SP); - setState(2138); + setState(2250); match(CypherParser::SHORTEST); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2139); + setState(2251); match(CypherParser::TRAIL); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2140); + setState(2252); match(CypherParser::ACYCLIC); break; } @@ -13463,7 +14101,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 244, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -13474,35 +14112,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { exitRule(); }); try { - setState(2157); + setState(2269); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 339, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 361, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2144); + setState(2256); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2143); + setState(2255); oC_LowerBound(); } - setState(2147); + setState(2259); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2146); + setState(2258); match(CypherParser::SP); } - setState(2149); + setState(2261); match(CypherParser::DOTDOT); - setState(2151); + setState(2263); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 337, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 359, _ctx)) { case 1: { - setState(2150); + setState(2262); match(CypherParser::SP); break; } @@ -13510,12 +14148,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(2154); + setState(2266); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2153); + setState(2265); oC_UpperBound(); } break; @@ -13523,7 +14161,7 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { case 2: { enterOuterAlt(_localctx, 2); - setState(2156); + setState(2268); oC_IntegerLiteral(); break; } @@ -13584,7 +14222,7 @@ size_t CypherParser::IC_RecursiveComprehensionContext::getRuleIndex() const { CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveComprehension() { IC_RecursiveComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleIC_RecursiveComprehension); + enterRule(_localctx, 246, CypherParser::RuleIC_RecursiveComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -13596,69 +14234,69 @@ CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveCompre }); try { enterOuterAlt(_localctx, 1); - setState(2159); + setState(2271); match(CypherParser::T__1); - setState(2161); + setState(2273); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2160); + setState(2272); match(CypherParser::SP); } - setState(2163); + setState(2275); oC_Variable(); - setState(2165); + setState(2277); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2164); + setState(2276); match(CypherParser::SP); } - setState(2167); + setState(2279); match(CypherParser::T__3); - setState(2169); + setState(2281); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2168); + setState(2280); match(CypherParser::SP); } - setState(2171); + setState(2283); oC_Variable(); - setState(2183); + setState(2295); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 346, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 368, _ctx)) { case 1: { - setState(2173); + setState(2285); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2172); + setState(2284); match(CypherParser::SP); } - setState(2175); + setState(2287); match(CypherParser::T__10); - setState(2177); + setState(2289); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2176); + setState(2288); match(CypherParser::SP); } - setState(2179); + setState(2291); oC_Where(); - setState(2181); + setState(2293); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 345, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { case 1: { - setState(2180); + setState(2292); match(CypherParser::SP); break; } @@ -13672,61 +14310,61 @@ CypherParser::IC_RecursiveComprehensionContext* CypherParser::iC_RecursiveCompre default: break; } - setState(2204); + setState(2316); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__10 || _la == CypherParser::SP) { - setState(2186); + setState(2298); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2185); + setState(2297); match(CypherParser::SP); } - setState(2188); + setState(2300); match(CypherParser::T__10); - setState(2190); + setState(2302); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2189); + setState(2301); match(CypherParser::SP); } - setState(2192); + setState(2304); iC_RecursiveProjectionItems(); - setState(2194); + setState(2306); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2193); + setState(2305); match(CypherParser::SP); } - setState(2196); + setState(2308); match(CypherParser::T__3); - setState(2198); + setState(2310); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2197); + setState(2309); match(CypherParser::SP); } - setState(2200); + setState(2312); iC_RecursiveProjectionItems(); - setState(2202); + setState(2314); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2201); + setState(2313); match(CypherParser::SP); } } - setState(2206); + setState(2318); match(CypherParser::T__2); } @@ -13765,7 +14403,7 @@ size_t CypherParser::IC_RecursiveProjectionItemsContext::getRuleIndex() const { CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProjectionItems() { IC_RecursiveProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleIC_RecursiveProjectionItems); + enterRule(_localctx, 248, CypherParser::RuleIC_RecursiveProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -13777,14 +14415,14 @@ CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProj }); try { enterOuterAlt(_localctx, 1); - setState(2208); + setState(2320); match(CypherParser::T__8); - setState(2210); + setState(2322); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 353, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 375, _ctx)) { case 1: { - setState(2209); + setState(2321); match(CypherParser::SP); break; } @@ -13792,26 +14430,26 @@ CypherParser::IC_RecursiveProjectionItemsContext* CypherParser::iC_RecursiveProj default: break; } - setState(2213); + setState(2325); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492412753616171) != 0)) { - setState(2212); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878604057858743) != 0)) { + setState(2324); oC_ProjectionItems(); } - setState(2216); + setState(2328); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2215); + setState(2327); match(CypherParser::SP); } - setState(2218); + setState(2330); match(CypherParser::T__9); } @@ -13842,7 +14480,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 250, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13853,7 +14491,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2220); + setState(2332); match(CypherParser::DecimalInteger); } @@ -13884,7 +14522,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 252, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13895,7 +14533,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2222); + setState(2334); match(CypherParser::DecimalInteger); } @@ -13930,7 +14568,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 254, CypherParser::RuleOC_LabelName); size_t _la = 0; #if __cplusplus > 201703L @@ -13942,16 +14580,16 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(2224); + setState(2336); oC_SchemaName(); - setState(2227); + setState(2339); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__4) { - setState(2225); + setState(2337); match(CypherParser::T__4); - setState(2226); + setState(2338); oC_SchemaName(); } @@ -13983,7 +14621,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 256, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13994,7 +14632,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(2229); + setState(2341); oC_SchemaName(); } @@ -14025,7 +14663,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleOC_Expression); + enterRule(_localctx, 258, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14036,7 +14674,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(2231); + setState(2343); oC_OrExpression(); } @@ -14087,7 +14725,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 260, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14099,25 +14737,25 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2233); + setState(2345); oC_XorExpression(); - setState(2240); + setState(2352); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 357, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 379, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2234); + setState(2346); match(CypherParser::SP); - setState(2235); + setState(2347); match(CypherParser::OR); - setState(2236); + setState(2348); match(CypherParser::SP); - setState(2237); + setState(2349); oC_XorExpression(); } - setState(2242); + setState(2354); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 357, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 379, _ctx); } } @@ -14168,7 +14806,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 262, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14180,25 +14818,25 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2243); + setState(2355); oC_AndExpression(); - setState(2250); + setState(2362); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 358, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 380, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2244); + setState(2356); match(CypherParser::SP); - setState(2245); + setState(2357); match(CypherParser::XOR); - setState(2246); + setState(2358); match(CypherParser::SP); - setState(2247); + setState(2359); oC_AndExpression(); } - setState(2252); + setState(2364); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 358, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 380, _ctx); } } @@ -14249,7 +14887,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 264, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14261,25 +14899,25 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2253); + setState(2365); oC_NotExpression(); - setState(2260); + setState(2372); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 359, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2254); + setState(2366); match(CypherParser::SP); - setState(2255); + setState(2367); match(CypherParser::AND); - setState(2256); + setState(2368); match(CypherParser::SP); - setState(2257); + setState(2369); oC_NotExpression(); } - setState(2262); + setState(2374); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 359, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); } } @@ -14326,7 +14964,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 266, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14338,25 +14976,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2269); + setState(2381); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(2263); + setState(2375); match(CypherParser::NOT); - setState(2265); + setState(2377); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2264); + setState(2376); match(CypherParser::SP); } - setState(2271); + setState(2383); _errHandler->sync(this); _la = _input->LA(1); } - setState(2272); + setState(2384); oC_ComparisonExpression(); } @@ -14411,7 +15049,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 268, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14423,37 +15061,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(2322); + setState(2434); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 372, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 394, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2274); + setState(2386); iC_BitwiseOrOperatorExpression(); - setState(2284); + setState(2396); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 364, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 386, _ctx)) { case 1: { - setState(2276); + setState(2388); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2275); + setState(2387); match(CypherParser::SP); } - setState(2278); + setState(2390); iC_ComparisonOperator(); - setState(2280); + setState(2392); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2279); + setState(2391); match(CypherParser::SP); } - setState(2282); + setState(2394); iC_BitwiseOrOperatorExpression(); break; } @@ -14466,28 +15104,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(2286); + setState(2398); iC_BitwiseOrOperatorExpression(); - setState(2288); + setState(2400); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2287); + setState(2399); match(CypherParser::SP); } - setState(2290); + setState(2402); antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); - setState(2292); + setState(2404); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2291); + setState(2403); match(CypherParser::SP); } - setState(2294); + setState(2406); iC_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -14495,53 +15133,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(2298); + setState(2410); iC_BitwiseOrOperatorExpression(); - setState(2300); + setState(2412); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2299); + setState(2411); match(CypherParser::SP); } - setState(2302); + setState(2414); iC_ComparisonOperator(); - setState(2304); + setState(2416); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2303); + setState(2415); match(CypherParser::SP); } - setState(2306); + setState(2418); iC_BitwiseOrOperatorExpression(); - setState(2316); + setState(2428); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2308); + setState(2420); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2307); + setState(2419); match(CypherParser::SP); } - setState(2310); + setState(2422); iC_ComparisonOperator(); - setState(2312); + setState(2424); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2311); + setState(2423); match(CypherParser::SP); } - setState(2314); + setState(2426); iC_BitwiseOrOperatorExpression(); break; } @@ -14549,9 +15187,9 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(2318); + setState(2430); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 371, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 393, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); notifyNonBinaryComparison(_localctx->start); break; @@ -14585,7 +15223,7 @@ size_t CypherParser::IC_ComparisonOperatorContext::getRuleIndex() const { CypherParser::IC_ComparisonOperatorContext* CypherParser::iC_ComparisonOperator() { IC_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleIC_ComparisonOperator); + enterRule(_localctx, 270, CypherParser::RuleIC_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -14597,7 +15235,7 @@ CypherParser::IC_ComparisonOperatorContext* CypherParser::iC_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(2324); + setState(2436); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 127040) != 0))) { @@ -14648,7 +15286,7 @@ size_t CypherParser::IC_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::IC_BitwiseOrOperatorExpressionContext* CypherParser::iC_BitwiseOrOperatorExpression() { IC_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleIC_BitwiseOrOperatorExpression); + enterRule(_localctx, 272, CypherParser::RuleIC_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14661,37 +15299,37 @@ CypherParser::IC_BitwiseOrOperatorExpressionContext* CypherParser::iC_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2326); + setState(2438); iC_BitwiseAndOperatorExpression(); - setState(2337); + setState(2449); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 375, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 397, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2328); + setState(2440); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2327); + setState(2439); match(CypherParser::SP); } - setState(2330); + setState(2442); match(CypherParser::T__10); - setState(2332); + setState(2444); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2331); + setState(2443); match(CypherParser::SP); } - setState(2334); + setState(2446); iC_BitwiseAndOperatorExpression(); } - setState(2339); + setState(2451); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 375, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 397, _ctx); } } @@ -14734,7 +15372,7 @@ size_t CypherParser::IC_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::IC_BitwiseAndOperatorExpressionContext* CypherParser::iC_BitwiseAndOperatorExpression() { IC_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleIC_BitwiseAndOperatorExpression); + enterRule(_localctx, 274, CypherParser::RuleIC_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14747,37 +15385,37 @@ CypherParser::IC_BitwiseAndOperatorExpressionContext* CypherParser::iC_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2340); + setState(2452); iC_BitShiftOperatorExpression(); - setState(2351); + setState(2463); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 378, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 400, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2342); + setState(2454); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2341); + setState(2453); match(CypherParser::SP); } - setState(2344); + setState(2456); match(CypherParser::T__16); - setState(2346); + setState(2458); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2345); + setState(2457); match(CypherParser::SP); } - setState(2348); + setState(2460); iC_BitShiftOperatorExpression(); } - setState(2353); + setState(2465); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 378, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 400, _ctx); } } @@ -14828,7 +15466,7 @@ size_t CypherParser::IC_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::IC_BitShiftOperatorExpressionContext* CypherParser::iC_BitShiftOperatorExpression() { IC_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleIC_BitShiftOperatorExpression); + enterRule(_localctx, 276, CypherParser::RuleIC_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14841,37 +15479,37 @@ CypherParser::IC_BitShiftOperatorExpressionContext* CypherParser::iC_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2354); + setState(2466); oC_AddOrSubtractExpression(); - setState(2366); + setState(2478); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 403, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2356); + setState(2468); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2355); + setState(2467); match(CypherParser::SP); } - setState(2358); + setState(2470); iC_BitShiftOperator(); - setState(2360); + setState(2472); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2359); + setState(2471); match(CypherParser::SP); } - setState(2362); + setState(2474); oC_AddOrSubtractExpression(); } - setState(2368); + setState(2480); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 403, _ctx); } } @@ -14898,7 +15536,7 @@ size_t CypherParser::IC_BitShiftOperatorContext::getRuleIndex() const { CypherParser::IC_BitShiftOperatorContext* CypherParser::iC_BitShiftOperator() { IC_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleIC_BitShiftOperator); + enterRule(_localctx, 278, CypherParser::RuleIC_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -14910,7 +15548,7 @@ CypherParser::IC_BitShiftOperatorContext* CypherParser::iC_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(2369); + setState(2481); _la = _input->LA(1); if (!(_la == CypherParser::T__17 @@ -14970,7 +15608,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 280, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14983,37 +15621,37 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2371); + setState(2483); oC_MultiplyDivideModuloExpression(); - setState(2383); + setState(2495); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 384, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2373); + setState(2485); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2372); + setState(2484); match(CypherParser::SP); } - setState(2375); + setState(2487); iC_AddOrSubtractOperator(); - setState(2377); + setState(2489); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2376); + setState(2488); match(CypherParser::SP); } - setState(2379); + setState(2491); oC_MultiplyDivideModuloExpression(); } - setState(2385); + setState(2497); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 384, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); } } @@ -15044,7 +15682,7 @@ size_t CypherParser::IC_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::IC_AddOrSubtractOperatorContext* CypherParser::iC_AddOrSubtractOperator() { IC_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleIC_AddOrSubtractOperator); + enterRule(_localctx, 282, CypherParser::RuleIC_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15056,7 +15694,7 @@ CypherParser::IC_AddOrSubtractOperatorContext* CypherParser::iC_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(2386); + setState(2498); _la = _input->LA(1); if (!(_la == CypherParser::T__19 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); @@ -15114,7 +15752,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 284, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15127,37 +15765,37 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2388); + setState(2500); oC_PowerOfExpression(); - setState(2400); + setState(2512); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 387, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 409, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2390); + setState(2502); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2389); + setState(2501); match(CypherParser::SP); } - setState(2392); + setState(2504); iC_MultiplyDivideModuloOperator(); - setState(2394); + setState(2506); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2393); + setState(2505); match(CypherParser::SP); } - setState(2396); + setState(2508); oC_PowerOfExpression(); } - setState(2402); + setState(2514); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 387, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 409, _ctx); } } @@ -15188,7 +15826,7 @@ size_t CypherParser::IC_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::IC_MultiplyDivideModuloOperatorContext* CypherParser::iC_MultiplyDivideModuloOperator() { IC_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleIC_MultiplyDivideModuloOperator); + enterRule(_localctx, 286, CypherParser::RuleIC_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -15200,7 +15838,7 @@ CypherParser::IC_MultiplyDivideModuloOperatorContext* CypherParser::iC_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(2403); + setState(2515); _la = _input->LA(1); if (!(_la == CypherParser::T__20 @@ -15252,7 +15890,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 288, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15265,37 +15903,37 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2405); + setState(2517); oC_StringListNullOperatorExpression(); - setState(2416); + setState(2528); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 390, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 412, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2407); + setState(2519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2406); + setState(2518); match(CypherParser::SP); } - setState(2409); + setState(2521); match(CypherParser::T__22); - setState(2411); + setState(2523); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2410); + setState(2522); match(CypherParser::SP); } - setState(2413); + setState(2525); oC_StringListNullOperatorExpression(); } - setState(2418); + setState(2530); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 390, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 412, _ctx); } } @@ -15342,7 +15980,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 290, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15354,26 +15992,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2419); + setState(2531); oC_UnaryAddSubtractOrFactorialExpression(); - setState(2427); + setState(2539); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 392, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 414, _ctx)) { case 1: { - setState(2420); + setState(2532); oC_StringOperatorExpression(); break; } case 2: { - setState(2422); + setState(2534); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2421); + setState(2533); oC_ListOperatorExpression(); break; } @@ -15381,15 +16019,15 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(2424); + setState(2536); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 391, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 413, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 3: { - setState(2426); + setState(2538); oC_NullOperatorExpression(); break; } @@ -15454,7 +16092,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 292, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15465,55 +16103,55 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(2448); + setState(2560); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 396, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 418, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2429); + setState(2541); match(CypherParser::SP); - setState(2430); + setState(2542); match(CypherParser::IN); - setState(2432); + setState(2544); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2431); + setState(2543); match(CypherParser::SP); } - setState(2434); + setState(2546); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2435); + setState(2547); match(CypherParser::T__6); - setState(2436); + setState(2548); oC_Expression(); - setState(2437); + setState(2549); match(CypherParser::T__7); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2439); + setState(2551); match(CypherParser::T__6); - setState(2441); + setState(2553); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492410606132523) != 0)) { - setState(2440); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { + setState(2552); oC_Expression(); } - setState(2443); + setState(2555); _la = _input->LA(1); if (!(_la == CypherParser::COLON @@ -15524,18 +16162,18 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp _errHandler->reportMatch(this); consume(); } - setState(2445); + setState(2557); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492410606132523) != 0)) { - setState(2444); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { + setState(2556); oC_Expression(); } - setState(2447); + setState(2559); match(CypherParser::T__7); break; } @@ -15600,7 +16238,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 294, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15612,43 +16250,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(2461); + setState(2573); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 397, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 419, _ctx)) { case 1: { - setState(2450); + setState(2562); oC_RegularExpression(); break; } case 2: { - setState(2451); + setState(2563); match(CypherParser::SP); - setState(2452); + setState(2564); match(CypherParser::STARTS); - setState(2453); + setState(2565); match(CypherParser::SP); - setState(2454); + setState(2566); match(CypherParser::WITH); break; } case 3: { - setState(2455); + setState(2567); match(CypherParser::SP); - setState(2456); + setState(2568); match(CypherParser::ENDS); - setState(2457); + setState(2569); match(CypherParser::SP); - setState(2458); + setState(2570); match(CypherParser::WITH); break; } case 4: { - setState(2459); + setState(2571); match(CypherParser::SP); - setState(2460); + setState(2572); match(CypherParser::CONTAINS); break; } @@ -15656,15 +16294,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(2464); + setState(2576); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2463); + setState(2575); match(CypherParser::SP); } - setState(2466); + setState(2578); oC_PropertyOrLabelsExpression(); } @@ -15695,7 +16333,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 296, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15707,15 +16345,15 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(2469); + setState(2581); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2468); + setState(2580); match(CypherParser::SP); } - setState(2471); + setState(2583); match(CypherParser::T__23); } @@ -15762,7 +16400,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 288, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 298, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15772,35 +16410,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(2483); + setState(2595); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 400, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 422, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2473); + setState(2585); match(CypherParser::SP); - setState(2474); + setState(2586); match(CypherParser::IS); - setState(2475); + setState(2587); match(CypherParser::SP); - setState(2476); + setState(2588); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2477); + setState(2589); match(CypherParser::SP); - setState(2478); + setState(2590); match(CypherParser::IS); - setState(2479); + setState(2591); match(CypherParser::SP); - setState(2480); + setState(2592); match(CypherParser::NOT); - setState(2481); + setState(2593); match(CypherParser::SP); - setState(2482); + setState(2594); match(CypherParser::NULL_); break; } @@ -15857,7 +16495,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 290, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 300, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15869,40 +16507,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(2491); + setState(2603); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(2485); + setState(2597); match(CypherParser::MINUS); - setState(2487); + setState(2599); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2486); + setState(2598); match(CypherParser::SP); } - setState(2493); + setState(2605); _errHandler->sync(this); _la = _input->LA(1); } - setState(2494); + setState(2606); oC_PropertyOrLabelsExpression(); - setState(2499); + setState(2611); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 404, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 426, _ctx)) { case 1: { - setState(2496); + setState(2608); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2495); + setState(2607); match(CypherParser::SP); } - setState(2498); + setState(2610); match(CypherParser::FACTORIAL); break; } @@ -15955,7 +16593,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 292, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 302, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15968,27 +16606,27 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2501); + setState(2613); oC_Atom(); - setState(2508); + setState(2620); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 428, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2503); + setState(2615); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2502); + setState(2614); match(CypherParser::SP); } - setState(2505); + setState(2617); oC_PropertyLookup(); } - setState(2510); + setState(2622); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 406, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 428, _ctx); } } @@ -16051,7 +16689,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 294, CypherParser::RuleOC_Atom); + enterRule(_localctx, 304, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16061,68 +16699,68 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(2520); + setState(2632); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 407, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 429, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2511); + setState(2623); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2512); + setState(2624); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2513); + setState(2625); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2514); + setState(2626); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2515); + setState(2627); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(2516); + setState(2628); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(2517); + setState(2629); oC_ExistCountSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(2518); + setState(2630); oC_Variable(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(2519); + setState(2631); oC_Quantifier(); break; } @@ -16183,7 +16821,7 @@ size_t CypherParser::OC_QuantifierContext::getRuleIndex() const { CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { OC_QuantifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 296, CypherParser::RuleOC_Quantifier); + enterRule(_localctx, 306, CypherParser::RuleOC_Quantifier); size_t _la = 0; #if __cplusplus > 201703L @@ -16194,153 +16832,153 @@ CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { exitRule(); }); try { - setState(2578); + setState(2690); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ALL: { enterOuterAlt(_localctx, 1); - setState(2522); + setState(2634); match(CypherParser::ALL); - setState(2524); + setState(2636); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2523); + setState(2635); match(CypherParser::SP); } - setState(2526); + setState(2638); match(CypherParser::T__1); - setState(2528); + setState(2640); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2527); + setState(2639); match(CypherParser::SP); } - setState(2530); + setState(2642); oC_FilterExpression(); - setState(2532); + setState(2644); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2531); + setState(2643); match(CypherParser::SP); } - setState(2534); + setState(2646); match(CypherParser::T__2); break; } case CypherParser::ANY: { enterOuterAlt(_localctx, 2); - setState(2536); + setState(2648); match(CypherParser::ANY); - setState(2538); + setState(2650); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2537); + setState(2649); match(CypherParser::SP); } - setState(2540); + setState(2652); match(CypherParser::T__1); - setState(2542); + setState(2654); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2541); + setState(2653); match(CypherParser::SP); } - setState(2544); + setState(2656); oC_FilterExpression(); - setState(2546); + setState(2658); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2545); + setState(2657); match(CypherParser::SP); } - setState(2548); + setState(2660); match(CypherParser::T__2); break; } case CypherParser::NONE: { enterOuterAlt(_localctx, 3); - setState(2550); + setState(2662); match(CypherParser::NONE); - setState(2552); + setState(2664); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2551); + setState(2663); match(CypherParser::SP); } - setState(2554); + setState(2666); match(CypherParser::T__1); - setState(2556); + setState(2668); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2555); + setState(2667); match(CypherParser::SP); } - setState(2558); + setState(2670); oC_FilterExpression(); - setState(2560); + setState(2672); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2559); + setState(2671); match(CypherParser::SP); } - setState(2562); + setState(2674); match(CypherParser::T__2); break; } case CypherParser::SINGLE: { enterOuterAlt(_localctx, 4); - setState(2564); + setState(2676); match(CypherParser::SINGLE); - setState(2566); + setState(2678); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2565); + setState(2677); match(CypherParser::SP); } - setState(2568); + setState(2680); match(CypherParser::T__1); - setState(2570); + setState(2682); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2569); + setState(2681); match(CypherParser::SP); } - setState(2572); + setState(2684); oC_FilterExpression(); - setState(2574); + setState(2686); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2573); + setState(2685); match(CypherParser::SP); } - setState(2576); + setState(2688); match(CypherParser::T__2); break; } @@ -16385,7 +17023,7 @@ size_t CypherParser::OC_FilterExpressionContext::getRuleIndex() const { CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { OC_FilterExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 298, CypherParser::RuleOC_FilterExpression); + enterRule(_localctx, 308, CypherParser::RuleOC_FilterExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16396,11 +17034,11 @@ CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2580); + setState(2692); oC_IdInColl(); - setState(2581); + setState(2693); match(CypherParser::SP); - setState(2582); + setState(2694); oC_Where(); } @@ -16447,7 +17085,7 @@ size_t CypherParser::OC_IdInCollContext::getRuleIndex() const { CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { OC_IdInCollContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 300, CypherParser::RuleOC_IdInColl); + enterRule(_localctx, 310, CypherParser::RuleOC_IdInColl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16458,15 +17096,15 @@ CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { }); try { enterOuterAlt(_localctx, 1); - setState(2584); + setState(2696); oC_Variable(); - setState(2585); + setState(2697); match(CypherParser::SP); - setState(2586); + setState(2698); match(CypherParser::IN); - setState(2587); + setState(2699); match(CypherParser::SP); - setState(2588); + setState(2700); oC_Expression(); } @@ -16517,7 +17155,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 302, CypherParser::RuleOC_Literal); + enterRule(_localctx, 312, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16527,21 +17165,21 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(2596); + setState(2708); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2590); + setState(2702); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(2591); + setState(2703); match(CypherParser::StringLiteral); break; } @@ -16549,28 +17187,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::FALSE: case CypherParser::TRUE: { enterOuterAlt(_localctx, 3); - setState(2592); + setState(2704); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(2593); + setState(2705); match(CypherParser::NULL_); break; } case CypherParser::T__6: { enterOuterAlt(_localctx, 5); - setState(2594); + setState(2706); oC_ListLiteral(); break; } case CypherParser::T__8: { enterOuterAlt(_localctx, 6); - setState(2595); + setState(2707); iC_StructLiteral(); break; } @@ -16611,7 +17249,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 304, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 314, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -16623,7 +17261,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2598); + setState(2710); _la = _input->LA(1); if (!(_la == CypherParser::FALSE @@ -16679,7 +17317,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 306, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 316, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -16691,54 +17329,54 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2600); + setState(2712); match(CypherParser::T__6); - setState(2602); + setState(2714); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2601); + setState(2713); match(CypherParser::SP); } - setState(2617); + setState(2729); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492410606132523) != 0)) { - setState(2604); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { + setState(2716); oC_Expression(); - setState(2606); + setState(2718); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2605); + setState(2717); match(CypherParser::SP); } - setState(2614); + setState(2726); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2608); + setState(2720); iC_ListEntry(); - setState(2610); + setState(2722); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2609); + setState(2721); match(CypherParser::SP); } - setState(2616); + setState(2728); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2619); + setState(2731); match(CypherParser::T__7); } @@ -16773,7 +17411,7 @@ size_t CypherParser::IC_ListEntryContext::getRuleIndex() const { CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { IC_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 308, CypherParser::RuleIC_ListEntry); + enterRule(_localctx, 318, CypherParser::RuleIC_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -16785,14 +17423,14 @@ CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2621); + setState(2733); match(CypherParser::T__3); - setState(2623); + setState(2735); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 427, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 449, _ctx)) { case 1: { - setState(2622); + setState(2734); match(CypherParser::SP); break; } @@ -16800,15 +17438,15 @@ CypherParser::IC_ListEntryContext* CypherParser::iC_ListEntry() { default: break; } - setState(2626); + setState(2738); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492410606132523) != 0)) { - setState(2625); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { + setState(2737); oC_Expression(); } @@ -16852,7 +17490,7 @@ size_t CypherParser::IC_StructLiteralContext::getRuleIndex() const { CypherParser::IC_StructLiteralContext* CypherParser::iC_StructLiteral() { IC_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 310, CypherParser::RuleIC_StructLiteral); + enterRule(_localctx, 320, CypherParser::RuleIC_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -16864,55 +17502,55 @@ CypherParser::IC_StructLiteralContext* CypherParser::iC_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2628); + setState(2740); match(CypherParser::T__8); - setState(2630); + setState(2742); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2629); + setState(2741); match(CypherParser::SP); } - setState(2632); + setState(2744); iC_StructField(); - setState(2634); + setState(2746); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2633); + setState(2745); match(CypherParser::SP); } - setState(2646); + setState(2758); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2636); + setState(2748); match(CypherParser::T__3); - setState(2638); + setState(2750); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2637); + setState(2749); match(CypherParser::SP); } - setState(2640); + setState(2752); iC_StructField(); - setState(2642); + setState(2754); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2641); + setState(2753); match(CypherParser::SP); } - setState(2648); + setState(2760); _errHandler->sync(this); _la = _input->LA(1); } - setState(2649); + setState(2761); match(CypherParser::T__9); } @@ -16963,7 +17601,7 @@ size_t CypherParser::IC_StructFieldContext::getRuleIndex() const { CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { IC_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 312, CypherParser::RuleIC_StructField); + enterRule(_localctx, 322, CypherParser::RuleIC_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -16975,7 +17613,7 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2653); + setState(2765); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -17043,13 +17681,13 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2651); + setState(2763); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2652); + setState(2764); match(CypherParser::StringLiteral); break; } @@ -17057,25 +17695,25 @@ CypherParser::IC_StructFieldContext* CypherParser::iC_StructField() { default: throw NoViableAltException(this); } - setState(2656); + setState(2768); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2655); + setState(2767); match(CypherParser::SP); } - setState(2658); + setState(2770); match(CypherParser::COLON); - setState(2660); + setState(2772); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2659); + setState(2771); match(CypherParser::SP); } - setState(2662); + setState(2774); oC_Expression(); } @@ -17114,7 +17752,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 314, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 324, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -17126,27 +17764,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2664); + setState(2776); match(CypherParser::T__1); - setState(2666); + setState(2778); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2665); + setState(2777); match(CypherParser::SP); } - setState(2668); + setState(2780); oC_Expression(); - setState(2670); + setState(2782); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2669); + setState(2781); match(CypherParser::SP); } - setState(2672); + setState(2784); match(CypherParser::T__2); } @@ -17217,7 +17855,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 316, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 326, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -17228,109 +17866,109 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2751); + setState(2863); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 458, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 480, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2674); + setState(2786); match(CypherParser::COUNT); - setState(2676); + setState(2788); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2675); + setState(2787); match(CypherParser::SP); } - setState(2678); + setState(2790); match(CypherParser::T__1); - setState(2680); + setState(2792); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2679); + setState(2791); match(CypherParser::SP); } - setState(2682); + setState(2794); match(CypherParser::STAR); - setState(2684); + setState(2796); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2683); + setState(2795); match(CypherParser::SP); } - setState(2686); + setState(2798); match(CypherParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2687); + setState(2799); match(CypherParser::CAST); - setState(2689); + setState(2801); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2688); + setState(2800); match(CypherParser::SP); } - setState(2691); + setState(2803); match(CypherParser::T__1); - setState(2693); + setState(2805); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2692); + setState(2804); match(CypherParser::SP); } - setState(2695); + setState(2807); iC_FunctionParameter(); - setState(2697); + setState(2809); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2696); + setState(2808); match(CypherParser::SP); } - setState(2709); + setState(2821); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::AS: { - setState(2699); + setState(2811); match(CypherParser::AS); - setState(2701); + setState(2813); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2700); + setState(2812); match(CypherParser::SP); } - setState(2703); + setState(2815); iC_DataType(0); break; } case CypherParser::T__3: { - setState(2704); + setState(2816); match(CypherParser::T__3); - setState(2706); + setState(2818); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2705); + setState(2817); match(CypherParser::SP); } - setState(2708); + setState(2820); iC_FunctionParameter(); break; } @@ -17338,105 +17976,105 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( default: throw NoViableAltException(this); } - setState(2712); + setState(2824); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2711); + setState(2823); match(CypherParser::SP); } - setState(2714); + setState(2826); match(CypherParser::T__2); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2716); + setState(2828); oC_FunctionName(); - setState(2718); + setState(2830); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2717); + setState(2829); match(CypherParser::SP); } - setState(2720); + setState(2832); match(CypherParser::T__1); - setState(2722); + setState(2834); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2721); + setState(2833); match(CypherParser::SP); } - setState(2728); + setState(2840); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2724); + setState(2836); match(CypherParser::DISTINCT); - setState(2726); + setState(2838); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2725); + setState(2837); match(CypherParser::SP); } } - setState(2747); + setState(2859); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2320550076713270652) != 0) || ((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & -286014905805559497) != 0) || ((((_la - 130) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 130)) & 5492410606132523) != 0)) { - setState(2730); + ((1ULL << (_la - 65)) & -2296981129019905737) != 0) || ((((_la - 129) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 129)) & 87878569698120375) != 0)) { + setState(2842); iC_FunctionParameter(); - setState(2732); + setState(2844); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2731); + setState(2843); match(CypherParser::SP); } - setState(2744); + setState(2856); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2734); + setState(2846); match(CypherParser::T__3); - setState(2736); + setState(2848); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2735); + setState(2847); match(CypherParser::SP); } - setState(2738); + setState(2850); iC_FunctionParameter(); - setState(2740); + setState(2852); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2739); + setState(2851); match(CypherParser::SP); } - setState(2746); + setState(2858); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2749); + setState(2861); match(CypherParser::T__2); break; } @@ -17473,7 +18111,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 318, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 328, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17484,7 +18122,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2753); + setState(2865); oC_SymbolicName(); } @@ -17535,7 +18173,7 @@ size_t CypherParser::IC_FunctionParameterContext::getRuleIndex() const { CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() { IC_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 320, CypherParser::RuleIC_FunctionParameter); + enterRule(_localctx, 330, CypherParser::RuleIC_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -17546,36 +18184,36 @@ CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() exitRule(); }); try { - setState(2768); + setState(2880); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 462, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 484, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2764); + setState(2876); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 461, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 483, _ctx)) { case 1: { - setState(2755); + setState(2867); oC_SymbolicName(); - setState(2757); + setState(2869); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2756); + setState(2868); match(CypherParser::SP); } - setState(2759); + setState(2871); match(CypherParser::COLON); - setState(2760); + setState(2872); match(CypherParser::T__5); - setState(2762); + setState(2874); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2761); + setState(2873); match(CypherParser::SP); } break; @@ -17584,14 +18222,14 @@ CypherParser::IC_FunctionParameterContext* CypherParser::iC_FunctionParameter() default: break; } - setState(2766); + setState(2878); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2767); + setState(2879); iC_LambdaParameter(); break; } @@ -17644,7 +18282,7 @@ size_t CypherParser::IC_LambdaParameterContext::getRuleIndex() const { CypherParser::IC_LambdaParameterContext* CypherParser::iC_LambdaParameter() { IC_LambdaParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 322, CypherParser::RuleIC_LambdaParameter); + enterRule(_localctx, 332, CypherParser::RuleIC_LambdaParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -17656,36 +18294,36 @@ CypherParser::IC_LambdaParameterContext* CypherParser::iC_LambdaParameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2770); + setState(2882); iC_LambdaVars(); - setState(2772); + setState(2884); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2771); + setState(2883); match(CypherParser::SP); } - setState(2774); + setState(2886); match(CypherParser::MINUS); - setState(2775); + setState(2887); match(CypherParser::T__14); - setState(2777); + setState(2889); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2776); + setState(2888); match(CypherParser::SP); } - setState(2779); + setState(2891); oC_Expression(); - setState(2781); + setState(2893); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 465, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 487, _ctx)) { case 1: { - setState(2780); + setState(2892); match(CypherParser::SP); break; } @@ -17734,7 +18372,7 @@ size_t CypherParser::IC_LambdaVarsContext::getRuleIndex() const { CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { IC_LambdaVarsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 324, CypherParser::RuleIC_LambdaVars); + enterRule(_localctx, 334, CypherParser::RuleIC_LambdaVars); size_t _la = 0; #if __cplusplus > 201703L @@ -17745,7 +18383,7 @@ CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { exitRule(); }); try { - setState(2807); + setState(2919); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -17814,62 +18452,62 @@ CypherParser::IC_LambdaVarsContext* CypherParser::iC_LambdaVars() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2783); + setState(2895); oC_SymbolicName(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(2784); + setState(2896); match(CypherParser::T__1); - setState(2786); + setState(2898); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2785); + setState(2897); match(CypherParser::SP); } - setState(2788); + setState(2900); oC_SymbolicName(); - setState(2790); + setState(2902); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2789); + setState(2901); match(CypherParser::SP); } - setState(2802); + setState(2914); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__3) { - setState(2792); + setState(2904); match(CypherParser::T__3); - setState(2794); + setState(2906); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2793); + setState(2905); match(CypherParser::SP); } - setState(2796); + setState(2908); oC_SymbolicName(); - setState(2798); + setState(2910); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2797); + setState(2909); match(CypherParser::SP); } - setState(2804); + setState(2916); _errHandler->sync(this); _la = _input->LA(1); } - setState(2805); + setState(2917); match(CypherParser::T__2); break; } @@ -17922,7 +18560,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 326, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 336, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -17935,23 +18573,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2809); + setState(2921); oC_NodePattern(); - setState(2814); + setState(2926); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2811); + setState(2923); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2810); + setState(2922); match(CypherParser::SP); } - setState(2813); + setState(2925); oC_PatternElementChain(); break; } @@ -17959,9 +18597,9 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2816); + setState(2928); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 473, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 495, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); } @@ -18020,7 +18658,7 @@ size_t CypherParser::OC_ExistCountSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery() { OC_ExistCountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 328, CypherParser::RuleOC_ExistCountSubquery); + enterRule(_localctx, 338, CypherParser::RuleOC_ExistCountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -18032,7 +18670,7 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( }); try { enterOuterAlt(_localctx, 1); - setState(2818); + setState(2930); _la = _input->LA(1); if (!(_la == CypherParser::COUNT @@ -18043,50 +18681,50 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( _errHandler->reportMatch(this); consume(); } - setState(2820); + setState(2932); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2819); + setState(2931); match(CypherParser::SP); } - setState(2822); + setState(2934); match(CypherParser::T__8); - setState(2824); + setState(2936); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2823); + setState(2935); match(CypherParser::SP); } - setState(2826); + setState(2938); match(CypherParser::MATCH); - setState(2828); + setState(2940); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2827); + setState(2939); match(CypherParser::SP); } - setState(2830); + setState(2942); oC_Pattern(); - setState(2835); + setState(2947); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 478, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 500, _ctx)) { case 1: { - setState(2832); + setState(2944); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2831); + setState(2943); match(CypherParser::SP); } - setState(2834); + setState(2946); oC_Where(); break; } @@ -18094,20 +18732,20 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( default: break; } - setState(2841); + setState(2953); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 480, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 502, _ctx)) { case 1: { - setState(2838); + setState(2950); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2837); + setState(2949); match(CypherParser::SP); } - setState(2840); + setState(2952); iC_Hint(); break; } @@ -18115,15 +18753,15 @@ CypherParser::OC_ExistCountSubqueryContext* CypherParser::oC_ExistCountSubquery( default: break; } - setState(2844); + setState(2956); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2843); + setState(2955); match(CypherParser::SP); } - setState(2846); + setState(2958); match(CypherParser::T__9); } @@ -18162,7 +18800,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 330, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 340, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -18174,17 +18812,17 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2848); + setState(2960); match(CypherParser::T__4); - setState(2850); + setState(2962); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2849); + setState(2961); match(CypherParser::SP); } - setState(2854); + setState(2966); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -18252,13 +18890,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2852); + setState(2964); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2853); + setState(2965); match(CypherParser::STAR); break; } @@ -18327,7 +18965,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 332, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 342, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -18340,27 +18978,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2878); + setState(2990); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 489, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 511, _ctx)) { case 1: { - setState(2856); + setState(2968); match(CypherParser::CASE); - setState(2861); + setState(2973); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2858); + setState(2970); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2857); + setState(2969); match(CypherParser::SP); } - setState(2860); + setState(2972); oC_CaseAlternative(); break; } @@ -18368,41 +19006,41 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2863); + setState(2975); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 485, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 507, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 2: { - setState(2865); + setState(2977); match(CypherParser::CASE); - setState(2867); + setState(2979); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2866); + setState(2978); match(CypherParser::SP); } - setState(2869); + setState(2981); oC_Expression(); - setState(2874); + setState(2986); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2871); + setState(2983); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2870); + setState(2982); match(CypherParser::SP); } - setState(2873); + setState(2985); oC_CaseAlternative(); break; } @@ -18410,9 +19048,9 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2876); + setState(2988); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 488, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 510, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -18420,30 +19058,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2888); + setState(3000); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 492, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 514, _ctx)) { case 1: { - setState(2881); + setState(2993); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2880); + setState(2992); match(CypherParser::SP); } - setState(2883); + setState(2995); match(CypherParser::ELSE); - setState(2885); + setState(2997); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2884); + setState(2996); match(CypherParser::SP); } - setState(2887); + setState(2999); oC_Expression(); break; } @@ -18451,15 +19089,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2891); + setState(3003); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2890); + setState(3002); match(CypherParser::SP); } - setState(2893); + setState(3005); match(CypherParser::END); } @@ -18510,7 +19148,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 334, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 344, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -18522,37 +19160,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(2895); + setState(3007); match(CypherParser::WHEN); - setState(2897); + setState(3009); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2896); + setState(3008); match(CypherParser::SP); } - setState(2899); + setState(3011); oC_Expression(); - setState(2901); + setState(3013); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2900); + setState(3012); match(CypherParser::SP); } - setState(2903); + setState(3015); match(CypherParser::THEN); - setState(2905); + setState(3017); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2904); + setState(3016); match(CypherParser::SP); } - setState(2907); + setState(3019); oC_Expression(); } @@ -18583,7 +19221,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 336, CypherParser::RuleOC_Variable); + enterRule(_localctx, 346, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18594,7 +19232,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(2909); + setState(3021); oC_SymbolicName(); } @@ -18629,7 +19267,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 338, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 348, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18639,20 +19277,20 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(2913); + setState(3025); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2911); + setState(3023); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(2912); + setState(3024); oC_IntegerLiteral(); break; } @@ -18693,7 +19331,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 340, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 350, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18704,9 +19342,9 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2915); + setState(3027); match(CypherParser::T__24); - setState(2918); + setState(3030); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -18774,13 +19412,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2916); + setState(3028); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(2917); + setState(3029); match(CypherParser::DecimalInteger); break; } @@ -18825,7 +19463,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 342, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 352, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -18837,17 +19475,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(2920); + setState(3032); oC_Atom(); - setState(2922); + setState(3034); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2921); + setState(3033); match(CypherParser::SP); } - setState(2924); + setState(3036); oC_PropertyLookup(); } @@ -18878,7 +19516,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 344, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 354, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18889,7 +19527,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(2926); + setState(3038); oC_SymbolicName(); } @@ -18920,7 +19558,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 346, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 356, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18931,7 +19569,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2928); + setState(3040); match(CypherParser::DecimalInteger); } @@ -18966,7 +19604,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 348, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 358, CypherParser::RuleOC_DoubleLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -18978,7 +19616,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2930); + setState(3042); _la = _input->LA(1); if (!(_la == CypherParser::ExponentDecimalReal @@ -19022,7 +19660,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 350, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 360, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19033,16 +19671,16 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(2932); + setState(3044); oC_SymbolicName(); - setState(2935); + setState(3047); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 500, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 522, _ctx)) { case 1: { - setState(2933); + setState(3045); match(CypherParser::T__4); - setState(2934); + setState(3046); oC_SymbolicName(); break; } @@ -19091,7 +19729,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 352, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 362, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -19101,19 +19739,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(2942); + setState(3054); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2937); + setState(3049); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(2938); + setState(3050); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -19121,7 +19759,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(2940); + setState(3052); match(CypherParser::HexLetter); break; } @@ -19189,7 +19827,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::DECIMAL: case CypherParser::L_SKIP: { enterOuterAlt(_localctx, 4); - setState(2941); + setState(3053); iC_NonReservedKeywords(); break; } @@ -19470,7 +20108,7 @@ size_t CypherParser::IC_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::IC_NonReservedKeywordsContext* CypherParser::iC_NonReservedKeywords() { IC_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 354, CypherParser::RuleIC_NonReservedKeywords); + enterRule(_localctx, 364, CypherParser::RuleIC_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -19482,11 +20120,11 @@ CypherParser::IC_NonReservedKeywordsContext* CypherParser::iC_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(2944); + setState(3056); _la = _input->LA(1); if (!(((((_la - 47) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 47)) & 8923191552623093653) != 0) || ((((_la - 111) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 111)) & 3361330146570243) != 0))) { + ((1ULL << (_la - 47)) & -1201032351101114475) != 0) || ((((_la - 111) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 111)) & 26890641172561933) != 0))) { _errHandler->recoverInline(this); } else { @@ -19518,7 +20156,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 356, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 366, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -19530,7 +20168,7 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2946); + setState(3058); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 1006641152) != 0))) { @@ -19565,7 +20203,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 358, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 368, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -19577,7 +20215,7 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2948); + setState(3060); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 16106160128) != 0))) { @@ -19616,7 +20254,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 360, CypherParser::RuleOC_Dash); + enterRule(_localctx, 370, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -19628,7 +20266,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(2950); + setState(3062); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 35167192219648) != 0) || _la == CypherParser::MINUS)) { @@ -19651,8 +20289,8 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { - case 59: return iC_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); - case 86: return iC_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); + case 64: return iC_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); + case 91: return iC_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_lexer.h b/third_party/antlr4_cypher/include/cypher_lexer.h index f4357ba655..00f25ab63d 100644 --- a/third_party/antlr4_cypher/include/cypher_lexer.h +++ b/third_party/antlr4_cypher/include/cypher_lexer.h @@ -26,26 +26,27 @@ class CypherLexer : public antlr4::Lexer { CYCLE = 69, DATABASE = 70, DBTYPE = 71, DEFAULT = 72, DELETE = 73, DESC = 74, DESCENDING = 75, DETACH = 76, DISTINCT = 77, DROP = 78, ELSE = 79, END = 80, ENDS = 81, EXISTS = 82, EXPLAIN = 83, EXPORT = 84, EXTENSION = 85, FALSE = 86, - FROM = 87, FORCE = 88, GLOB = 89, GRAPH = 90, GROUP = 91, HEADERS = 92, - HINT = 93, IMPORT = 94, IF = 95, IN = 96, INCREMENT = 97, INSTALL = 98, - IS = 99, JOIN = 100, KEY = 101, LIMIT = 102, LOAD = 103, LOGICAL = 104, - MACRO = 105, MATCH = 106, MAXVALUE = 107, MERGE = 108, MINVALUE = 109, - MULTI_JOIN = 110, NO = 111, NODE = 112, NOT = 113, NONE = 114, NULL_ = 115, - ON = 116, ONLY = 117, OPTIONAL = 118, OR = 119, ORDER = 120, PRIMARY = 121, - PROFILE = 122, PROJECT = 123, READ = 124, REL = 125, RENAME = 126, RETURN = 127, - ROLLBACK = 128, ROLLBACK_SKIP_CHECKPOINT = 129, SEQUENCE = 130, SET = 131, - SHORTEST = 132, START = 133, STARTS = 134, STRUCT = 135, TABLE = 136, - THEN = 137, TO = 138, TRAIL = 139, TRANSACTION = 140, TRUE = 141, TYPE = 142, - UNION = 143, UNWIND = 144, UNINSTALL = 145, UPDATE = 146, USE = 147, - WHEN = 148, WHERE = 149, WITH = 150, WRITE = 151, WSHORTEST = 152, XOR = 153, - SINGLE = 154, YIELD = 155, USER = 156, PASSWORD = 157, ROLE = 158, MAP = 159, - DECIMAL = 160, STAR = 161, L_SKIP = 162, INVALID_NOT_EQUAL = 163, COLON = 164, - DOTDOT = 165, MINUS = 166, FACTORIAL = 167, StringLiteral = 168, EscapedChar = 169, - DecimalInteger = 170, HexLetter = 171, HexDigit = 172, Digit = 173, - NonZeroDigit = 174, NonZeroOctDigit = 175, ZeroDigit = 176, ExponentDecimalReal = 177, - RegularDecimalReal = 178, UnescapedSymbolicName = 179, IdentifierStart = 180, - IdentifierPart = 181, EscapedSymbolicName = 182, SP = 183, WHITESPACE = 184, - CypherComment = 185, Unknown = 186 + FROM = 87, FORCE = 88, FOR = 89, GLOB = 90, GRAPH = 91, GROUP = 92, + HEADERS = 93, HINT = 94, IMPORT = 95, INDEX = 96, IF = 97, IN = 98, + INCREMENT = 99, INSTALL = 100, IS = 101, JOIN = 102, KEY = 103, LIMIT = 104, + LOAD = 105, LOGICAL = 106, MACRO = 107, MATCH = 108, MAXVALUE = 109, + MERGE = 110, MINVALUE = 111, MULTI_JOIN = 112, NO = 113, NODE = 114, + NOT = 115, NONE = 116, NULL_ = 117, ON = 118, ONLY = 119, OPTIONS = 120, + OPTIONAL = 121, OR = 122, ORDER = 123, PRIMARY = 124, PROFILE = 125, + PROJECT = 126, READ = 127, REL = 128, RENAME = 129, RETURN = 130, ROLLBACK = 131, + ROLLBACK_SKIP_CHECKPOINT = 132, SEQUENCE = 133, SET = 134, SHORTEST = 135, + START = 136, STARTS = 137, STRUCT = 138, TABLE = 139, THEN = 140, TO = 141, + TRAIL = 142, TRANSACTION = 143, TRUE = 144, TYPE = 145, UNION = 146, + UNWIND = 147, UNINSTALL = 148, UPDATE = 149, USE = 150, WHEN = 151, + WHERE = 152, WITH = 153, WRITE = 154, WSHORTEST = 155, XOR = 156, SINGLE = 157, + YIELD = 158, USER = 159, PASSWORD = 160, ROLE = 161, MAP = 162, DECIMAL = 163, + STAR = 164, L_SKIP = 165, INVALID_NOT_EQUAL = 166, COLON = 167, DOTDOT = 168, + MINUS = 169, FACTORIAL = 170, StringLiteral = 171, EscapedChar = 172, + DecimalInteger = 173, HexLetter = 174, HexDigit = 175, Digit = 176, + NonZeroDigit = 177, NonZeroOctDigit = 178, ZeroDigit = 179, ExponentDecimalReal = 180, + RegularDecimalReal = 181, UnescapedSymbolicName = 182, IdentifierStart = 183, + IdentifierPart = 184, EscapedSymbolicName = 185, SP = 186, WHITESPACE = 187, + CypherComment = 188, Unknown = 189 }; explicit CypherLexer(antlr4::CharStream *input); diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index a5b422abc9..184c4737e0 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -26,26 +26,27 @@ class CypherParser : public antlr4::Parser { CYCLE = 69, DATABASE = 70, DBTYPE = 71, DEFAULT = 72, DELETE = 73, DESC = 74, DESCENDING = 75, DETACH = 76, DISTINCT = 77, DROP = 78, ELSE = 79, END = 80, ENDS = 81, EXISTS = 82, EXPLAIN = 83, EXPORT = 84, EXTENSION = 85, FALSE = 86, - FROM = 87, FORCE = 88, GLOB = 89, GRAPH = 90, GROUP = 91, HEADERS = 92, - HINT = 93, IMPORT = 94, IF = 95, IN = 96, INCREMENT = 97, INSTALL = 98, - IS = 99, JOIN = 100, KEY = 101, LIMIT = 102, LOAD = 103, LOGICAL = 104, - MACRO = 105, MATCH = 106, MAXVALUE = 107, MERGE = 108, MINVALUE = 109, - MULTI_JOIN = 110, NO = 111, NODE = 112, NOT = 113, NONE = 114, NULL_ = 115, - ON = 116, ONLY = 117, OPTIONAL = 118, OR = 119, ORDER = 120, PRIMARY = 121, - PROFILE = 122, PROJECT = 123, READ = 124, REL = 125, RENAME = 126, RETURN = 127, - ROLLBACK = 128, ROLLBACK_SKIP_CHECKPOINT = 129, SEQUENCE = 130, SET = 131, - SHORTEST = 132, START = 133, STARTS = 134, STRUCT = 135, TABLE = 136, - THEN = 137, TO = 138, TRAIL = 139, TRANSACTION = 140, TRUE = 141, TYPE = 142, - UNION = 143, UNWIND = 144, UNINSTALL = 145, UPDATE = 146, USE = 147, - WHEN = 148, WHERE = 149, WITH = 150, WRITE = 151, WSHORTEST = 152, XOR = 153, - SINGLE = 154, YIELD = 155, USER = 156, PASSWORD = 157, ROLE = 158, MAP = 159, - DECIMAL = 160, STAR = 161, L_SKIP = 162, INVALID_NOT_EQUAL = 163, COLON = 164, - DOTDOT = 165, MINUS = 166, FACTORIAL = 167, StringLiteral = 168, EscapedChar = 169, - DecimalInteger = 170, HexLetter = 171, HexDigit = 172, Digit = 173, - NonZeroDigit = 174, NonZeroOctDigit = 175, ZeroDigit = 176, ExponentDecimalReal = 177, - RegularDecimalReal = 178, UnescapedSymbolicName = 179, IdentifierStart = 180, - IdentifierPart = 181, EscapedSymbolicName = 182, SP = 183, WHITESPACE = 184, - CypherComment = 185, Unknown = 186 + FROM = 87, FORCE = 88, FOR = 89, GLOB = 90, GRAPH = 91, GROUP = 92, + HEADERS = 93, HINT = 94, IMPORT = 95, INDEX = 96, IF = 97, IN = 98, + INCREMENT = 99, INSTALL = 100, IS = 101, JOIN = 102, KEY = 103, LIMIT = 104, + LOAD = 105, LOGICAL = 106, MACRO = 107, MATCH = 108, MAXVALUE = 109, + MERGE = 110, MINVALUE = 111, MULTI_JOIN = 112, NO = 113, NODE = 114, + NOT = 115, NONE = 116, NULL_ = 117, ON = 118, ONLY = 119, OPTIONS = 120, + OPTIONAL = 121, OR = 122, ORDER = 123, PRIMARY = 124, PROFILE = 125, + PROJECT = 126, READ = 127, REL = 128, RENAME = 129, RETURN = 130, ROLLBACK = 131, + ROLLBACK_SKIP_CHECKPOINT = 132, SEQUENCE = 133, SET = 134, SHORTEST = 135, + START = 136, STARTS = 137, STRUCT = 138, TABLE = 139, THEN = 140, TO = 141, + TRAIL = 142, TRANSACTION = 143, TRUE = 144, TYPE = 145, UNION = 146, + UNWIND = 147, UNINSTALL = 148, UPDATE = 149, USE = 150, WHEN = 151, + WHERE = 152, WITH = 153, WRITE = 154, WSHORTEST = 155, XOR = 156, SINGLE = 157, + YIELD = 158, USER = 159, PASSWORD = 160, ROLE = 161, MAP = 162, DECIMAL = 163, + STAR = 164, L_SKIP = 165, INVALID_NOT_EQUAL = 166, COLON = 167, DOTDOT = 168, + MINUS = 169, FACTORIAL = 170, StringLiteral = 171, EscapedChar = 172, + DecimalInteger = 173, HexLetter = 174, HexDigit = 175, Digit = 176, + NonZeroDigit = 177, NonZeroOctDigit = 178, ZeroDigit = 179, ExponentDecimalReal = 180, + RegularDecimalReal = 181, UnescapedSymbolicName = 182, IdentifierStart = 183, + IdentifierPart = 184, EscapedSymbolicName = 185, SP = 186, WHITESPACE = 187, + CypherComment = 188, Unknown = 189 }; enum { @@ -57,60 +58,62 @@ class CypherParser : public antlr4::Parser { RuleIC_UseGraph = 16, RuleIC_StandaloneCall = 17, RuleIC_CommentOn = 18, RuleIC_CreateMacro = 19, RuleIC_PositionalArgs = 20, RuleIC_DefaultArg = 21, RuleIC_FilePaths = 22, RuleIC_IfNotExists = 23, RuleIC_CreateNodeTable = 24, - RuleIC_CreateRelTable = 25, RuleIC_FromToConnections = 26, RuleIC_FromToConnection = 27, - RuleIC_CreateSequence = 28, RuleIC_CreateType = 29, RuleIC_SequenceOptions = 30, - RuleIC_WithPasswd = 31, RuleIC_CreateUser = 32, RuleIC_CreateRole = 33, - RuleIC_IncrementBy = 34, RuleIC_MinValue = 35, RuleIC_MaxValue = 36, - RuleIC_StartWith = 37, RuleIC_Cycle = 38, RuleIC_IfExists = 39, RuleIC_Drop = 40, - RuleIC_AlterTable = 41, RuleIC_AlterOptions = 42, RuleIC_AddProperty = 43, - RuleIC_Default = 44, RuleIC_DropProperty = 45, RuleIC_RenameTable = 46, - RuleIC_RenameProperty = 47, RuleIC_AddFromToConnection = 48, RuleIC_DropFromToConnection = 49, - RuleIC_ColumnDefinitions = 50, RuleIC_ColumnDefinition = 51, RuleIC_PropertyDefinitions = 52, - RuleIC_PropertyDefinition = 53, RuleIC_CreateNodeConstraint = 54, RuleIC_UnionType = 55, - RuleIC_StructType = 56, RuleIC_MapType = 57, RuleIC_DecimalType = 58, - RuleIC_DataType = 59, RuleIC_ListIdentifiers = 60, RuleIC_ListIdentifier = 61, - RuleOC_AnyCypherOption = 62, RuleOC_Explain = 63, RuleOC_Profile = 64, - RuleIC_Transaction = 65, RuleIC_Extension = 66, RuleIC_LoadExtension = 67, - RuleIC_InstallExtension = 68, RuleIC_UninstallExtension = 69, RuleIC_UpdateExtension = 70, - RuleOC_Query = 71, RuleOC_RegularQuery = 72, RuleOC_Union = 73, RuleOC_SingleQuery = 74, - RuleOC_SinglePartQuery = 75, RuleOC_MultiPartQuery = 76, RuleIC_QueryPart = 77, - RuleOC_UpdatingClause = 78, RuleOC_ReadingClause = 79, RuleIC_LoadFrom = 80, - RuleOC_YieldItem = 81, RuleOC_YieldItems = 82, RuleIC_InQueryCall = 83, - RuleOC_Match = 84, RuleIC_Hint = 85, RuleIC_JoinNode = 86, RuleOC_Unwind = 87, - RuleOC_Create = 88, RuleOC_Merge = 89, RuleOC_MergeAction = 90, RuleOC_Set = 91, - RuleOC_SetItem = 92, RuleOC_Delete = 93, RuleOC_With = 94, RuleOC_Return = 95, - RuleOC_ProjectionBody = 96, RuleOC_ProjectionItems = 97, RuleOC_ProjectionItem = 98, - RuleOC_Order = 99, RuleOC_Skip = 100, RuleOC_Limit = 101, RuleOC_SortItem = 102, - RuleOC_Where = 103, RuleOC_Pattern = 104, RuleOC_PatternPart = 105, - RuleOC_AnonymousPatternPart = 106, RuleOC_PatternElement = 107, RuleOC_NodePattern = 108, - RuleOC_PatternElementChain = 109, RuleOC_RelationshipPattern = 110, - RuleOC_RelationshipDetail = 111, RuleIC_Properties = 112, RuleOC_RelationshipTypes = 113, - RuleOC_NodeLabels = 114, RuleIC_RecursiveDetail = 115, RuleIC_RecursiveType = 116, - RuleOC_RangeLiteral = 117, RuleIC_RecursiveComprehension = 118, RuleIC_RecursiveProjectionItems = 119, - RuleOC_LowerBound = 120, RuleOC_UpperBound = 121, RuleOC_LabelName = 122, - RuleOC_RelTypeName = 123, RuleOC_Expression = 124, RuleOC_OrExpression = 125, - RuleOC_XorExpression = 126, RuleOC_AndExpression = 127, RuleOC_NotExpression = 128, - RuleOC_ComparisonExpression = 129, RuleIC_ComparisonOperator = 130, - RuleIC_BitwiseOrOperatorExpression = 131, RuleIC_BitwiseAndOperatorExpression = 132, - RuleIC_BitShiftOperatorExpression = 133, RuleIC_BitShiftOperator = 134, - RuleOC_AddOrSubtractExpression = 135, RuleIC_AddOrSubtractOperator = 136, - RuleOC_MultiplyDivideModuloExpression = 137, RuleIC_MultiplyDivideModuloOperator = 138, - RuleOC_PowerOfExpression = 139, RuleOC_StringListNullOperatorExpression = 140, - RuleOC_ListOperatorExpression = 141, RuleOC_StringOperatorExpression = 142, - RuleOC_RegularExpression = 143, RuleOC_NullOperatorExpression = 144, - RuleOC_UnaryAddSubtractOrFactorialExpression = 145, RuleOC_PropertyOrLabelsExpression = 146, - RuleOC_Atom = 147, RuleOC_Quantifier = 148, RuleOC_FilterExpression = 149, - RuleOC_IdInColl = 150, RuleOC_Literal = 151, RuleOC_BooleanLiteral = 152, - RuleOC_ListLiteral = 153, RuleIC_ListEntry = 154, RuleIC_StructLiteral = 155, - RuleIC_StructField = 156, RuleOC_ParenthesizedExpression = 157, RuleOC_FunctionInvocation = 158, - RuleOC_FunctionName = 159, RuleIC_FunctionParameter = 160, RuleIC_LambdaParameter = 161, - RuleIC_LambdaVars = 162, RuleOC_PathPatterns = 163, RuleOC_ExistCountSubquery = 164, - RuleOC_PropertyLookup = 165, RuleOC_CaseExpression = 166, RuleOC_CaseAlternative = 167, - RuleOC_Variable = 168, RuleOC_NumberLiteral = 169, RuleOC_Parameter = 170, - RuleOC_PropertyExpression = 171, RuleOC_PropertyKeyName = 172, RuleOC_IntegerLiteral = 173, - RuleOC_DoubleLiteral = 174, RuleOC_SchemaName = 175, RuleOC_SymbolicName = 176, - RuleIC_NonReservedKeywords = 177, RuleOC_LeftArrowHead = 178, RuleOC_RightArrowHead = 179, - RuleOC_Dash = 180 + RuleIC_CreateRelTable = 25, RuleIC_CreateIndex = 26, RuleIC_IndexPattern = 27, + RuleIC_IndexNodePattern = 28, RuleIC_IndexRelationshipPattern = 29, + RuleIC_IndexPropertyPattern = 30, RuleIC_FromToConnections = 31, RuleIC_FromToConnection = 32, + RuleIC_CreateSequence = 33, RuleIC_CreateType = 34, RuleIC_SequenceOptions = 35, + RuleIC_WithPasswd = 36, RuleIC_CreateUser = 37, RuleIC_CreateRole = 38, + RuleIC_IncrementBy = 39, RuleIC_MinValue = 40, RuleIC_MaxValue = 41, + RuleIC_StartWith = 42, RuleIC_Cycle = 43, RuleIC_IfExists = 44, RuleIC_Drop = 45, + RuleIC_AlterTable = 46, RuleIC_AlterOptions = 47, RuleIC_AddProperty = 48, + RuleIC_Default = 49, RuleIC_DropProperty = 50, RuleIC_RenameTable = 51, + RuleIC_RenameProperty = 52, RuleIC_AddFromToConnection = 53, RuleIC_DropFromToConnection = 54, + RuleIC_ColumnDefinitions = 55, RuleIC_ColumnDefinition = 56, RuleIC_PropertyDefinitions = 57, + RuleIC_PropertyDefinition = 58, RuleIC_CreateNodeConstraint = 59, RuleIC_UnionType = 60, + RuleIC_StructType = 61, RuleIC_MapType = 62, RuleIC_DecimalType = 63, + RuleIC_DataType = 64, RuleIC_ListIdentifiers = 65, RuleIC_ListIdentifier = 66, + RuleOC_AnyCypherOption = 67, RuleOC_Explain = 68, RuleOC_Profile = 69, + RuleIC_Transaction = 70, RuleIC_Extension = 71, RuleIC_LoadExtension = 72, + RuleIC_InstallExtension = 73, RuleIC_UninstallExtension = 74, RuleIC_UpdateExtension = 75, + RuleOC_Query = 76, RuleOC_RegularQuery = 77, RuleOC_Union = 78, RuleOC_SingleQuery = 79, + RuleOC_SinglePartQuery = 80, RuleOC_MultiPartQuery = 81, RuleIC_QueryPart = 82, + RuleOC_UpdatingClause = 83, RuleOC_ReadingClause = 84, RuleIC_LoadFrom = 85, + RuleOC_YieldItem = 86, RuleOC_YieldItems = 87, RuleIC_InQueryCall = 88, + RuleOC_Match = 89, RuleIC_Hint = 90, RuleIC_JoinNode = 91, RuleOC_Unwind = 92, + RuleOC_Create = 93, RuleOC_Merge = 94, RuleOC_MergeAction = 95, RuleOC_Set = 96, + RuleOC_SetItem = 97, RuleOC_Delete = 98, RuleOC_With = 99, RuleOC_Return = 100, + RuleOC_ProjectionBody = 101, RuleOC_ProjectionItems = 102, RuleOC_ProjectionItem = 103, + RuleOC_Order = 104, RuleOC_Skip = 105, RuleOC_Limit = 106, RuleOC_SortItem = 107, + RuleOC_Where = 108, RuleOC_Pattern = 109, RuleOC_PatternPart = 110, + RuleOC_AnonymousPatternPart = 111, RuleOC_PatternElement = 112, RuleOC_NodePattern = 113, + RuleOC_PatternElementChain = 114, RuleOC_RelationshipPattern = 115, + RuleOC_RelationshipDetail = 116, RuleIC_Properties = 117, RuleOC_RelationshipTypes = 118, + RuleOC_NodeLabels = 119, RuleIC_RecursiveDetail = 120, RuleIC_RecursiveType = 121, + RuleOC_RangeLiteral = 122, RuleIC_RecursiveComprehension = 123, RuleIC_RecursiveProjectionItems = 124, + RuleOC_LowerBound = 125, RuleOC_UpperBound = 126, RuleOC_LabelName = 127, + RuleOC_RelTypeName = 128, RuleOC_Expression = 129, RuleOC_OrExpression = 130, + RuleOC_XorExpression = 131, RuleOC_AndExpression = 132, RuleOC_NotExpression = 133, + RuleOC_ComparisonExpression = 134, RuleIC_ComparisonOperator = 135, + RuleIC_BitwiseOrOperatorExpression = 136, RuleIC_BitwiseAndOperatorExpression = 137, + RuleIC_BitShiftOperatorExpression = 138, RuleIC_BitShiftOperator = 139, + RuleOC_AddOrSubtractExpression = 140, RuleIC_AddOrSubtractOperator = 141, + RuleOC_MultiplyDivideModuloExpression = 142, RuleIC_MultiplyDivideModuloOperator = 143, + RuleOC_PowerOfExpression = 144, RuleOC_StringListNullOperatorExpression = 145, + RuleOC_ListOperatorExpression = 146, RuleOC_StringOperatorExpression = 147, + RuleOC_RegularExpression = 148, RuleOC_NullOperatorExpression = 149, + RuleOC_UnaryAddSubtractOrFactorialExpression = 150, RuleOC_PropertyOrLabelsExpression = 151, + RuleOC_Atom = 152, RuleOC_Quantifier = 153, RuleOC_FilterExpression = 154, + RuleOC_IdInColl = 155, RuleOC_Literal = 156, RuleOC_BooleanLiteral = 157, + RuleOC_ListLiteral = 158, RuleIC_ListEntry = 159, RuleIC_StructLiteral = 160, + RuleIC_StructField = 161, RuleOC_ParenthesizedExpression = 162, RuleOC_FunctionInvocation = 163, + RuleOC_FunctionName = 164, RuleIC_FunctionParameter = 165, RuleIC_LambdaParameter = 166, + RuleIC_LambdaVars = 167, RuleOC_PathPatterns = 168, RuleOC_ExistCountSubquery = 169, + RuleOC_PropertyLookup = 170, RuleOC_CaseExpression = 171, RuleOC_CaseAlternative = 172, + RuleOC_Variable = 173, RuleOC_NumberLiteral = 174, RuleOC_Parameter = 175, + RuleOC_PropertyExpression = 176, RuleOC_PropertyKeyName = 177, RuleOC_IntegerLiteral = 178, + RuleOC_DoubleLiteral = 179, RuleOC_SchemaName = 180, RuleOC_SymbolicName = 181, + RuleIC_NonReservedKeywords = 182, RuleOC_LeftArrowHead = 183, RuleOC_RightArrowHead = 184, + RuleOC_Dash = 185 }; explicit CypherParser(antlr4::TokenStream *input); @@ -156,6 +159,11 @@ class CypherParser : public antlr4::Parser { class IC_IfNotExistsContext; class IC_CreateNodeTableContext; class IC_CreateRelTableContext; + class IC_CreateIndexContext; + class IC_IndexPatternContext; + class IC_IndexNodePatternContext; + class IC_IndexRelationshipPatternContext; + class IC_IndexPropertyPatternContext; class IC_FromToConnectionsContext; class IC_FromToConnectionContext; class IC_CreateSequenceContext; @@ -350,6 +358,7 @@ class CypherParser : public antlr4::Parser { IC_CreateRoleContext *iC_CreateRole(); IC_CreateNodeTableContext *iC_CreateNodeTable(); IC_CreateRelTableContext *iC_CreateRelTable(); + IC_CreateIndexContext *iC_CreateIndex(); IC_CreateSequenceContext *iC_CreateSequence(); IC_CreateTypeContext *iC_CreateType(); IC_DropContext *iC_Drop(); @@ -757,6 +766,83 @@ class CypherParser : public antlr4::Parser { IC_CreateRelTableContext* iC_CreateRelTable(); + class IC_CreateIndexContext : public antlr4::ParserRuleContext { + public: + IC_CreateIndexContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *CREATE(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + antlr4::tree::TerminalNode *INDEX(); + antlr4::tree::TerminalNode *FOR(); + IC_IndexPatternContext *iC_IndexPattern(); + antlr4::tree::TerminalNode *ON(); + IC_IndexPropertyPatternContext *iC_IndexPropertyPattern(); + OC_SymbolicNameContext *oC_SymbolicName(); + OC_SchemaNameContext *oC_SchemaName(); + IC_IfNotExistsContext *iC_IfNotExists(); + antlr4::tree::TerminalNode *OPTIONS(); + IC_OptionsContext *iC_Options(); + + + }; + + IC_CreateIndexContext* iC_CreateIndex(); + + class IC_IndexPatternContext : public antlr4::ParserRuleContext { + public: + IC_IndexPatternContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IC_IndexNodePatternContext *iC_IndexNodePattern(); + IC_IndexRelationshipPatternContext *iC_IndexRelationshipPattern(); + + + }; + + IC_IndexPatternContext* iC_IndexPattern(); + + class IC_IndexNodePatternContext : public antlr4::ParserRuleContext { + public: + IC_IndexNodePatternContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *COLON(); + OC_LabelNameContext *oC_LabelName(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + OC_VariableContext *oC_Variable(); + + + }; + + IC_IndexNodePatternContext* iC_IndexNodePattern(); + + class IC_IndexRelationshipPatternContext : public antlr4::ParserRuleContext { + public: + IC_IndexRelationshipPatternContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + OC_RelationshipPatternContext *oC_RelationshipPattern(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + + + }; + + IC_IndexRelationshipPatternContext* iC_IndexRelationshipPattern(); + + class IC_IndexPropertyPatternContext : public antlr4::ParserRuleContext { + public: + IC_IndexPropertyPatternContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + OC_VariableContext *oC_Variable(); + OC_PropertyKeyNameContext *oC_PropertyKeyName(); + std::vector SP(); + antlr4::tree::TerminalNode* SP(size_t i); + + + }; + + IC_IndexPropertyPatternContext* iC_IndexPropertyPattern(); + class IC_FromToConnectionsContext : public antlr4::ParserRuleContext { public: IC_FromToConnectionsContext(antlr4::ParserRuleContext *parent, size_t invokingState); diff --git a/tools/shell/include/keywords.h b/tools/shell/include/keywords.h index 2e52a67174..c6539690b1 100644 --- a/tools/shell/include/keywords.h +++ b/tools/shell/include/keywords.h @@ -1,6 +1,6 @@ #ifndef _keywordList // clang-format off -#define _keywordList {"ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "AND", "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", "CAST", "CHECKPOINT", "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", "FALSE", "FROM", "FORCE", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", "ONLY", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", "MAP"} -#define _keywordListLength 115 +#define _keywordList {"ACYCLIC", "ANY", "ADD", "ALL", "ALTER", "AND", "AS", "ASC", "ASCENDING", "ATTACH", "BEGIN", "BY", "CALL", "CASE", "CAST", "CHECKPOINT", "COLUMN", "COMMENT", "COMMIT", "COMMIT_SKIP_CHECKPOINT", "CONTAINS", "COPY", "COUNT", "CREATE", "CYCLE", "DATABASE", "DBTYPE", "DEFAULT", "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DROP", "ELSE", "END", "ENDS", "EXISTS", "EXPLAIN", "EXPORT", "EXTENSION", "FALSE", "FROM", "FORCE", "FOR", "GLOB", "GRAPH", "GROUP", "HEADERS", "HINT", "IMPORT", "INDEX", "IF", "IN", "INCREMENT", "INSTALL", "IS", "JOIN", "KEY", "LIMIT", "LOAD", "LOGICAL", "MACRO", "MATCH", "MAXVALUE", "MERGE", "MINVALUE", "MULTI_JOIN", "NO", "NODE", "NOT", "NONE", "NULL", "ON", "ONLY", "OPTIONS", "OPTIONAL", "OR", "ORDER", "PRIMARY", "PROFILE", "PROJECT", "READ", "REL", "RENAME", "RETURN", "ROLLBACK", "ROLLBACK_SKIP_CHECKPOINT", "SEQUENCE", "SET", "SHORTEST", "START", "STARTS", "STRUCT", "TABLE", "THEN", "TO", "TRAIL", "TRANSACTION", "TRUE", "TYPE", "UNION", "UNWIND", "UNINSTALL", "UPDATE", "USE", "WHEN", "WHERE", "WITH", "WRITE", "WSHORTEST", "XOR", "SINGLE", "YIELD", "USER", "PASSWORD", "ROLE", "MAP"} +#define _keywordListLength 118 // clang-format on #endif