diff --git a/extension/fts/src/function/query_fts_index.cpp b/extension/fts/src/function/query_fts_index.cpp index 8fff35760d5..d24f055c0fe 100644 --- a/extension/fts/src/function/query_fts_index.cpp +++ b/extension/fts/src/function/query_fts_index.cpp @@ -86,6 +86,15 @@ static std::unique_ptr bindFunc(ClientContext* context, std::move(columnTypes), std::move(columnNames), std::move(config)); } +static std::unique_ptr runQuery(main::ClientContext* context, std::string query) { + auto result = + context->queryInternal(query, "", false /* enumerateAllPlans*/, std::nullopt /* queryID*/); + if (!result->isSuccess()) { + throw RuntimeException(result->getErrorMessage()); + } + return result; +} + static common::offset_t tableFunc(TableFuncInput& data, TableFuncOutput& output) { // TODO(Xiyang/Ziyi): Currently we don't have a dedicated planner for queryFTS, so // we need a wrapper call function to CALL the actual GDS function. @@ -97,14 +106,16 @@ static common::offset_t tableFunc(TableFuncInput& data, TableFuncOutput& output) auto avgDocLen = bindData.entry.getAvgDocLen(); auto query = common::stringFormat("UNWIND tokenize('{}') AS tk RETURN COUNT(DISTINCT tk);", actualQuery); - auto numTermsInQuery = data.context->clientContext - ->queryInternal(query, "" /* encodedJoin */, - false /* enumerateAllPlans */, std::nullopt /* queryID */) - ->getNext() - ->getValue(0) - ->toString(); - query = common::stringFormat("PROJECT GRAPH PK (`{}`, `{}`, `{}`) " - "UNWIND tokenize('{}') AS tk " + auto clientContext = data.context->clientContext; + auto result = runQuery(clientContext, query); + auto numTermsInQuery = result->getNext()->getValue(0)->toString(); + // Project graph + query = stringFormat("CALL create_project_graph('PK', ['{}', '{}'], ['{}'])", + bindData.getTermsTableName(), bindData.getDocsTableName(), + bindData.getAppearsInTableName()); + runQuery(clientContext, query); + // Compute score + query = common::stringFormat("UNWIND tokenize('{}') AS tk " "WITH collect(stem(tk, '{}')) AS keywords " "MATCH (a:`{}`) " "WHERE list_contains(keywords, a.term) " @@ -112,12 +123,13 @@ static common::offset_t tableFunc(TableFuncInput& data, TableFuncOutput& output) "MATCH (p:`{}`) " "WHERE _node.docID = offset(id(p)) " "RETURN p, score", - bindData.getTermsTableName(), bindData.getDocsTableName(), - bindData.getAppearsInTableName(), actualQuery, bindData.entry.getFTSConfig().stemmer, - bindData.getTermsTableName(), bindData.config.k, bindData.config.b, numDocs, avgDocLen, - numTermsInQuery, bindData.config.isConjunctive ? "true" : "false", bindData.tableName); - localState->result = data.context->clientContext->queryInternal(query, "", false, - std::nullopt /* queryID */); + actualQuery, bindData.entry.getFTSConfig().stemmer, bindData.getTermsTableName(), + bindData.config.k, bindData.config.b, numDocs, avgDocLen, numTermsInQuery, + bindData.config.isConjunctive ? "true" : "false", bindData.tableName); + localState->result = runQuery(clientContext, query); + // Remove project graph + query = stringFormat("CALL drop_project_graph('PK')"); + runQuery(clientContext, query); } if (localState->numRowsOutput >= localState->result->getNumTuples()) { return 0; diff --git a/scripts/antlr4/Cypher.g4 b/scripts/antlr4/Cypher.g4 index c70886c7508..e0eebf9214f 100644 --- a/scripts/antlr4/Cypher.g4 +++ b/scripts/antlr4/Cypher.g4 @@ -438,13 +438,7 @@ kU_InstallExtension : INSTALL SP oC_Variable ; oC_Query - : (kU_ProjectGraph SP? )? oC_RegularQuery ; - -kU_ProjectGraph - : PROJECT SP GRAPH SP oC_SchemaName SP? '(' SP? kU_GraphProjectionTableItems SP? ')' ; - -kU_GraphProjectionTableItems - : kU_GraphProjectionTableItem ( SP? ',' SP? kU_GraphProjectionTableItem )* ; + : oC_RegularQuery ; oC_RegularQuery : oC_SingleQuery ( SP? oC_Union )* @@ -489,16 +483,7 @@ kU_LoadFrom : LOAD ( SP WITH SP HEADERS SP? '(' SP? kU_ColumnDefinitions SP? ')' )? SP FROM SP kU_ScanSource (SP? kU_ParsingOptions)? (SP? oC_Where)? ; kU_InQueryCall - : ( kU_ProjectGraph SP? )? CALL SP oC_FunctionInvocation (SP? oC_Where)? ; - -kU_GraphProjectionTableItem - : oC_SchemaName ( SP? '{' SP? kU_GraphProjectionColumnItems SP? '}' )? ; - -kU_GraphProjectionColumnItems - : kU_GraphProjectionColumnItem ( SP? ',' SP? kU_GraphProjectionColumnItem )* ; - -kU_GraphProjectionColumnItem - : oC_PropertyKeyName ( SP kU_Default )? ( SP oC_Where )? ; + : CALL SP oC_FunctionInvocation (SP? oC_Where)? ; oC_Match : ( OPTIONAL SP )? MATCH SP? oC_Pattern ( SP oC_Where )? ( SP kU_Hint )? ; diff --git a/scripts/antlr4/hash.md5 b/scripts/antlr4/hash.md5 index 0e7d276b7b5..02b29b6a300 100644 --- a/scripts/antlr4/hash.md5 +++ b/scripts/antlr4/hash.md5 @@ -1 +1 @@ -81546847023f2a4c8d1fec8ef8ff0d88 +8836c17d54a52a955eddd8a411a02dba diff --git a/src/antlr4/Cypher.g4 b/src/antlr4/Cypher.g4 index add18d4f95c..bbac8e16982 100644 --- a/src/antlr4/Cypher.g4 +++ b/src/antlr4/Cypher.g4 @@ -211,13 +211,7 @@ kU_InstallExtension : INSTALL SP oC_Variable ; oC_Query - : (kU_ProjectGraph SP? )? oC_RegularQuery ; - -kU_ProjectGraph - : PROJECT SP GRAPH SP oC_SchemaName SP? '(' SP? kU_GraphProjectionTableItems SP? ')' ; - -kU_GraphProjectionTableItems - : kU_GraphProjectionTableItem ( SP? ',' SP? kU_GraphProjectionTableItem )* ; + : oC_RegularQuery ; oC_RegularQuery : oC_SingleQuery ( SP? oC_Union )* @@ -262,16 +256,7 @@ kU_LoadFrom : LOAD ( SP WITH SP HEADERS SP? '(' SP? kU_ColumnDefinitions SP? ')' )? SP FROM SP kU_ScanSource (SP? kU_ParsingOptions)? (SP? oC_Where)? ; kU_InQueryCall - : ( kU_ProjectGraph SP? )? CALL SP oC_FunctionInvocation (SP? oC_Where)? ; - -kU_GraphProjectionTableItem - : oC_SchemaName ( SP? '{' SP? kU_GraphProjectionColumnItems SP? '}' )? ; - -kU_GraphProjectionColumnItems - : kU_GraphProjectionColumnItem ( SP? ',' SP? kU_GraphProjectionColumnItem )* ; - -kU_GraphProjectionColumnItem - : oC_PropertyKeyName ( SP kU_Default )? ( SP oC_Where )? ; + : CALL SP oC_FunctionInvocation (SP? oC_Where)? ; oC_Match : ( OPTIONAL SP )? MATCH SP? oC_Pattern ( SP oC_Where )? ( SP kU_Hint )? ; diff --git a/src/binder/bind/CMakeLists.txt b/src/binder/bind/CMakeLists.txt index 7bd74399825..e9b95e1c01e 100644 --- a/src/binder/bind/CMakeLists.txt +++ b/src/binder/bind/CMakeLists.txt @@ -7,7 +7,6 @@ add_library( OBJECT bind_attach_database.cpp bind_create_macro.cpp - bind_project_graph.cpp bind_ddl.cpp bind_detach_database.cpp bind_explain.cpp diff --git a/src/binder/bind/bind_project_graph.cpp b/src/binder/bind/bind_project_graph.cpp deleted file mode 100644 index 9b7020ddea6..00000000000 --- a/src/binder/bind/bind_project_graph.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "binder/binder.h" -#include "catalog/catalog.h" -#include "common/exception/binder.h" -#include "graph/graph_entry.h" -#include "main/client_context.h" - -using namespace kuzu::parser; -using namespace kuzu::common; -using namespace kuzu::graph; - -namespace kuzu { -namespace binder { - -graph::GraphEntry Binder::bindProjectGraph(const ProjectGraph& projectGraph) { - auto catalog = clientContext->getCatalog(); - auto transaction = clientContext->getTx(); - std::vector nodeEntries; - std::vector relEntries; - for (auto tableName : projectGraph.getTableNames()) { - auto entry = catalog->getTableCatalogEntry(transaction, tableName); - switch (entry->getTableType()) { - case TableType::NODE: { - nodeEntries.push_back(entry); - } break; - case TableType::REL: { - relEntries.push_back(entry); - } break; - default: - throw BinderException(stringFormat("Cannot create a subgraph with table type {}.", - TableTypeUtils::toString(entry->getTableType()))); - } - } - return GraphEntry(std::move(nodeEntries), std::move(relEntries)); -} - -} // namespace binder -} // namespace kuzu diff --git a/src/binder/bind/bind_query.cpp b/src/binder/bind/bind_query.cpp index 9c5576a9c5a..9e80d59c265 100644 --- a/src/binder/bind/bind_query.cpp +++ b/src/binder/bind/bind_query.cpp @@ -41,12 +41,6 @@ void validateIsAllUnionOrUnionAll(const BoundRegularQuery& regularQuery) { } std::unique_ptr Binder::bindQuery(const RegularQuery& regularQuery) { - if (regularQuery.hasProjectGraph()) { - auto projectGraph = regularQuery.getProjectGraph(); - KU_ASSERT(!graphEntrySet.hasGraph(projectGraph->getGraphName())); - auto entry = bindProjectGraph(*projectGraph); - graphEntrySet.addGraph(projectGraph->getGraphName(), entry); - } std::vector normalizedSingleQueries; for (auto i = 0u; i < regularQuery.getNumSingleQueries(); i++) { // Don't clear scope within bindSingleQuery() yet because it is also used for subquery diff --git a/src/binder/bind/read/bind_in_query_call.cpp b/src/binder/bind/read/bind_in_query_call.cpp index 6bb27d8e473..98e33ce4af9 100644 --- a/src/binder/bind/read/bind_in_query_call.cpp +++ b/src/binder/bind/read/bind_in_query_call.cpp @@ -47,10 +47,10 @@ std::unique_ptr Binder::bindInQueryCall(const ReadingClause& } auto varName = functionExpr->getChild(0)->constPtrCast()->getVariableName(); - if (!graphEntrySet.hasGraph(varName)) { + if (!clientContext->getGraphEntrySetUnsafe().hasGraph(varName)) { throw BinderException(stringFormat("Cannot find graph {}.", varName)); } - auto graphEntry = graphEntrySet.getEntry(varName); + auto graphEntry = clientContext->getGraphEntrySetUnsafe().getEntry(varName); expression_vector children; std::vector childrenTypes; children.push_back(nullptr); // placeholder for graph variable. diff --git a/src/function/function_collection.cpp b/src/function/function_collection.cpp index 63b59ba9a63..018157a480a 100644 --- a/src/function/function_collection.cpp +++ b/src/function/function_collection.cpp @@ -220,6 +220,8 @@ FunctionCollection* FunctionCollection::getFunctions() { // Standalone Table functions STANDALONE_TABLE_FUNCTION(ClearWarningsFunction), + STANDALONE_TABLE_FUNCTION(CreateProjectGraphFunction), + STANDALONE_TABLE_FUNCTION(DropProjectGraphFunction), // Scan functions TABLE_FUNCTION(ParquetScanFunction), TABLE_FUNCTION(NpyScanFunction), diff --git a/src/function/table/bind_input.cpp b/src/function/table/bind_input.cpp index 9745620ed49..1919461c996 100644 --- a/src/function/table/bind_input.cpp +++ b/src/function/table/bind_input.cpp @@ -1,5 +1,6 @@ #include "function/table/bind_input.h" +#include "binder/expression/expression_util.h" #include "binder/expression/literal_expression.h" namespace kuzu { @@ -9,10 +10,14 @@ void TableFuncBindInput::addLiteralParam(common::Value value) { params.push_back(std::make_shared(std::move(value), "")); } +common::Value TableFuncBindInput::getValue(common::idx_t idx) const { + binder::ExpressionUtil::validateExpressionType(*params[idx], common::ExpressionType::LITERAL); + return params[idx]->constCast().getValue(); +} + template T TableFuncBindInput::getLiteralVal(common::idx_t idx) const { - KU_ASSERT(params[idx]->expressionType == common::ExpressionType::LITERAL); - return params[idx]->constCast().getValue().getValue(); + return getValue(idx).getValue(); } template KUZU_API std::string TableFuncBindInput::getLiteralVal( diff --git a/src/function/table/call/CMakeLists.txt b/src/function/table/call/CMakeLists.txt index 1b2daf82ba5..e8a12a8dc25 100644 --- a/src/function/table/call/CMakeLists.txt +++ b/src/function/table/call/CMakeLists.txt @@ -1,8 +1,10 @@ add_library(kuzu_table_call OBJECT bm_info.cpp + create_project_graph.cpp current_setting.cpp db_version.cpp + drop_project_graph.cpp show_connection.cpp show_attached_databases.cpp show_tables.cpp diff --git a/src/function/table/call/create_project_graph.cpp b/src/function/table/call/create_project_graph.cpp new file mode 100644 index 00000000000..c0a61f7b96f --- /dev/null +++ b/src/function/table/call/create_project_graph.cpp @@ -0,0 +1,92 @@ +#include "catalog/catalog.h" +#include "common/exception/binder.h" +#include "common/exception/runtime.h" +#include "common/types/value/nested.h" +#include "function/table/simple_table_functions.h" +#include "graph/graph_entry.h" +#include "processor/execution_context.h" + +using namespace kuzu::common; +using namespace kuzu::catalog; + +namespace kuzu { +namespace function { + +struct CreateProjectGraphBindData : SimpleTableFuncBindData { + std::string graphName; + std::vector nodeEntries; + std::vector relEntries; + + CreateProjectGraphBindData(std::string graphName, std::vector nodeEntries, + std::vector relEntries) + : SimpleTableFuncBindData{0}, graphName{graphName}, nodeEntries{nodeEntries}, + relEntries{relEntries} {} + + std::unique_ptr copy() const override { + return std::make_unique(graphName, nodeEntries, relEntries); + } +}; + +static common::offset_t tableFunc(TableFuncInput& input, TableFuncOutput& /*output*/) { + auto bindData = ku_dynamic_cast(input.bindData); + auto& graphEntrySet = input.context->clientContext->getGraphEntrySetUnsafe(); + if (graphEntrySet.hasGraph(bindData->graphName)) { + throw RuntimeException( + stringFormat("Project graph {} already exists.", bindData->graphName)); + } + auto entry = graph::GraphEntry(bindData->nodeEntries, bindData->relEntries); + graphEntrySet.addGraph(bindData->graphName, std::move(entry)); + return 0; +} + +static std::vector getAsStringVector(const Value& value) { + std::vector result; + for (auto i = 0u; i < NestedVal::getChildrenSize(&value); ++i) { + result.push_back(NestedVal::getChildVal(&value, i)->getValue()); + } + return result; +} + +static std::vector getTableEntries( + const std::vector& tableNames, CatalogEntryType expectedType, + main::ClientContext& context) { + std::vector entries; + for (auto& tableName : tableNames) { + auto entry = context.getCatalog()->getTableCatalogEntry(context.getTx(), tableName); + if (entry->getType() != expectedType) { + throw BinderException(stringFormat("Expect catalog entry type {} but got {}.", + CatalogEntryTypeUtils::toString(expectedType), + CatalogEntryTypeUtils::toString(entry->getType()))); + } + entries.push_back(entry); + } + return entries; +} + +static std::unique_ptr bindFunc(main::ClientContext* context, + TableFuncBindInput* input) { + auto graphName = input->getLiteralVal(0); + auto nodeTableNames = getAsStringVector(input->getValue(1)); + auto relTableNames = getAsStringVector(input->getValue(2)); + auto nodeEntries = + getTableEntries(nodeTableNames, CatalogEntryType::NODE_TABLE_ENTRY, *context); + auto relEntries = getTableEntries(relTableNames, CatalogEntryType::REL_TABLE_ENTRY, *context); + return std::make_unique(graphName, nodeEntries, relEntries); +} + +function_set CreateProjectGraphFunction::getFunctionSet() { + function_set functionSet; + auto func = + std::make_unique(name, std::vector{LogicalTypeID::STRING, + LogicalTypeID::LIST, LogicalTypeID::LIST}); + func->bindFunc = bindFunc; + func->tableFunc = tableFunc; + func->initSharedStateFunc = initSharedState; + func->initLocalStateFunc = initEmptyLocalState; + func->canParallelFunc = []() { return false; }; + functionSet.push_back(std::move(func)); + return functionSet; +} + +} // namespace function +} // namespace kuzu diff --git a/src/function/table/call/drop_project_graph.cpp b/src/function/table/call/drop_project_graph.cpp new file mode 100644 index 00000000000..e552c623e86 --- /dev/null +++ b/src/function/table/call/drop_project_graph.cpp @@ -0,0 +1,53 @@ +#include "common/exception/runtime.h" +#include "function/table/simple_table_functions.h" +#include "graph/graph_entry.h" +#include "processor/execution_context.h" + +using namespace kuzu::common; + +namespace kuzu { +namespace function { + +struct DropProjectGraphBindData : SimpleTableFuncBindData { + std::string graphName; + + explicit DropProjectGraphBindData(std::string graphName) + : SimpleTableFuncBindData{0}, graphName{graphName} {} + + std::unique_ptr copy() const override { + return std::make_unique(graphName); + } +}; + +static common::offset_t tableFunc(TableFuncInput& input, TableFuncOutput& /*output*/) { + auto bindData = ku_dynamic_cast(input.bindData); + auto& graphEntrySet = input.context->clientContext->getGraphEntrySetUnsafe(); + if (!graphEntrySet.hasGraph(bindData->graphName)) { + throw RuntimeException( + stringFormat("Project graph {} does not exists.", bindData->graphName)); + } + graphEntrySet.dropGraph(bindData->graphName); + return 0; +} + +static std::unique_ptr bindFunc(main::ClientContext*, + TableFuncBindInput* input) { + auto graphName = input->getLiteralVal(0); + return std::make_unique(graphName); +} + +function_set DropProjectGraphFunction::getFunctionSet() { + function_set functionSet; + auto func = + std::make_unique(name, std::vector{LogicalTypeID::STRING}); + func->bindFunc = bindFunc; + func->tableFunc = tableFunc; + func->initSharedStateFunc = initSharedState; + func->initLocalStateFunc = initEmptyLocalState; + func->canParallelFunc = []() { return false; }; + functionSet.push_back(std::move(func)); + return functionSet; +} + +} // namespace function +} // namespace kuzu diff --git a/src/include/binder/binder.h b/src/include/binder/binder.h index bc760560047..2916fe48f4e 100644 --- a/src/include/binder/binder.h +++ b/src/include/binder/binder.h @@ -7,7 +7,6 @@ #include "catalog/catalog_entry/table_catalog_entry.h" #include "common/copier_config/reader_config.h" #include "common/enums/table_type.h" -#include "graph/graph_entry.h" #include "parser/ddl/parsed_property_definition.h" #include "parser/query/graph_pattern/pattern_element.h" #include "parser/query/regular_query.h" @@ -16,7 +15,6 @@ namespace kuzu { namespace parser { struct CreateTableInfo; struct BaseScanSource; -class ProjectGraph; struct JoinHintNode; } // namespace parser @@ -30,10 +28,6 @@ namespace extension { struct ExtensionOptions; } // namespace extension -namespace graph { -struct GraphEntry; -} - namespace main { class ClientContext; class Database; @@ -68,7 +62,7 @@ class Binder { public: explicit Binder(main::ClientContext* clientContext) - : lastExpressionId{0}, scope{}, graphEntrySet{}, expressionBinder{this, clientContext}, + : lastExpressionId{0}, scope{}, expressionBinder{this, clientContext}, clientContext{clientContext} {} std::unique_ptr bind(const parser::Statement& statement); @@ -157,8 +151,6 @@ class Binder { NormalizedSingleQuery bindSingleQuery(const parser::SingleQuery& singleQuery); NormalizedQueryPart bindQueryPart(const parser::QueryPart& queryPart); - graph::GraphEntry bindProjectGraph(const parser::ProjectGraph& projectGraph); - /*** bind standalone call ***/ std::unique_ptr bindStandaloneCall(const parser::Statement& statement); @@ -306,9 +298,8 @@ class Binder { ExpressionBinder* getExpressionBinder() { return &expressionBinder; } private: - uint32_t lastExpressionId; + common::idx_t lastExpressionId; BinderScope scope; - graph::GraphEntrySet graphEntrySet; ExpressionBinder expressionBinder; main::ClientContext* clientContext; }; diff --git a/src/include/binder/query/bound_regular_query.h b/src/include/binder/query/bound_regular_query.h index 0b133cf9af9..4969274dc94 100644 --- a/src/include/binder/query/bound_regular_query.h +++ b/src/include/binder/query/bound_regular_query.h @@ -7,21 +7,22 @@ namespace kuzu { namespace binder { class BoundRegularQuery : public BoundStatement { + public: explicit BoundRegularQuery(std::vector isUnionAll, BoundStatementResult statementResult) : BoundStatement{common::StatementType::QUERY, std::move(statementResult)}, isUnionAll{std::move(isUnionAll)} {} - inline void addSingleQuery(NormalizedSingleQuery singleQuery) { + void addSingleQuery(NormalizedSingleQuery singleQuery) { singleQueries.push_back(std::move(singleQuery)); } - inline uint64_t getNumSingleQueries() const { return singleQueries.size(); } - inline NormalizedSingleQuery* getSingleQueryUnsafe(uint32_t idx) { return &singleQueries[idx]; } - inline const NormalizedSingleQuery* getSingleQuery(uint32_t idx) const { + uint64_t getNumSingleQueries() const { return singleQueries.size(); } + NormalizedSingleQuery* getSingleQueryUnsafe(common::idx_t idx) { return &singleQueries[idx]; } + const NormalizedSingleQuery* getSingleQuery(common::idx_t idx) const { return &singleQueries[idx]; } - inline bool getIsUnionAll(uint32_t idx) const { return isUnionAll[idx]; } + bool getIsUnionAll(common::idx_t idx) const { return isUnionAll[idx]; } private: std::vector singleQueries; diff --git a/src/include/function/table/bind_input.h b/src/include/function/table/bind_input.h index 01e4df005b0..6abc6d963f7 100644 --- a/src/include/function/table/bind_input.h +++ b/src/include/function/table/bind_input.h @@ -37,7 +37,9 @@ struct TableFuncBindInput { TableFuncBindInput() = default; void addLiteralParam(common::Value value); + std::shared_ptr getParam(common::idx_t idx) const { return params[idx]; } + common::Value getValue(common::idx_t idx) const; template T getLiteralVal(common::idx_t idx) const; }; diff --git a/src/include/function/table/simple_table_functions.h b/src/include/function/table/simple_table_functions.h index b864853d770..957832710a7 100644 --- a/src/include/function/table/simple_table_functions.h +++ b/src/include/function/table/simple_table_functions.h @@ -136,5 +136,17 @@ struct ShowFunctionsFunction : public SimpleTableFunction { static function_set getFunctionSet(); }; +struct CreateProjectGraphFunction : public SimpleTableFunction { + static constexpr const char* name = "CREATE_PROJECT_GRAPH"; + + static function_set getFunctionSet(); +}; + +struct DropProjectGraphFunction : public SimpleTableFunction { + static constexpr const char* name = "DROP_PROJECT_GRAPH"; + + static function_set getFunctionSet(); +}; + } // namespace function } // namespace kuzu diff --git a/src/include/function/table_functions.h b/src/include/function/table_functions.h index e34d022e35d..925f3c60726 100644 --- a/src/include/function/table_functions.h +++ b/src/include/function/table_functions.h @@ -89,10 +89,10 @@ using table_func_rewrite_t = std::function; struct KUZU_API TableFunction : public Function { - table_func_t tableFunc; - table_func_bind_t bindFunc; - table_func_init_shared_t initSharedStateFunc; - table_func_init_local_t initLocalStateFunc; + table_func_t tableFunc = nullptr; + table_func_bind_t bindFunc = nullptr; + table_func_init_shared_t initSharedStateFunc = nullptr; + table_func_init_local_t initLocalStateFunc = nullptr; table_func_can_parallel_t canParallelFunc = [] { return true; }; table_func_progress_t progressFunc = [](TableFuncSharedState*) { return 0.0; }; table_func_finalize_t finalizeFunc = [](auto, auto) {}; @@ -101,6 +101,8 @@ struct KUZU_API TableFunction : public Function { TableFunction() : Function{}, tableFunc{nullptr}, bindFunc{nullptr}, initSharedStateFunc{nullptr}, initLocalStateFunc{nullptr} {}; + TableFunction(std::string name, std::vector inputTypes) + : Function{name, inputTypes} {} TableFunction(std::string name, table_func_t tableFunc, table_func_bind_t bindFunc, table_func_init_shared_t initSharedFunc, table_func_init_local_t initLocalFunc, std::vector inputTypes, diff --git a/src/include/graph/graph_entry.h b/src/include/graph/graph_entry.h index 275bf1457f6..f7d1dc87f69 100644 --- a/src/include/graph/graph_entry.h +++ b/src/include/graph/graph_entry.h @@ -55,6 +55,7 @@ class GraphEntrySet { void addGraph(const std::string& name, const GraphEntry& entry) { nameToEntry.insert({name, entry.copy()}); } + void dropGraph(const std::string& name) { nameToEntry.erase(name); } private: std::unordered_map nameToEntry; diff --git a/src/include/main/client_context.h b/src/include/main/client_context.h index 052f852d697..1e74f936a46 100644 --- a/src/include/main/client_context.h +++ b/src/include/main/client_context.h @@ -35,6 +35,10 @@ namespace processor { class ImportDB; } +namespace graph { +class GraphEntrySet; +} + namespace main { struct DBConfig; class Database; @@ -137,6 +141,8 @@ class KUZU_API ClientContext { processor::WarningContext& getWarningContextUnsafe(); const processor::WarningContext& getWarningContext() const; + graph::GraphEntrySet& getGraphEntrySetUnsafe(); + void cleanUP(); std::unique_ptr queryInternal(std::string_view query, std::string_view encodedJoin, @@ -199,6 +205,8 @@ class KUZU_API ClientContext { std::unique_ptr progressBar; // Warning information processor::WarningContext warningContext; + // Graph entries + std::unique_ptr graphEntrySet; std::mutex mtx; }; diff --git a/src/include/parser/project_graph.h b/src/include/parser/project_graph.h deleted file mode 100644 index a9b7f5dd730..00000000000 --- a/src/include/parser/project_graph.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include -#include - -namespace kuzu { -namespace parser { - -// NOTE: keep this class in the root of parser module in case we make it a statement in the future. -class ProjectGraph { -public: - ProjectGraph(std::string graphName, std::vector tableNames) - : graphName{std::move(graphName)}, tableNames{std::move(tableNames)} {} - - std::string getGraphName() const { return graphName; } - std::vector getTableNames() const { return tableNames; } - -private: - std::string graphName; - std::vector tableNames; -}; - -} // namespace parser -} // namespace kuzu diff --git a/src/include/parser/query/regular_query.h b/src/include/parser/query/regular_query.h index 850037ac85c..2e3a6b29497 100644 --- a/src/include/parser/query/regular_query.h +++ b/src/include/parser/query/regular_query.h @@ -1,7 +1,6 @@ #pragma once #include "common/types/types.h" -#include "parser/project_graph.h" #include "parser/statement.h" #include "single_query.h" @@ -29,16 +28,9 @@ class RegularQuery : public Statement { std::vector getIsUnionAll() const { return isUnionAll; } - void setProjectGraph(std::unique_ptr projectGraph_) { - projectGraph = std::move(projectGraph_); - } - bool hasProjectGraph() const { return projectGraph != nullptr; } - const ProjectGraph* getProjectGraph() const { return projectGraph.get(); } - private: std::vector singleQueries; std::vector isUnionAll; - std::unique_ptr projectGraph; }; } // namespace parser diff --git a/src/include/parser/transformer.h b/src/include/parser/transformer.h index 20b3ec880b2..29c71994202 100644 --- a/src/include/parser/transformer.h +++ b/src/include/parser/transformer.h @@ -29,7 +29,6 @@ class PatternElementChain; class RelPattern; struct ParsedCaseAlternative; struct BaseScanSource; -class ProjectGraph; struct JoinHintNode; class Transformer { @@ -86,7 +85,6 @@ class Transformer { std::unique_ptr transformUnwind(CypherParser::OC_UnwindContext& ctx); std::unique_ptr transformInQueryCall(CypherParser::KU_InQueryCallContext& ctx); std::unique_ptr transformLoadFrom(CypherParser::KU_LoadFromContext& ctx); - std::unique_ptr transformProjectGraph(CypherParser::KU_ProjectGraphContext& ctx); std::shared_ptr transformJoinHint(CypherParser::KU_JoinNodeContext& ctx); // Transform projection. diff --git a/src/main/client_context.cpp b/src/main/client_context.cpp index 48d84eec0df..edcfcc6a898 100644 --- a/src/main/client_context.cpp +++ b/src/main/client_context.cpp @@ -7,6 +7,7 @@ #include "common/string_utils.h" #include "common/task_system/progress_bar.h" #include "extension/extension.h" +#include "graph/graph_entry.h" #include "main/attached_database.h" #include "main/database.h" #include "main/database_manager.h" @@ -51,6 +52,7 @@ ClientContext::ClientContext(Database* database) transactionContext = std::make_unique(*this); randomEngine = std::make_unique(); remoteDatabase = nullptr; + graphEntrySet = std::make_unique(); #if defined(_WIN32) clientConfig.homeDirectory = getEnvVariable("USERPROFILE"); #else @@ -579,5 +581,10 @@ processor::WarningContext& ClientContext::getWarningContextUnsafe() { const processor::WarningContext& ClientContext::getWarningContext() const { return warningContext; } + +graph::GraphEntrySet& ClientContext::getGraphEntrySetUnsafe() { + return *graphEntrySet; +} + } // namespace main } // namespace kuzu diff --git a/src/parser/transform/CMakeLists.txt b/src/parser/transform/CMakeLists.txt index 6ee94229218..d8dfa742a79 100644 --- a/src/parser/transform/CMakeLists.txt +++ b/src/parser/transform/CMakeLists.txt @@ -1,7 +1,6 @@ add_library(kuzu_parser_transform OBJECT transform_copy.cpp - transform_project_graph.cpp transform_ddl.cpp transform_expression.cpp transform_graph_pattern.cpp diff --git a/src/parser/transform/transform_project_graph.cpp b/src/parser/transform/transform_project_graph.cpp deleted file mode 100644 index 5bebb8804c2..00000000000 --- a/src/parser/transform/transform_project_graph.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "common/exception/parser.h" -#include "parser/project_graph.h" -#include "parser/transformer.h" - -namespace kuzu { -namespace parser { - -std::unique_ptr Transformer::transformProjectGraph( - CypherParser::KU_ProjectGraphContext& ctx) { - auto subgraphName = transformSchemaName(*ctx.oC_SchemaName()); - std::vector tableNames; - for (auto tableItem : ctx.kU_GraphProjectionTableItems()->kU_GraphProjectionTableItem()) { - if (tableItem->kU_GraphProjectionColumnItems() != nullptr) { - throw common::ParserException( - "Filtering or projecting properties in graph projection is not supported."); - } - tableNames.push_back(transformSchemaName(*tableItem->oC_SchemaName())); - } - return std::make_unique(std::move(subgraphName), std::move(tableNames)); -} - -} // namespace parser -} // namespace kuzu diff --git a/src/parser/transform/transform_query.cpp b/src/parser/transform/transform_query.cpp index 29b557451d4..6f90eea3a68 100644 --- a/src/parser/transform/transform_query.cpp +++ b/src/parser/transform/transform_query.cpp @@ -5,11 +5,7 @@ namespace kuzu { namespace parser { std::unique_ptr Transformer::transformQuery(CypherParser::OC_QueryContext& ctx) { - auto query = transformRegularQuery(*ctx.oC_RegularQuery()); - if (ctx.kU_ProjectGraph()) { - query->cast().setProjectGraph(transformProjectGraph(*ctx.kU_ProjectGraph())); - } - return query; + return transformRegularQuery(*ctx.oC_RegularQuery()); } std::unique_ptr Transformer::transformRegularQuery( diff --git a/test/test_files/function/gds/basic.test b/test/test_files/function/gds/basic.test index 7c9d4b0c6ea..f5bf07d242b 100644 --- a/test/test_files/function/gds/basic.test +++ b/test/test_files/function/gds/basic.test @@ -3,8 +3,18 @@ -- -CASE BasicAlgorithm --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID < 6 + +-STATEMENT CALL create_project_graph('PK', ['person'], ['knows']) +---- ok +-STATEMENT CALL create_project_graph('PK', [], []) +---- error +Runtime exception: Project graph PK already exists. +-STATEMENT CALL create_project_graph('dummy', ['knows'], []) +---- error +Binder exception: Expect catalog entry type NODE_TABLE_ENTRY but got REL_TABLE_ENTRY. +-STATEMENT CALL create_project_graph('PKWO', ['person', 'organisation'], ['knows', 'workAt']) +---- ok +-STATEMENT MATCH (a:person) WHERE a.ID < 6 CALL VAR_LEN_JOINS(PK, a, 1, 2, "FWD") RETURN a.fName, COUNT(*); ---- 4 @@ -12,8 +22,14 @@ Alice|12 Bob|12 Carol|12 Dan|12 --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID < 6 +-STATEMENT CALL drop_project_graph('dummy') +---- error +Runtime exception: Project graph dummy does not exists. +-STATEMENT CALL drop_project_graph('PK') +---- ok +-STATEMENT CALL create_project_graph('PK', ['person'], ['knows']) +---- ok +-STATEMENT MATCH (a:person) WHERE a.ID < 6 CALL VAR_LEN_JOINS(PK, a, 1, 2, "BWD") RETURN a.fName, COUNT(*); ---- 4 @@ -21,8 +37,7 @@ Alice|12 Bob|12 Carol|12 Dan|12 --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID < 6 +-STATEMENT MATCH (a:person) WHERE a.ID < 6 CALL VAR_LEN_JOINS(PK, a, 1, 2, "BOTH") RETURN a.fName, COUNT(*); ---- 4 @@ -30,32 +45,25 @@ Alice|42 Bob|42 Carol|42 Dan|42 --STATEMENT PROJECT GRAPH PK (person {age}, knows) CALL variable_length_path(PK, 1, 1) RETURN *; ----- error -Parser exception: Filtering or projecting properties in graph projection is not supported. --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID = 0 +-STATEMENT MATCH (a:person) WHERE a.ID = 0 CALL SINGLE_SP_DESTINATIONS(PK, a, 2, "FWD") RETURN a.fName, _node.name, length; ---- error Binder exception: Cannot find property name for _node. --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID = 0 +-STATEMENT MATCH (a:person) WHERE a.ID = 0 CALL SINGLE_SP_DESTINATIONS(PK, a, 2, "X") RETURN a.fName, _node.name, length; ---- error Runtime exception: Cannot parse X as ExtendDirection. --STATEMENT PROJECT GRAPH PK (person, knows) - MATCH (a:person) WHERE a.ID = 0 +-STATEMENT MATCH (a:person) WHERE a.ID = 0 CALL SINGLE_SP_DESTINATIONS(PK, a, 2, "FWD") RETURN a.fName, _node.fName, length; ---- 3 Alice|Bob|1 Alice|Carol|1 Alice|Dan|1 --STATEMENT PROJECT GRAPH PK (person, organisation, workAt, knows) - MATCH (a:person) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 2, "FWD") +-STATEMENT MATCH (a:person) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PKWO, a, 2, "FWD") RETURN a.fName, _node.fName, _node.name, length; ---- 5 Alice|Bob||1 @@ -63,7 +71,7 @@ Alice|Carol||1 Alice|Dan||1 Alice||CsWork|2 Alice||DEsWork|2 --STATEMENT PROJECT GRAPH PK (person, knows) CALL weakly_connected_component(PK) RETURN _node.fName, group_id; +-STATEMENT CALL weakly_connected_component(PK) RETURN _node.fName, group_id; ---- 8 Alice|0 Bob|0 @@ -73,7 +81,7 @@ Elizabeth|4 Farooq|4 Greg|4 Hubert Blaine Wolfeschlegelsteinhausenbergerdorff|7 -#-STATEMENT PROJECT GRAPH PK (person, organisation, knows, workAt) CALL weakly_connected_component(PK) RETURN _node.fName, _node.name, group_id; +#-STATEMENT CALL weakly_connected_component(PKWO) RETURN _node.fName, _node.name, group_id; #---- 11 #Alice||1 #Bob||1 @@ -86,7 +94,7 @@ Hubert Blaine Wolfeschlegelsteinhausenbergerdorff|7 #|ABFsUni|0 #|CsWork|1 #|DEsWork|1 --STATEMENT PROJECT GRAPH PK (person, knows) CALL page_rank(PK) RETURN _node.fName, rank; +-STATEMENT CALL page_rank(PK) RETURN _node.fName, rank; ---- 8 Alice|0.125000 Bob|0.125000 @@ -124,8 +132,6 @@ Hubert Blaine Wolfeschlegelsteinhausenbergerdorff|0.018750 ---- 1 54 --STATEMENT CALL enable_gds = false; ----- ok -STATEMENT MATCH p = (a:person)-[e:knows*1..2]->(b:person) WHERE a.ID = 0 RETURN properties(nodes(p),'fName'), properties(rels(p), 'date'), properties(rels(e), '_src'), properties(rels(e), '_dst'), a.fName, b.fName ---- 12 [Alice,Bob,Alice]|[2021-06-30,2021-06-30]|[0:0,0:1]|[0:1,0:0]|Alice|Alice diff --git a/test/test_files/function/gds/rec_joins_large.test b/test/test_files/function/gds/rec_joins_large.test index fab77c64b5c..62c6bd3f43a 100644 --- a/test/test_files/function/gds/rec_joins_large.test +++ b/test/test_files/function/gds/rec_joins_large.test @@ -13,11 +13,16 @@ -CASE GDSLarge +-STATEMENT CALL create_project_graph('PK1', ['person1'], ['knows11']) +---- ok +-STATEMENT CALL create_project_graph('PK2', ['person1', 'person2'], ['knows12', 'knows21']) +---- ok +-STATEMENT CALL create_project_graph('PK3', ['person1', 'person2'], ['knows11', 'knows12', 'knows21', 'knows22']) +---- ok # Layer by layer: p1_1 (len 1): 10, p1_2 (len 2):100, p1_3 (len 3): 1000, p1_4 (len 3): 100*20=2000, p1_4 (len 4): 1000*10=10000 -LOG VarLenJoins --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 1, 30, "FWD") RETURN length, count(*); ---- 4 1|10 @@ -27,9 +32,8 @@ # Layer by layer: p2_1 (len 1): 10, p1_2 (len 2):100, p2_3 (len 3): 1000, p2_4 (len 3): 100*20=2000, p1_4 (len 4): 1000 (from p2_3)*10=10000 -LOG VarLenJoinsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK2, a, 1, 30, "FWD") RETURN length, count(*); ---- 4 1|10 @@ -39,9 +43,8 @@ # Layer by layer distinct counts: p2_1: 10, p1_2: 10, p2_3: 10, p2_4: 10, p1:4: 10 -LOG VarLenJoinsMultilabel1CountDistinct --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK2, a, 1, 30, "FWD") RETURN count(distinct _node); ---- 1 50 @@ -49,9 +52,8 @@ # Layer by layer: p{i}_1 (len 1):10 (total 20), p{i}_2 (len 2) =20*10=200 (total 400), p{i}_3 (len 3): 400*10=4000 (total 8000) # p{i}_4 (len 3): 400*20=8000 (total 16000), p{i}_4 (len 4): 8000*10=80000 (total 160000). Note total len 3 = 16000+8000=24000 -LOG VarLenJoinsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK3, a, 1, 30, "FWD") RETURN length, count(*) ---- 4 1|20 @@ -60,44 +62,39 @@ 4|160000 -LOG VarLenJoinsLowerBound1 --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 2, 3, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 2, 3, "FWD") RETURN length, count(*); ---- 2 2|100 3|3000 -LOG VarLenJoinsLowerBound2 --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 4, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 4, 30, "FWD") RETURN length, count(*); ---- 1 4|10000 -LOG VarLenJoinsEmptyPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 4 - CALL var_len_joins(PK, a, 1, 4, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 4 + CALL var_len_joins(PK1, a, 1, 4, "FWD") RETURN length, count(*); ---- 0 # Layer by layer: p1_1 (len 1): 10, p1_2 (len 2): 100, p1_3 (len 3): 100*10=1000, p1:4 (len 3): 100*20=2000 -LOG AllSPDestinations --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK1, a, 30, "FWD") RETURN count(*) ---- 1 3110 # Layer by layer: p1_1 (len 1): 10, p2_2 (len 2): 100, p1_3 (len 3): 1000, p1_4 (len 3): 100*20=2000, p1_4 (len 4): 1000*10=10000 -LOG AllSPDestinationsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK2, a, 30, "FWD") RETURN count(*) ---- 1 13110 @@ -105,18 +102,16 @@ # Layer by layer: p{i}_1 (len 1): 10 (total 20), p{i}_2 (len 2): 100+100=200 (total 400), p{i}_3 (len 3): 2000+2000=4000 (total 8000) # p{i}_4 (len 3): 200*20 + 200*20=8000 (total 16000) -LOG AllSPDestinationsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK3, a, 30, "FWD") RETURN count(*) ---- 1 24420 # See AllSPDestinations -LOG AllSPLengths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK1, a, 30, "FWD") RETURN length, count(*); ---- 3 1|10 @@ -125,9 +120,8 @@ # See AllSPDestinationsMultilabel1 -LOG AllSPLengthsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK2, a, 30, "FWD") RETURN length, count(*); ---- 4 1|10 @@ -137,9 +131,8 @@ # See AllSPDestinationsMultilabel2 -LOG AllSPLengthsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK3, a, 30, "FWD") RETURN length, count(*); ---- 3 1|20 @@ -148,9 +141,8 @@ # See AllSPDestinations. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG AllSPPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 5, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK1, a, 5, "FWD") RETURN size(pathNodeIDs), count(*); ---- 3 0|10 @@ -159,9 +151,8 @@ # See AllSPDestinationsMultilabel2. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG AllSPPathsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK2, a, 30, "FWD") RETURN size(pathNodeIDs), count(*); ---- 4 0|10 @@ -171,9 +162,8 @@ # See AllSPDestinationsMultilabel2. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG AllSPPathsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK3, a, 30, "FWD") RETURN size(pathNodeIDs), count(*); ---- 3 0|20 @@ -183,36 +173,32 @@ # Layer by layer: p1_1 (len 1): 10, p1_2 (len 2): 10, p1_3 (len 3): 10, p1:4 (len 3): 10 -LOG SingleSPDestinations --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_destinations(PK1, a, 30, "FWD") RETURN count(*); ---- 1 40 # Layer by layer: p1_1 (len 1): 10, p2_2 (len 2): 10, p1_3 (len 3): 10, p1_4 (len 3): 10, p1_4 (len 4): 10 -LOG SingleSPDestinationsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_destinations(PK2, a, 30, "FWD") RETURN count(*); ---- 1 50 # Layer by layer: p{i}_{j} (len j except when j=4 len is 3): 10 -LOG SingleSPDestinationsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_destinations(PK3, a, 30, "FWD") RETURN count(*); ---- 1 80 # See SingleSPDestinations -LOG SingleSPLengths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK1, a, 30, "FWD") RETURN length, count(*); ---- 3 1|10 @@ -221,9 +207,8 @@ # See SingleSPDestinationsMultilabel1 -LOG SingleSPLengthsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK2, a, 30, "FWD") RETURN length, count(*); ---- 4 1|10 @@ -233,9 +218,8 @@ # See SingleSPDestinationsMultilabel2 -LOG SingleSPLengthsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK3, a, 30, "FWD") RETURN length, count(*); ---- 3 1|20 @@ -244,9 +228,8 @@ # See SingleSPDestinations. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG SingleSPPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 5, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK1, a, 5, "FWD") RETURN size(pathNodeIDs), count(*); ---- 3 0|10 @@ -255,9 +238,8 @@ # See SingleSPDestinationsMultilabel1. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG SingleSPPathsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK2, a, 30, "FWD") RETURN size(pathNodeIDs), count(*); ---- 4 0|10 @@ -267,9 +249,8 @@ # See SingleSPDestinationsMultilabel2. Note pathNodeIDs contains 1 fewer nodes than the lengths of the paths. -LOG SingleSPPathsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK3, a, 30, "FWD") RETURN size(pathNodeIDs), count(*) ---- 3 0|20 @@ -277,8 +258,7 @@ 2|40 -LOG WCC --STATEMENT PROJECT GRAPH PK (person1, knows11) - CALL weakly_connected_component(PK) +-STATEMENT CALL weakly_connected_component(PK1) RETURN group_id, count(*) AS size ORDER BY size LIMIT 5 ---- 1 0|41 diff --git a/test/test_files/function/gds/rec_joins_small.test b/test/test_files/function/gds/rec_joins_small.test index 688fca51443..b0fa6242a9b 100644 --- a/test/test_files/function/gds/rec_joins_small.test +++ b/test/test_files/function/gds/rec_joins_small.test @@ -223,50 +223,46 @@ 0|1|[0,1]|[2:0]|[0:0]|[0:1] 0|2|[0,1,2]|[2:0,2:1]|[0:0,0:1]|[0:1,0:2] +-STATEMENT CALL create_project_graph('PK1', ['person1'], ['knows11']) +---- ok -LOG VarLenJoinsUBLessThanLBError --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) - CALL var_len_joins(PK, a, 2, 1, "FWD") +-STATEMENT MATCH (a:person1) + CALL var_len_joins(PK1, a, 2, 1, "FWD") RETURN *; ---- error Runtime exception: Lower bound length of recursive join operations need to be less than or equal to upper bound. Given lower bound is: 2 and upper bound is: 1. -LOG VarLenJoinsUBTooHighError --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) - CALL var_len_joins(PK, a, 1, 10000,"FWD") +-STATEMENT MATCH (a:person1) + CALL var_len_joins(PK1, a, 1, 10000,"FWD") RETURN *; ---- error Runtime exception: Recursive join operations only works for non-positive upper bound iterations that are up to 255. Given upper bound is: 10000. -LOG VarLenJoinsLBNonPositiveError --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) - CALL var_len_joins(PK, a, -1, 3, "FWD") +-STATEMENT MATCH (a:person1) + CALL var_len_joins(PK1, a, -1, 3, "FWD") RETURN *; ---- error Runtime exception: Lower and upper bound lengths of recursive join operations need to be non-negative. Given lower bound is: -1 and upper bound is: 3. -LOG ShortestPathsJoinsUBNonPositiveError --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) - CALL all_sp_paths(PK, a, -5, "FWD") +-STATEMENT MATCH (a:person1) + CALL all_sp_paths(PK1, a, -5, "FWD") RETURN *; ---- error Runtime exception: Lower and upper bound lengths of recursive join operations need to be non-negative. Given lower bound is: 1 and upper bound is: -5. -LOG ShortestPathsJoinsUBNonPositiveError --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) - CALL all_sp_paths(PK, a, 0, "FWD") +-STATEMENT MATCH (a:person1) + CALL all_sp_paths(PK1, a, 0, "FWD") RETURN *; ---- error Runtime exception: Shortest path operations only works for positive upper bound iterations. Given upper bound is: 0. -LOG VarLenJoins --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 1, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 6 0|1|1|[]|[2:0] @@ -276,9 +272,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3|[0:1,0:2]|[2:0,2:1,2:5] 0|4|4|[0:1,0:2,0:3]|[2:0,2:1,2:2,2:3] --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 4 - CALL var_len_joins(PK, a, 1, 30, "BWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 4 + CALL var_len_joins(PK1, a, 1, 30, "BWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 10 4|0|3|[0:2,0:1]|[2:4,2:1,2:0] @@ -291,9 +286,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 4|2|1|[]|[2:5] 4|2|2|[0:3]|[2:3,2:2] 4|3|1|[]|[2:3] --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 1 - CALL var_len_joins(PK, a, 1, 2, "BOTH") +-STATEMENT MATCH (a:person1) WHERE a.ID = 1 + CALL var_len_joins(PK1, a, 1, 2, "BOTH") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs, direction; ---- 7 1|0|1|[]|[2:0]|[False] @@ -304,10 +298,11 @@ Runtime exception: Shortest path operations only works for positive upper bound 1|4|2|[0:2]|[2:1,2:4]|[True,True] 1|4|2|[0:2]|[2:1,2:5]|[True,True] +-STATEMENT CALL create_project_graph('PK2', ['person1', 'person2'], ['knows12', 'knows21']) +---- ok -LOG VarLenJoinsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK2, a, 1, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 6 0|1|1|[]|[3:0] @@ -317,10 +312,11 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3|[1:1,0:2]|[3:0,4:1,3:5] 0|4|4|[1:1,0:2,1:3]|[3:0,4:1,3:2,4:3] +-STATEMENT CALL create_project_graph('PK3', ['person1', 'person2'], ['knows11', 'knows12', 'knows21', 'knows22']) +---- ok -LOG VarLenJoinsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 1, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK3, a, 1, 30, "FWD") RETURN length, count(*) ---- 4 1|2 @@ -329,9 +325,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 4|16 -LOG VarLenJoinsLowerBoundZeroUpperBoundOne --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 0, 2, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 0, 2, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 3 0|0|0|[]|[] @@ -339,17 +334,15 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|2|2|[0:1]|[2:0,2:1] -LOG VarLenJoinsLowerBoundZeroUpperBoundZero --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 0, 0, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 0, 0, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 1 0|0|0|[]|[] -LOG VarLenJoinsLowerBound1 --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 2, 3, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 2, 3, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 4 0|2|2|[0:1]|[2:0,2:1] @@ -358,25 +351,22 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3|[0:1,0:2]|[2:0,2:1,2:5] -LOG VarLenJoinsLowerBound2 --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL var_len_joins(PK, a, 4, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL var_len_joins(PK1, a, 4, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 1 0|4|4|[0:1,0:2,0:3]|[2:0,2:1,2:2,2:3] -LOG VarLenJoinsEmptyPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 4 - CALL var_len_joins(PK, a, 1, 4, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 4 + CALL var_len_joins(PK1, a, 1, 4, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs; ---- 0 -LOG AllSPDestinations --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK1, a, 30, "FWD") RETURN a.ID, _node.ID; ---- 5 0|1 @@ -386,9 +376,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG AllSPDestinationsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK2, a, 30, "FWD") RETURN a.ID, _node.ID; ---- 6 0|1 @@ -399,9 +388,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG AllSPDestinationsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_destinations(PK3, a, 30, "FWD") RETURN a.ID, _node.ID; ---- 30 0|1 @@ -436,9 +424,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG AllSPLengths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK1, a, 30, "FWD") RETURN a.ID, _node.ID, length; ---- 5 0|1|1 @@ -448,9 +435,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3 -LOG AllSPLengthsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK2, a, 30, "FWD") RETURN a.ID, _node.ID, length; ---- 6 0|1|1 @@ -461,9 +447,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|4 -LOG AllSPLengthsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL ALL_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL ALL_SP_DESTINATIONS(PK3, a, 30, "FWD") RETURN a.ID, _node.ID, length; ---- 30 0|1|1 @@ -498,9 +483,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3 -LOG AllSPPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 5, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK1, a, 5, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 5 0|1|1|[]|[2:0] @@ -508,9 +492,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|3|3|[0:1,0:2]|[2:0,2:1,2:2] 0|4|3|[0:1,0:2]|[2:0,2:1,2:4] 0|4|3|[0:1,0:2]|[2:0,2:1,2:5] --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 4 - CALL all_sp_paths(PK, a, 5, "BOTH") +-STATEMENT MATCH (a:person1) WHERE a.ID = 4 + CALL all_sp_paths(PK1, a, 5, "BOTH") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 7 4|0|3|[0:2,0:1]|[2:4,2:1,2:0] @@ -522,9 +505,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 4|3|1|[]|[2:3] -LOG AllSPPathsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK2, a, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 6 0|1|1|[]|[3:0] @@ -535,9 +517,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|4|[1:1,0:2,1:3]|[3:0,4:1,3:2,4:3] -LOG AllSPPathsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL all_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL all_sp_paths(PK3, a, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 30 0|1|1|[]|[2:0] @@ -572,9 +553,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3|[1:1,1:2]|[3:0,5:1,5:5] -LOG SingleSPDestinations --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK1, a, 30, "FWD") RETURN a.ID, _node.ID; ---- 4 0|1 @@ -583,9 +563,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG SingleSPDestinationsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK2, a, 30, "FWD") RETURN a.ID, _node.ID; ---- 5 0|1 @@ -595,9 +574,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG SingleSPDestinationsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_destinations(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_destinations(PK3, a, 30, "FWD") RETURN a.ID, _node.ID ---- 8 0|1 @@ -610,9 +588,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4 -LOG SingleSPLengths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK1, a, 30, "FWD") RETURN a.ID, _node.ID, length; ---- 4 0|1|1 @@ -621,9 +598,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3 -LOG SingleSPLengthsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK2, a, 30, "FWD") RETURN a.ID, _node.ID, length; ---- 5 0|1|1 @@ -633,9 +609,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|4 -LOG SingleSPLengthsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL SINGLE_SP_DESTINATIONS(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL SINGLE_SP_DESTINATIONS(PK3, a, 30, "FWD") RETURN a.ID, _node.ID, length ---- 8 0|1|1 @@ -648,18 +623,16 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|3 -LOG SingleSPPaths --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 5, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK1, a, 5, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 4 0|1|1|[]|[2:0] 0|2|2|[0:1]|[2:0,2:1] 0|3|3|[0:1,0:2]|[2:0,2:1,2:2] 0|4|3|[0:1,0:2]|[2:0,2:1,2:4] --STATEMENT PROJECT GRAPH PK (person1, knows11) - MATCH (a:person1) WHERE a.ID = 2 - CALL single_sp_paths(PK, a, 5, "BOTH") +-STATEMENT MATCH (a:person1) WHERE a.ID = 2 + CALL single_sp_paths(PK1, a, 5, "BOTH") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 4 2|0|2|[0:1]|[2:1,2:0] @@ -668,9 +641,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 2|4|1|[]|[2:4] -LOG SingleSPPathsMultilabel1 --STATEMENT PROJECT GRAPH PK (person1, person2, knows12, knows21) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK2, a, 30, "FWD") RETURN a.ID, _node.ID, length, pathNodeIDs, pathEdgeIDs; ---- 5 0|1|1|[]|[3:0] @@ -680,9 +652,8 @@ Runtime exception: Shortest path operations only works for positive upper bound 0|4|4|[1:1,0:2,1:3]|[3:0,4:1,3:2,4:3] -LOG SingleSPPathsMultilabel2 --STATEMENT PROJECT GRAPH PK (person1, person2, knows11, knows12, knows21, knows22) - MATCH (a:person1) WHERE a.ID = 0 - CALL single_sp_paths(PK, a, 30, "FWD") +-STATEMENT MATCH (a:person1) WHERE a.ID = 0 + CALL single_sp_paths(PK3, a, 30, "FWD") RETURN length, count(*) ---- 3 1|2 diff --git a/third_party/antlr4_cypher/cypher_parser.cpp b/third_party/antlr4_cypher/cypher_parser.cpp index 4f932e0eb39..15f29faf510 100644 --- a/third_party/antlr4_cypher/cypher_parser.cpp +++ b/third_party/antlr4_cypher/cypher_parser.cpp @@ -66,11 +66,9 @@ void cypherParserInitialize() { "kU_CreateNodeConstraint", "kU_DataType", "kU_ListIdentifiers", "kU_ListIdentifier", "oC_AnyCypherOption", "oC_Explain", "oC_Profile", "kU_Transaction", "kU_Extension", "kU_LoadExtension", "kU_InstallExtension", "oC_Query", - "kU_ProjectGraph", "kU_GraphProjectionTableItems", "oC_RegularQuery", - "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery", "oC_MultiPartQuery", - "kU_QueryPart", "oC_UpdatingClause", "oC_ReadingClause", "kU_LoadFrom", - "kU_InQueryCall", "kU_GraphProjectionTableItem", "kU_GraphProjectionColumnItems", - "kU_GraphProjectionColumnItem", "oC_Match", "kU_Hint", "kU_JoinNode", + "oC_RegularQuery", "oC_Union", "oC_SingleQuery", "oC_SinglePartQuery", + "oC_MultiPartQuery", "kU_QueryPart", "oC_UpdatingClause", "oC_ReadingClause", + "kU_LoadFrom", "kU_InQueryCall", "oC_Match", "kU_Hint", "kU_JoinNode", "oC_Unwind", "oC_Create", "oC_Merge", "oC_MergeAction", "oC_Set", "oC_SetItem", "oC_Delete", "oC_With", "oC_Return", "oC_ProjectionBody", "oC_ProjectionItems", "oC_ProjectionItem", "oC_Order", "oC_Skip", @@ -142,7 +140,7 @@ void cypherParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,176,2844,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,176,2751,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, @@ -167,1118 +165,1078 @@ void cypherParserInitialize() { 7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152, 7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, 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,1,0,1,0,3,0,349,8,0,1,0,1,0,3,0,353,8,0, - 1,0,5,0,356,8,0,10,0,12,0,359,9,0,1,0,3,0,362,8,0,1,0,1,0,1,1,3,1,367, - 8,1,1,1,3,1,370,8,1,1,1,1,1,3,1,374,8,1,1,1,3,1,377,8,1,1,2,1,2,1,2,1, + 7,164,2,165,7,165,2,166,7,166,2,167,7,167,1,0,1,0,3,0,339,8,0,1,0,1,0, + 3,0,343,8,0,1,0,5,0,346,8,0,10,0,12,0,349,9,0,1,0,3,0,352,8,0,1,0,1,0, + 1,1,3,1,357,8,1,1,1,3,1,360,8,1,1,1,1,1,3,1,364,8,1,1,1,3,1,367,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, - 3,2,400,8,2,1,3,1,3,1,3,1,3,3,3,406,8,3,1,3,1,3,3,3,410,8,3,1,3,3,3,413, - 8,3,1,3,1,3,1,3,1,3,3,3,419,8,3,1,3,3,3,422,8,3,1,4,1,4,3,4,426,8,4,1, - 4,1,4,3,4,430,8,4,1,4,1,4,3,4,434,8,4,1,4,5,4,437,8,4,10,4,12,4,440,9, - 4,1,4,3,4,443,8,4,1,4,1,4,1,5,1,5,1,5,3,5,450,8,5,1,5,1,5,3,5,454,8,5, - 1,5,1,5,1,5,1,5,1,5,1,5,3,5,462,8,5,1,5,1,5,3,5,466,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,3,6,476,8,6,1,6,1,6,3,6,480,8,6,1,6,1,6,3,6,484,8,6, - 1,6,5,6,487,8,6,10,6,12,6,490,9,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7, - 1,7,3,7,502,8,7,1,7,1,7,3,7,506,8,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,514,8, - 7,1,7,3,7,517,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,525,8,8,1,8,3,8,528,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,543,8, - 10,1,10,1,10,1,10,3,10,548,8,10,1,10,1,10,1,10,1,10,3,10,554,8,10,1,10, - 1,10,3,10,558,8,10,1,10,3,10,561,8,10,1,10,3,10,564,8,10,1,10,1,10,1, - 11,1,11,3,11,570,8,11,1,11,1,11,3,11,574,8,11,1,11,5,11,577,8,11,10,11, - 12,11,580,9,11,3,11,582,8,11,1,11,1,11,1,11,3,11,587,8,11,1,12,1,12,3, - 12,591,8,12,1,12,1,12,3,12,595,8,12,1,12,5,12,598,8,12,10,12,12,12,601, - 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,3,15, - 615,8,15,1,15,1,15,3,15,619,8,15,1,15,1,15,1,15,1,15,1,15,3,15,626,8, - 15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,3,17,646,8,17,1,17,1,17,3,17,650,8,17,1,17,3,17, - 653,8,17,1,17,3,17,656,8,17,1,17,3,17,659,8,17,1,17,3,17,662,8,17,1,17, - 1,17,3,17,666,8,17,1,17,5,17,669,8,17,10,17,12,17,672,9,17,1,17,3,17, - 675,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,3,18,685,8,18,1,18,1, - 18,3,18,689,8,18,1,18,5,18,692,8,18,10,18,12,18,695,9,18,1,19,1,19,3, - 19,699,8,19,1,19,1,19,1,19,3,19,704,8,19,1,19,1,19,1,20,1,20,3,20,710, - 8,20,1,20,1,20,3,20,714,8,20,1,20,1,20,3,20,718,8,20,1,20,5,20,721,8, - 20,10,20,12,20,724,9,20,1,20,1,20,1,20,1,20,3,20,730,8,20,1,20,1,20,3, - 20,734,8,20,1,20,1,20,3,20,738,8,20,1,20,3,20,741,8,20,1,21,1,21,3,21, - 745,8,21,1,21,1,21,3,21,749,8,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1, - 22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,768,8,23,1,23,1, - 23,3,23,772,8,23,1,23,1,23,3,23,776,8,23,1,23,1,23,3,23,780,8,23,1,23, - 1,23,3,23,784,8,23,1,23,3,23,787,8,23,1,23,3,23,790,8,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,803,8,24,1,24,1,24,3, - 24,807,8,24,1,24,1,24,3,24,811,8,24,1,24,1,24,3,24,815,8,24,1,24,1,24, - 3,24,819,8,24,1,24,1,24,3,24,823,8,24,3,24,825,8,24,1,24,1,24,3,24,829, - 8,24,1,24,1,24,3,24,833,8,24,3,24,835,8,24,1,24,1,24,1,25,1,25,1,25,1, - 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,850,8,25,1,25,1,25,3,25,854, - 8,25,1,25,1,25,3,25,858,8,25,1,25,1,25,3,25,862,8,25,1,25,1,25,3,25,866, - 8,25,1,25,4,25,869,8,25,11,25,12,25,870,1,25,3,25,874,8,25,1,25,1,25, - 3,25,878,8,25,1,25,1,25,3,25,882,8,25,3,25,884,8,25,1,25,1,25,3,25,888, - 8,25,1,25,1,25,3,25,892,8,25,3,25,894,8,25,1,25,1,25,1,26,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,3,27,913,8, - 27,1,27,1,27,1,27,5,27,918,8,27,10,27,12,27,921,9,27,1,28,1,28,1,28,1, - 28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,933,8,28,1,29,1,29,1,29,1,29,1, - 29,3,29,940,8,29,1,30,1,30,1,30,1,30,3,30,946,8,30,1,30,3,30,949,8,30, - 1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,3,31,959,8,31,1,31,3,31,962,8, - 31,1,32,1,32,1,32,1,32,1,32,1,32,3,32,970,8,32,1,32,3,32,973,8,32,1,33, - 1,33,1,33,1,33,3,33,979,8,33,1,33,3,33,982,8,33,1,33,1,33,1,34,1,34,3, - 34,988,8,34,1,34,1,34,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1, - 36,1,36,3,36,1003,8,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, - 37,1,38,1,38,1,38,1,38,3,38,1019,8,38,1,39,1,39,1,39,1,39,1,39,3,39,1026, - 8,39,1,39,1,39,1,39,1,39,1,39,3,39,1033,8,39,1,40,1,40,1,40,1,40,1,41, - 1,41,1,41,1,41,1,41,3,41,1044,8,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42, - 1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,3,44,1064,8,44, - 1,44,1,44,3,44,1068,8,44,1,44,5,44,1071,8,44,10,44,12,44,1074,9,44,1, - 45,1,45,1,45,1,45,1,46,1,46,3,46,1082,8,46,1,46,1,46,3,46,1086,8,46,1, - 46,5,46,1089,8,46,10,46,12,46,1092,9,46,1,47,1,47,1,47,3,47,1097,8,47, - 1,47,1,47,1,47,1,47,3,47,1103,8,47,1,48,1,48,1,48,1,48,3,48,1109,8,48, - 1,48,1,48,3,48,1113,8,48,1,48,1,48,3,48,1117,8,48,1,48,1,48,1,49,1,49, - 1,49,1,49,3,49,1125,8,49,1,49,1,49,3,49,1129,8,49,1,49,1,49,3,49,1133, - 8,49,1,49,1,49,1,49,1,49,3,49,1139,8,49,1,49,1,49,3,49,1143,8,49,1,49, - 1,49,3,49,1147,8,49,1,49,1,49,1,49,1,49,3,49,1153,8,49,1,49,1,49,3,49, - 1157,8,49,1,49,1,49,3,49,1161,8,49,1,49,1,49,3,49,1165,8,49,1,49,1,49, - 3,49,1169,8,49,1,49,1,49,1,49,1,49,3,49,1175,8,49,1,49,1,49,3,49,1179, - 8,49,1,49,1,49,3,49,1183,8,49,1,49,1,49,3,49,1187,8,49,1,49,1,49,3,49, - 1191,8,49,1,49,1,49,3,49,1195,8,49,1,49,1,49,5,49,1199,8,49,10,49,12, - 49,1202,9,49,1,50,1,50,5,50,1206,8,50,10,50,12,50,1209,9,50,1,51,1,51, - 3,51,1213,8,51,1,51,1,51,1,52,1,52,3,52,1219,8,52,1,53,1,53,1,53,3,53, - 1224,8,53,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,3,55,1241,8,55,1,56,1,56,3,56,1245,8,56,1,57,1,57,1,57, - 1,57,1,57,1,57,3,57,1253,8,57,1,58,1,58,1,58,1,58,1,59,1,59,3,59,1261, - 8,59,3,59,1263,8,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,3,60,1273, - 8,60,1,60,1,60,3,60,1277,8,60,1,60,1,60,3,60,1281,8,60,1,60,1,60,1,61, - 1,61,3,61,1287,8,61,1,61,1,61,3,61,1291,8,61,1,61,5,61,1294,8,61,10,61, - 12,61,1297,9,61,1,62,1,62,3,62,1301,8,62,1,62,5,62,1304,8,62,10,62,12, - 62,1307,9,62,1,62,1,62,3,62,1311,8,62,4,62,1313,8,62,11,62,12,62,1314, - 1,62,1,62,1,62,3,62,1320,8,62,1,63,1,63,1,63,1,63,3,63,1326,8,63,1,63, - 1,63,1,63,3,63,1331,8,63,1,63,3,63,1334,8,63,1,64,1,64,3,64,1338,8,64, - 1,65,1,65,3,65,1342,8,65,5,65,1344,8,65,10,65,12,65,1347,9,65,1,65,1, - 65,1,65,3,65,1352,8,65,5,65,1354,8,65,10,65,12,65,1357,9,65,1,65,1,65, - 3,65,1361,8,65,1,65,5,65,1364,8,65,10,65,12,65,1367,9,65,1,65,3,65,1370, - 8,65,1,65,3,65,1373,8,65,3,65,1375,8,65,1,66,1,66,3,66,1379,8,66,4,66, - 1381,8,66,11,66,12,66,1382,1,66,1,66,1,67,1,67,3,67,1389,8,67,5,67,1391, - 8,67,10,67,12,67,1394,9,67,1,67,1,67,3,67,1398,8,67,5,67,1400,8,67,10, - 67,12,67,1403,9,67,1,67,1,67,1,68,1,68,1,68,1,68,3,68,1411,8,68,1,69, - 1,69,1,69,1,69,3,69,1417,8,69,1,70,1,70,1,70,1,70,1,70,1,70,3,70,1425, - 8,70,1,70,1,70,3,70,1429,8,70,1,70,1,70,3,70,1433,8,70,1,70,1,70,3,70, - 1437,8,70,1,70,1,70,1,70,1,70,1,70,3,70,1444,8,70,1,70,3,70,1447,8,70, - 1,70,3,70,1450,8,70,1,70,3,70,1453,8,70,1,71,1,71,3,71,1457,8,71,3,71, - 1459,8,71,1,71,1,71,1,71,1,71,3,71,1465,8,71,1,71,3,71,1468,8,71,1,72, - 1,72,3,72,1472,8,72,1,72,1,72,3,72,1476,8,72,1,72,1,72,3,72,1480,8,72, - 1,72,1,72,3,72,1484,8,72,1,73,1,73,3,73,1488,8,73,1,73,1,73,3,73,1492, - 8,73,1,73,5,73,1495,8,73,10,73,12,73,1498,9,73,1,74,1,74,1,74,3,74,1503, - 8,74,1,74,1,74,3,74,1507,8,74,1,75,1,75,3,75,1511,8,75,1,75,1,75,3,75, - 1515,8,75,1,75,1,75,1,75,3,75,1520,8,75,1,75,1,75,3,75,1524,8,75,1,76, - 1,76,1,76,1,76,1,77,1,77,1,77,3,77,1533,8,77,1,77,1,77,3,77,1537,8,77, - 1,77,1,77,1,77,3,77,1542,8,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, - 1,77,1,77,4,77,1554,8,77,11,77,12,77,1555,5,77,1558,8,77,10,77,12,77, - 1561,9,77,1,78,1,78,3,78,1565,8,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79, - 1,79,3,79,1575,8,79,1,79,1,79,1,80,1,80,3,80,1581,8,80,1,80,1,80,1,80, - 5,80,1586,8,80,10,80,12,80,1589,9,80,1,81,1,81,1,81,1,81,1,81,1,81,1, - 81,1,81,1,81,1,81,3,81,1601,8,81,1,82,1,82,3,82,1605,8,82,1,82,1,82,3, - 82,1609,8,82,1,82,1,82,3,82,1613,8,82,1,82,5,82,1616,8,82,10,82,12,82, - 1619,9,82,1,83,1,83,3,83,1623,8,83,1,83,1,83,3,83,1627,8,83,1,83,1,83, - 1,84,1,84,3,84,1633,8,84,1,84,1,84,3,84,1637,8,84,1,84,1,84,3,84,1641, - 8,84,1,84,1,84,3,84,1645,8,84,1,84,5,84,1648,8,84,10,84,12,84,1651,9, - 84,1,85,1,85,1,85,3,85,1656,8,85,1,85,3,85,1659,8,85,1,86,1,86,1,86,1, - 87,3,87,1665,8,87,1,87,3,87,1668,8,87,1,87,1,87,1,87,1,87,3,87,1674,8, - 87,1,87,1,87,3,87,1678,8,87,1,87,1,87,3,87,1682,8,87,1,88,1,88,3,88,1686, - 8,88,1,88,1,88,3,88,1690,8,88,1,88,5,88,1693,8,88,10,88,12,88,1696,9, - 88,1,88,1,88,3,88,1700,8,88,1,88,1,88,3,88,1704,8,88,1,88,5,88,1707,8, - 88,10,88,12,88,1710,9,88,3,88,1712,8,88,1,89,1,89,1,89,1,89,1,89,1,89, - 1,89,3,89,1721,8,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1730,8,90, - 1,90,5,90,1733,8,90,10,90,12,90,1736,9,90,1,91,1,91,1,91,1,91,1,92,1, - 92,1,92,1,92,1,93,1,93,3,93,1748,8,93,1,93,3,93,1751,8,93,1,94,1,94,1, - 94,1,94,1,95,1,95,3,95,1759,8,95,1,95,1,95,3,95,1763,8,95,1,95,5,95,1766, - 8,95,10,95,12,95,1769,9,95,1,96,1,96,3,96,1773,8,96,1,96,1,96,3,96,1777, - 8,96,1,96,1,96,1,96,3,96,1782,8,96,1,97,1,97,1,98,1,98,3,98,1788,8,98, - 1,98,5,98,1791,8,98,10,98,12,98,1794,9,98,1,98,1,98,1,98,1,98,3,98,1800, - 8,98,1,99,1,99,3,99,1804,8,99,1,99,1,99,3,99,1808,8,99,3,99,1810,8,99, - 1,99,1,99,3,99,1814,8,99,3,99,1816,8,99,1,99,1,99,3,99,1820,8,99,3,99, - 1822,8,99,1,99,1,99,1,100,1,100,3,100,1828,8,100,1,100,1,100,1,101,1, - 101,3,101,1834,8,101,1,101,1,101,3,101,1838,8,101,1,101,3,101,1841,8, - 101,1,101,3,101,1844,8,101,1,101,1,101,1,101,1,101,3,101,1850,8,101,1, - 101,3,101,1853,8,101,1,101,3,101,1856,8,101,1,101,1,101,3,101,1860,8, - 101,1,101,1,101,1,101,1,101,3,101,1866,8,101,1,101,3,101,1869,8,101,1, - 101,3,101,1872,8,101,1,101,1,101,3,101,1876,8,101,1,102,1,102,3,102,1880, - 8,102,1,102,1,102,3,102,1884,8,102,3,102,1886,8,102,1,102,1,102,3,102, - 1890,8,102,3,102,1892,8,102,1,102,1,102,3,102,1896,8,102,3,102,1898,8, - 102,1,102,1,102,3,102,1902,8,102,3,102,1904,8,102,1,102,1,102,1,103,1, - 103,3,103,1910,8,103,1,103,1,103,3,103,1914,8,103,1,103,1,103,3,103,1918, - 8,103,1,103,1,103,3,103,1922,8,103,1,103,1,103,3,103,1926,8,103,1,103, - 1,103,3,103,1930,8,103,1,103,1,103,3,103,1934,8,103,1,103,1,103,3,103, - 1938,8,103,5,103,1940,8,103,10,103,12,103,1943,9,103,3,103,1945,8,103, - 1,103,1,103,1,104,1,104,3,104,1951,8,104,1,104,1,104,3,104,1955,8,104, - 1,104,1,104,3,104,1959,8,104,1,104,3,104,1962,8,104,1,104,5,104,1965, - 8,104,10,104,12,104,1968,9,104,1,105,1,105,3,105,1972,8,105,1,105,5,105, - 1975,8,105,10,105,12,105,1978,9,105,1,106,1,106,3,106,1982,8,106,1,106, - 1,106,1,107,1,107,3,107,1988,8,107,1,107,1,107,1,107,1,107,1,107,1,107, - 3,107,1996,8,107,1,107,3,107,1999,8,107,1,107,3,107,2002,8,107,1,107, - 3,107,2005,8,107,1,107,1,107,3,107,2009,8,107,1,107,3,107,2012,8,107, - 1,107,3,107,2015,8,107,1,107,3,107,2018,8,107,1,107,3,107,2021,8,107, - 1,108,1,108,3,108,2025,8,108,1,108,1,108,3,108,2029,8,108,1,108,1,108, - 3,108,2033,8,108,1,108,1,108,3,108,2037,8,108,1,108,1,108,3,108,2041, - 8,108,1,108,1,108,3,108,2045,8,108,3,108,2047,8,108,1,108,3,108,2050, - 8,108,1,108,1,108,3,108,2054,8,108,1,108,1,108,3,108,2058,8,108,1,108, - 1,108,3,108,2062,8,108,1,108,1,108,3,108,2066,8,108,3,108,2068,8,108, - 1,108,1,108,1,109,1,109,3,109,2074,8,109,1,109,3,109,2077,8,109,1,109, - 3,109,2080,8,109,1,109,1,109,1,110,1,110,3,110,2086,8,110,1,110,3,110, - 2089,8,110,1,110,3,110,2092,8,110,1,110,1,110,1,111,1,111,1,112,1,112, - 1,113,1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,116,1,116,1,116,5,116, - 2111,8,116,10,116,12,116,2114,9,116,1,117,1,117,1,117,1,117,1,117,5,117, - 2121,8,117,10,117,12,117,2124,9,117,1,118,1,118,1,118,1,118,1,118,5,118, - 2131,8,118,10,118,12,118,2134,9,118,1,119,1,119,3,119,2138,8,119,5,119, - 2140,8,119,10,119,12,119,2143,9,119,1,119,1,119,1,120,1,120,3,120,2149, - 8,120,1,120,1,120,3,120,2153,8,120,1,120,1,120,3,120,2157,8,120,1,120, - 1,120,3,120,2161,8,120,1,120,1,120,3,120,2165,8,120,1,120,1,120,1,120, - 1,120,1,120,1,120,3,120,2173,8,120,1,120,1,120,3,120,2177,8,120,1,120, - 1,120,3,120,2181,8,120,1,120,1,120,3,120,2185,8,120,1,120,1,120,4,120, - 2189,8,120,11,120,12,120,2190,1,120,1,120,3,120,2195,8,120,1,121,1,121, - 1,122,1,122,3,122,2201,8,122,1,122,1,122,3,122,2205,8,122,1,122,5,122, - 2208,8,122,10,122,12,122,2211,9,122,1,123,1,123,3,123,2215,8,123,1,123, - 1,123,3,123,2219,8,123,1,123,5,123,2222,8,123,10,123,12,123,2225,9,123, - 1,124,1,124,3,124,2229,8,124,1,124,1,124,3,124,2233,8,124,1,124,1,124, - 5,124,2237,8,124,10,124,12,124,2240,9,124,1,125,1,125,1,126,1,126,3,126, - 2246,8,126,1,126,1,126,3,126,2250,8,126,1,126,1,126,5,126,2254,8,126, - 10,126,12,126,2257,9,126,1,127,1,127,1,128,1,128,3,128,2263,8,128,1,128, - 1,128,3,128,2267,8,128,1,128,1,128,5,128,2271,8,128,10,128,12,128,2274, - 9,128,1,129,1,129,1,130,1,130,3,130,2280,8,130,1,130,1,130,3,130,2284, - 8,130,1,130,5,130,2287,8,130,10,130,12,130,2290,9,130,1,131,1,131,3,131, - 2294,8,131,5,131,2296,8,131,10,131,12,131,2299,9,131,1,131,1,131,3,131, - 2303,8,131,1,131,3,131,2306,8,131,1,132,1,132,1,132,4,132,2311,8,132, - 11,132,12,132,2312,1,132,3,132,2316,8,132,1,133,1,133,1,133,3,133,2321, - 8,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,3,133,2330,8,133,1,133, - 1,133,3,133,2334,8,133,1,133,3,133,2337,8,133,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,2350,8,134,1,134,3,134, - 2353,8,134,1,134,1,134,1,135,3,135,2358,8,135,1,135,1,135,1,136,1,136, - 1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,2372,8,136,1,137, - 1,137,3,137,2376,8,137,1,137,5,137,2379,8,137,10,137,12,137,2382,9,137, - 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,3,138,2394, - 8,138,1,139,1,139,3,139,2398,8,139,1,139,1,139,3,139,2402,8,139,1,139, - 1,139,3,139,2406,8,139,1,139,1,139,1,139,1,139,3,139,2412,8,139,1,139, - 1,139,3,139,2416,8,139,1,139,1,139,3,139,2420,8,139,1,139,1,139,1,139, - 1,139,3,139,2426,8,139,1,139,1,139,3,139,2430,8,139,1,139,1,139,3,139, - 2434,8,139,1,139,1,139,1,139,1,139,3,139,2440,8,139,1,139,1,139,3,139, - 2444,8,139,1,139,1,139,3,139,2448,8,139,1,139,1,139,3,139,2452,8,139, - 1,140,1,140,3,140,2456,8,140,1,140,3,140,2459,8,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,3,142,2473,8,142, - 1,143,1,143,1,144,1,144,3,144,2479,8,144,1,144,1,144,3,144,2483,8,144, - 1,144,1,144,3,144,2487,8,144,5,144,2489,8,144,10,144,12,144,2492,9,144, - 3,144,2494,8,144,1,144,1,144,1,145,1,145,3,145,2500,8,145,1,145,3,145, - 2503,8,145,1,146,1,146,3,146,2507,8,146,1,146,1,146,3,146,2511,8,146, - 1,146,1,146,3,146,2515,8,146,1,146,1,146,3,146,2519,8,146,5,146,2521, - 8,146,10,146,12,146,2524,9,146,1,146,1,146,1,147,1,147,3,147,2530,8,147, - 1,147,3,147,2533,8,147,1,147,1,147,3,147,2537,8,147,1,147,1,147,1,148, - 1,148,3,148,2543,8,148,1,148,1,148,3,148,2547,8,148,1,148,1,148,1,149, - 1,149,3,149,2553,8,149,1,149,1,149,3,149,2557,8,149,1,149,1,149,3,149, - 2561,8,149,1,149,1,149,1,149,3,149,2566,8,149,1,149,1,149,3,149,2570, - 8,149,1,149,1,149,3,149,2574,8,149,1,149,1,149,3,149,2578,8,149,1,149, - 1,149,1,149,3,149,2583,8,149,1,149,3,149,2586,8,149,1,149,3,149,2589, - 8,149,1,149,1,149,1,149,1,149,3,149,2595,8,149,1,149,1,149,3,149,2599, - 8,149,1,149,1,149,3,149,2603,8,149,3,149,2605,8,149,1,149,1,149,3,149, - 2609,8,149,1,149,1,149,3,149,2613,8,149,1,149,1,149,3,149,2617,8,149, - 5,149,2619,8,149,10,149,12,149,2622,9,149,3,149,2624,8,149,1,149,1,149, - 3,149,2628,8,149,1,150,1,150,1,151,1,151,3,151,2634,8,151,1,151,1,151, - 1,151,3,151,2639,8,151,3,151,2641,8,151,1,151,1,151,3,151,2645,8,151, - 1,152,1,152,3,152,2649,8,152,1,152,1,152,1,152,3,152,2654,8,152,1,152, - 1,152,3,152,2658,8,152,1,153,1,153,1,153,3,153,2663,8,153,1,153,1,153, - 3,153,2667,8,153,1,153,1,153,3,153,2671,8,153,1,153,1,153,3,153,2675, - 8,153,5,153,2677,8,153,10,153,12,153,2680,9,153,1,153,1,153,3,153,2684, - 8,153,1,154,1,154,3,154,2688,8,154,1,154,4,154,2691,8,154,11,154,12,154, - 2692,1,155,1,155,3,155,2697,8,155,1,155,1,155,3,155,2701,8,155,1,155, - 1,155,3,155,2705,8,155,1,155,1,155,3,155,2709,8,155,1,155,3,155,2712, - 8,155,1,155,3,155,2715,8,155,1,155,1,155,1,156,1,156,3,156,2721,8,156, - 1,156,1,156,3,156,2725,8,156,1,156,1,156,3,156,2729,8,156,1,156,1,156, - 3,156,2733,8,156,1,156,3,156,2736,8,156,1,156,3,156,2739,8,156,1,156, - 1,156,1,157,1,157,3,157,2745,8,157,1,157,1,157,3,157,2749,8,157,1,158, - 1,158,3,158,2753,8,158,1,158,4,158,2756,8,158,11,158,12,158,2757,1,158, - 1,158,3,158,2762,8,158,1,158,1,158,3,158,2766,8,158,1,158,4,158,2769, - 8,158,11,158,12,158,2770,3,158,2773,8,158,1,158,3,158,2776,8,158,1,158, - 1,158,3,158,2780,8,158,1,158,3,158,2783,8,158,1,158,3,158,2786,8,158, - 1,158,1,158,1,159,1,159,3,159,2792,8,159,1,159,1,159,3,159,2796,8,159, - 1,159,1,159,3,159,2800,8,159,1,159,1,159,1,160,1,160,1,161,1,161,3,161, - 2808,8,161,1,162,1,162,1,162,3,162,2813,8,162,1,163,1,163,3,163,2817, - 8,163,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,168, - 1,168,1,168,1,168,1,168,3,168,2834,8,168,1,169,1,169,1,170,1,170,1,171, - 1,171,1,172,1,172,1,172,0,2,98,154,173,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,0,12,2,0,130,130,135,135,2,0,53,54, - 75,76,2,0,6,6,13,17,1,0,19,20,2,0,21,21,155,155,2,0,22,23,152,152,2,0, - 87,87,140,140,1,0,167,168,28,0,48,48,50,50,52,52,55,58,61,61,63,64,66, - 68,70,71,74,74,77,77,79,79,84,86,90,90,94,95,97,97,99,99,101,104,106, - 109,111,112,123,128,130,131,133,133,139,139,141,141,144,144,148,148,151, - 151,153,153,2,0,14,14,27,30,2,0,16,16,31,34,2,0,35,45,155,155,3228,0, - 346,1,0,0,0,2,366,1,0,0,0,4,399,1,0,0,0,6,401,1,0,0,0,8,423,1,0,0,0,10, - 465,1,0,0,0,12,467,1,0,0,0,14,497,1,0,0,0,16,518,1,0,0,0,18,529,1,0,0, - 0,20,535,1,0,0,0,22,586,1,0,0,0,24,588,1,0,0,0,26,602,1,0,0,0,28,606, - 1,0,0,0,30,625,1,0,0,0,32,627,1,0,0,0,34,639,1,0,0,0,36,682,1,0,0,0,38, - 696,1,0,0,0,40,740,1,0,0,0,42,742,1,0,0,0,44,752,1,0,0,0,46,758,1,0,0, - 0,48,793,1,0,0,0,50,838,1,0,0,0,52,897,1,0,0,0,54,905,1,0,0,0,56,922, - 1,0,0,0,58,939,1,0,0,0,60,941,1,0,0,0,62,961,1,0,0,0,64,972,1,0,0,0,66, - 974,1,0,0,0,68,987,1,0,0,0,70,991,1,0,0,0,72,995,1,0,0,0,74,1006,1,0, - 0,0,76,1018,1,0,0,0,78,1020,1,0,0,0,80,1034,1,0,0,0,82,1038,1,0,0,0,84, - 1047,1,0,0,0,86,1053,1,0,0,0,88,1061,1,0,0,0,90,1075,1,0,0,0,92,1079, - 1,0,0,0,94,1093,1,0,0,0,96,1104,1,0,0,0,98,1194,1,0,0,0,100,1203,1,0, - 0,0,102,1210,1,0,0,0,104,1218,1,0,0,0,106,1220,1,0,0,0,108,1225,1,0,0, - 0,110,1240,1,0,0,0,112,1244,1,0,0,0,114,1246,1,0,0,0,116,1254,1,0,0,0, - 118,1262,1,0,0,0,120,1266,1,0,0,0,122,1284,1,0,0,0,124,1319,1,0,0,0,126, - 1333,1,0,0,0,128,1337,1,0,0,0,130,1374,1,0,0,0,132,1380,1,0,0,0,134,1392, - 1,0,0,0,136,1410,1,0,0,0,138,1416,1,0,0,0,140,1418,1,0,0,0,142,1458,1, - 0,0,0,144,1469,1,0,0,0,146,1485,1,0,0,0,148,1499,1,0,0,0,150,1510,1,0, - 0,0,152,1525,1,0,0,0,154,1541,1,0,0,0,156,1562,1,0,0,0,158,1572,1,0,0, - 0,160,1578,1,0,0,0,162,1600,1,0,0,0,164,1602,1,0,0,0,166,1620,1,0,0,0, - 168,1632,1,0,0,0,170,1652,1,0,0,0,172,1660,1,0,0,0,174,1667,1,0,0,0,176, - 1711,1,0,0,0,178,1720,1,0,0,0,180,1722,1,0,0,0,182,1737,1,0,0,0,184,1741, - 1,0,0,0,186,1745,1,0,0,0,188,1752,1,0,0,0,190,1756,1,0,0,0,192,1781,1, - 0,0,0,194,1783,1,0,0,0,196,1799,1,0,0,0,198,1801,1,0,0,0,200,1825,1,0, - 0,0,202,1875,1,0,0,0,204,1877,1,0,0,0,206,1907,1,0,0,0,208,1948,1,0,0, - 0,210,1969,1,0,0,0,212,1979,1,0,0,0,214,1985,1,0,0,0,216,2022,1,0,0,0, - 218,2071,1,0,0,0,220,2083,1,0,0,0,222,2095,1,0,0,0,224,2097,1,0,0,0,226, - 2099,1,0,0,0,228,2101,1,0,0,0,230,2103,1,0,0,0,232,2105,1,0,0,0,234,2115, - 1,0,0,0,236,2125,1,0,0,0,238,2141,1,0,0,0,240,2194,1,0,0,0,242,2196,1, - 0,0,0,244,2198,1,0,0,0,246,2212,1,0,0,0,248,2226,1,0,0,0,250,2241,1,0, - 0,0,252,2243,1,0,0,0,254,2258,1,0,0,0,256,2260,1,0,0,0,258,2275,1,0,0, - 0,260,2277,1,0,0,0,262,2297,1,0,0,0,264,2307,1,0,0,0,266,2336,1,0,0,0, - 268,2349,1,0,0,0,270,2357,1,0,0,0,272,2371,1,0,0,0,274,2373,1,0,0,0,276, - 2393,1,0,0,0,278,2451,1,0,0,0,280,2453,1,0,0,0,282,2460,1,0,0,0,284,2472, - 1,0,0,0,286,2474,1,0,0,0,288,2476,1,0,0,0,290,2497,1,0,0,0,292,2504,1, - 0,0,0,294,2529,1,0,0,0,296,2540,1,0,0,0,298,2627,1,0,0,0,300,2629,1,0, - 0,0,302,2644,1,0,0,0,304,2646,1,0,0,0,306,2683,1,0,0,0,308,2685,1,0,0, - 0,310,2694,1,0,0,0,312,2718,1,0,0,0,314,2742,1,0,0,0,316,2772,1,0,0,0, - 318,2789,1,0,0,0,320,2803,1,0,0,0,322,2807,1,0,0,0,324,2809,1,0,0,0,326, - 2814,1,0,0,0,328,2820,1,0,0,0,330,2822,1,0,0,0,332,2824,1,0,0,0,334,2826, - 1,0,0,0,336,2833,1,0,0,0,338,2835,1,0,0,0,340,2837,1,0,0,0,342,2839,1, - 0,0,0,344,2841,1,0,0,0,346,357,3,2,1,0,347,349,5,173,0,0,348,347,1,0, - 0,0,348,349,1,0,0,0,349,350,1,0,0,0,350,352,5,1,0,0,351,353,5,173,0,0, - 352,351,1,0,0,0,352,353,1,0,0,0,353,354,1,0,0,0,354,356,3,2,1,0,355,348, - 1,0,0,0,356,359,1,0,0,0,357,355,1,0,0,0,357,358,1,0,0,0,358,361,1,0,0, - 0,359,357,1,0,0,0,360,362,5,173,0,0,361,360,1,0,0,0,361,362,1,0,0,0,362, - 363,1,0,0,0,363,364,5,0,0,1,364,1,1,0,0,0,365,367,3,104,52,0,366,365, - 1,0,0,0,366,367,1,0,0,0,367,369,1,0,0,0,368,370,5,173,0,0,369,368,1,0, - 0,0,369,370,1,0,0,0,370,371,1,0,0,0,371,376,3,4,2,0,372,374,5,173,0,0, - 373,372,1,0,0,0,373,374,1,0,0,0,374,375,1,0,0,0,375,377,5,1,0,0,376,373, - 1,0,0,0,376,377,1,0,0,0,377,3,1,0,0,0,378,400,3,118,59,0,379,400,3,46, - 23,0,380,400,3,48,24,0,381,400,3,50,25,0,382,400,3,54,27,0,383,400,3, - 56,28,0,384,400,3,72,36,0,385,400,3,74,37,0,386,400,3,6,3,0,387,400,3, - 12,6,0,388,400,3,14,7,0,389,400,3,30,15,0,390,400,3,34,17,0,391,400,3, - 32,16,0,392,400,3,110,55,0,393,400,3,112,56,0,394,400,3,16,8,0,395,400, - 3,18,9,0,396,400,3,20,10,0,397,400,3,26,13,0,398,400,3,28,14,0,399,378, - 1,0,0,0,399,379,1,0,0,0,399,380,1,0,0,0,399,381,1,0,0,0,399,382,1,0,0, - 0,399,383,1,0,0,0,399,384,1,0,0,0,399,385,1,0,0,0,399,386,1,0,0,0,399, - 387,1,0,0,0,399,388,1,0,0,0,399,389,1,0,0,0,399,390,1,0,0,0,399,391,1, - 0,0,0,399,392,1,0,0,0,399,393,1,0,0,0,399,394,1,0,0,0,399,395,1,0,0,0, - 399,396,1,0,0,0,399,397,1,0,0,0,399,398,1,0,0,0,400,5,1,0,0,0,401,402, - 5,67,0,0,402,403,5,173,0,0,403,412,3,334,167,0,404,406,5,173,0,0,405, - 404,1,0,0,0,405,406,1,0,0,0,406,407,1,0,0,0,407,409,3,8,4,0,408,410,5, - 173,0,0,409,408,1,0,0,0,409,410,1,0,0,0,410,413,1,0,0,0,411,413,5,173, - 0,0,412,405,1,0,0,0,412,411,1,0,0,0,413,414,1,0,0,0,414,415,5,88,0,0, - 415,416,5,173,0,0,416,421,3,10,5,0,417,419,5,173,0,0,418,417,1,0,0,0, - 418,419,1,0,0,0,419,420,1,0,0,0,420,422,3,42,21,0,421,418,1,0,0,0,421, - 422,1,0,0,0,422,7,1,0,0,0,423,425,5,2,0,0,424,426,5,173,0,0,425,424,1, - 0,0,0,425,426,1,0,0,0,426,427,1,0,0,0,427,438,3,334,167,0,428,430,5,173, - 0,0,429,428,1,0,0,0,429,430,1,0,0,0,430,431,1,0,0,0,431,433,5,3,0,0,432, - 434,5,173,0,0,433,432,1,0,0,0,433,434,1,0,0,0,434,435,1,0,0,0,435,437, - 3,334,167,0,436,429,1,0,0,0,437,440,1,0,0,0,438,436,1,0,0,0,438,439,1, - 0,0,0,439,442,1,0,0,0,440,438,1,0,0,0,441,443,5,173,0,0,442,441,1,0,0, - 0,442,443,1,0,0,0,443,444,1,0,0,0,444,445,5,4,0,0,445,9,1,0,0,0,446,466, - 3,40,20,0,447,449,5,2,0,0,448,450,5,173,0,0,449,448,1,0,0,0,449,450,1, - 0,0,0,450,451,1,0,0,0,451,453,3,118,59,0,452,454,5,173,0,0,453,452,1, - 0,0,0,453,454,1,0,0,0,454,455,1,0,0,0,455,456,5,4,0,0,456,466,1,0,0,0, - 457,466,3,320,160,0,458,459,3,320,160,0,459,461,5,5,0,0,460,462,5,173, - 0,0,461,460,1,0,0,0,461,462,1,0,0,0,462,463,1,0,0,0,463,464,3,334,167, - 0,464,466,1,0,0,0,465,446,1,0,0,0,465,447,1,0,0,0,465,457,1,0,0,0,465, - 458,1,0,0,0,466,11,1,0,0,0,467,468,5,67,0,0,468,469,5,173,0,0,469,470, - 3,334,167,0,470,471,5,173,0,0,471,472,5,88,0,0,472,473,5,173,0,0,473, - 475,5,2,0,0,474,476,5,173,0,0,475,474,1,0,0,0,475,476,1,0,0,0,476,477, - 1,0,0,0,477,488,5,158,0,0,478,480,5,173,0,0,479,478,1,0,0,0,479,480,1, - 0,0,0,480,481,1,0,0,0,481,483,5,3,0,0,482,484,5,173,0,0,483,482,1,0,0, - 0,483,484,1,0,0,0,484,485,1,0,0,0,485,487,5,158,0,0,486,479,1,0,0,0,487, - 490,1,0,0,0,488,486,1,0,0,0,488,489,1,0,0,0,489,491,1,0,0,0,490,488,1, - 0,0,0,491,492,5,4,0,0,492,493,5,173,0,0,493,494,5,57,0,0,494,495,5,173, - 0,0,495,496,5,62,0,0,496,13,1,0,0,0,497,498,5,67,0,0,498,499,5,173,0, - 0,499,501,5,2,0,0,500,502,5,173,0,0,501,500,1,0,0,0,501,502,1,0,0,0,502, - 503,1,0,0,0,503,505,3,118,59,0,504,506,5,173,0,0,505,504,1,0,0,0,505, - 506,1,0,0,0,506,507,1,0,0,0,507,508,5,4,0,0,508,509,5,173,0,0,509,510, - 5,137,0,0,510,511,5,173,0,0,511,516,5,158,0,0,512,514,5,173,0,0,513,512, - 1,0,0,0,513,514,1,0,0,0,514,515,1,0,0,0,515,517,3,42,21,0,516,513,1,0, - 0,0,516,517,1,0,0,0,517,15,1,0,0,0,518,519,5,85,0,0,519,520,5,173,0,0, - 520,521,5,71,0,0,521,522,5,173,0,0,522,527,5,158,0,0,523,525,5,173,0, - 0,524,523,1,0,0,0,524,525,1,0,0,0,525,526,1,0,0,0,526,528,3,42,21,0,527, - 524,1,0,0,0,527,528,1,0,0,0,528,17,1,0,0,0,529,530,5,94,0,0,530,531,5, - 173,0,0,531,532,5,71,0,0,532,533,5,173,0,0,533,534,5,158,0,0,534,19,1, - 0,0,0,535,536,5,55,0,0,536,537,5,173,0,0,537,542,5,158,0,0,538,539,5, - 173,0,0,539,540,5,52,0,0,540,541,5,173,0,0,541,543,3,334,167,0,542,538, - 1,0,0,0,542,543,1,0,0,0,543,544,1,0,0,0,544,545,5,173,0,0,545,547,5,2, - 0,0,546,548,5,173,0,0,547,546,1,0,0,0,547,548,1,0,0,0,548,549,1,0,0,0, - 549,550,5,72,0,0,550,551,5,173,0,0,551,560,3,336,168,0,552,554,5,173, - 0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0,555,557,5,3,0,0,556, - 558,5,173,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,553,1,0,0,0,560,561,1,0,0,0,561,563,1,0,0,0,562,564,5,173, - 0,0,563,562,1,0,0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,566,5,4,0,0,566, - 21,1,0,0,0,567,581,3,336,168,0,568,570,5,173,0,0,569,568,1,0,0,0,569, - 570,1,0,0,0,570,571,1,0,0,0,571,573,5,6,0,0,572,574,5,173,0,0,573,572, - 1,0,0,0,573,574,1,0,0,0,574,582,1,0,0,0,575,577,5,173,0,0,576,575,1,0, - 0,0,577,580,1,0,0,0,578,576,1,0,0,0,578,579,1,0,0,0,579,582,1,0,0,0,580, - 578,1,0,0,0,581,569,1,0,0,0,581,578,1,0,0,0,582,583,1,0,0,0,583,584,3, - 284,142,0,584,587,1,0,0,0,585,587,3,336,168,0,586,567,1,0,0,0,586,585, - 1,0,0,0,587,23,1,0,0,0,588,599,3,22,11,0,589,591,5,173,0,0,590,589,1, - 0,0,0,590,591,1,0,0,0,591,592,1,0,0,0,592,594,5,3,0,0,593,595,5,173,0, - 0,594,593,1,0,0,0,594,595,1,0,0,0,595,596,1,0,0,0,596,598,3,22,11,0,597, - 590,1,0,0,0,598,601,1,0,0,0,599,597,1,0,0,0,599,600,1,0,0,0,600,25,1, - 0,0,0,601,599,1,0,0,0,602,603,5,77,0,0,603,604,5,173,0,0,604,605,3,334, - 167,0,605,27,1,0,0,0,606,607,5,144,0,0,607,608,5,173,0,0,608,609,3,334, - 167,0,609,29,1,0,0,0,610,611,5,58,0,0,611,612,5,173,0,0,612,614,3,336, - 168,0,613,615,5,173,0,0,614,613,1,0,0,0,614,615,1,0,0,0,615,616,1,0,0, - 0,616,618,5,6,0,0,617,619,5,173,0,0,618,617,1,0,0,0,618,619,1,0,0,0,619, - 620,1,0,0,0,620,621,3,230,115,0,621,626,1,0,0,0,622,623,5,58,0,0,623, - 624,5,173,0,0,624,626,3,298,149,0,625,610,1,0,0,0,625,622,1,0,0,0,626, - 31,1,0,0,0,627,628,5,63,0,0,628,629,5,173,0,0,629,630,5,116,0,0,630,631, - 5,173,0,0,631,632,5,135,0,0,632,633,5,173,0,0,633,634,3,334,167,0,634, - 635,5,173,0,0,635,636,5,99,0,0,636,637,5,173,0,0,637,638,5,158,0,0,638, - 33,1,0,0,0,639,640,5,69,0,0,640,641,5,173,0,0,641,642,5,105,0,0,642,643, - 5,173,0,0,643,645,3,300,150,0,644,646,5,173,0,0,645,644,1,0,0,0,645,646, - 1,0,0,0,646,647,1,0,0,0,647,649,5,2,0,0,648,650,5,173,0,0,649,648,1,0, - 0,0,649,650,1,0,0,0,650,652,1,0,0,0,651,653,3,36,18,0,652,651,1,0,0,0, - 652,653,1,0,0,0,653,655,1,0,0,0,654,656,5,173,0,0,655,654,1,0,0,0,655, - 656,1,0,0,0,656,658,1,0,0,0,657,659,3,38,19,0,658,657,1,0,0,0,658,659, - 1,0,0,0,659,670,1,0,0,0,660,662,5,173,0,0,661,660,1,0,0,0,661,662,1,0, - 0,0,662,663,1,0,0,0,663,665,5,3,0,0,664,666,5,173,0,0,665,664,1,0,0,0, - 665,666,1,0,0,0,666,667,1,0,0,0,667,669,3,38,19,0,668,661,1,0,0,0,669, - 672,1,0,0,0,670,668,1,0,0,0,670,671,1,0,0,0,671,674,1,0,0,0,672,670,1, - 0,0,0,673,675,5,173,0,0,674,673,1,0,0,0,674,675,1,0,0,0,675,676,1,0,0, - 0,676,677,5,4,0,0,677,678,5,173,0,0,678,679,5,52,0,0,679,680,5,173,0, - 0,680,681,3,230,115,0,681,35,1,0,0,0,682,693,3,336,168,0,683,685,5,173, - 0,0,684,683,1,0,0,0,684,685,1,0,0,0,685,686,1,0,0,0,686,688,5,3,0,0,687, - 689,5,173,0,0,688,687,1,0,0,0,688,689,1,0,0,0,689,690,1,0,0,0,690,692, - 3,336,168,0,691,684,1,0,0,0,692,695,1,0,0,0,693,691,1,0,0,0,693,694,1, - 0,0,0,694,37,1,0,0,0,695,693,1,0,0,0,696,698,3,336,168,0,697,699,5,173, - 0,0,698,697,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,0,700,701,5,157,0,0, - 701,703,5,6,0,0,702,704,5,173,0,0,703,702,1,0,0,0,703,704,1,0,0,0,704, - 705,1,0,0,0,705,706,3,284,142,0,706,39,1,0,0,0,707,709,5,7,0,0,708,710, - 5,173,0,0,709,708,1,0,0,0,709,710,1,0,0,0,710,711,1,0,0,0,711,722,5,158, - 0,0,712,714,5,173,0,0,713,712,1,0,0,0,713,714,1,0,0,0,714,715,1,0,0,0, - 715,717,5,3,0,0,716,718,5,173,0,0,717,716,1,0,0,0,717,718,1,0,0,0,718, - 719,1,0,0,0,719,721,5,158,0,0,720,713,1,0,0,0,721,724,1,0,0,0,722,720, - 1,0,0,0,722,723,1,0,0,0,723,725,1,0,0,0,724,722,1,0,0,0,725,741,5,8,0, - 0,726,741,5,158,0,0,727,729,5,89,0,0,728,730,5,173,0,0,729,728,1,0,0, - 0,729,730,1,0,0,0,730,731,1,0,0,0,731,733,5,2,0,0,732,734,5,173,0,0,733, - 732,1,0,0,0,733,734,1,0,0,0,734,735,1,0,0,0,735,737,5,158,0,0,736,738, - 5,173,0,0,737,736,1,0,0,0,737,738,1,0,0,0,738,739,1,0,0,0,739,741,5,4, - 0,0,740,707,1,0,0,0,740,726,1,0,0,0,740,727,1,0,0,0,741,41,1,0,0,0,742, - 744,5,2,0,0,743,745,5,173,0,0,744,743,1,0,0,0,744,745,1,0,0,0,745,746, - 1,0,0,0,746,748,3,24,12,0,747,749,5,173,0,0,748,747,1,0,0,0,748,749,1, - 0,0,0,749,750,1,0,0,0,750,751,5,4,0,0,751,43,1,0,0,0,752,753,5,95,0,0, - 753,754,5,173,0,0,754,755,5,113,0,0,755,756,5,173,0,0,756,757,5,83,0, - 0,757,45,1,0,0,0,758,759,5,69,0,0,759,760,5,173,0,0,760,761,5,112,0,0, - 761,762,5,173,0,0,762,763,5,135,0,0,763,767,5,173,0,0,764,765,3,44,22, - 0,765,766,5,173,0,0,766,768,1,0,0,0,767,764,1,0,0,0,767,768,1,0,0,0,768, - 769,1,0,0,0,769,771,3,334,167,0,770,772,5,173,0,0,771,770,1,0,0,0,771, - 772,1,0,0,0,772,773,1,0,0,0,773,775,5,2,0,0,774,776,5,173,0,0,775,774, - 1,0,0,0,775,776,1,0,0,0,776,777,1,0,0,0,777,779,3,92,46,0,778,780,5,173, - 0,0,779,778,1,0,0,0,779,780,1,0,0,0,780,786,1,0,0,0,781,783,5,3,0,0,782, - 784,5,173,0,0,783,782,1,0,0,0,783,784,1,0,0,0,784,785,1,0,0,0,785,787, - 3,96,48,0,786,781,1,0,0,0,786,787,1,0,0,0,787,789,1,0,0,0,788,790,5,173, - 0,0,789,788,1,0,0,0,789,790,1,0,0,0,790,791,1,0,0,0,791,792,5,4,0,0,792, - 47,1,0,0,0,793,794,5,69,0,0,794,795,5,173,0,0,795,796,5,125,0,0,796,797, - 5,173,0,0,797,798,5,135,0,0,798,802,5,173,0,0,799,800,3,44,22,0,800,801, - 5,173,0,0,801,803,1,0,0,0,802,799,1,0,0,0,802,803,1,0,0,0,803,804,1,0, - 0,0,804,806,3,334,167,0,805,807,5,173,0,0,806,805,1,0,0,0,806,807,1,0, - 0,0,807,808,1,0,0,0,808,810,5,2,0,0,809,811,5,173,0,0,810,809,1,0,0,0, - 810,811,1,0,0,0,811,812,1,0,0,0,812,814,3,52,26,0,813,815,5,173,0,0,814, - 813,1,0,0,0,814,815,1,0,0,0,815,824,1,0,0,0,816,818,5,3,0,0,817,819,5, - 173,0,0,818,817,1,0,0,0,818,819,1,0,0,0,819,820,1,0,0,0,820,822,3,92, - 46,0,821,823,5,173,0,0,822,821,1,0,0,0,822,823,1,0,0,0,823,825,1,0,0, - 0,824,816,1,0,0,0,824,825,1,0,0,0,825,834,1,0,0,0,826,828,5,3,0,0,827, - 829,5,173,0,0,828,827,1,0,0,0,828,829,1,0,0,0,829,830,1,0,0,0,830,832, - 3,336,168,0,831,833,5,173,0,0,832,831,1,0,0,0,832,833,1,0,0,0,833,835, - 1,0,0,0,834,826,1,0,0,0,834,835,1,0,0,0,835,836,1,0,0,0,836,837,5,4,0, - 0,837,49,1,0,0,0,838,839,5,69,0,0,839,840,5,173,0,0,840,841,5,125,0,0, - 841,842,5,173,0,0,842,843,5,135,0,0,843,844,5,173,0,0,844,845,5,91,0, - 0,845,849,5,173,0,0,846,847,3,44,22,0,847,848,5,173,0,0,848,850,1,0,0, - 0,849,846,1,0,0,0,849,850,1,0,0,0,850,851,1,0,0,0,851,853,3,334,167,0, - 852,854,5,173,0,0,853,852,1,0,0,0,853,854,1,0,0,0,854,855,1,0,0,0,855, - 857,5,2,0,0,856,858,5,173,0,0,857,856,1,0,0,0,857,858,1,0,0,0,858,859, - 1,0,0,0,859,868,3,52,26,0,860,862,5,173,0,0,861,860,1,0,0,0,861,862,1, - 0,0,0,862,863,1,0,0,0,863,865,5,3,0,0,864,866,5,173,0,0,865,864,1,0,0, - 0,865,866,1,0,0,0,866,867,1,0,0,0,867,869,3,52,26,0,868,861,1,0,0,0,869, - 870,1,0,0,0,870,868,1,0,0,0,870,871,1,0,0,0,871,873,1,0,0,0,872,874,5, - 173,0,0,873,872,1,0,0,0,873,874,1,0,0,0,874,883,1,0,0,0,875,877,5,3,0, - 0,876,878,5,173,0,0,877,876,1,0,0,0,877,878,1,0,0,0,878,879,1,0,0,0,879, - 881,3,92,46,0,880,882,5,173,0,0,881,880,1,0,0,0,881,882,1,0,0,0,882,884, - 1,0,0,0,883,875,1,0,0,0,883,884,1,0,0,0,884,893,1,0,0,0,885,887,5,3,0, - 0,886,888,5,173,0,0,887,886,1,0,0,0,887,888,1,0,0,0,888,889,1,0,0,0,889, - 891,3,336,168,0,890,892,5,173,0,0,891,890,1,0,0,0,891,892,1,0,0,0,892, - 894,1,0,0,0,893,885,1,0,0,0,893,894,1,0,0,0,894,895,1,0,0,0,895,896,5, - 4,0,0,896,51,1,0,0,0,897,898,5,88,0,0,898,899,5,173,0,0,899,900,3,334, - 167,0,900,901,5,173,0,0,901,902,5,137,0,0,902,903,5,173,0,0,903,904,3, - 334,167,0,904,53,1,0,0,0,905,906,5,69,0,0,906,907,5,173,0,0,907,908,5, - 130,0,0,908,912,5,173,0,0,909,910,3,44,22,0,910,911,5,173,0,0,911,913, - 1,0,0,0,912,909,1,0,0,0,912,913,1,0,0,0,913,914,1,0,0,0,914,919,3,334, - 167,0,915,916,5,173,0,0,916,918,3,58,29,0,917,915,1,0,0,0,918,921,1,0, - 0,0,919,917,1,0,0,0,919,920,1,0,0,0,920,55,1,0,0,0,921,919,1,0,0,0,922, - 923,5,69,0,0,923,924,5,173,0,0,924,925,5,141,0,0,925,926,5,173,0,0,926, - 927,3,334,167,0,927,928,5,173,0,0,928,929,5,52,0,0,929,930,5,173,0,0, - 930,932,3,98,49,0,931,933,5,173,0,0,932,931,1,0,0,0,932,933,1,0,0,0,933, - 57,1,0,0,0,934,940,3,60,30,0,935,940,3,62,31,0,936,940,3,64,32,0,937, - 940,3,66,33,0,938,940,3,68,34,0,939,934,1,0,0,0,939,935,1,0,0,0,939,936, - 1,0,0,0,939,937,1,0,0,0,939,938,1,0,0,0,940,59,1,0,0,0,941,942,5,97,0, - 0,942,945,5,173,0,0,943,944,5,57,0,0,944,946,5,173,0,0,945,943,1,0,0, - 0,945,946,1,0,0,0,946,948,1,0,0,0,947,949,5,155,0,0,948,947,1,0,0,0,948, - 949,1,0,0,0,949,950,1,0,0,0,950,951,3,330,165,0,951,61,1,0,0,0,952,953, - 5,111,0,0,953,954,5,173,0,0,954,962,5,109,0,0,955,956,5,109,0,0,956,958, - 5,173,0,0,957,959,5,155,0,0,958,957,1,0,0,0,958,959,1,0,0,0,959,960,1, - 0,0,0,960,962,3,330,165,0,961,952,1,0,0,0,961,955,1,0,0,0,962,63,1,0, - 0,0,963,964,5,111,0,0,964,965,5,173,0,0,965,973,5,107,0,0,966,967,5,107, - 0,0,967,969,5,173,0,0,968,970,5,155,0,0,969,968,1,0,0,0,969,970,1,0,0, - 0,970,971,1,0,0,0,971,973,3,330,165,0,972,963,1,0,0,0,972,966,1,0,0,0, - 973,65,1,0,0,0,974,975,5,133,0,0,975,978,5,173,0,0,976,977,5,147,0,0, - 977,979,5,173,0,0,978,976,1,0,0,0,978,979,1,0,0,0,979,981,1,0,0,0,980, - 982,5,155,0,0,981,980,1,0,0,0,981,982,1,0,0,0,982,983,1,0,0,0,983,984, - 3,330,165,0,984,67,1,0,0,0,985,986,5,111,0,0,986,988,5,173,0,0,987,985, - 1,0,0,0,987,988,1,0,0,0,988,989,1,0,0,0,989,990,5,70,0,0,990,69,1,0,0, - 0,991,992,5,95,0,0,992,993,5,173,0,0,993,994,5,83,0,0,994,71,1,0,0,0, - 995,996,5,79,0,0,996,997,5,173,0,0,997,998,7,0,0,0,998,1002,5,173,0,0, - 999,1000,3,70,35,0,1000,1001,5,173,0,0,1001,1003,1,0,0,0,1002,999,1,0, - 0,0,1002,1003,1,0,0,0,1003,1004,1,0,0,0,1004,1005,3,334,167,0,1005,73, - 1,0,0,0,1006,1007,5,50,0,0,1007,1008,5,173,0,0,1008,1009,5,135,0,0,1009, - 1010,5,173,0,0,1010,1011,3,334,167,0,1011,1012,5,173,0,0,1012,1013,3, - 76,38,0,1013,75,1,0,0,0,1014,1019,3,78,39,0,1015,1019,3,82,41,0,1016, - 1019,3,84,42,0,1017,1019,3,86,43,0,1018,1014,1,0,0,0,1018,1015,1,0,0, - 0,1018,1016,1,0,0,0,1018,1017,1,0,0,0,1019,77,1,0,0,0,1020,1021,5,48, - 0,0,1021,1025,5,173,0,0,1022,1023,3,44,22,0,1023,1024,5,173,0,0,1024, - 1026,1,0,0,0,1025,1022,1,0,0,0,1025,1026,1,0,0,0,1026,1027,1,0,0,0,1027, - 1028,3,328,164,0,1028,1029,5,173,0,0,1029,1032,3,98,49,0,1030,1031,5, - 173,0,0,1031,1033,3,80,40,0,1032,1030,1,0,0,0,1032,1033,1,0,0,0,1033, - 79,1,0,0,0,1034,1035,5,73,0,0,1035,1036,5,173,0,0,1036,1037,3,230,115, - 0,1037,81,1,0,0,0,1038,1039,5,79,0,0,1039,1043,5,173,0,0,1040,1041,3, - 70,35,0,1041,1042,5,173,0,0,1042,1044,1,0,0,0,1043,1040,1,0,0,0,1043, - 1044,1,0,0,0,1044,1045,1,0,0,0,1045,1046,3,328,164,0,1046,83,1,0,0,0, - 1047,1048,5,126,0,0,1048,1049,5,173,0,0,1049,1050,5,137,0,0,1050,1051, - 5,173,0,0,1051,1052,3,334,167,0,1052,85,1,0,0,0,1053,1054,5,126,0,0,1054, - 1055,5,173,0,0,1055,1056,3,328,164,0,1056,1057,5,173,0,0,1057,1058,5, - 137,0,0,1058,1059,5,173,0,0,1059,1060,3,328,164,0,1060,87,1,0,0,0,1061, - 1072,3,90,45,0,1062,1064,5,173,0,0,1063,1062,1,0,0,0,1063,1064,1,0,0, - 0,1064,1065,1,0,0,0,1065,1067,5,3,0,0,1066,1068,5,173,0,0,1067,1066,1, - 0,0,0,1067,1068,1,0,0,0,1068,1069,1,0,0,0,1069,1071,3,90,45,0,1070,1063, - 1,0,0,0,1071,1074,1,0,0,0,1072,1070,1,0,0,0,1072,1073,1,0,0,0,1073,89, - 1,0,0,0,1074,1072,1,0,0,0,1075,1076,3,328,164,0,1076,1077,5,173,0,0,1077, - 1078,3,98,49,0,1078,91,1,0,0,0,1079,1090,3,94,47,0,1080,1082,5,173,0, - 0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082,1083,1,0,0,0,1083,1085,5,3, - 0,0,1084,1086,5,173,0,0,1085,1084,1,0,0,0,1085,1086,1,0,0,0,1086,1087, - 1,0,0,0,1087,1089,3,94,47,0,1088,1081,1,0,0,0,1089,1092,1,0,0,0,1090, - 1088,1,0,0,0,1090,1091,1,0,0,0,1091,93,1,0,0,0,1092,1090,1,0,0,0,1093, - 1096,3,90,45,0,1094,1095,5,173,0,0,1095,1097,3,80,40,0,1096,1094,1,0, - 0,0,1096,1097,1,0,0,0,1097,1102,1,0,0,0,1098,1099,5,173,0,0,1099,1100, - 5,121,0,0,1100,1101,5,173,0,0,1101,1103,5,101,0,0,1102,1098,1,0,0,0,1102, - 1103,1,0,0,0,1103,95,1,0,0,0,1104,1105,5,121,0,0,1105,1106,5,173,0,0, - 1106,1108,5,101,0,0,1107,1109,5,173,0,0,1108,1107,1,0,0,0,1108,1109,1, - 0,0,0,1109,1110,1,0,0,0,1110,1112,5,2,0,0,1111,1113,5,173,0,0,1112,1111, - 1,0,0,0,1112,1113,1,0,0,0,1113,1114,1,0,0,0,1114,1116,3,328,164,0,1115, - 1117,5,173,0,0,1116,1115,1,0,0,0,1116,1117,1,0,0,0,1117,1118,1,0,0,0, - 1118,1119,5,4,0,0,1119,97,1,0,0,0,1120,1121,6,49,-1,0,1121,1195,3,336, - 168,0,1122,1124,5,142,0,0,1123,1125,5,173,0,0,1124,1123,1,0,0,0,1124, - 1125,1,0,0,0,1125,1126,1,0,0,0,1126,1128,5,2,0,0,1127,1129,5,173,0,0, - 1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1,0,0,0,1130,1132,3,88, - 44,0,1131,1133,5,173,0,0,1132,1131,1,0,0,0,1132,1133,1,0,0,0,1133,1134, - 1,0,0,0,1134,1135,5,4,0,0,1135,1195,1,0,0,0,1136,1138,3,336,168,0,1137, - 1139,5,173,0,0,1138,1137,1,0,0,0,1138,1139,1,0,0,0,1139,1140,1,0,0,0, - 1140,1142,5,2,0,0,1141,1143,5,173,0,0,1142,1141,1,0,0,0,1142,1143,1,0, - 0,0,1143,1144,1,0,0,0,1144,1146,3,88,44,0,1145,1147,5,173,0,0,1146,1145, - 1,0,0,0,1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1149,5,4,0,0,1149,1195, - 1,0,0,0,1150,1152,3,336,168,0,1151,1153,5,173,0,0,1152,1151,1,0,0,0,1152, - 1153,1,0,0,0,1153,1154,1,0,0,0,1154,1156,5,2,0,0,1155,1157,5,173,0,0, - 1156,1155,1,0,0,0,1156,1157,1,0,0,0,1157,1158,1,0,0,0,1158,1160,3,98, - 49,0,1159,1161,5,173,0,0,1160,1159,1,0,0,0,1160,1161,1,0,0,0,1161,1162, - 1,0,0,0,1162,1164,5,3,0,0,1163,1165,5,173,0,0,1164,1163,1,0,0,0,1164, - 1165,1,0,0,0,1165,1166,1,0,0,0,1166,1168,3,98,49,0,1167,1169,5,173,0, - 0,1168,1167,1,0,0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0,1170,1171,5,4, - 0,0,1171,1195,1,0,0,0,1172,1174,5,151,0,0,1173,1175,5,173,0,0,1174,1173, - 1,0,0,0,1174,1175,1,0,0,0,1175,1176,1,0,0,0,1176,1178,5,2,0,0,1177,1179, - 5,173,0,0,1178,1177,1,0,0,0,1178,1179,1,0,0,0,1179,1180,1,0,0,0,1180, - 1182,3,330,165,0,1181,1183,5,173,0,0,1182,1181,1,0,0,0,1182,1183,1,0, - 0,0,1183,1184,1,0,0,0,1184,1186,5,3,0,0,1185,1187,5,173,0,0,1186,1185, - 1,0,0,0,1186,1187,1,0,0,0,1187,1188,1,0,0,0,1188,1190,3,330,165,0,1189, - 1191,5,173,0,0,1190,1189,1,0,0,0,1190,1191,1,0,0,0,1191,1192,1,0,0,0, - 1192,1193,5,4,0,0,1193,1195,1,0,0,0,1194,1120,1,0,0,0,1194,1122,1,0,0, - 0,1194,1136,1,0,0,0,1194,1150,1,0,0,0,1194,1172,1,0,0,0,1195,1200,1,0, - 0,0,1196,1197,10,5,0,0,1197,1199,3,100,50,0,1198,1196,1,0,0,0,1199,1202, - 1,0,0,0,1200,1198,1,0,0,0,1200,1201,1,0,0,0,1201,99,1,0,0,0,1202,1200, - 1,0,0,0,1203,1207,3,102,51,0,1204,1206,3,102,51,0,1205,1204,1,0,0,0,1206, - 1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0,1208,101,1,0,0,0,1209, - 1207,1,0,0,0,1210,1212,5,7,0,0,1211,1213,3,330,165,0,1212,1211,1,0,0, - 0,1212,1213,1,0,0,0,1213,1214,1,0,0,0,1214,1215,5,8,0,0,1215,103,1,0, - 0,0,1216,1219,3,106,53,0,1217,1219,3,108,54,0,1218,1216,1,0,0,0,1218, - 1217,1,0,0,0,1219,105,1,0,0,0,1220,1223,5,84,0,0,1221,1222,5,173,0,0, - 1222,1224,5,104,0,0,1223,1221,1,0,0,0,1223,1224,1,0,0,0,1224,107,1,0, - 0,0,1225,1226,5,122,0,0,1226,109,1,0,0,0,1227,1228,5,56,0,0,1228,1229, - 5,173,0,0,1229,1241,5,139,0,0,1230,1231,5,56,0,0,1231,1232,5,173,0,0, - 1232,1233,5,139,0,0,1233,1234,5,173,0,0,1234,1235,5,124,0,0,1235,1236, - 5,173,0,0,1236,1241,5,117,0,0,1237,1241,5,64,0,0,1238,1241,5,128,0,0, - 1239,1241,5,61,0,0,1240,1227,1,0,0,0,1240,1230,1,0,0,0,1240,1237,1,0, - 0,0,1240,1238,1,0,0,0,1240,1239,1,0,0,0,1241,111,1,0,0,0,1242,1245,3, - 114,57,0,1243,1245,3,116,58,0,1244,1242,1,0,0,0,1244,1243,1,0,0,0,1245, - 113,1,0,0,0,1246,1247,5,103,0,0,1247,1248,5,173,0,0,1248,1249,5,86,0, - 0,1249,1252,5,173,0,0,1250,1253,5,158,0,0,1251,1253,3,320,160,0,1252, - 1250,1,0,0,0,1252,1251,1,0,0,0,1253,115,1,0,0,0,1254,1255,5,98,0,0,1255, - 1256,5,173,0,0,1256,1257,3,320,160,0,1257,117,1,0,0,0,1258,1260,3,120, - 60,0,1259,1261,5,173,0,0,1260,1259,1,0,0,0,1260,1261,1,0,0,0,1261,1263, - 1,0,0,0,1262,1258,1,0,0,0,1262,1263,1,0,0,0,1263,1264,1,0,0,0,1264,1265, - 3,124,62,0,1265,119,1,0,0,0,1266,1267,5,123,0,0,1267,1268,5,173,0,0,1268, - 1269,5,90,0,0,1269,1270,5,173,0,0,1270,1272,3,334,167,0,1271,1273,5,173, - 0,0,1272,1271,1,0,0,0,1272,1273,1,0,0,0,1273,1274,1,0,0,0,1274,1276,5, - 2,0,0,1275,1277,5,173,0,0,1276,1275,1,0,0,0,1276,1277,1,0,0,0,1277,1278, - 1,0,0,0,1278,1280,3,122,61,0,1279,1281,5,173,0,0,1280,1279,1,0,0,0,1280, - 1281,1,0,0,0,1281,1282,1,0,0,0,1282,1283,5,4,0,0,1283,121,1,0,0,0,1284, - 1295,3,144,72,0,1285,1287,5,173,0,0,1286,1285,1,0,0,0,1286,1287,1,0,0, - 0,1287,1288,1,0,0,0,1288,1290,5,3,0,0,1289,1291,5,173,0,0,1290,1289,1, - 0,0,0,1290,1291,1,0,0,0,1291,1292,1,0,0,0,1292,1294,3,144,72,0,1293,1286, - 1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296,123, - 1,0,0,0,1297,1295,1,0,0,0,1298,1305,3,128,64,0,1299,1301,5,173,0,0,1300, - 1299,1,0,0,0,1300,1301,1,0,0,0,1301,1302,1,0,0,0,1302,1304,3,126,63,0, - 1303,1300,1,0,0,0,1304,1307,1,0,0,0,1305,1303,1,0,0,0,1305,1306,1,0,0, - 0,1306,1320,1,0,0,0,1307,1305,1,0,0,0,1308,1310,3,172,86,0,1309,1311, - 5,173,0,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311,1313,1,0,0,0,1312, - 1308,1,0,0,0,1313,1314,1,0,0,0,1314,1312,1,0,0,0,1314,1315,1,0,0,0,1315, - 1316,1,0,0,0,1316,1317,3,128,64,0,1317,1318,6,62,-1,0,1318,1320,1,0,0, - 0,1319,1298,1,0,0,0,1319,1312,1,0,0,0,1320,125,1,0,0,0,1321,1322,5,142, - 0,0,1322,1323,5,173,0,0,1323,1325,5,49,0,0,1324,1326,5,173,0,0,1325,1324, - 1,0,0,0,1325,1326,1,0,0,0,1326,1327,1,0,0,0,1327,1334,3,128,64,0,1328, - 1330,5,142,0,0,1329,1331,5,173,0,0,1330,1329,1,0,0,0,1330,1331,1,0,0, - 0,1331,1332,1,0,0,0,1332,1334,3,128,64,0,1333,1321,1,0,0,0,1333,1328, - 1,0,0,0,1334,127,1,0,0,0,1335,1338,3,130,65,0,1336,1338,3,132,66,0,1337, - 1335,1,0,0,0,1337,1336,1,0,0,0,1338,129,1,0,0,0,1339,1341,3,138,69,0, - 1340,1342,5,173,0,0,1341,1340,1,0,0,0,1341,1342,1,0,0,0,1342,1344,1,0, - 0,0,1343,1339,1,0,0,0,1344,1347,1,0,0,0,1345,1343,1,0,0,0,1345,1346,1, - 0,0,0,1346,1348,1,0,0,0,1347,1345,1,0,0,0,1348,1375,3,172,86,0,1349,1351, - 3,138,69,0,1350,1352,5,173,0,0,1351,1350,1,0,0,0,1351,1352,1,0,0,0,1352, - 1354,1,0,0,0,1353,1349,1,0,0,0,1354,1357,1,0,0,0,1355,1353,1,0,0,0,1355, - 1356,1,0,0,0,1356,1358,1,0,0,0,1357,1355,1,0,0,0,1358,1365,3,136,68,0, - 1359,1361,5,173,0,0,1360,1359,1,0,0,0,1360,1361,1,0,0,0,1361,1362,1,0, - 0,0,1362,1364,3,136,68,0,1363,1360,1,0,0,0,1364,1367,1,0,0,0,1365,1363, - 1,0,0,0,1365,1366,1,0,0,0,1366,1372,1,0,0,0,1367,1365,1,0,0,0,1368,1370, - 5,173,0,0,1369,1368,1,0,0,0,1369,1370,1,0,0,0,1370,1371,1,0,0,0,1371, - 1373,3,172,86,0,1372,1369,1,0,0,0,1372,1373,1,0,0,0,1373,1375,1,0,0,0, - 1374,1345,1,0,0,0,1374,1355,1,0,0,0,1375,131,1,0,0,0,1376,1378,3,134, - 67,0,1377,1379,5,173,0,0,1378,1377,1,0,0,0,1378,1379,1,0,0,0,1379,1381, - 1,0,0,0,1380,1376,1,0,0,0,1381,1382,1,0,0,0,1382,1380,1,0,0,0,1382,1383, - 1,0,0,0,1383,1384,1,0,0,0,1384,1385,3,130,65,0,1385,133,1,0,0,0,1386, - 1388,3,138,69,0,1387,1389,5,173,0,0,1388,1387,1,0,0,0,1388,1389,1,0,0, - 0,1389,1391,1,0,0,0,1390,1386,1,0,0,0,1391,1394,1,0,0,0,1392,1390,1,0, - 0,0,1392,1393,1,0,0,0,1393,1401,1,0,0,0,1394,1392,1,0,0,0,1395,1397,3, - 136,68,0,1396,1398,5,173,0,0,1397,1396,1,0,0,0,1397,1398,1,0,0,0,1398, - 1400,1,0,0,0,1399,1395,1,0,0,0,1400,1403,1,0,0,0,1401,1399,1,0,0,0,1401, - 1402,1,0,0,0,1402,1404,1,0,0,0,1403,1401,1,0,0,0,1404,1405,3,170,85,0, - 1405,135,1,0,0,0,1406,1411,3,158,79,0,1407,1411,3,160,80,0,1408,1411, - 3,164,82,0,1409,1411,3,168,84,0,1410,1406,1,0,0,0,1410,1407,1,0,0,0,1410, - 1408,1,0,0,0,1410,1409,1,0,0,0,1411,137,1,0,0,0,1412,1417,3,150,75,0, - 1413,1417,3,156,78,0,1414,1417,3,142,71,0,1415,1417,3,140,70,0,1416,1412, - 1,0,0,0,1416,1413,1,0,0,0,1416,1414,1,0,0,0,1416,1415,1,0,0,0,1417,139, - 1,0,0,0,1418,1436,5,103,0,0,1419,1420,5,173,0,0,1420,1421,5,147,0,0,1421, - 1422,5,173,0,0,1422,1424,5,92,0,0,1423,1425,5,173,0,0,1424,1423,1,0,0, - 0,1424,1425,1,0,0,0,1425,1426,1,0,0,0,1426,1428,5,2,0,0,1427,1429,5,173, - 0,0,1428,1427,1,0,0,0,1428,1429,1,0,0,0,1429,1430,1,0,0,0,1430,1432,3, - 88,44,0,1431,1433,5,173,0,0,1432,1431,1,0,0,0,1432,1433,1,0,0,0,1433, - 1434,1,0,0,0,1434,1435,5,4,0,0,1435,1437,1,0,0,0,1436,1419,1,0,0,0,1436, - 1437,1,0,0,0,1437,1438,1,0,0,0,1438,1439,5,173,0,0,1439,1440,5,88,0,0, - 1440,1441,5,173,0,0,1441,1446,3,10,5,0,1442,1444,5,173,0,0,1443,1442, - 1,0,0,0,1443,1444,1,0,0,0,1444,1445,1,0,0,0,1445,1447,3,42,21,0,1446, - 1443,1,0,0,0,1446,1447,1,0,0,0,1447,1452,1,0,0,0,1448,1450,5,173,0,0, - 1449,1448,1,0,0,0,1449,1450,1,0,0,0,1450,1451,1,0,0,0,1451,1453,3,188, - 94,0,1452,1449,1,0,0,0,1452,1453,1,0,0,0,1453,141,1,0,0,0,1454,1456,3, - 120,60,0,1455,1457,5,173,0,0,1456,1455,1,0,0,0,1456,1457,1,0,0,0,1457, - 1459,1,0,0,0,1458,1454,1,0,0,0,1458,1459,1,0,0,0,1459,1460,1,0,0,0,1460, - 1461,5,58,0,0,1461,1462,5,173,0,0,1462,1467,3,298,149,0,1463,1465,5,173, - 0,0,1464,1463,1,0,0,0,1464,1465,1,0,0,0,1465,1466,1,0,0,0,1466,1468,3, - 188,94,0,1467,1464,1,0,0,0,1467,1468,1,0,0,0,1468,143,1,0,0,0,1469,1483, - 3,334,167,0,1470,1472,5,173,0,0,1471,1470,1,0,0,0,1471,1472,1,0,0,0,1472, - 1473,1,0,0,0,1473,1475,5,9,0,0,1474,1476,5,173,0,0,1475,1474,1,0,0,0, - 1475,1476,1,0,0,0,1476,1477,1,0,0,0,1477,1479,3,146,73,0,1478,1480,5, - 173,0,0,1479,1478,1,0,0,0,1479,1480,1,0,0,0,1480,1481,1,0,0,0,1481,1482, - 5,10,0,0,1482,1484,1,0,0,0,1483,1471,1,0,0,0,1483,1484,1,0,0,0,1484,145, - 1,0,0,0,1485,1496,3,148,74,0,1486,1488,5,173,0,0,1487,1486,1,0,0,0,1487, - 1488,1,0,0,0,1488,1489,1,0,0,0,1489,1491,5,3,0,0,1490,1492,5,173,0,0, - 1491,1490,1,0,0,0,1491,1492,1,0,0,0,1492,1493,1,0,0,0,1493,1495,3,148, - 74,0,1494,1487,1,0,0,0,1495,1498,1,0,0,0,1496,1494,1,0,0,0,1496,1497, - 1,0,0,0,1497,147,1,0,0,0,1498,1496,1,0,0,0,1499,1502,3,328,164,0,1500, - 1501,5,173,0,0,1501,1503,3,80,40,0,1502,1500,1,0,0,0,1502,1503,1,0,0, - 0,1503,1506,1,0,0,0,1504,1505,5,173,0,0,1505,1507,3,188,94,0,1506,1504, - 1,0,0,0,1506,1507,1,0,0,0,1507,149,1,0,0,0,1508,1509,5,118,0,0,1509,1511, - 5,173,0,0,1510,1508,1,0,0,0,1510,1511,1,0,0,0,1511,1512,1,0,0,0,1512, - 1514,5,106,0,0,1513,1515,5,173,0,0,1514,1513,1,0,0,0,1514,1515,1,0,0, - 0,1515,1516,1,0,0,0,1516,1519,3,190,95,0,1517,1518,5,173,0,0,1518,1520, - 3,188,94,0,1519,1517,1,0,0,0,1519,1520,1,0,0,0,1520,1523,1,0,0,0,1521, - 1522,5,173,0,0,1522,1524,3,152,76,0,1523,1521,1,0,0,0,1523,1524,1,0,0, - 0,1524,151,1,0,0,0,1525,1526,5,93,0,0,1526,1527,5,173,0,0,1527,1528,3, - 154,77,0,1528,153,1,0,0,0,1529,1530,6,77,-1,0,1530,1532,5,2,0,0,1531, - 1533,5,173,0,0,1532,1531,1,0,0,0,1532,1533,1,0,0,0,1533,1534,1,0,0,0, - 1534,1536,3,154,77,0,1535,1537,5,173,0,0,1536,1535,1,0,0,0,1536,1537, - 1,0,0,0,1537,1538,1,0,0,0,1538,1539,5,4,0,0,1539,1542,1,0,0,0,1540,1542, - 3,334,167,0,1541,1529,1,0,0,0,1541,1540,1,0,0,0,1542,1559,1,0,0,0,1543, - 1544,10,4,0,0,1544,1545,5,173,0,0,1545,1546,5,100,0,0,1546,1547,5,173, - 0,0,1547,1558,3,154,77,5,1548,1553,10,3,0,0,1549,1550,5,173,0,0,1550, - 1551,5,110,0,0,1551,1552,5,173,0,0,1552,1554,3,334,167,0,1553,1549,1, - 0,0,0,1554,1555,1,0,0,0,1555,1553,1,0,0,0,1555,1556,1,0,0,0,1556,1558, - 1,0,0,0,1557,1543,1,0,0,0,1557,1548,1,0,0,0,1558,1561,1,0,0,0,1559,1557, - 1,0,0,0,1559,1560,1,0,0,0,1560,155,1,0,0,0,1561,1559,1,0,0,0,1562,1564, - 5,143,0,0,1563,1565,5,173,0,0,1564,1563,1,0,0,0,1564,1565,1,0,0,0,1565, - 1566,1,0,0,0,1566,1567,3,230,115,0,1567,1568,5,173,0,0,1568,1569,5,52, - 0,0,1569,1570,5,173,0,0,1570,1571,3,320,160,0,1571,157,1,0,0,0,1572,1574, - 5,69,0,0,1573,1575,5,173,0,0,1574,1573,1,0,0,0,1574,1575,1,0,0,0,1575, - 1576,1,0,0,0,1576,1577,3,190,95,0,1577,159,1,0,0,0,1578,1580,5,108,0, - 0,1579,1581,5,173,0,0,1580,1579,1,0,0,0,1580,1581,1,0,0,0,1581,1582,1, - 0,0,0,1582,1587,3,190,95,0,1583,1584,5,173,0,0,1584,1586,3,162,81,0,1585, - 1583,1,0,0,0,1586,1589,1,0,0,0,1587,1585,1,0,0,0,1587,1588,1,0,0,0,1588, - 161,1,0,0,0,1589,1587,1,0,0,0,1590,1591,5,116,0,0,1591,1592,5,173,0,0, - 1592,1593,5,106,0,0,1593,1594,5,173,0,0,1594,1601,3,164,82,0,1595,1596, - 5,116,0,0,1596,1597,5,173,0,0,1597,1598,5,69,0,0,1598,1599,5,173,0,0, - 1599,1601,3,164,82,0,1600,1590,1,0,0,0,1600,1595,1,0,0,0,1601,163,1,0, - 0,0,1602,1604,5,131,0,0,1603,1605,5,173,0,0,1604,1603,1,0,0,0,1604,1605, - 1,0,0,0,1605,1606,1,0,0,0,1606,1617,3,166,83,0,1607,1609,5,173,0,0,1608, - 1607,1,0,0,0,1608,1609,1,0,0,0,1609,1610,1,0,0,0,1610,1612,5,3,0,0,1611, - 1613,5,173,0,0,1612,1611,1,0,0,0,1612,1613,1,0,0,0,1613,1614,1,0,0,0, - 1614,1616,3,166,83,0,1615,1608,1,0,0,0,1616,1619,1,0,0,0,1617,1615,1, - 0,0,0,1617,1618,1,0,0,0,1618,165,1,0,0,0,1619,1617,1,0,0,0,1620,1622, - 3,326,163,0,1621,1623,5,173,0,0,1622,1621,1,0,0,0,1622,1623,1,0,0,0,1623, - 1624,1,0,0,0,1624,1626,5,6,0,0,1625,1627,5,173,0,0,1626,1625,1,0,0,0, - 1626,1627,1,0,0,0,1627,1628,1,0,0,0,1628,1629,3,230,115,0,1629,167,1, - 0,0,0,1630,1631,5,77,0,0,1631,1633,5,173,0,0,1632,1630,1,0,0,0,1632,1633, - 1,0,0,0,1633,1634,1,0,0,0,1634,1636,5,74,0,0,1635,1637,5,173,0,0,1636, - 1635,1,0,0,0,1636,1637,1,0,0,0,1637,1638,1,0,0,0,1638,1649,3,230,115, - 0,1639,1641,5,173,0,0,1640,1639,1,0,0,0,1640,1641,1,0,0,0,1641,1642,1, - 0,0,0,1642,1644,5,3,0,0,1643,1645,5,173,0,0,1644,1643,1,0,0,0,1644,1645, - 1,0,0,0,1645,1646,1,0,0,0,1646,1648,3,230,115,0,1647,1640,1,0,0,0,1648, - 1651,1,0,0,0,1649,1647,1,0,0,0,1649,1650,1,0,0,0,1650,169,1,0,0,0,1651, - 1649,1,0,0,0,1652,1653,5,147,0,0,1653,1658,3,174,87,0,1654,1656,5,173, - 0,0,1655,1654,1,0,0,0,1655,1656,1,0,0,0,1656,1657,1,0,0,0,1657,1659,3, - 188,94,0,1658,1655,1,0,0,0,1658,1659,1,0,0,0,1659,171,1,0,0,0,1660,1661, - 5,127,0,0,1661,1662,3,174,87,0,1662,173,1,0,0,0,1663,1665,5,173,0,0,1664, - 1663,1,0,0,0,1664,1665,1,0,0,0,1665,1666,1,0,0,0,1666,1668,5,78,0,0,1667, - 1664,1,0,0,0,1667,1668,1,0,0,0,1668,1669,1,0,0,0,1669,1670,5,173,0,0, - 1670,1673,3,176,88,0,1671,1672,5,173,0,0,1672,1674,3,180,90,0,1673,1671, - 1,0,0,0,1673,1674,1,0,0,0,1674,1677,1,0,0,0,1675,1676,5,173,0,0,1676, - 1678,3,182,91,0,1677,1675,1,0,0,0,1677,1678,1,0,0,0,1678,1681,1,0,0,0, - 1679,1680,5,173,0,0,1680,1682,3,184,92,0,1681,1679,1,0,0,0,1681,1682, - 1,0,0,0,1682,175,1,0,0,0,1683,1694,5,152,0,0,1684,1686,5,173,0,0,1685, - 1684,1,0,0,0,1685,1686,1,0,0,0,1686,1687,1,0,0,0,1687,1689,5,3,0,0,1688, - 1690,5,173,0,0,1689,1688,1,0,0,0,1689,1690,1,0,0,0,1690,1691,1,0,0,0, - 1691,1693,3,178,89,0,1692,1685,1,0,0,0,1693,1696,1,0,0,0,1694,1692,1, - 0,0,0,1694,1695,1,0,0,0,1695,1712,1,0,0,0,1696,1694,1,0,0,0,1697,1708, - 3,178,89,0,1698,1700,5,173,0,0,1699,1698,1,0,0,0,1699,1700,1,0,0,0,1700, - 1701,1,0,0,0,1701,1703,5,3,0,0,1702,1704,5,173,0,0,1703,1702,1,0,0,0, - 1703,1704,1,0,0,0,1704,1705,1,0,0,0,1705,1707,3,178,89,0,1706,1699,1, - 0,0,0,1707,1710,1,0,0,0,1708,1706,1,0,0,0,1708,1709,1,0,0,0,1709,1712, - 1,0,0,0,1710,1708,1,0,0,0,1711,1683,1,0,0,0,1711,1697,1,0,0,0,1712,177, - 1,0,0,0,1713,1714,3,230,115,0,1714,1715,5,173,0,0,1715,1716,5,52,0,0, - 1716,1717,5,173,0,0,1717,1718,3,320,160,0,1718,1721,1,0,0,0,1719,1721, - 3,230,115,0,1720,1713,1,0,0,0,1720,1719,1,0,0,0,1721,179,1,0,0,0,1722, - 1723,5,120,0,0,1723,1724,5,173,0,0,1724,1725,5,57,0,0,1725,1726,5,173, - 0,0,1726,1734,3,186,93,0,1727,1729,5,3,0,0,1728,1730,5,173,0,0,1729,1728, - 1,0,0,0,1729,1730,1,0,0,0,1730,1731,1,0,0,0,1731,1733,3,186,93,0,1732, - 1727,1,0,0,0,1733,1736,1,0,0,0,1734,1732,1,0,0,0,1734,1735,1,0,0,0,1735, - 181,1,0,0,0,1736,1734,1,0,0,0,1737,1738,5,153,0,0,1738,1739,5,173,0,0, - 1739,1740,3,230,115,0,1740,183,1,0,0,0,1741,1742,5,102,0,0,1742,1743, - 5,173,0,0,1743,1744,3,230,115,0,1744,185,1,0,0,0,1745,1750,3,230,115, - 0,1746,1748,5,173,0,0,1747,1746,1,0,0,0,1747,1748,1,0,0,0,1748,1749,1, - 0,0,0,1749,1751,7,1,0,0,1750,1747,1,0,0,0,1750,1751,1,0,0,0,1751,187, - 1,0,0,0,1752,1753,5,146,0,0,1753,1754,5,173,0,0,1754,1755,3,230,115,0, - 1755,189,1,0,0,0,1756,1767,3,192,96,0,1757,1759,5,173,0,0,1758,1757,1, - 0,0,0,1758,1759,1,0,0,0,1759,1760,1,0,0,0,1760,1762,5,3,0,0,1761,1763, - 5,173,0,0,1762,1761,1,0,0,0,1762,1763,1,0,0,0,1763,1764,1,0,0,0,1764, - 1766,3,192,96,0,1765,1758,1,0,0,0,1766,1769,1,0,0,0,1767,1765,1,0,0,0, - 1767,1768,1,0,0,0,1768,191,1,0,0,0,1769,1767,1,0,0,0,1770,1772,3,320, - 160,0,1771,1773,5,173,0,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1774, - 1,0,0,0,1774,1776,5,6,0,0,1775,1777,5,173,0,0,1776,1775,1,0,0,0,1776, - 1777,1,0,0,0,1777,1778,1,0,0,0,1778,1779,3,194,97,0,1779,1782,1,0,0,0, - 1780,1782,3,194,97,0,1781,1770,1,0,0,0,1781,1780,1,0,0,0,1782,193,1,0, - 0,0,1783,1784,3,196,98,0,1784,195,1,0,0,0,1785,1792,3,198,99,0,1786,1788, - 5,173,0,0,1787,1786,1,0,0,0,1787,1788,1,0,0,0,1788,1789,1,0,0,0,1789, - 1791,3,200,100,0,1790,1787,1,0,0,0,1791,1794,1,0,0,0,1792,1790,1,0,0, - 0,1792,1793,1,0,0,0,1793,1800,1,0,0,0,1794,1792,1,0,0,0,1795,1796,5,2, - 0,0,1796,1797,3,196,98,0,1797,1798,5,4,0,0,1798,1800,1,0,0,0,1799,1785, - 1,0,0,0,1799,1795,1,0,0,0,1800,197,1,0,0,0,1801,1803,5,2,0,0,1802,1804, - 5,173,0,0,1803,1802,1,0,0,0,1803,1804,1,0,0,0,1804,1809,1,0,0,0,1805, - 1807,3,320,160,0,1806,1808,5,173,0,0,1807,1806,1,0,0,0,1807,1808,1,0, - 0,0,1808,1810,1,0,0,0,1809,1805,1,0,0,0,1809,1810,1,0,0,0,1810,1815,1, - 0,0,0,1811,1813,3,210,105,0,1812,1814,5,173,0,0,1813,1812,1,0,0,0,1813, - 1814,1,0,0,0,1814,1816,1,0,0,0,1815,1811,1,0,0,0,1815,1816,1,0,0,0,1816, - 1821,1,0,0,0,1817,1819,3,206,103,0,1818,1820,5,173,0,0,1819,1818,1,0, - 0,0,1819,1820,1,0,0,0,1820,1822,1,0,0,0,1821,1817,1,0,0,0,1821,1822,1, - 0,0,0,1822,1823,1,0,0,0,1823,1824,5,4,0,0,1824,199,1,0,0,0,1825,1827, - 3,202,101,0,1826,1828,5,173,0,0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828, - 1829,1,0,0,0,1829,1830,3,198,99,0,1830,201,1,0,0,0,1831,1833,3,340,170, - 0,1832,1834,5,173,0,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1835,1, - 0,0,0,1835,1837,3,344,172,0,1836,1838,5,173,0,0,1837,1836,1,0,0,0,1837, - 1838,1,0,0,0,1838,1840,1,0,0,0,1839,1841,3,204,102,0,1840,1839,1,0,0, - 0,1840,1841,1,0,0,0,1841,1843,1,0,0,0,1842,1844,5,173,0,0,1843,1842,1, - 0,0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0,1845,1846,3,344,172,0,1846, - 1876,1,0,0,0,1847,1849,3,344,172,0,1848,1850,5,173,0,0,1849,1848,1,0, - 0,0,1849,1850,1,0,0,0,1850,1852,1,0,0,0,1851,1853,3,204,102,0,1852,1851, - 1,0,0,0,1852,1853,1,0,0,0,1853,1855,1,0,0,0,1854,1856,5,173,0,0,1855, - 1854,1,0,0,0,1855,1856,1,0,0,0,1856,1857,1,0,0,0,1857,1859,3,344,172, - 0,1858,1860,5,173,0,0,1859,1858,1,0,0,0,1859,1860,1,0,0,0,1860,1861,1, - 0,0,0,1861,1862,3,342,171,0,1862,1876,1,0,0,0,1863,1865,3,344,172,0,1864, - 1866,5,173,0,0,1865,1864,1,0,0,0,1865,1866,1,0,0,0,1866,1868,1,0,0,0, - 1867,1869,3,204,102,0,1868,1867,1,0,0,0,1868,1869,1,0,0,0,1869,1871,1, - 0,0,0,1870,1872,5,173,0,0,1871,1870,1,0,0,0,1871,1872,1,0,0,0,1872,1873, - 1,0,0,0,1873,1874,3,344,172,0,1874,1876,1,0,0,0,1875,1831,1,0,0,0,1875, - 1847,1,0,0,0,1875,1863,1,0,0,0,1876,203,1,0,0,0,1877,1879,5,7,0,0,1878, - 1880,5,173,0,0,1879,1878,1,0,0,0,1879,1880,1,0,0,0,1880,1885,1,0,0,0, - 1881,1883,3,320,160,0,1882,1884,5,173,0,0,1883,1882,1,0,0,0,1883,1884, - 1,0,0,0,1884,1886,1,0,0,0,1885,1881,1,0,0,0,1885,1886,1,0,0,0,1886,1891, - 1,0,0,0,1887,1889,3,208,104,0,1888,1890,5,173,0,0,1889,1888,1,0,0,0,1889, - 1890,1,0,0,0,1890,1892,1,0,0,0,1891,1887,1,0,0,0,1891,1892,1,0,0,0,1892, - 1897,1,0,0,0,1893,1895,3,214,107,0,1894,1896,5,173,0,0,1895,1894,1,0, - 0,0,1895,1896,1,0,0,0,1896,1898,1,0,0,0,1897,1893,1,0,0,0,1897,1898,1, - 0,0,0,1898,1903,1,0,0,0,1899,1901,3,206,103,0,1900,1902,5,173,0,0,1901, - 1900,1,0,0,0,1901,1902,1,0,0,0,1902,1904,1,0,0,0,1903,1899,1,0,0,0,1903, - 1904,1,0,0,0,1904,1905,1,0,0,0,1905,1906,5,8,0,0,1906,205,1,0,0,0,1907, - 1909,5,9,0,0,1908,1910,5,173,0,0,1909,1908,1,0,0,0,1909,1910,1,0,0,0, - 1910,1944,1,0,0,0,1911,1913,3,328,164,0,1912,1914,5,173,0,0,1913,1912, - 1,0,0,0,1913,1914,1,0,0,0,1914,1915,1,0,0,0,1915,1917,5,157,0,0,1916, - 1918,5,173,0,0,1917,1916,1,0,0,0,1917,1918,1,0,0,0,1918,1919,1,0,0,0, - 1919,1921,3,230,115,0,1920,1922,5,173,0,0,1921,1920,1,0,0,0,1921,1922, - 1,0,0,0,1922,1941,1,0,0,0,1923,1925,5,3,0,0,1924,1926,5,173,0,0,1925, - 1924,1,0,0,0,1925,1926,1,0,0,0,1926,1927,1,0,0,0,1927,1929,3,328,164, - 0,1928,1930,5,173,0,0,1929,1928,1,0,0,0,1929,1930,1,0,0,0,1930,1931,1, - 0,0,0,1931,1933,5,157,0,0,1932,1934,5,173,0,0,1933,1932,1,0,0,0,1933, - 1934,1,0,0,0,1934,1935,1,0,0,0,1935,1937,3,230,115,0,1936,1938,5,173, - 0,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1940,1,0,0,0,1939,1923,1, - 0,0,0,1940,1943,1,0,0,0,1941,1939,1,0,0,0,1941,1942,1,0,0,0,1942,1945, - 1,0,0,0,1943,1941,1,0,0,0,1944,1911,1,0,0,0,1944,1945,1,0,0,0,1945,1946, - 1,0,0,0,1946,1947,5,10,0,0,1947,207,1,0,0,0,1948,1950,5,157,0,0,1949, - 1951,5,173,0,0,1950,1949,1,0,0,0,1950,1951,1,0,0,0,1951,1952,1,0,0,0, - 1952,1966,3,228,114,0,1953,1955,5,173,0,0,1954,1953,1,0,0,0,1954,1955, - 1,0,0,0,1955,1956,1,0,0,0,1956,1958,5,11,0,0,1957,1959,5,157,0,0,1958, - 1957,1,0,0,0,1958,1959,1,0,0,0,1959,1961,1,0,0,0,1960,1962,5,173,0,0, - 1961,1960,1,0,0,0,1961,1962,1,0,0,0,1962,1963,1,0,0,0,1963,1965,3,228, - 114,0,1964,1954,1,0,0,0,1965,1968,1,0,0,0,1966,1964,1,0,0,0,1966,1967, - 1,0,0,0,1967,209,1,0,0,0,1968,1966,1,0,0,0,1969,1976,3,212,106,0,1970, - 1972,5,173,0,0,1971,1970,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0,0, - 1973,1975,3,212,106,0,1974,1971,1,0,0,0,1975,1978,1,0,0,0,1976,1974,1, - 0,0,0,1976,1977,1,0,0,0,1977,211,1,0,0,0,1978,1976,1,0,0,0,1979,1981, - 5,157,0,0,1980,1982,5,173,0,0,1981,1980,1,0,0,0,1981,1982,1,0,0,0,1982, - 1983,1,0,0,0,1983,1984,3,226,113,0,1984,213,1,0,0,0,1985,1987,5,152,0, - 0,1986,1988,5,173,0,0,1987,1986,1,0,0,0,1987,1988,1,0,0,0,1988,1995,1, - 0,0,0,1989,1996,5,132,0,0,1990,1991,5,49,0,0,1991,1992,5,173,0,0,1992, - 1996,5,132,0,0,1993,1996,5,138,0,0,1994,1996,5,46,0,0,1995,1989,1,0,0, - 0,1995,1990,1,0,0,0,1995,1993,1,0,0,0,1995,1994,1,0,0,0,1995,1996,1,0, - 0,0,1996,1998,1,0,0,0,1997,1999,5,173,0,0,1998,1997,1,0,0,0,1998,1999, - 1,0,0,0,1999,2014,1,0,0,0,2000,2002,3,222,111,0,2001,2000,1,0,0,0,2001, - 2002,1,0,0,0,2002,2004,1,0,0,0,2003,2005,5,173,0,0,2004,2003,1,0,0,0, - 2004,2005,1,0,0,0,2005,2006,1,0,0,0,2006,2008,5,12,0,0,2007,2009,5,173, - 0,0,2008,2007,1,0,0,0,2008,2009,1,0,0,0,2009,2011,1,0,0,0,2010,2012,3, - 224,112,0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,2015,1,0,0,0,2013, - 2015,3,330,165,0,2014,2001,1,0,0,0,2014,2013,1,0,0,0,2014,2015,1,0,0, - 0,2015,2020,1,0,0,0,2016,2018,5,173,0,0,2017,2016,1,0,0,0,2017,2018,1, - 0,0,0,2018,2019,1,0,0,0,2019,2021,3,216,108,0,2020,2017,1,0,0,0,2020, - 2021,1,0,0,0,2021,215,1,0,0,0,2022,2024,5,2,0,0,2023,2025,5,173,0,0,2024, - 2023,1,0,0,0,2024,2025,1,0,0,0,2025,2026,1,0,0,0,2026,2028,3,320,160, - 0,2027,2029,5,173,0,0,2028,2027,1,0,0,0,2028,2029,1,0,0,0,2029,2030,1, - 0,0,0,2030,2032,5,3,0,0,2031,2033,5,173,0,0,2032,2031,1,0,0,0,2032,2033, - 1,0,0,0,2033,2034,1,0,0,0,2034,2046,3,320,160,0,2035,2037,5,173,0,0,2036, - 2035,1,0,0,0,2036,2037,1,0,0,0,2037,2038,1,0,0,0,2038,2040,5,11,0,0,2039, - 2041,5,173,0,0,2040,2039,1,0,0,0,2040,2041,1,0,0,0,2041,2042,1,0,0,0, - 2042,2044,3,188,94,0,2043,2045,5,173,0,0,2044,2043,1,0,0,0,2044,2045, - 1,0,0,0,2045,2047,1,0,0,0,2046,2036,1,0,0,0,2046,2047,1,0,0,0,2047,2067, - 1,0,0,0,2048,2050,5,173,0,0,2049,2048,1,0,0,0,2049,2050,1,0,0,0,2050, - 2051,1,0,0,0,2051,2053,5,11,0,0,2052,2054,5,173,0,0,2053,2052,1,0,0,0, - 2053,2054,1,0,0,0,2054,2055,1,0,0,0,2055,2057,3,220,110,0,2056,2058,5, - 173,0,0,2057,2056,1,0,0,0,2057,2058,1,0,0,0,2058,2059,1,0,0,0,2059,2061, - 5,3,0,0,2060,2062,5,173,0,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062, - 2063,1,0,0,0,2063,2065,3,218,109,0,2064,2066,5,173,0,0,2065,2064,1,0, - 0,0,2065,2066,1,0,0,0,2066,2068,1,0,0,0,2067,2049,1,0,0,0,2067,2068,1, - 0,0,0,2068,2069,1,0,0,0,2069,2070,5,4,0,0,2070,217,1,0,0,0,2071,2073, - 5,9,0,0,2072,2074,5,173,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074, - 2076,1,0,0,0,2075,2077,3,176,88,0,2076,2075,1,0,0,0,2076,2077,1,0,0,0, - 2077,2079,1,0,0,0,2078,2080,5,173,0,0,2079,2078,1,0,0,0,2079,2080,1,0, - 0,0,2080,2081,1,0,0,0,2081,2082,5,10,0,0,2082,219,1,0,0,0,2083,2085,5, - 9,0,0,2084,2086,5,173,0,0,2085,2084,1,0,0,0,2085,2086,1,0,0,0,2086,2088, - 1,0,0,0,2087,2089,3,176,88,0,2088,2087,1,0,0,0,2088,2089,1,0,0,0,2089, - 2091,1,0,0,0,2090,2092,5,173,0,0,2091,2090,1,0,0,0,2091,2092,1,0,0,0, - 2092,2093,1,0,0,0,2093,2094,5,10,0,0,2094,221,1,0,0,0,2095,2096,5,160, - 0,0,2096,223,1,0,0,0,2097,2098,5,160,0,0,2098,225,1,0,0,0,2099,2100,3, - 334,167,0,2100,227,1,0,0,0,2101,2102,3,334,167,0,2102,229,1,0,0,0,2103, - 2104,3,232,116,0,2104,231,1,0,0,0,2105,2112,3,234,117,0,2106,2107,5,173, - 0,0,2107,2108,5,119,0,0,2108,2109,5,173,0,0,2109,2111,3,234,117,0,2110, - 2106,1,0,0,0,2111,2114,1,0,0,0,2112,2110,1,0,0,0,2112,2113,1,0,0,0,2113, - 233,1,0,0,0,2114,2112,1,0,0,0,2115,2122,3,236,118,0,2116,2117,5,173,0, - 0,2117,2118,5,149,0,0,2118,2119,5,173,0,0,2119,2121,3,236,118,0,2120, - 2116,1,0,0,0,2121,2124,1,0,0,0,2122,2120,1,0,0,0,2122,2123,1,0,0,0,2123, - 235,1,0,0,0,2124,2122,1,0,0,0,2125,2132,3,238,119,0,2126,2127,5,173,0, - 0,2127,2128,5,51,0,0,2128,2129,5,173,0,0,2129,2131,3,238,119,0,2130,2126, - 1,0,0,0,2131,2134,1,0,0,0,2132,2130,1,0,0,0,2132,2133,1,0,0,0,2133,237, - 1,0,0,0,2134,2132,1,0,0,0,2135,2137,5,113,0,0,2136,2138,5,173,0,0,2137, - 2136,1,0,0,0,2137,2138,1,0,0,0,2138,2140,1,0,0,0,2139,2135,1,0,0,0,2140, - 2143,1,0,0,0,2141,2139,1,0,0,0,2141,2142,1,0,0,0,2142,2144,1,0,0,0,2143, - 2141,1,0,0,0,2144,2145,3,240,120,0,2145,239,1,0,0,0,2146,2156,3,244,122, - 0,2147,2149,5,173,0,0,2148,2147,1,0,0,0,2148,2149,1,0,0,0,2149,2150,1, - 0,0,0,2150,2152,3,242,121,0,2151,2153,5,173,0,0,2152,2151,1,0,0,0,2152, - 2153,1,0,0,0,2153,2154,1,0,0,0,2154,2155,3,244,122,0,2155,2157,1,0,0, - 0,2156,2148,1,0,0,0,2156,2157,1,0,0,0,2157,2195,1,0,0,0,2158,2160,3,244, - 122,0,2159,2161,5,173,0,0,2160,2159,1,0,0,0,2160,2161,1,0,0,0,2161,2162, - 1,0,0,0,2162,2164,5,154,0,0,2163,2165,5,173,0,0,2164,2163,1,0,0,0,2164, - 2165,1,0,0,0,2165,2166,1,0,0,0,2166,2167,3,244,122,0,2167,2168,1,0,0, - 0,2168,2169,6,120,-1,0,2169,2195,1,0,0,0,2170,2172,3,244,122,0,2171,2173, - 5,173,0,0,2172,2171,1,0,0,0,2172,2173,1,0,0,0,2173,2174,1,0,0,0,2174, - 2176,3,242,121,0,2175,2177,5,173,0,0,2176,2175,1,0,0,0,2176,2177,1,0, - 0,0,2177,2178,1,0,0,0,2178,2188,3,244,122,0,2179,2181,5,173,0,0,2180, - 2179,1,0,0,0,2180,2181,1,0,0,0,2181,2182,1,0,0,0,2182,2184,3,242,121, - 0,2183,2185,5,173,0,0,2184,2183,1,0,0,0,2184,2185,1,0,0,0,2185,2186,1, - 0,0,0,2186,2187,3,244,122,0,2187,2189,1,0,0,0,2188,2180,1,0,0,0,2189, - 2190,1,0,0,0,2190,2188,1,0,0,0,2190,2191,1,0,0,0,2191,2192,1,0,0,0,2192, - 2193,6,120,-1,0,2193,2195,1,0,0,0,2194,2146,1,0,0,0,2194,2158,1,0,0,0, - 2194,2170,1,0,0,0,2195,241,1,0,0,0,2196,2197,7,2,0,0,2197,243,1,0,0,0, - 2198,2209,3,246,123,0,2199,2201,5,173,0,0,2200,2199,1,0,0,0,2200,2201, - 1,0,0,0,2201,2202,1,0,0,0,2202,2204,5,11,0,0,2203,2205,5,173,0,0,2204, - 2203,1,0,0,0,2204,2205,1,0,0,0,2205,2206,1,0,0,0,2206,2208,3,246,123, - 0,2207,2200,1,0,0,0,2208,2211,1,0,0,0,2209,2207,1,0,0,0,2209,2210,1,0, - 0,0,2210,245,1,0,0,0,2211,2209,1,0,0,0,2212,2223,3,248,124,0,2213,2215, - 5,173,0,0,2214,2213,1,0,0,0,2214,2215,1,0,0,0,2215,2216,1,0,0,0,2216, - 2218,5,18,0,0,2217,2219,5,173,0,0,2218,2217,1,0,0,0,2218,2219,1,0,0,0, - 2219,2220,1,0,0,0,2220,2222,3,248,124,0,2221,2214,1,0,0,0,2222,2225,1, - 0,0,0,2223,2221,1,0,0,0,2223,2224,1,0,0,0,2224,247,1,0,0,0,2225,2223, - 1,0,0,0,2226,2238,3,252,126,0,2227,2229,5,173,0,0,2228,2227,1,0,0,0,2228, - 2229,1,0,0,0,2229,2230,1,0,0,0,2230,2232,3,250,125,0,2231,2233,5,173, - 0,0,2232,2231,1,0,0,0,2232,2233,1,0,0,0,2233,2234,1,0,0,0,2234,2235,3, - 252,126,0,2235,2237,1,0,0,0,2236,2228,1,0,0,0,2237,2240,1,0,0,0,2238, - 2236,1,0,0,0,2238,2239,1,0,0,0,2239,249,1,0,0,0,2240,2238,1,0,0,0,2241, - 2242,7,3,0,0,2242,251,1,0,0,0,2243,2255,3,256,128,0,2244,2246,5,173,0, - 0,2245,2244,1,0,0,0,2245,2246,1,0,0,0,2246,2247,1,0,0,0,2247,2249,3,254, - 127,0,2248,2250,5,173,0,0,2249,2248,1,0,0,0,2249,2250,1,0,0,0,2250,2251, - 1,0,0,0,2251,2252,3,256,128,0,2252,2254,1,0,0,0,2253,2245,1,0,0,0,2254, - 2257,1,0,0,0,2255,2253,1,0,0,0,2255,2256,1,0,0,0,2256,253,1,0,0,0,2257, - 2255,1,0,0,0,2258,2259,7,4,0,0,2259,255,1,0,0,0,2260,2272,3,260,130,0, - 2261,2263,5,173,0,0,2262,2261,1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0, - 0,0,2264,2266,3,258,129,0,2265,2267,5,173,0,0,2266,2265,1,0,0,0,2266, - 2267,1,0,0,0,2267,2268,1,0,0,0,2268,2269,3,260,130,0,2269,2271,1,0,0, - 0,2270,2262,1,0,0,0,2271,2274,1,0,0,0,2272,2270,1,0,0,0,2272,2273,1,0, - 0,0,2273,257,1,0,0,0,2274,2272,1,0,0,0,2275,2276,7,5,0,0,2276,259,1,0, - 0,0,2277,2288,3,262,131,0,2278,2280,5,173,0,0,2279,2278,1,0,0,0,2279, - 2280,1,0,0,0,2280,2281,1,0,0,0,2281,2283,5,24,0,0,2282,2284,5,173,0,0, - 2283,2282,1,0,0,0,2283,2284,1,0,0,0,2284,2285,1,0,0,0,2285,2287,3,262, - 131,0,2286,2279,1,0,0,0,2287,2290,1,0,0,0,2288,2286,1,0,0,0,2288,2289, - 1,0,0,0,2289,261,1,0,0,0,2290,2288,1,0,0,0,2291,2293,5,155,0,0,2292,2294, - 5,173,0,0,2293,2292,1,0,0,0,2293,2294,1,0,0,0,2294,2296,1,0,0,0,2295, - 2291,1,0,0,0,2296,2299,1,0,0,0,2297,2295,1,0,0,0,2297,2298,1,0,0,0,2298, - 2300,1,0,0,0,2299,2297,1,0,0,0,2300,2305,3,264,132,0,2301,2303,5,173, - 0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303,2304,1,0,0,0,2304,2306,5, - 156,0,0,2305,2302,1,0,0,0,2305,2306,1,0,0,0,2306,263,1,0,0,0,2307,2315, - 3,274,137,0,2308,2316,3,268,134,0,2309,2311,3,266,133,0,2310,2309,1,0, - 0,0,2311,2312,1,0,0,0,2312,2310,1,0,0,0,2312,2313,1,0,0,0,2313,2316,1, - 0,0,0,2314,2316,3,272,136,0,2315,2308,1,0,0,0,2315,2310,1,0,0,0,2315, - 2314,1,0,0,0,2315,2316,1,0,0,0,2316,265,1,0,0,0,2317,2318,5,173,0,0,2318, - 2320,5,96,0,0,2319,2321,5,173,0,0,2320,2319,1,0,0,0,2320,2321,1,0,0,0, - 2321,2322,1,0,0,0,2322,2337,3,274,137,0,2323,2324,5,7,0,0,2324,2325,3, - 230,115,0,2325,2326,5,8,0,0,2326,2337,1,0,0,0,2327,2329,5,7,0,0,2328, - 2330,3,230,115,0,2329,2328,1,0,0,0,2329,2330,1,0,0,0,2330,2331,1,0,0, - 0,2331,2333,5,157,0,0,2332,2334,3,230,115,0,2333,2332,1,0,0,0,2333,2334, - 1,0,0,0,2334,2335,1,0,0,0,2335,2337,5,8,0,0,2336,2317,1,0,0,0,2336,2323, - 1,0,0,0,2336,2327,1,0,0,0,2337,267,1,0,0,0,2338,2350,3,270,135,0,2339, - 2340,5,173,0,0,2340,2341,5,134,0,0,2341,2342,5,173,0,0,2342,2350,5,147, - 0,0,2343,2344,5,173,0,0,2344,2345,5,82,0,0,2345,2346,5,173,0,0,2346,2350, - 5,147,0,0,2347,2348,5,173,0,0,2348,2350,5,66,0,0,2349,2338,1,0,0,0,2349, - 2339,1,0,0,0,2349,2343,1,0,0,0,2349,2347,1,0,0,0,2350,2352,1,0,0,0,2351, - 2353,5,173,0,0,2352,2351,1,0,0,0,2352,2353,1,0,0,0,2353,2354,1,0,0,0, - 2354,2355,3,274,137,0,2355,269,1,0,0,0,2356,2358,5,173,0,0,2357,2356, - 1,0,0,0,2357,2358,1,0,0,0,2358,2359,1,0,0,0,2359,2360,5,25,0,0,2360,271, - 1,0,0,0,2361,2362,5,173,0,0,2362,2363,5,99,0,0,2363,2364,5,173,0,0,2364, - 2372,5,115,0,0,2365,2366,5,173,0,0,2366,2367,5,99,0,0,2367,2368,5,173, - 0,0,2368,2369,5,113,0,0,2369,2370,5,173,0,0,2370,2372,5,115,0,0,2371, - 2361,1,0,0,0,2371,2365,1,0,0,0,2372,273,1,0,0,0,2373,2380,3,276,138,0, - 2374,2376,5,173,0,0,2375,2374,1,0,0,0,2375,2376,1,0,0,0,2376,2377,1,0, - 0,0,2377,2379,3,314,157,0,2378,2375,1,0,0,0,2379,2382,1,0,0,0,2380,2378, - 1,0,0,0,2380,2381,1,0,0,0,2381,275,1,0,0,0,2382,2380,1,0,0,0,2383,2394, - 3,284,142,0,2384,2394,3,324,162,0,2385,2394,3,316,158,0,2386,2394,3,296, - 148,0,2387,2394,3,298,149,0,2388,2394,3,308,154,0,2389,2394,3,310,155, - 0,2390,2394,3,312,156,0,2391,2394,3,320,160,0,2392,2394,3,278,139,0,2393, - 2383,1,0,0,0,2393,2384,1,0,0,0,2393,2385,1,0,0,0,2393,2386,1,0,0,0,2393, - 2387,1,0,0,0,2393,2388,1,0,0,0,2393,2389,1,0,0,0,2393,2390,1,0,0,0,2393, - 2391,1,0,0,0,2393,2392,1,0,0,0,2394,277,1,0,0,0,2395,2397,5,49,0,0,2396, - 2398,5,173,0,0,2397,2396,1,0,0,0,2397,2398,1,0,0,0,2398,2399,1,0,0,0, - 2399,2401,5,2,0,0,2400,2402,5,173,0,0,2401,2400,1,0,0,0,2401,2402,1,0, - 0,0,2402,2403,1,0,0,0,2403,2405,3,280,140,0,2404,2406,5,173,0,0,2405, - 2404,1,0,0,0,2405,2406,1,0,0,0,2406,2407,1,0,0,0,2407,2408,5,4,0,0,2408, - 2452,1,0,0,0,2409,2411,5,47,0,0,2410,2412,5,173,0,0,2411,2410,1,0,0,0, - 2411,2412,1,0,0,0,2412,2413,1,0,0,0,2413,2415,5,2,0,0,2414,2416,5,173, - 0,0,2415,2414,1,0,0,0,2415,2416,1,0,0,0,2416,2417,1,0,0,0,2417,2419,3, - 280,140,0,2418,2420,5,173,0,0,2419,2418,1,0,0,0,2419,2420,1,0,0,0,2420, - 2421,1,0,0,0,2421,2422,5,4,0,0,2422,2452,1,0,0,0,2423,2425,5,114,0,0, - 2424,2426,5,173,0,0,2425,2424,1,0,0,0,2425,2426,1,0,0,0,2426,2427,1,0, - 0,0,2427,2429,5,2,0,0,2428,2430,5,173,0,0,2429,2428,1,0,0,0,2429,2430, - 1,0,0,0,2430,2431,1,0,0,0,2431,2433,3,280,140,0,2432,2434,5,173,0,0,2433, - 2432,1,0,0,0,2433,2434,1,0,0,0,2434,2435,1,0,0,0,2435,2436,5,4,0,0,2436, - 2452,1,0,0,0,2437,2439,5,150,0,0,2438,2440,5,173,0,0,2439,2438,1,0,0, - 0,2439,2440,1,0,0,0,2440,2441,1,0,0,0,2441,2443,5,2,0,0,2442,2444,5,173, - 0,0,2443,2442,1,0,0,0,2443,2444,1,0,0,0,2444,2445,1,0,0,0,2445,2447,3, - 280,140,0,2446,2448,5,173,0,0,2447,2446,1,0,0,0,2447,2448,1,0,0,0,2448, - 2449,1,0,0,0,2449,2450,5,4,0,0,2450,2452,1,0,0,0,2451,2395,1,0,0,0,2451, - 2409,1,0,0,0,2451,2423,1,0,0,0,2451,2437,1,0,0,0,2452,279,1,0,0,0,2453, - 2458,3,282,141,0,2454,2456,5,173,0,0,2455,2454,1,0,0,0,2455,2456,1,0, - 0,0,2456,2457,1,0,0,0,2457,2459,3,188,94,0,2458,2455,1,0,0,0,2458,2459, - 1,0,0,0,2459,281,1,0,0,0,2460,2461,3,320,160,0,2461,2462,5,173,0,0,2462, - 2463,5,96,0,0,2463,2464,5,173,0,0,2464,2465,3,230,115,0,2465,283,1,0, - 0,0,2466,2473,3,322,161,0,2467,2473,5,158,0,0,2468,2473,3,286,143,0,2469, - 2473,5,115,0,0,2470,2473,3,288,144,0,2471,2473,3,292,146,0,2472,2466, - 1,0,0,0,2472,2467,1,0,0,0,2472,2468,1,0,0,0,2472,2469,1,0,0,0,2472,2470, - 1,0,0,0,2472,2471,1,0,0,0,2473,285,1,0,0,0,2474,2475,7,6,0,0,2475,287, - 1,0,0,0,2476,2478,5,7,0,0,2477,2479,5,173,0,0,2478,2477,1,0,0,0,2478, - 2479,1,0,0,0,2479,2493,1,0,0,0,2480,2482,3,230,115,0,2481,2483,5,173, - 0,0,2482,2481,1,0,0,0,2482,2483,1,0,0,0,2483,2490,1,0,0,0,2484,2486,3, - 290,145,0,2485,2487,5,173,0,0,2486,2485,1,0,0,0,2486,2487,1,0,0,0,2487, - 2489,1,0,0,0,2488,2484,1,0,0,0,2489,2492,1,0,0,0,2490,2488,1,0,0,0,2490, - 2491,1,0,0,0,2491,2494,1,0,0,0,2492,2490,1,0,0,0,2493,2480,1,0,0,0,2493, - 2494,1,0,0,0,2494,2495,1,0,0,0,2495,2496,5,8,0,0,2496,289,1,0,0,0,2497, - 2499,5,3,0,0,2498,2500,5,173,0,0,2499,2498,1,0,0,0,2499,2500,1,0,0,0, - 2500,2502,1,0,0,0,2501,2503,3,230,115,0,2502,2501,1,0,0,0,2502,2503,1, - 0,0,0,2503,291,1,0,0,0,2504,2506,5,9,0,0,2505,2507,5,173,0,0,2506,2505, - 1,0,0,0,2506,2507,1,0,0,0,2507,2508,1,0,0,0,2508,2510,3,294,147,0,2509, - 2511,5,173,0,0,2510,2509,1,0,0,0,2510,2511,1,0,0,0,2511,2522,1,0,0,0, - 2512,2514,5,3,0,0,2513,2515,5,173,0,0,2514,2513,1,0,0,0,2514,2515,1,0, - 0,0,2515,2516,1,0,0,0,2516,2518,3,294,147,0,2517,2519,5,173,0,0,2518, - 2517,1,0,0,0,2518,2519,1,0,0,0,2519,2521,1,0,0,0,2520,2512,1,0,0,0,2521, - 2524,1,0,0,0,2522,2520,1,0,0,0,2522,2523,1,0,0,0,2523,2525,1,0,0,0,2524, - 2522,1,0,0,0,2525,2526,5,10,0,0,2526,293,1,0,0,0,2527,2530,3,336,168, - 0,2528,2530,5,158,0,0,2529,2527,1,0,0,0,2529,2528,1,0,0,0,2530,2532,1, - 0,0,0,2531,2533,5,173,0,0,2532,2531,1,0,0,0,2532,2533,1,0,0,0,2533,2534, - 1,0,0,0,2534,2536,5,157,0,0,2535,2537,5,173,0,0,2536,2535,1,0,0,0,2536, - 2537,1,0,0,0,2537,2538,1,0,0,0,2538,2539,3,230,115,0,2539,295,1,0,0,0, - 2540,2542,5,2,0,0,2541,2543,5,173,0,0,2542,2541,1,0,0,0,2542,2543,1,0, - 0,0,2543,2544,1,0,0,0,2544,2546,3,230,115,0,2545,2547,5,173,0,0,2546, - 2545,1,0,0,0,2546,2547,1,0,0,0,2547,2548,1,0,0,0,2548,2549,5,4,0,0,2549, - 297,1,0,0,0,2550,2552,5,68,0,0,2551,2553,5,173,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,173, - 0,0,2556,2555,1,0,0,0,2556,2557,1,0,0,0,2557,2558,1,0,0,0,2558,2560,5, - 152,0,0,2559,2561,5,173,0,0,2560,2559,1,0,0,0,2560,2561,1,0,0,0,2561, - 2562,1,0,0,0,2562,2628,5,4,0,0,2563,2565,5,60,0,0,2564,2566,5,173,0,0, - 2565,2564,1,0,0,0,2565,2566,1,0,0,0,2566,2567,1,0,0,0,2567,2569,5,2,0, - 0,2568,2570,5,173,0,0,2569,2568,1,0,0,0,2569,2570,1,0,0,0,2570,2571,1, - 0,0,0,2571,2573,3,302,151,0,2572,2574,5,173,0,0,2573,2572,1,0,0,0,2573, - 2574,1,0,0,0,2574,2585,1,0,0,0,2575,2577,5,52,0,0,2576,2578,5,173,0,0, - 2577,2576,1,0,0,0,2577,2578,1,0,0,0,2578,2579,1,0,0,0,2579,2586,3,98, - 49,0,2580,2582,5,3,0,0,2581,2583,5,173,0,0,2582,2581,1,0,0,0,2582,2583, - 1,0,0,0,2583,2584,1,0,0,0,2584,2586,3,302,151,0,2585,2575,1,0,0,0,2585, - 2580,1,0,0,0,2586,2588,1,0,0,0,2587,2589,5,173,0,0,2588,2587,1,0,0,0, - 2588,2589,1,0,0,0,2589,2590,1,0,0,0,2590,2591,5,4,0,0,2591,2628,1,0,0, - 0,2592,2594,3,300,150,0,2593,2595,5,173,0,0,2594,2593,1,0,0,0,2594,2595, - 1,0,0,0,2595,2596,1,0,0,0,2596,2598,5,2,0,0,2597,2599,5,173,0,0,2598, - 2597,1,0,0,0,2598,2599,1,0,0,0,2599,2604,1,0,0,0,2600,2602,5,78,0,0,2601, - 2603,5,173,0,0,2602,2601,1,0,0,0,2602,2603,1,0,0,0,2603,2605,1,0,0,0, - 2604,2600,1,0,0,0,2604,2605,1,0,0,0,2605,2623,1,0,0,0,2606,2608,3,302, - 151,0,2607,2609,5,173,0,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2620, - 1,0,0,0,2610,2612,5,3,0,0,2611,2613,5,173,0,0,2612,2611,1,0,0,0,2612, - 2613,1,0,0,0,2613,2614,1,0,0,0,2614,2616,3,302,151,0,2615,2617,5,173, - 0,0,2616,2615,1,0,0,0,2616,2617,1,0,0,0,2617,2619,1,0,0,0,2618,2610,1, - 0,0,0,2619,2622,1,0,0,0,2620,2618,1,0,0,0,2620,2621,1,0,0,0,2621,2624, - 1,0,0,0,2622,2620,1,0,0,0,2623,2606,1,0,0,0,2623,2624,1,0,0,0,2624,2625, - 1,0,0,0,2625,2626,5,4,0,0,2626,2628,1,0,0,0,2627,2550,1,0,0,0,2627,2563, - 1,0,0,0,2627,2592,1,0,0,0,2628,299,1,0,0,0,2629,2630,3,336,168,0,2630, - 301,1,0,0,0,2631,2633,3,336,168,0,2632,2634,5,173,0,0,2633,2632,1,0,0, - 0,2633,2634,1,0,0,0,2634,2635,1,0,0,0,2635,2636,5,157,0,0,2636,2638,5, - 6,0,0,2637,2639,5,173,0,0,2638,2637,1,0,0,0,2638,2639,1,0,0,0,2639,2641, - 1,0,0,0,2640,2631,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0,2642,2645, - 3,230,115,0,2643,2645,3,304,152,0,2644,2640,1,0,0,0,2644,2643,1,0,0,0, - 2645,303,1,0,0,0,2646,2648,3,306,153,0,2647,2649,5,173,0,0,2648,2647, - 1,0,0,0,2648,2649,1,0,0,0,2649,2650,1,0,0,0,2650,2651,5,155,0,0,2651, - 2653,5,16,0,0,2652,2654,5,173,0,0,2653,2652,1,0,0,0,2653,2654,1,0,0,0, - 2654,2655,1,0,0,0,2655,2657,3,230,115,0,2656,2658,5,173,0,0,2657,2656, - 1,0,0,0,2657,2658,1,0,0,0,2658,305,1,0,0,0,2659,2684,3,336,168,0,2660, - 2662,5,2,0,0,2661,2663,5,173,0,0,2662,2661,1,0,0,0,2662,2663,1,0,0,0, - 2663,2664,1,0,0,0,2664,2666,3,336,168,0,2665,2667,5,173,0,0,2666,2665, - 1,0,0,0,2666,2667,1,0,0,0,2667,2678,1,0,0,0,2668,2670,5,3,0,0,2669,2671, - 5,173,0,0,2670,2669,1,0,0,0,2670,2671,1,0,0,0,2671,2672,1,0,0,0,2672, - 2674,3,336,168,0,2673,2675,5,173,0,0,2674,2673,1,0,0,0,2674,2675,1,0, - 0,0,2675,2677,1,0,0,0,2676,2668,1,0,0,0,2677,2680,1,0,0,0,2678,2676,1, - 0,0,0,2678,2679,1,0,0,0,2679,2681,1,0,0,0,2680,2678,1,0,0,0,2681,2682, - 5,4,0,0,2682,2684,1,0,0,0,2683,2659,1,0,0,0,2683,2660,1,0,0,0,2684,307, - 1,0,0,0,2685,2690,3,198,99,0,2686,2688,5,173,0,0,2687,2686,1,0,0,0,2687, - 2688,1,0,0,0,2688,2689,1,0,0,0,2689,2691,3,200,100,0,2690,2687,1,0,0, - 0,2691,2692,1,0,0,0,2692,2690,1,0,0,0,2692,2693,1,0,0,0,2693,309,1,0, - 0,0,2694,2696,5,83,0,0,2695,2697,5,173,0,0,2696,2695,1,0,0,0,2696,2697, - 1,0,0,0,2697,2698,1,0,0,0,2698,2700,5,9,0,0,2699,2701,5,173,0,0,2700, - 2699,1,0,0,0,2700,2701,1,0,0,0,2701,2702,1,0,0,0,2702,2704,5,106,0,0, - 2703,2705,5,173,0,0,2704,2703,1,0,0,0,2704,2705,1,0,0,0,2705,2706,1,0, - 0,0,2706,2711,3,190,95,0,2707,2709,5,173,0,0,2708,2707,1,0,0,0,2708,2709, - 1,0,0,0,2709,2710,1,0,0,0,2710,2712,3,188,94,0,2711,2708,1,0,0,0,2711, - 2712,1,0,0,0,2712,2714,1,0,0,0,2713,2715,5,173,0,0,2714,2713,1,0,0,0, - 2714,2715,1,0,0,0,2715,2716,1,0,0,0,2716,2717,5,10,0,0,2717,311,1,0,0, - 0,2718,2720,5,68,0,0,2719,2721,5,173,0,0,2720,2719,1,0,0,0,2720,2721, - 1,0,0,0,2721,2722,1,0,0,0,2722,2724,5,9,0,0,2723,2725,5,173,0,0,2724, - 2723,1,0,0,0,2724,2725,1,0,0,0,2725,2726,1,0,0,0,2726,2728,5,106,0,0, - 2727,2729,5,173,0,0,2728,2727,1,0,0,0,2728,2729,1,0,0,0,2729,2730,1,0, - 0,0,2730,2735,3,190,95,0,2731,2733,5,173,0,0,2732,2731,1,0,0,0,2732,2733, - 1,0,0,0,2733,2734,1,0,0,0,2734,2736,3,188,94,0,2735,2732,1,0,0,0,2735, - 2736,1,0,0,0,2736,2738,1,0,0,0,2737,2739,5,173,0,0,2738,2737,1,0,0,0, - 2738,2739,1,0,0,0,2739,2740,1,0,0,0,2740,2741,5,10,0,0,2741,313,1,0,0, - 0,2742,2744,5,5,0,0,2743,2745,5,173,0,0,2744,2743,1,0,0,0,2744,2745,1, - 0,0,0,2745,2748,1,0,0,0,2746,2749,3,328,164,0,2747,2749,5,152,0,0,2748, - 2746,1,0,0,0,2748,2747,1,0,0,0,2749,315,1,0,0,0,2750,2755,5,59,0,0,2751, - 2753,5,173,0,0,2752,2751,1,0,0,0,2752,2753,1,0,0,0,2753,2754,1,0,0,0, - 2754,2756,3,318,159,0,2755,2752,1,0,0,0,2756,2757,1,0,0,0,2757,2755,1, - 0,0,0,2757,2758,1,0,0,0,2758,2773,1,0,0,0,2759,2761,5,59,0,0,2760,2762, - 5,173,0,0,2761,2760,1,0,0,0,2761,2762,1,0,0,0,2762,2763,1,0,0,0,2763, - 2768,3,230,115,0,2764,2766,5,173,0,0,2765,2764,1,0,0,0,2765,2766,1,0, - 0,0,2766,2767,1,0,0,0,2767,2769,3,318,159,0,2768,2765,1,0,0,0,2769,2770, - 1,0,0,0,2770,2768,1,0,0,0,2770,2771,1,0,0,0,2771,2773,1,0,0,0,2772,2750, - 1,0,0,0,2772,2759,1,0,0,0,2773,2782,1,0,0,0,2774,2776,5,173,0,0,2775, - 2774,1,0,0,0,2775,2776,1,0,0,0,2776,2777,1,0,0,0,2777,2779,5,80,0,0,2778, - 2780,5,173,0,0,2779,2778,1,0,0,0,2779,2780,1,0,0,0,2780,2781,1,0,0,0, - 2781,2783,3,230,115,0,2782,2775,1,0,0,0,2782,2783,1,0,0,0,2783,2785,1, - 0,0,0,2784,2786,5,173,0,0,2785,2784,1,0,0,0,2785,2786,1,0,0,0,2786,2787, - 1,0,0,0,2787,2788,5,81,0,0,2788,317,1,0,0,0,2789,2791,5,145,0,0,2790, - 2792,5,173,0,0,2791,2790,1,0,0,0,2791,2792,1,0,0,0,2792,2793,1,0,0,0, - 2793,2795,3,230,115,0,2794,2796,5,173,0,0,2795,2794,1,0,0,0,2795,2796, - 1,0,0,0,2796,2797,1,0,0,0,2797,2799,5,136,0,0,2798,2800,5,173,0,0,2799, - 2798,1,0,0,0,2799,2800,1,0,0,0,2800,2801,1,0,0,0,2801,2802,3,230,115, - 0,2802,319,1,0,0,0,2803,2804,3,336,168,0,2804,321,1,0,0,0,2805,2808,3, - 332,166,0,2806,2808,3,330,165,0,2807,2805,1,0,0,0,2807,2806,1,0,0,0,2808, - 323,1,0,0,0,2809,2812,5,26,0,0,2810,2813,3,336,168,0,2811,2813,5,160, - 0,0,2812,2810,1,0,0,0,2812,2811,1,0,0,0,2813,325,1,0,0,0,2814,2816,3, - 276,138,0,2815,2817,5,173,0,0,2816,2815,1,0,0,0,2816,2817,1,0,0,0,2817, - 2818,1,0,0,0,2818,2819,3,314,157,0,2819,327,1,0,0,0,2820,2821,3,334,167, - 0,2821,329,1,0,0,0,2822,2823,5,160,0,0,2823,331,1,0,0,0,2824,2825,7,7, - 0,0,2825,333,1,0,0,0,2826,2827,3,336,168,0,2827,335,1,0,0,0,2828,2834, - 5,169,0,0,2829,2830,5,172,0,0,2830,2834,6,168,-1,0,2831,2834,5,161,0, - 0,2832,2834,3,338,169,0,2833,2828,1,0,0,0,2833,2829,1,0,0,0,2833,2831, - 1,0,0,0,2833,2832,1,0,0,0,2834,337,1,0,0,0,2835,2836,7,8,0,0,2836,339, - 1,0,0,0,2837,2838,7,9,0,0,2838,341,1,0,0,0,2839,2840,7,10,0,0,2840,343, - 1,0,0,0,2841,2842,7,11,0,0,2842,345,1,0,0,0,493,348,352,357,361,366,369, - 373,376,399,405,409,412,418,421,425,429,433,438,442,449,453,461,465,475, - 479,483,488,501,505,513,516,524,527,542,547,553,557,560,563,569,573,578, - 581,586,590,594,599,614,618,625,645,649,652,655,658,661,665,670,674,684, - 688,693,698,703,709,713,717,722,729,733,737,740,744,748,767,771,775,779, - 783,786,789,802,806,810,814,818,822,824,828,832,834,849,853,857,861,865, - 870,873,877,881,883,887,891,893,912,919,932,939,945,948,958,961,969,972, - 978,981,987,1002,1018,1025,1032,1043,1063,1067,1072,1081,1085,1090,1096, - 1102,1108,1112,1116,1124,1128,1132,1138,1142,1146,1152,1156,1160,1164, - 1168,1174,1178,1182,1186,1190,1194,1200,1207,1212,1218,1223,1240,1244, - 1252,1260,1262,1272,1276,1280,1286,1290,1295,1300,1305,1310,1314,1319, - 1325,1330,1333,1337,1341,1345,1351,1355,1360,1365,1369,1372,1374,1378, - 1382,1388,1392,1397,1401,1410,1416,1424,1428,1432,1436,1443,1446,1449, - 1452,1456,1458,1464,1467,1471,1475,1479,1483,1487,1491,1496,1502,1506, - 1510,1514,1519,1523,1532,1536,1541,1555,1557,1559,1564,1574,1580,1587, - 1600,1604,1608,1612,1617,1622,1626,1632,1636,1640,1644,1649,1655,1658, - 1664,1667,1673,1677,1681,1685,1689,1694,1699,1703,1708,1711,1720,1729, - 1734,1747,1750,1758,1762,1767,1772,1776,1781,1787,1792,1799,1803,1807, - 1809,1813,1815,1819,1821,1827,1833,1837,1840,1843,1849,1852,1855,1859, - 1865,1868,1871,1875,1879,1883,1885,1889,1891,1895,1897,1901,1903,1909, - 1913,1917,1921,1925,1929,1933,1937,1941,1944,1950,1954,1958,1961,1966, - 1971,1976,1981,1987,1995,1998,2001,2004,2008,2011,2014,2017,2020,2024, - 2028,2032,2036,2040,2044,2046,2049,2053,2057,2061,2065,2067,2073,2076, - 2079,2085,2088,2091,2112,2122,2132,2137,2141,2148,2152,2156,2160,2164, - 2172,2176,2180,2184,2190,2194,2200,2204,2209,2214,2218,2223,2228,2232, - 2238,2245,2249,2255,2262,2266,2272,2279,2283,2288,2293,2297,2302,2305, - 2312,2315,2320,2329,2333,2336,2349,2352,2357,2371,2375,2380,2393,2397, - 2401,2405,2411,2415,2419,2425,2429,2433,2439,2443,2447,2451,2455,2458, - 2472,2478,2482,2486,2490,2493,2499,2502,2506,2510,2514,2518,2522,2529, - 2532,2536,2542,2546,2552,2556,2560,2565,2569,2573,2577,2582,2585,2588, - 2594,2598,2602,2604,2608,2612,2616,2620,2623,2627,2633,2638,2640,2644, - 2648,2653,2657,2662,2666,2670,2674,2678,2683,2687,2692,2696,2700,2704, - 2708,2711,2714,2720,2724,2728,2732,2735,2738,2744,2748,2752,2757,2761, - 2765,2770,2772,2775,2779,2782,2785,2791,2795,2799,2807,2812,2816,2833 + 1,2,1,2,1,2,3,2,390,8,2,1,3,1,3,1,3,1,3,3,3,396,8,3,1,3,1,3,3,3,400,8, + 3,1,3,3,3,403,8,3,1,3,1,3,1,3,1,3,3,3,409,8,3,1,3,3,3,412,8,3,1,4,1,4, + 3,4,416,8,4,1,4,1,4,3,4,420,8,4,1,4,1,4,3,4,424,8,4,1,4,5,4,427,8,4,10, + 4,12,4,430,9,4,1,4,3,4,433,8,4,1,4,1,4,1,5,1,5,1,5,3,5,440,8,5,1,5,1, + 5,3,5,444,8,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,452,8,5,1,5,1,5,3,5,456,8,5, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,466,8,6,1,6,1,6,3,6,470,8,6,1,6,1, + 6,3,6,474,8,6,1,6,5,6,477,8,6,10,6,12,6,480,9,6,1,6,1,6,1,6,1,6,1,6,1, + 6,1,7,1,7,1,7,1,7,3,7,492,8,7,1,7,1,7,3,7,496,8,7,1,7,1,7,1,7,1,7,1,7, + 1,7,3,7,504,8,7,1,7,3,7,507,8,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,515,8,8,1, + 8,3,8,518,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,533,8,10,1,10,1,10,1,10,3,10,538,8,10,1,10,1,10,1,10,1,10,3,10, + 544,8,10,1,10,1,10,3,10,548,8,10,1,10,3,10,551,8,10,1,10,3,10,554,8,10, + 1,10,1,10,1,11,1,11,3,11,560,8,11,1,11,1,11,3,11,564,8,11,1,11,5,11,567, + 8,11,10,11,12,11,570,9,11,3,11,572,8,11,1,11,1,11,1,11,3,11,577,8,11, + 1,12,1,12,3,12,581,8,12,1,12,1,12,3,12,585,8,12,1,12,5,12,588,8,12,10, + 12,12,12,591,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,3,15,605,8,15,1,15,1,15,3,15,609,8,15,1,15,1,15,1,15,1,15,1,15, + 3,15,616,8,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,17,1,17,1,17,1,17,1,17,1,17,3,17,636,8,17,1,17,1,17,3,17,640,8, + 17,1,17,3,17,643,8,17,1,17,3,17,646,8,17,1,17,3,17,649,8,17,1,17,3,17, + 652,8,17,1,17,1,17,3,17,656,8,17,1,17,5,17,659,8,17,10,17,12,17,662,9, + 17,1,17,3,17,665,8,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,3,18,675, + 8,18,1,18,1,18,3,18,679,8,18,1,18,5,18,682,8,18,10,18,12,18,685,9,18, + 1,19,1,19,3,19,689,8,19,1,19,1,19,1,19,3,19,694,8,19,1,19,1,19,1,20,1, + 20,3,20,700,8,20,1,20,1,20,3,20,704,8,20,1,20,1,20,3,20,708,8,20,1,20, + 5,20,711,8,20,10,20,12,20,714,9,20,1,20,1,20,1,20,1,20,3,20,720,8,20, + 1,20,1,20,3,20,724,8,20,1,20,1,20,3,20,728,8,20,1,20,3,20,731,8,20,1, + 21,1,21,3,21,735,8,21,1,21,1,21,3,21,739,8,21,1,21,1,21,1,22,1,22,1,22, + 1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,758, + 8,23,1,23,1,23,3,23,762,8,23,1,23,1,23,3,23,766,8,23,1,23,1,23,3,23,770, + 8,23,1,23,1,23,3,23,774,8,23,1,23,3,23,777,8,23,1,23,3,23,780,8,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,793,8,24,1, + 24,1,24,3,24,797,8,24,1,24,1,24,3,24,801,8,24,1,24,1,24,3,24,805,8,24, + 1,24,1,24,3,24,809,8,24,1,24,1,24,3,24,813,8,24,3,24,815,8,24,1,24,1, + 24,3,24,819,8,24,1,24,1,24,3,24,823,8,24,3,24,825,8,24,1,24,1,24,1,25, + 1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,840,8,25,1,25, + 1,25,3,25,844,8,25,1,25,1,25,3,25,848,8,25,1,25,1,25,3,25,852,8,25,1, + 25,1,25,3,25,856,8,25,1,25,4,25,859,8,25,11,25,12,25,860,1,25,3,25,864, + 8,25,1,25,1,25,3,25,868,8,25,1,25,1,25,3,25,872,8,25,3,25,874,8,25,1, + 25,1,25,3,25,878,8,25,1,25,1,25,3,25,882,8,25,3,25,884,8,25,1,25,1,25, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27, + 1,27,3,27,903,8,27,1,27,1,27,1,27,5,27,908,8,27,10,27,12,27,911,9,27, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,923,8,28,1,29, + 1,29,1,29,1,29,1,29,3,29,930,8,29,1,30,1,30,1,30,1,30,3,30,936,8,30,1, + 30,3,30,939,8,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,3,31,949,8,31, + 1,31,3,31,952,8,31,1,32,1,32,1,32,1,32,1,32,1,32,3,32,960,8,32,1,32,3, + 32,963,8,32,1,33,1,33,1,33,1,33,3,33,969,8,33,1,33,3,33,972,8,33,1,33, + 1,33,1,34,1,34,3,34,978,8,34,1,34,1,34,1,35,1,35,1,35,1,35,1,36,1,36, + 1,36,1,36,1,36,1,36,1,36,3,36,993,8,36,1,36,1,36,1,37,1,37,1,37,1,37, + 1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,3,38,1009,8,38,1,39,1,39,1,39, + 1,39,1,39,3,39,1016,8,39,1,39,1,39,1,39,1,39,1,39,3,39,1023,8,39,1,40, + 1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,3,41,1034,8,41,1,41,1,41,1,42, + 1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44, + 1,44,3,44,1054,8,44,1,44,1,44,3,44,1058,8,44,1,44,5,44,1061,8,44,10,44, + 12,44,1064,9,44,1,45,1,45,1,45,1,45,1,46,1,46,3,46,1072,8,46,1,46,1,46, + 3,46,1076,8,46,1,46,5,46,1079,8,46,10,46,12,46,1082,9,46,1,47,1,47,1, + 47,3,47,1087,8,47,1,47,1,47,1,47,1,47,3,47,1093,8,47,1,48,1,48,1,48,1, + 48,3,48,1099,8,48,1,48,1,48,3,48,1103,8,48,1,48,1,48,3,48,1107,8,48,1, + 48,1,48,1,49,1,49,1,49,1,49,3,49,1115,8,49,1,49,1,49,3,49,1119,8,49,1, + 49,1,49,3,49,1123,8,49,1,49,1,49,1,49,1,49,3,49,1129,8,49,1,49,1,49,3, + 49,1133,8,49,1,49,1,49,3,49,1137,8,49,1,49,1,49,1,49,1,49,3,49,1143,8, + 49,1,49,1,49,3,49,1147,8,49,1,49,1,49,3,49,1151,8,49,1,49,1,49,3,49,1155, + 8,49,1,49,1,49,3,49,1159,8,49,1,49,1,49,1,49,1,49,3,49,1165,8,49,1,49, + 1,49,3,49,1169,8,49,1,49,1,49,3,49,1173,8,49,1,49,1,49,3,49,1177,8,49, + 1,49,1,49,3,49,1181,8,49,1,49,1,49,3,49,1185,8,49,1,49,1,49,5,49,1189, + 8,49,10,49,12,49,1192,9,49,1,50,1,50,5,50,1196,8,50,10,50,12,50,1199, + 9,50,1,51,1,51,3,51,1203,8,51,1,51,1,51,1,52,1,52,3,52,1209,8,52,1,53, + 1,53,1,53,3,53,1214,8,53,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55, + 1,55,1,55,1,55,1,55,1,55,1,55,3,55,1231,8,55,1,56,1,56,3,56,1235,8,56, + 1,57,1,57,1,57,1,57,1,57,1,57,3,57,1243,8,57,1,58,1,58,1,58,1,58,1,59, + 1,59,1,60,1,60,3,60,1253,8,60,1,60,5,60,1256,8,60,10,60,12,60,1259,9, + 60,1,60,1,60,3,60,1263,8,60,4,60,1265,8,60,11,60,12,60,1266,1,60,1,60, + 1,60,3,60,1272,8,60,1,61,1,61,1,61,1,61,3,61,1278,8,61,1,61,1,61,1,61, + 3,61,1283,8,61,1,61,3,61,1286,8,61,1,62,1,62,3,62,1290,8,62,1,63,1,63, + 3,63,1294,8,63,5,63,1296,8,63,10,63,12,63,1299,9,63,1,63,1,63,1,63,3, + 63,1304,8,63,5,63,1306,8,63,10,63,12,63,1309,9,63,1,63,1,63,3,63,1313, + 8,63,1,63,5,63,1316,8,63,10,63,12,63,1319,9,63,1,63,3,63,1322,8,63,1, + 63,3,63,1325,8,63,3,63,1327,8,63,1,64,1,64,3,64,1331,8,64,4,64,1333,8, + 64,11,64,12,64,1334,1,64,1,64,1,65,1,65,3,65,1341,8,65,5,65,1343,8,65, + 10,65,12,65,1346,9,65,1,65,1,65,3,65,1350,8,65,5,65,1352,8,65,10,65,12, + 65,1355,9,65,1,65,1,65,1,66,1,66,1,66,1,66,3,66,1363,8,66,1,67,1,67,1, + 67,1,67,3,67,1369,8,67,1,68,1,68,1,68,1,68,1,68,1,68,3,68,1377,8,68,1, + 68,1,68,3,68,1381,8,68,1,68,1,68,3,68,1385,8,68,1,68,1,68,3,68,1389,8, + 68,1,68,1,68,1,68,1,68,1,68,3,68,1396,8,68,1,68,3,68,1399,8,68,1,68,3, + 68,1402,8,68,1,68,3,68,1405,8,68,1,69,1,69,1,69,1,69,3,69,1411,8,69,1, + 69,3,69,1414,8,69,1,70,1,70,3,70,1418,8,70,1,70,1,70,3,70,1422,8,70,1, + 70,1,70,1,70,3,70,1427,8,70,1,70,1,70,3,70,1431,8,70,1,71,1,71,1,71,1, + 71,1,72,1,72,1,72,3,72,1440,8,72,1,72,1,72,3,72,1444,8,72,1,72,1,72,1, + 72,3,72,1449,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,4, + 72,1461,8,72,11,72,12,72,1462,5,72,1465,8,72,10,72,12,72,1468,9,72,1, + 73,1,73,3,73,1472,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,3,74,1482, + 8,74,1,74,1,74,1,75,1,75,3,75,1488,8,75,1,75,1,75,1,75,5,75,1493,8,75, + 10,75,12,75,1496,9,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, + 76,3,76,1508,8,76,1,77,1,77,3,77,1512,8,77,1,77,1,77,3,77,1516,8,77,1, + 77,1,77,3,77,1520,8,77,1,77,5,77,1523,8,77,10,77,12,77,1526,9,77,1,78, + 1,78,3,78,1530,8,78,1,78,1,78,3,78,1534,8,78,1,78,1,78,1,79,1,79,3,79, + 1540,8,79,1,79,1,79,3,79,1544,8,79,1,79,1,79,3,79,1548,8,79,1,79,1,79, + 3,79,1552,8,79,1,79,5,79,1555,8,79,10,79,12,79,1558,9,79,1,80,1,80,1, + 80,3,80,1563,8,80,1,80,3,80,1566,8,80,1,81,1,81,1,81,1,82,3,82,1572,8, + 82,1,82,3,82,1575,8,82,1,82,1,82,1,82,1,82,3,82,1581,8,82,1,82,1,82,3, + 82,1585,8,82,1,82,1,82,3,82,1589,8,82,1,83,1,83,3,83,1593,8,83,1,83,1, + 83,3,83,1597,8,83,1,83,5,83,1600,8,83,10,83,12,83,1603,9,83,1,83,1,83, + 3,83,1607,8,83,1,83,1,83,3,83,1611,8,83,1,83,5,83,1614,8,83,10,83,12, + 83,1617,9,83,3,83,1619,8,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1628, + 8,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,3,85,1637,8,85,1,85,5,85,1640, + 8,85,10,85,12,85,1643,9,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1, + 88,1,88,3,88,1655,8,88,1,88,3,88,1658,8,88,1,89,1,89,1,89,1,89,1,90,1, + 90,3,90,1666,8,90,1,90,1,90,3,90,1670,8,90,1,90,5,90,1673,8,90,10,90, + 12,90,1676,9,90,1,91,1,91,3,91,1680,8,91,1,91,1,91,3,91,1684,8,91,1,91, + 1,91,1,91,3,91,1689,8,91,1,92,1,92,1,93,1,93,3,93,1695,8,93,1,93,5,93, + 1698,8,93,10,93,12,93,1701,9,93,1,93,1,93,1,93,1,93,3,93,1707,8,93,1, + 94,1,94,3,94,1711,8,94,1,94,1,94,3,94,1715,8,94,3,94,1717,8,94,1,94,1, + 94,3,94,1721,8,94,3,94,1723,8,94,1,94,1,94,3,94,1727,8,94,3,94,1729,8, + 94,1,94,1,94,1,95,1,95,3,95,1735,8,95,1,95,1,95,1,96,1,96,3,96,1741,8, + 96,1,96,1,96,3,96,1745,8,96,1,96,3,96,1748,8,96,1,96,3,96,1751,8,96,1, + 96,1,96,1,96,1,96,3,96,1757,8,96,1,96,3,96,1760,8,96,1,96,3,96,1763,8, + 96,1,96,1,96,3,96,1767,8,96,1,96,1,96,1,96,1,96,3,96,1773,8,96,1,96,3, + 96,1776,8,96,1,96,3,96,1779,8,96,1,96,1,96,3,96,1783,8,96,1,97,1,97,3, + 97,1787,8,97,1,97,1,97,3,97,1791,8,97,3,97,1793,8,97,1,97,1,97,3,97,1797, + 8,97,3,97,1799,8,97,1,97,1,97,3,97,1803,8,97,3,97,1805,8,97,1,97,1,97, + 3,97,1809,8,97,3,97,1811,8,97,1,97,1,97,1,98,1,98,3,98,1817,8,98,1,98, + 1,98,3,98,1821,8,98,1,98,1,98,3,98,1825,8,98,1,98,1,98,3,98,1829,8,98, + 1,98,1,98,3,98,1833,8,98,1,98,1,98,3,98,1837,8,98,1,98,1,98,3,98,1841, + 8,98,1,98,1,98,3,98,1845,8,98,5,98,1847,8,98,10,98,12,98,1850,9,98,3, + 98,1852,8,98,1,98,1,98,1,99,1,99,3,99,1858,8,99,1,99,1,99,3,99,1862,8, + 99,1,99,1,99,3,99,1866,8,99,1,99,3,99,1869,8,99,1,99,5,99,1872,8,99,10, + 99,12,99,1875,9,99,1,100,1,100,3,100,1879,8,100,1,100,5,100,1882,8,100, + 10,100,12,100,1885,9,100,1,101,1,101,3,101,1889,8,101,1,101,1,101,1,102, + 1,102,3,102,1895,8,102,1,102,1,102,1,102,1,102,1,102,1,102,3,102,1903, + 8,102,1,102,3,102,1906,8,102,1,102,3,102,1909,8,102,1,102,3,102,1912, + 8,102,1,102,1,102,3,102,1916,8,102,1,102,3,102,1919,8,102,1,102,3,102, + 1922,8,102,1,102,3,102,1925,8,102,1,102,3,102,1928,8,102,1,103,1,103, + 3,103,1932,8,103,1,103,1,103,3,103,1936,8,103,1,103,1,103,3,103,1940, + 8,103,1,103,1,103,3,103,1944,8,103,1,103,1,103,3,103,1948,8,103,1,103, + 1,103,3,103,1952,8,103,3,103,1954,8,103,1,103,3,103,1957,8,103,1,103, + 1,103,3,103,1961,8,103,1,103,1,103,3,103,1965,8,103,1,103,1,103,3,103, + 1969,8,103,1,103,1,103,3,103,1973,8,103,3,103,1975,8,103,1,103,1,103, + 1,104,1,104,3,104,1981,8,104,1,104,3,104,1984,8,104,1,104,3,104,1987, + 8,104,1,104,1,104,1,105,1,105,3,105,1993,8,105,1,105,3,105,1996,8,105, + 1,105,3,105,1999,8,105,1,105,1,105,1,106,1,106,1,107,1,107,1,108,1,108, + 1,109,1,109,1,110,1,110,1,111,1,111,1,111,1,111,1,111,5,111,2018,8,111, + 10,111,12,111,2021,9,111,1,112,1,112,1,112,1,112,1,112,5,112,2028,8,112, + 10,112,12,112,2031,9,112,1,113,1,113,1,113,1,113,1,113,5,113,2038,8,113, + 10,113,12,113,2041,9,113,1,114,1,114,3,114,2045,8,114,5,114,2047,8,114, + 10,114,12,114,2050,9,114,1,114,1,114,1,115,1,115,3,115,2056,8,115,1,115, + 1,115,3,115,2060,8,115,1,115,1,115,3,115,2064,8,115,1,115,1,115,3,115, + 2068,8,115,1,115,1,115,3,115,2072,8,115,1,115,1,115,1,115,1,115,1,115, + 1,115,3,115,2080,8,115,1,115,1,115,3,115,2084,8,115,1,115,1,115,3,115, + 2088,8,115,1,115,1,115,3,115,2092,8,115,1,115,1,115,4,115,2096,8,115, + 11,115,12,115,2097,1,115,1,115,3,115,2102,8,115,1,116,1,116,1,117,1,117, + 3,117,2108,8,117,1,117,1,117,3,117,2112,8,117,1,117,5,117,2115,8,117, + 10,117,12,117,2118,9,117,1,118,1,118,3,118,2122,8,118,1,118,1,118,3,118, + 2126,8,118,1,118,5,118,2129,8,118,10,118,12,118,2132,9,118,1,119,1,119, + 3,119,2136,8,119,1,119,1,119,3,119,2140,8,119,1,119,1,119,5,119,2144, + 8,119,10,119,12,119,2147,9,119,1,120,1,120,1,121,1,121,3,121,2153,8,121, + 1,121,1,121,3,121,2157,8,121,1,121,1,121,5,121,2161,8,121,10,121,12,121, + 2164,9,121,1,122,1,122,1,123,1,123,3,123,2170,8,123,1,123,1,123,3,123, + 2174,8,123,1,123,1,123,5,123,2178,8,123,10,123,12,123,2181,9,123,1,124, + 1,124,1,125,1,125,3,125,2187,8,125,1,125,1,125,3,125,2191,8,125,1,125, + 5,125,2194,8,125,10,125,12,125,2197,9,125,1,126,1,126,3,126,2201,8,126, + 5,126,2203,8,126,10,126,12,126,2206,9,126,1,126,1,126,3,126,2210,8,126, + 1,126,3,126,2213,8,126,1,127,1,127,1,127,4,127,2218,8,127,11,127,12,127, + 2219,1,127,3,127,2223,8,127,1,128,1,128,1,128,3,128,2228,8,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,3,128,2237,8,128,1,128,1,128,3,128, + 2241,8,128,1,128,3,128,2244,8,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,3,129,2257,8,129,1,129,3,129,2260,8,129, + 1,129,1,129,1,130,3,130,2265,8,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,3,131,2279,8,131,1,132,1,132,3,132, + 2283,8,132,1,132,5,132,2286,8,132,10,132,12,132,2289,9,132,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,3,133,2301,8,133,1,134, + 1,134,3,134,2305,8,134,1,134,1,134,3,134,2309,8,134,1,134,1,134,3,134, + 2313,8,134,1,134,1,134,1,134,1,134,3,134,2319,8,134,1,134,1,134,3,134, + 2323,8,134,1,134,1,134,3,134,2327,8,134,1,134,1,134,1,134,1,134,3,134, + 2333,8,134,1,134,1,134,3,134,2337,8,134,1,134,1,134,3,134,2341,8,134, + 1,134,1,134,1,134,1,134,3,134,2347,8,134,1,134,1,134,3,134,2351,8,134, + 1,134,1,134,3,134,2355,8,134,1,134,1,134,3,134,2359,8,134,1,135,1,135, + 3,135,2363,8,135,1,135,3,135,2366,8,135,1,136,1,136,1,136,1,136,1,136, + 1,136,1,137,1,137,1,137,1,137,1,137,1,137,3,137,2380,8,137,1,138,1,138, + 1,139,1,139,3,139,2386,8,139,1,139,1,139,3,139,2390,8,139,1,139,1,139, + 3,139,2394,8,139,5,139,2396,8,139,10,139,12,139,2399,9,139,3,139,2401, + 8,139,1,139,1,139,1,140,1,140,3,140,2407,8,140,1,140,3,140,2410,8,140, + 1,141,1,141,3,141,2414,8,141,1,141,1,141,3,141,2418,8,141,1,141,1,141, + 3,141,2422,8,141,1,141,1,141,3,141,2426,8,141,5,141,2428,8,141,10,141, + 12,141,2431,9,141,1,141,1,141,1,142,1,142,3,142,2437,8,142,1,142,3,142, + 2440,8,142,1,142,1,142,3,142,2444,8,142,1,142,1,142,1,143,1,143,3,143, + 2450,8,143,1,143,1,143,3,143,2454,8,143,1,143,1,143,1,144,1,144,3,144, + 2460,8,144,1,144,1,144,3,144,2464,8,144,1,144,1,144,3,144,2468,8,144, + 1,144,1,144,1,144,3,144,2473,8,144,1,144,1,144,3,144,2477,8,144,1,144, + 1,144,3,144,2481,8,144,1,144,1,144,3,144,2485,8,144,1,144,1,144,1,144, + 3,144,2490,8,144,1,144,3,144,2493,8,144,1,144,3,144,2496,8,144,1,144, + 1,144,1,144,1,144,3,144,2502,8,144,1,144,1,144,3,144,2506,8,144,1,144, + 1,144,3,144,2510,8,144,3,144,2512,8,144,1,144,1,144,3,144,2516,8,144, + 1,144,1,144,3,144,2520,8,144,1,144,1,144,3,144,2524,8,144,5,144,2526, + 8,144,10,144,12,144,2529,9,144,3,144,2531,8,144,1,144,1,144,3,144,2535, + 8,144,1,145,1,145,1,146,1,146,3,146,2541,8,146,1,146,1,146,1,146,3,146, + 2546,8,146,3,146,2548,8,146,1,146,1,146,3,146,2552,8,146,1,147,1,147, + 3,147,2556,8,147,1,147,1,147,1,147,3,147,2561,8,147,1,147,1,147,3,147, + 2565,8,147,1,148,1,148,1,148,3,148,2570,8,148,1,148,1,148,3,148,2574, + 8,148,1,148,1,148,3,148,2578,8,148,1,148,1,148,3,148,2582,8,148,5,148, + 2584,8,148,10,148,12,148,2587,9,148,1,148,1,148,3,148,2591,8,148,1,149, + 1,149,3,149,2595,8,149,1,149,4,149,2598,8,149,11,149,12,149,2599,1,150, + 1,150,3,150,2604,8,150,1,150,1,150,3,150,2608,8,150,1,150,1,150,3,150, + 2612,8,150,1,150,1,150,3,150,2616,8,150,1,150,3,150,2619,8,150,1,150, + 3,150,2622,8,150,1,150,1,150,1,151,1,151,3,151,2628,8,151,1,151,1,151, + 3,151,2632,8,151,1,151,1,151,3,151,2636,8,151,1,151,1,151,3,151,2640, + 8,151,1,151,3,151,2643,8,151,1,151,3,151,2646,8,151,1,151,1,151,1,152, + 1,152,3,152,2652,8,152,1,152,1,152,3,152,2656,8,152,1,153,1,153,3,153, + 2660,8,153,1,153,4,153,2663,8,153,11,153,12,153,2664,1,153,1,153,3,153, + 2669,8,153,1,153,1,153,3,153,2673,8,153,1,153,4,153,2676,8,153,11,153, + 12,153,2677,3,153,2680,8,153,1,153,3,153,2683,8,153,1,153,1,153,3,153, + 2687,8,153,1,153,3,153,2690,8,153,1,153,3,153,2693,8,153,1,153,1,153, + 1,154,1,154,3,154,2699,8,154,1,154,1,154,3,154,2703,8,154,1,154,1,154, + 3,154,2707,8,154,1,154,1,154,1,155,1,155,1,156,1,156,3,156,2715,8,156, + 1,157,1,157,1,157,3,157,2720,8,157,1,158,1,158,3,158,2724,8,158,1,158, + 1,158,1,159,1,159,1,160,1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,163, + 1,163,1,163,3,163,2741,8,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167, + 1,167,1,167,0,2,98,144,168,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,0,12,2,0,130,130,135,135,2,0,53,54,75,76,2,0,6,6,13,17,1,0,19,20, + 2,0,21,21,155,155,2,0,22,23,152,152,2,0,87,87,140,140,1,0,167,168,28, + 0,48,48,50,50,52,52,55,58,61,61,63,64,66,68,70,71,74,74,77,77,79,79,84, + 86,90,90,94,95,97,97,99,99,101,104,106,109,111,112,123,128,130,131,133, + 133,139,139,141,141,144,144,148,148,151,151,153,153,2,0,14,14,27,30,2, + 0,16,16,31,34,2,0,35,45,155,155,3121,0,336,1,0,0,0,2,356,1,0,0,0,4,389, + 1,0,0,0,6,391,1,0,0,0,8,413,1,0,0,0,10,455,1,0,0,0,12,457,1,0,0,0,14, + 487,1,0,0,0,16,508,1,0,0,0,18,519,1,0,0,0,20,525,1,0,0,0,22,576,1,0,0, + 0,24,578,1,0,0,0,26,592,1,0,0,0,28,596,1,0,0,0,30,615,1,0,0,0,32,617, + 1,0,0,0,34,629,1,0,0,0,36,672,1,0,0,0,38,686,1,0,0,0,40,730,1,0,0,0,42, + 732,1,0,0,0,44,742,1,0,0,0,46,748,1,0,0,0,48,783,1,0,0,0,50,828,1,0,0, + 0,52,887,1,0,0,0,54,895,1,0,0,0,56,912,1,0,0,0,58,929,1,0,0,0,60,931, + 1,0,0,0,62,951,1,0,0,0,64,962,1,0,0,0,66,964,1,0,0,0,68,977,1,0,0,0,70, + 981,1,0,0,0,72,985,1,0,0,0,74,996,1,0,0,0,76,1008,1,0,0,0,78,1010,1,0, + 0,0,80,1024,1,0,0,0,82,1028,1,0,0,0,84,1037,1,0,0,0,86,1043,1,0,0,0,88, + 1051,1,0,0,0,90,1065,1,0,0,0,92,1069,1,0,0,0,94,1083,1,0,0,0,96,1094, + 1,0,0,0,98,1184,1,0,0,0,100,1193,1,0,0,0,102,1200,1,0,0,0,104,1208,1, + 0,0,0,106,1210,1,0,0,0,108,1215,1,0,0,0,110,1230,1,0,0,0,112,1234,1,0, + 0,0,114,1236,1,0,0,0,116,1244,1,0,0,0,118,1248,1,0,0,0,120,1271,1,0,0, + 0,122,1285,1,0,0,0,124,1289,1,0,0,0,126,1326,1,0,0,0,128,1332,1,0,0,0, + 130,1344,1,0,0,0,132,1362,1,0,0,0,134,1368,1,0,0,0,136,1370,1,0,0,0,138, + 1406,1,0,0,0,140,1417,1,0,0,0,142,1432,1,0,0,0,144,1448,1,0,0,0,146,1469, + 1,0,0,0,148,1479,1,0,0,0,150,1485,1,0,0,0,152,1507,1,0,0,0,154,1509,1, + 0,0,0,156,1527,1,0,0,0,158,1539,1,0,0,0,160,1559,1,0,0,0,162,1567,1,0, + 0,0,164,1574,1,0,0,0,166,1618,1,0,0,0,168,1627,1,0,0,0,170,1629,1,0,0, + 0,172,1644,1,0,0,0,174,1648,1,0,0,0,176,1652,1,0,0,0,178,1659,1,0,0,0, + 180,1663,1,0,0,0,182,1688,1,0,0,0,184,1690,1,0,0,0,186,1706,1,0,0,0,188, + 1708,1,0,0,0,190,1732,1,0,0,0,192,1782,1,0,0,0,194,1784,1,0,0,0,196,1814, + 1,0,0,0,198,1855,1,0,0,0,200,1876,1,0,0,0,202,1886,1,0,0,0,204,1892,1, + 0,0,0,206,1929,1,0,0,0,208,1978,1,0,0,0,210,1990,1,0,0,0,212,2002,1,0, + 0,0,214,2004,1,0,0,0,216,2006,1,0,0,0,218,2008,1,0,0,0,220,2010,1,0,0, + 0,222,2012,1,0,0,0,224,2022,1,0,0,0,226,2032,1,0,0,0,228,2048,1,0,0,0, + 230,2101,1,0,0,0,232,2103,1,0,0,0,234,2105,1,0,0,0,236,2119,1,0,0,0,238, + 2133,1,0,0,0,240,2148,1,0,0,0,242,2150,1,0,0,0,244,2165,1,0,0,0,246,2167, + 1,0,0,0,248,2182,1,0,0,0,250,2184,1,0,0,0,252,2204,1,0,0,0,254,2214,1, + 0,0,0,256,2243,1,0,0,0,258,2256,1,0,0,0,260,2264,1,0,0,0,262,2278,1,0, + 0,0,264,2280,1,0,0,0,266,2300,1,0,0,0,268,2358,1,0,0,0,270,2360,1,0,0, + 0,272,2367,1,0,0,0,274,2379,1,0,0,0,276,2381,1,0,0,0,278,2383,1,0,0,0, + 280,2404,1,0,0,0,282,2411,1,0,0,0,284,2436,1,0,0,0,286,2447,1,0,0,0,288, + 2534,1,0,0,0,290,2536,1,0,0,0,292,2551,1,0,0,0,294,2553,1,0,0,0,296,2590, + 1,0,0,0,298,2592,1,0,0,0,300,2601,1,0,0,0,302,2625,1,0,0,0,304,2649,1, + 0,0,0,306,2679,1,0,0,0,308,2696,1,0,0,0,310,2710,1,0,0,0,312,2714,1,0, + 0,0,314,2716,1,0,0,0,316,2721,1,0,0,0,318,2727,1,0,0,0,320,2729,1,0,0, + 0,322,2731,1,0,0,0,324,2733,1,0,0,0,326,2740,1,0,0,0,328,2742,1,0,0,0, + 330,2744,1,0,0,0,332,2746,1,0,0,0,334,2748,1,0,0,0,336,347,3,2,1,0,337, + 339,5,173,0,0,338,337,1,0,0,0,338,339,1,0,0,0,339,340,1,0,0,0,340,342, + 5,1,0,0,341,343,5,173,0,0,342,341,1,0,0,0,342,343,1,0,0,0,343,344,1,0, + 0,0,344,346,3,2,1,0,345,338,1,0,0,0,346,349,1,0,0,0,347,345,1,0,0,0,347, + 348,1,0,0,0,348,351,1,0,0,0,349,347,1,0,0,0,350,352,5,173,0,0,351,350, + 1,0,0,0,351,352,1,0,0,0,352,353,1,0,0,0,353,354,5,0,0,1,354,1,1,0,0,0, + 355,357,3,104,52,0,356,355,1,0,0,0,356,357,1,0,0,0,357,359,1,0,0,0,358, + 360,5,173,0,0,359,358,1,0,0,0,359,360,1,0,0,0,360,361,1,0,0,0,361,366, + 3,4,2,0,362,364,5,173,0,0,363,362,1,0,0,0,363,364,1,0,0,0,364,365,1,0, + 0,0,365,367,5,1,0,0,366,363,1,0,0,0,366,367,1,0,0,0,367,3,1,0,0,0,368, + 390,3,118,59,0,369,390,3,46,23,0,370,390,3,48,24,0,371,390,3,50,25,0, + 372,390,3,54,27,0,373,390,3,56,28,0,374,390,3,72,36,0,375,390,3,74,37, + 0,376,390,3,6,3,0,377,390,3,12,6,0,378,390,3,14,7,0,379,390,3,30,15,0, + 380,390,3,34,17,0,381,390,3,32,16,0,382,390,3,110,55,0,383,390,3,112, + 56,0,384,390,3,16,8,0,385,390,3,18,9,0,386,390,3,20,10,0,387,390,3,26, + 13,0,388,390,3,28,14,0,389,368,1,0,0,0,389,369,1,0,0,0,389,370,1,0,0, + 0,389,371,1,0,0,0,389,372,1,0,0,0,389,373,1,0,0,0,389,374,1,0,0,0,389, + 375,1,0,0,0,389,376,1,0,0,0,389,377,1,0,0,0,389,378,1,0,0,0,389,379,1, + 0,0,0,389,380,1,0,0,0,389,381,1,0,0,0,389,382,1,0,0,0,389,383,1,0,0,0, + 389,384,1,0,0,0,389,385,1,0,0,0,389,386,1,0,0,0,389,387,1,0,0,0,389,388, + 1,0,0,0,390,5,1,0,0,0,391,392,5,67,0,0,392,393,5,173,0,0,393,402,3,324, + 162,0,394,396,5,173,0,0,395,394,1,0,0,0,395,396,1,0,0,0,396,397,1,0,0, + 0,397,399,3,8,4,0,398,400,5,173,0,0,399,398,1,0,0,0,399,400,1,0,0,0,400, + 403,1,0,0,0,401,403,5,173,0,0,402,395,1,0,0,0,402,401,1,0,0,0,403,404, + 1,0,0,0,404,405,5,88,0,0,405,406,5,173,0,0,406,411,3,10,5,0,407,409,5, + 173,0,0,408,407,1,0,0,0,408,409,1,0,0,0,409,410,1,0,0,0,410,412,3,42, + 21,0,411,408,1,0,0,0,411,412,1,0,0,0,412,7,1,0,0,0,413,415,5,2,0,0,414, + 416,5,173,0,0,415,414,1,0,0,0,415,416,1,0,0,0,416,417,1,0,0,0,417,428, + 3,324,162,0,418,420,5,173,0,0,419,418,1,0,0,0,419,420,1,0,0,0,420,421, + 1,0,0,0,421,423,5,3,0,0,422,424,5,173,0,0,423,422,1,0,0,0,423,424,1,0, + 0,0,424,425,1,0,0,0,425,427,3,324,162,0,426,419,1,0,0,0,427,430,1,0,0, + 0,428,426,1,0,0,0,428,429,1,0,0,0,429,432,1,0,0,0,430,428,1,0,0,0,431, + 433,5,173,0,0,432,431,1,0,0,0,432,433,1,0,0,0,433,434,1,0,0,0,434,435, + 5,4,0,0,435,9,1,0,0,0,436,456,3,40,20,0,437,439,5,2,0,0,438,440,5,173, + 0,0,439,438,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,443,3,118,59, + 0,442,444,5,173,0,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0,0,445, + 446,5,4,0,0,446,456,1,0,0,0,447,456,3,310,155,0,448,449,3,310,155,0,449, + 451,5,5,0,0,450,452,5,173,0,0,451,450,1,0,0,0,451,452,1,0,0,0,452,453, + 1,0,0,0,453,454,3,324,162,0,454,456,1,0,0,0,455,436,1,0,0,0,455,437,1, + 0,0,0,455,447,1,0,0,0,455,448,1,0,0,0,456,11,1,0,0,0,457,458,5,67,0,0, + 458,459,5,173,0,0,459,460,3,324,162,0,460,461,5,173,0,0,461,462,5,88, + 0,0,462,463,5,173,0,0,463,465,5,2,0,0,464,466,5,173,0,0,465,464,1,0,0, + 0,465,466,1,0,0,0,466,467,1,0,0,0,467,478,5,158,0,0,468,470,5,173,0,0, + 469,468,1,0,0,0,469,470,1,0,0,0,470,471,1,0,0,0,471,473,5,3,0,0,472,474, + 5,173,0,0,473,472,1,0,0,0,473,474,1,0,0,0,474,475,1,0,0,0,475,477,5,158, + 0,0,476,469,1,0,0,0,477,480,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479, + 481,1,0,0,0,480,478,1,0,0,0,481,482,5,4,0,0,482,483,5,173,0,0,483,484, + 5,57,0,0,484,485,5,173,0,0,485,486,5,62,0,0,486,13,1,0,0,0,487,488,5, + 67,0,0,488,489,5,173,0,0,489,491,5,2,0,0,490,492,5,173,0,0,491,490,1, + 0,0,0,491,492,1,0,0,0,492,493,1,0,0,0,493,495,3,118,59,0,494,496,5,173, + 0,0,495,494,1,0,0,0,495,496,1,0,0,0,496,497,1,0,0,0,497,498,5,4,0,0,498, + 499,5,173,0,0,499,500,5,137,0,0,500,501,5,173,0,0,501,506,5,158,0,0,502, + 504,5,173,0,0,503,502,1,0,0,0,503,504,1,0,0,0,504,505,1,0,0,0,505,507, + 3,42,21,0,506,503,1,0,0,0,506,507,1,0,0,0,507,15,1,0,0,0,508,509,5,85, + 0,0,509,510,5,173,0,0,510,511,5,71,0,0,511,512,5,173,0,0,512,517,5,158, + 0,0,513,515,5,173,0,0,514,513,1,0,0,0,514,515,1,0,0,0,515,516,1,0,0,0, + 516,518,3,42,21,0,517,514,1,0,0,0,517,518,1,0,0,0,518,17,1,0,0,0,519, + 520,5,94,0,0,520,521,5,173,0,0,521,522,5,71,0,0,522,523,5,173,0,0,523, + 524,5,158,0,0,524,19,1,0,0,0,525,526,5,55,0,0,526,527,5,173,0,0,527,532, + 5,158,0,0,528,529,5,173,0,0,529,530,5,52,0,0,530,531,5,173,0,0,531,533, + 3,324,162,0,532,528,1,0,0,0,532,533,1,0,0,0,533,534,1,0,0,0,534,535,5, + 173,0,0,535,537,5,2,0,0,536,538,5,173,0,0,537,536,1,0,0,0,537,538,1,0, + 0,0,538,539,1,0,0,0,539,540,5,72,0,0,540,541,5,173,0,0,541,550,3,326, + 163,0,542,544,5,173,0,0,543,542,1,0,0,0,543,544,1,0,0,0,544,545,1,0,0, + 0,545,547,5,3,0,0,546,548,5,173,0,0,547,546,1,0,0,0,547,548,1,0,0,0,548, + 549,1,0,0,0,549,551,3,24,12,0,550,543,1,0,0,0,550,551,1,0,0,0,551,553, + 1,0,0,0,552,554,5,173,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0, + 0,0,555,556,5,4,0,0,556,21,1,0,0,0,557,571,3,326,163,0,558,560,5,173, + 0,0,559,558,1,0,0,0,559,560,1,0,0,0,560,561,1,0,0,0,561,563,5,6,0,0,562, + 564,5,173,0,0,563,562,1,0,0,0,563,564,1,0,0,0,564,572,1,0,0,0,565,567, + 5,173,0,0,566,565,1,0,0,0,567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0, + 0,0,569,572,1,0,0,0,570,568,1,0,0,0,571,559,1,0,0,0,571,568,1,0,0,0,572, + 573,1,0,0,0,573,574,3,274,137,0,574,577,1,0,0,0,575,577,3,326,163,0,576, + 557,1,0,0,0,576,575,1,0,0,0,577,23,1,0,0,0,578,589,3,22,11,0,579,581, + 5,173,0,0,580,579,1,0,0,0,580,581,1,0,0,0,581,582,1,0,0,0,582,584,5,3, + 0,0,583,585,5,173,0,0,584,583,1,0,0,0,584,585,1,0,0,0,585,586,1,0,0,0, + 586,588,3,22,11,0,587,580,1,0,0,0,588,591,1,0,0,0,589,587,1,0,0,0,589, + 590,1,0,0,0,590,25,1,0,0,0,591,589,1,0,0,0,592,593,5,77,0,0,593,594,5, + 173,0,0,594,595,3,324,162,0,595,27,1,0,0,0,596,597,5,144,0,0,597,598, + 5,173,0,0,598,599,3,324,162,0,599,29,1,0,0,0,600,601,5,58,0,0,601,602, + 5,173,0,0,602,604,3,326,163,0,603,605,5,173,0,0,604,603,1,0,0,0,604,605, + 1,0,0,0,605,606,1,0,0,0,606,608,5,6,0,0,607,609,5,173,0,0,608,607,1,0, + 0,0,608,609,1,0,0,0,609,610,1,0,0,0,610,611,3,220,110,0,611,616,1,0,0, + 0,612,613,5,58,0,0,613,614,5,173,0,0,614,616,3,288,144,0,615,600,1,0, + 0,0,615,612,1,0,0,0,616,31,1,0,0,0,617,618,5,63,0,0,618,619,5,173,0,0, + 619,620,5,116,0,0,620,621,5,173,0,0,621,622,5,135,0,0,622,623,5,173,0, + 0,623,624,3,324,162,0,624,625,5,173,0,0,625,626,5,99,0,0,626,627,5,173, + 0,0,627,628,5,158,0,0,628,33,1,0,0,0,629,630,5,69,0,0,630,631,5,173,0, + 0,631,632,5,105,0,0,632,633,5,173,0,0,633,635,3,290,145,0,634,636,5,173, + 0,0,635,634,1,0,0,0,635,636,1,0,0,0,636,637,1,0,0,0,637,639,5,2,0,0,638, + 640,5,173,0,0,639,638,1,0,0,0,639,640,1,0,0,0,640,642,1,0,0,0,641,643, + 3,36,18,0,642,641,1,0,0,0,642,643,1,0,0,0,643,645,1,0,0,0,644,646,5,173, + 0,0,645,644,1,0,0,0,645,646,1,0,0,0,646,648,1,0,0,0,647,649,3,38,19,0, + 648,647,1,0,0,0,648,649,1,0,0,0,649,660,1,0,0,0,650,652,5,173,0,0,651, + 650,1,0,0,0,651,652,1,0,0,0,652,653,1,0,0,0,653,655,5,3,0,0,654,656,5, + 173,0,0,655,654,1,0,0,0,655,656,1,0,0,0,656,657,1,0,0,0,657,659,3,38, + 19,0,658,651,1,0,0,0,659,662,1,0,0,0,660,658,1,0,0,0,660,661,1,0,0,0, + 661,664,1,0,0,0,662,660,1,0,0,0,663,665,5,173,0,0,664,663,1,0,0,0,664, + 665,1,0,0,0,665,666,1,0,0,0,666,667,5,4,0,0,667,668,5,173,0,0,668,669, + 5,52,0,0,669,670,5,173,0,0,670,671,3,220,110,0,671,35,1,0,0,0,672,683, + 3,326,163,0,673,675,5,173,0,0,674,673,1,0,0,0,674,675,1,0,0,0,675,676, + 1,0,0,0,676,678,5,3,0,0,677,679,5,173,0,0,678,677,1,0,0,0,678,679,1,0, + 0,0,679,680,1,0,0,0,680,682,3,326,163,0,681,674,1,0,0,0,682,685,1,0,0, + 0,683,681,1,0,0,0,683,684,1,0,0,0,684,37,1,0,0,0,685,683,1,0,0,0,686, + 688,3,326,163,0,687,689,5,173,0,0,688,687,1,0,0,0,688,689,1,0,0,0,689, + 690,1,0,0,0,690,691,5,157,0,0,691,693,5,6,0,0,692,694,5,173,0,0,693,692, + 1,0,0,0,693,694,1,0,0,0,694,695,1,0,0,0,695,696,3,274,137,0,696,39,1, + 0,0,0,697,699,5,7,0,0,698,700,5,173,0,0,699,698,1,0,0,0,699,700,1,0,0, + 0,700,701,1,0,0,0,701,712,5,158,0,0,702,704,5,173,0,0,703,702,1,0,0,0, + 703,704,1,0,0,0,704,705,1,0,0,0,705,707,5,3,0,0,706,708,5,173,0,0,707, + 706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709,711,5,158,0,0,710,703, + 1,0,0,0,711,714,1,0,0,0,712,710,1,0,0,0,712,713,1,0,0,0,713,715,1,0,0, + 0,714,712,1,0,0,0,715,731,5,8,0,0,716,731,5,158,0,0,717,719,5,89,0,0, + 718,720,5,173,0,0,719,718,1,0,0,0,719,720,1,0,0,0,720,721,1,0,0,0,721, + 723,5,2,0,0,722,724,5,173,0,0,723,722,1,0,0,0,723,724,1,0,0,0,724,725, + 1,0,0,0,725,727,5,158,0,0,726,728,5,173,0,0,727,726,1,0,0,0,727,728,1, + 0,0,0,728,729,1,0,0,0,729,731,5,4,0,0,730,697,1,0,0,0,730,716,1,0,0,0, + 730,717,1,0,0,0,731,41,1,0,0,0,732,734,5,2,0,0,733,735,5,173,0,0,734, + 733,1,0,0,0,734,735,1,0,0,0,735,736,1,0,0,0,736,738,3,24,12,0,737,739, + 5,173,0,0,738,737,1,0,0,0,738,739,1,0,0,0,739,740,1,0,0,0,740,741,5,4, + 0,0,741,43,1,0,0,0,742,743,5,95,0,0,743,744,5,173,0,0,744,745,5,113,0, + 0,745,746,5,173,0,0,746,747,5,83,0,0,747,45,1,0,0,0,748,749,5,69,0,0, + 749,750,5,173,0,0,750,751,5,112,0,0,751,752,5,173,0,0,752,753,5,135,0, + 0,753,757,5,173,0,0,754,755,3,44,22,0,755,756,5,173,0,0,756,758,1,0,0, + 0,757,754,1,0,0,0,757,758,1,0,0,0,758,759,1,0,0,0,759,761,3,324,162,0, + 760,762,5,173,0,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763, + 765,5,2,0,0,764,766,5,173,0,0,765,764,1,0,0,0,765,766,1,0,0,0,766,767, + 1,0,0,0,767,769,3,92,46,0,768,770,5,173,0,0,769,768,1,0,0,0,769,770,1, + 0,0,0,770,776,1,0,0,0,771,773,5,3,0,0,772,774,5,173,0,0,773,772,1,0,0, + 0,773,774,1,0,0,0,774,775,1,0,0,0,775,777,3,96,48,0,776,771,1,0,0,0,776, + 777,1,0,0,0,777,779,1,0,0,0,778,780,5,173,0,0,779,778,1,0,0,0,779,780, + 1,0,0,0,780,781,1,0,0,0,781,782,5,4,0,0,782,47,1,0,0,0,783,784,5,69,0, + 0,784,785,5,173,0,0,785,786,5,125,0,0,786,787,5,173,0,0,787,788,5,135, + 0,0,788,792,5,173,0,0,789,790,3,44,22,0,790,791,5,173,0,0,791,793,1,0, + 0,0,792,789,1,0,0,0,792,793,1,0,0,0,793,794,1,0,0,0,794,796,3,324,162, + 0,795,797,5,173,0,0,796,795,1,0,0,0,796,797,1,0,0,0,797,798,1,0,0,0,798, + 800,5,2,0,0,799,801,5,173,0,0,800,799,1,0,0,0,800,801,1,0,0,0,801,802, + 1,0,0,0,802,804,3,52,26,0,803,805,5,173,0,0,804,803,1,0,0,0,804,805,1, + 0,0,0,805,814,1,0,0,0,806,808,5,3,0,0,807,809,5,173,0,0,808,807,1,0,0, + 0,808,809,1,0,0,0,809,810,1,0,0,0,810,812,3,92,46,0,811,813,5,173,0,0, + 812,811,1,0,0,0,812,813,1,0,0,0,813,815,1,0,0,0,814,806,1,0,0,0,814,815, + 1,0,0,0,815,824,1,0,0,0,816,818,5,3,0,0,817,819,5,173,0,0,818,817,1,0, + 0,0,818,819,1,0,0,0,819,820,1,0,0,0,820,822,3,326,163,0,821,823,5,173, + 0,0,822,821,1,0,0,0,822,823,1,0,0,0,823,825,1,0,0,0,824,816,1,0,0,0,824, + 825,1,0,0,0,825,826,1,0,0,0,826,827,5,4,0,0,827,49,1,0,0,0,828,829,5, + 69,0,0,829,830,5,173,0,0,830,831,5,125,0,0,831,832,5,173,0,0,832,833, + 5,135,0,0,833,834,5,173,0,0,834,835,5,91,0,0,835,839,5,173,0,0,836,837, + 3,44,22,0,837,838,5,173,0,0,838,840,1,0,0,0,839,836,1,0,0,0,839,840,1, + 0,0,0,840,841,1,0,0,0,841,843,3,324,162,0,842,844,5,173,0,0,843,842,1, + 0,0,0,843,844,1,0,0,0,844,845,1,0,0,0,845,847,5,2,0,0,846,848,5,173,0, + 0,847,846,1,0,0,0,847,848,1,0,0,0,848,849,1,0,0,0,849,858,3,52,26,0,850, + 852,5,173,0,0,851,850,1,0,0,0,851,852,1,0,0,0,852,853,1,0,0,0,853,855, + 5,3,0,0,854,856,5,173,0,0,855,854,1,0,0,0,855,856,1,0,0,0,856,857,1,0, + 0,0,857,859,3,52,26,0,858,851,1,0,0,0,859,860,1,0,0,0,860,858,1,0,0,0, + 860,861,1,0,0,0,861,863,1,0,0,0,862,864,5,173,0,0,863,862,1,0,0,0,863, + 864,1,0,0,0,864,873,1,0,0,0,865,867,5,3,0,0,866,868,5,173,0,0,867,866, + 1,0,0,0,867,868,1,0,0,0,868,869,1,0,0,0,869,871,3,92,46,0,870,872,5,173, + 0,0,871,870,1,0,0,0,871,872,1,0,0,0,872,874,1,0,0,0,873,865,1,0,0,0,873, + 874,1,0,0,0,874,883,1,0,0,0,875,877,5,3,0,0,876,878,5,173,0,0,877,876, + 1,0,0,0,877,878,1,0,0,0,878,879,1,0,0,0,879,881,3,326,163,0,880,882,5, + 173,0,0,881,880,1,0,0,0,881,882,1,0,0,0,882,884,1,0,0,0,883,875,1,0,0, + 0,883,884,1,0,0,0,884,885,1,0,0,0,885,886,5,4,0,0,886,51,1,0,0,0,887, + 888,5,88,0,0,888,889,5,173,0,0,889,890,3,324,162,0,890,891,5,173,0,0, + 891,892,5,137,0,0,892,893,5,173,0,0,893,894,3,324,162,0,894,53,1,0,0, + 0,895,896,5,69,0,0,896,897,5,173,0,0,897,898,5,130,0,0,898,902,5,173, + 0,0,899,900,3,44,22,0,900,901,5,173,0,0,901,903,1,0,0,0,902,899,1,0,0, + 0,902,903,1,0,0,0,903,904,1,0,0,0,904,909,3,324,162,0,905,906,5,173,0, + 0,906,908,3,58,29,0,907,905,1,0,0,0,908,911,1,0,0,0,909,907,1,0,0,0,909, + 910,1,0,0,0,910,55,1,0,0,0,911,909,1,0,0,0,912,913,5,69,0,0,913,914,5, + 173,0,0,914,915,5,141,0,0,915,916,5,173,0,0,916,917,3,324,162,0,917,918, + 5,173,0,0,918,919,5,52,0,0,919,920,5,173,0,0,920,922,3,98,49,0,921,923, + 5,173,0,0,922,921,1,0,0,0,922,923,1,0,0,0,923,57,1,0,0,0,924,930,3,60, + 30,0,925,930,3,62,31,0,926,930,3,64,32,0,927,930,3,66,33,0,928,930,3, + 68,34,0,929,924,1,0,0,0,929,925,1,0,0,0,929,926,1,0,0,0,929,927,1,0,0, + 0,929,928,1,0,0,0,930,59,1,0,0,0,931,932,5,97,0,0,932,935,5,173,0,0,933, + 934,5,57,0,0,934,936,5,173,0,0,935,933,1,0,0,0,935,936,1,0,0,0,936,938, + 1,0,0,0,937,939,5,155,0,0,938,937,1,0,0,0,938,939,1,0,0,0,939,940,1,0, + 0,0,940,941,3,320,160,0,941,61,1,0,0,0,942,943,5,111,0,0,943,944,5,173, + 0,0,944,952,5,109,0,0,945,946,5,109,0,0,946,948,5,173,0,0,947,949,5,155, + 0,0,948,947,1,0,0,0,948,949,1,0,0,0,949,950,1,0,0,0,950,952,3,320,160, + 0,951,942,1,0,0,0,951,945,1,0,0,0,952,63,1,0,0,0,953,954,5,111,0,0,954, + 955,5,173,0,0,955,963,5,107,0,0,956,957,5,107,0,0,957,959,5,173,0,0,958, + 960,5,155,0,0,959,958,1,0,0,0,959,960,1,0,0,0,960,961,1,0,0,0,961,963, + 3,320,160,0,962,953,1,0,0,0,962,956,1,0,0,0,963,65,1,0,0,0,964,965,5, + 133,0,0,965,968,5,173,0,0,966,967,5,147,0,0,967,969,5,173,0,0,968,966, + 1,0,0,0,968,969,1,0,0,0,969,971,1,0,0,0,970,972,5,155,0,0,971,970,1,0, + 0,0,971,972,1,0,0,0,972,973,1,0,0,0,973,974,3,320,160,0,974,67,1,0,0, + 0,975,976,5,111,0,0,976,978,5,173,0,0,977,975,1,0,0,0,977,978,1,0,0,0, + 978,979,1,0,0,0,979,980,5,70,0,0,980,69,1,0,0,0,981,982,5,95,0,0,982, + 983,5,173,0,0,983,984,5,83,0,0,984,71,1,0,0,0,985,986,5,79,0,0,986,987, + 5,173,0,0,987,988,7,0,0,0,988,992,5,173,0,0,989,990,3,70,35,0,990,991, + 5,173,0,0,991,993,1,0,0,0,992,989,1,0,0,0,992,993,1,0,0,0,993,994,1,0, + 0,0,994,995,3,324,162,0,995,73,1,0,0,0,996,997,5,50,0,0,997,998,5,173, + 0,0,998,999,5,135,0,0,999,1000,5,173,0,0,1000,1001,3,324,162,0,1001,1002, + 5,173,0,0,1002,1003,3,76,38,0,1003,75,1,0,0,0,1004,1009,3,78,39,0,1005, + 1009,3,82,41,0,1006,1009,3,84,42,0,1007,1009,3,86,43,0,1008,1004,1,0, + 0,0,1008,1005,1,0,0,0,1008,1006,1,0,0,0,1008,1007,1,0,0,0,1009,77,1,0, + 0,0,1010,1011,5,48,0,0,1011,1015,5,173,0,0,1012,1013,3,44,22,0,1013,1014, + 5,173,0,0,1014,1016,1,0,0,0,1015,1012,1,0,0,0,1015,1016,1,0,0,0,1016, + 1017,1,0,0,0,1017,1018,3,318,159,0,1018,1019,5,173,0,0,1019,1022,3,98, + 49,0,1020,1021,5,173,0,0,1021,1023,3,80,40,0,1022,1020,1,0,0,0,1022,1023, + 1,0,0,0,1023,79,1,0,0,0,1024,1025,5,73,0,0,1025,1026,5,173,0,0,1026,1027, + 3,220,110,0,1027,81,1,0,0,0,1028,1029,5,79,0,0,1029,1033,5,173,0,0,1030, + 1031,3,70,35,0,1031,1032,5,173,0,0,1032,1034,1,0,0,0,1033,1030,1,0,0, + 0,1033,1034,1,0,0,0,1034,1035,1,0,0,0,1035,1036,3,318,159,0,1036,83,1, + 0,0,0,1037,1038,5,126,0,0,1038,1039,5,173,0,0,1039,1040,5,137,0,0,1040, + 1041,5,173,0,0,1041,1042,3,324,162,0,1042,85,1,0,0,0,1043,1044,5,126, + 0,0,1044,1045,5,173,0,0,1045,1046,3,318,159,0,1046,1047,5,173,0,0,1047, + 1048,5,137,0,0,1048,1049,5,173,0,0,1049,1050,3,318,159,0,1050,87,1,0, + 0,0,1051,1062,3,90,45,0,1052,1054,5,173,0,0,1053,1052,1,0,0,0,1053,1054, + 1,0,0,0,1054,1055,1,0,0,0,1055,1057,5,3,0,0,1056,1058,5,173,0,0,1057, + 1056,1,0,0,0,1057,1058,1,0,0,0,1058,1059,1,0,0,0,1059,1061,3,90,45,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,89,1,0,0,0,1064,1062,1,0,0,0,1065,1066,3,318,159,0,1066,1067,5, + 173,0,0,1067,1068,3,98,49,0,1068,91,1,0,0,0,1069,1080,3,94,47,0,1070, + 1072,5,173,0,0,1071,1070,1,0,0,0,1071,1072,1,0,0,0,1072,1073,1,0,0,0, + 1073,1075,5,3,0,0,1074,1076,5,173,0,0,1075,1074,1,0,0,0,1075,1076,1,0, + 0,0,1076,1077,1,0,0,0,1077,1079,3,94,47,0,1078,1071,1,0,0,0,1079,1082, + 1,0,0,0,1080,1078,1,0,0,0,1080,1081,1,0,0,0,1081,93,1,0,0,0,1082,1080, + 1,0,0,0,1083,1086,3,90,45,0,1084,1085,5,173,0,0,1085,1087,3,80,40,0,1086, + 1084,1,0,0,0,1086,1087,1,0,0,0,1087,1092,1,0,0,0,1088,1089,5,173,0,0, + 1089,1090,5,121,0,0,1090,1091,5,173,0,0,1091,1093,5,101,0,0,1092,1088, + 1,0,0,0,1092,1093,1,0,0,0,1093,95,1,0,0,0,1094,1095,5,121,0,0,1095,1096, + 5,173,0,0,1096,1098,5,101,0,0,1097,1099,5,173,0,0,1098,1097,1,0,0,0,1098, + 1099,1,0,0,0,1099,1100,1,0,0,0,1100,1102,5,2,0,0,1101,1103,5,173,0,0, + 1102,1101,1,0,0,0,1102,1103,1,0,0,0,1103,1104,1,0,0,0,1104,1106,3,318, + 159,0,1105,1107,5,173,0,0,1106,1105,1,0,0,0,1106,1107,1,0,0,0,1107,1108, + 1,0,0,0,1108,1109,5,4,0,0,1109,97,1,0,0,0,1110,1111,6,49,-1,0,1111,1185, + 3,326,163,0,1112,1114,5,142,0,0,1113,1115,5,173,0,0,1114,1113,1,0,0,0, + 1114,1115,1,0,0,0,1115,1116,1,0,0,0,1116,1118,5,2,0,0,1117,1119,5,173, + 0,0,1118,1117,1,0,0,0,1118,1119,1,0,0,0,1119,1120,1,0,0,0,1120,1122,3, + 88,44,0,1121,1123,5,173,0,0,1122,1121,1,0,0,0,1122,1123,1,0,0,0,1123, + 1124,1,0,0,0,1124,1125,5,4,0,0,1125,1185,1,0,0,0,1126,1128,3,326,163, + 0,1127,1129,5,173,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1, + 0,0,0,1130,1132,5,2,0,0,1131,1133,5,173,0,0,1132,1131,1,0,0,0,1132,1133, + 1,0,0,0,1133,1134,1,0,0,0,1134,1136,3,88,44,0,1135,1137,5,173,0,0,1136, + 1135,1,0,0,0,1136,1137,1,0,0,0,1137,1138,1,0,0,0,1138,1139,5,4,0,0,1139, + 1185,1,0,0,0,1140,1142,3,326,163,0,1141,1143,5,173,0,0,1142,1141,1,0, + 0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,1146,5,2,0,0,1145,1147,5, + 173,0,0,1146,1145,1,0,0,0,1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1150, + 3,98,49,0,1149,1151,5,173,0,0,1150,1149,1,0,0,0,1150,1151,1,0,0,0,1151, + 1152,1,0,0,0,1152,1154,5,3,0,0,1153,1155,5,173,0,0,1154,1153,1,0,0,0, + 1154,1155,1,0,0,0,1155,1156,1,0,0,0,1156,1158,3,98,49,0,1157,1159,5,173, + 0,0,1158,1157,1,0,0,0,1158,1159,1,0,0,0,1159,1160,1,0,0,0,1160,1161,5, + 4,0,0,1161,1185,1,0,0,0,1162,1164,5,151,0,0,1163,1165,5,173,0,0,1164, + 1163,1,0,0,0,1164,1165,1,0,0,0,1165,1166,1,0,0,0,1166,1168,5,2,0,0,1167, + 1169,5,173,0,0,1168,1167,1,0,0,0,1168,1169,1,0,0,0,1169,1170,1,0,0,0, + 1170,1172,3,320,160,0,1171,1173,5,173,0,0,1172,1171,1,0,0,0,1172,1173, + 1,0,0,0,1173,1174,1,0,0,0,1174,1176,5,3,0,0,1175,1177,5,173,0,0,1176, + 1175,1,0,0,0,1176,1177,1,0,0,0,1177,1178,1,0,0,0,1178,1180,3,320,160, + 0,1179,1181,5,173,0,0,1180,1179,1,0,0,0,1180,1181,1,0,0,0,1181,1182,1, + 0,0,0,1182,1183,5,4,0,0,1183,1185,1,0,0,0,1184,1110,1,0,0,0,1184,1112, + 1,0,0,0,1184,1126,1,0,0,0,1184,1140,1,0,0,0,1184,1162,1,0,0,0,1185,1190, + 1,0,0,0,1186,1187,10,5,0,0,1187,1189,3,100,50,0,1188,1186,1,0,0,0,1189, + 1192,1,0,0,0,1190,1188,1,0,0,0,1190,1191,1,0,0,0,1191,99,1,0,0,0,1192, + 1190,1,0,0,0,1193,1197,3,102,51,0,1194,1196,3,102,51,0,1195,1194,1,0, + 0,0,1196,1199,1,0,0,0,1197,1195,1,0,0,0,1197,1198,1,0,0,0,1198,101,1, + 0,0,0,1199,1197,1,0,0,0,1200,1202,5,7,0,0,1201,1203,3,320,160,0,1202, + 1201,1,0,0,0,1202,1203,1,0,0,0,1203,1204,1,0,0,0,1204,1205,5,8,0,0,1205, + 103,1,0,0,0,1206,1209,3,106,53,0,1207,1209,3,108,54,0,1208,1206,1,0,0, + 0,1208,1207,1,0,0,0,1209,105,1,0,0,0,1210,1213,5,84,0,0,1211,1212,5,173, + 0,0,1212,1214,5,104,0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,107, + 1,0,0,0,1215,1216,5,122,0,0,1216,109,1,0,0,0,1217,1218,5,56,0,0,1218, + 1219,5,173,0,0,1219,1231,5,139,0,0,1220,1221,5,56,0,0,1221,1222,5,173, + 0,0,1222,1223,5,139,0,0,1223,1224,5,173,0,0,1224,1225,5,124,0,0,1225, + 1226,5,173,0,0,1226,1231,5,117,0,0,1227,1231,5,64,0,0,1228,1231,5,128, + 0,0,1229,1231,5,61,0,0,1230,1217,1,0,0,0,1230,1220,1,0,0,0,1230,1227, + 1,0,0,0,1230,1228,1,0,0,0,1230,1229,1,0,0,0,1231,111,1,0,0,0,1232,1235, + 3,114,57,0,1233,1235,3,116,58,0,1234,1232,1,0,0,0,1234,1233,1,0,0,0,1235, + 113,1,0,0,0,1236,1237,5,103,0,0,1237,1238,5,173,0,0,1238,1239,5,86,0, + 0,1239,1242,5,173,0,0,1240,1243,5,158,0,0,1241,1243,3,310,155,0,1242, + 1240,1,0,0,0,1242,1241,1,0,0,0,1243,115,1,0,0,0,1244,1245,5,98,0,0,1245, + 1246,5,173,0,0,1246,1247,3,310,155,0,1247,117,1,0,0,0,1248,1249,3,120, + 60,0,1249,119,1,0,0,0,1250,1257,3,124,62,0,1251,1253,5,173,0,0,1252,1251, + 1,0,0,0,1252,1253,1,0,0,0,1253,1254,1,0,0,0,1254,1256,3,122,61,0,1255, + 1252,1,0,0,0,1256,1259,1,0,0,0,1257,1255,1,0,0,0,1257,1258,1,0,0,0,1258, + 1272,1,0,0,0,1259,1257,1,0,0,0,1260,1262,3,162,81,0,1261,1263,5,173,0, + 0,1262,1261,1,0,0,0,1262,1263,1,0,0,0,1263,1265,1,0,0,0,1264,1260,1,0, + 0,0,1265,1266,1,0,0,0,1266,1264,1,0,0,0,1266,1267,1,0,0,0,1267,1268,1, + 0,0,0,1268,1269,3,124,62,0,1269,1270,6,60,-1,0,1270,1272,1,0,0,0,1271, + 1250,1,0,0,0,1271,1264,1,0,0,0,1272,121,1,0,0,0,1273,1274,5,142,0,0,1274, + 1275,5,173,0,0,1275,1277,5,49,0,0,1276,1278,5,173,0,0,1277,1276,1,0,0, + 0,1277,1278,1,0,0,0,1278,1279,1,0,0,0,1279,1286,3,124,62,0,1280,1282, + 5,142,0,0,1281,1283,5,173,0,0,1282,1281,1,0,0,0,1282,1283,1,0,0,0,1283, + 1284,1,0,0,0,1284,1286,3,124,62,0,1285,1273,1,0,0,0,1285,1280,1,0,0,0, + 1286,123,1,0,0,0,1287,1290,3,126,63,0,1288,1290,3,128,64,0,1289,1287, + 1,0,0,0,1289,1288,1,0,0,0,1290,125,1,0,0,0,1291,1293,3,134,67,0,1292, + 1294,5,173,0,0,1293,1292,1,0,0,0,1293,1294,1,0,0,0,1294,1296,1,0,0,0, + 1295,1291,1,0,0,0,1296,1299,1,0,0,0,1297,1295,1,0,0,0,1297,1298,1,0,0, + 0,1298,1300,1,0,0,0,1299,1297,1,0,0,0,1300,1327,3,162,81,0,1301,1303, + 3,134,67,0,1302,1304,5,173,0,0,1303,1302,1,0,0,0,1303,1304,1,0,0,0,1304, + 1306,1,0,0,0,1305,1301,1,0,0,0,1306,1309,1,0,0,0,1307,1305,1,0,0,0,1307, + 1308,1,0,0,0,1308,1310,1,0,0,0,1309,1307,1,0,0,0,1310,1317,3,132,66,0, + 1311,1313,5,173,0,0,1312,1311,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0, + 0,0,1314,1316,3,132,66,0,1315,1312,1,0,0,0,1316,1319,1,0,0,0,1317,1315, + 1,0,0,0,1317,1318,1,0,0,0,1318,1324,1,0,0,0,1319,1317,1,0,0,0,1320,1322, + 5,173,0,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322,1323,1,0,0,0,1323, + 1325,3,162,81,0,1324,1321,1,0,0,0,1324,1325,1,0,0,0,1325,1327,1,0,0,0, + 1326,1297,1,0,0,0,1326,1307,1,0,0,0,1327,127,1,0,0,0,1328,1330,3,130, + 65,0,1329,1331,5,173,0,0,1330,1329,1,0,0,0,1330,1331,1,0,0,0,1331,1333, + 1,0,0,0,1332,1328,1,0,0,0,1333,1334,1,0,0,0,1334,1332,1,0,0,0,1334,1335, + 1,0,0,0,1335,1336,1,0,0,0,1336,1337,3,126,63,0,1337,129,1,0,0,0,1338, + 1340,3,134,67,0,1339,1341,5,173,0,0,1340,1339,1,0,0,0,1340,1341,1,0,0, + 0,1341,1343,1,0,0,0,1342,1338,1,0,0,0,1343,1346,1,0,0,0,1344,1342,1,0, + 0,0,1344,1345,1,0,0,0,1345,1353,1,0,0,0,1346,1344,1,0,0,0,1347,1349,3, + 132,66,0,1348,1350,5,173,0,0,1349,1348,1,0,0,0,1349,1350,1,0,0,0,1350, + 1352,1,0,0,0,1351,1347,1,0,0,0,1352,1355,1,0,0,0,1353,1351,1,0,0,0,1353, + 1354,1,0,0,0,1354,1356,1,0,0,0,1355,1353,1,0,0,0,1356,1357,3,160,80,0, + 1357,131,1,0,0,0,1358,1363,3,148,74,0,1359,1363,3,150,75,0,1360,1363, + 3,154,77,0,1361,1363,3,158,79,0,1362,1358,1,0,0,0,1362,1359,1,0,0,0,1362, + 1360,1,0,0,0,1362,1361,1,0,0,0,1363,133,1,0,0,0,1364,1369,3,140,70,0, + 1365,1369,3,146,73,0,1366,1369,3,138,69,0,1367,1369,3,136,68,0,1368,1364, + 1,0,0,0,1368,1365,1,0,0,0,1368,1366,1,0,0,0,1368,1367,1,0,0,0,1369,135, + 1,0,0,0,1370,1388,5,103,0,0,1371,1372,5,173,0,0,1372,1373,5,147,0,0,1373, + 1374,5,173,0,0,1374,1376,5,92,0,0,1375,1377,5,173,0,0,1376,1375,1,0,0, + 0,1376,1377,1,0,0,0,1377,1378,1,0,0,0,1378,1380,5,2,0,0,1379,1381,5,173, + 0,0,1380,1379,1,0,0,0,1380,1381,1,0,0,0,1381,1382,1,0,0,0,1382,1384,3, + 88,44,0,1383,1385,5,173,0,0,1384,1383,1,0,0,0,1384,1385,1,0,0,0,1385, + 1386,1,0,0,0,1386,1387,5,4,0,0,1387,1389,1,0,0,0,1388,1371,1,0,0,0,1388, + 1389,1,0,0,0,1389,1390,1,0,0,0,1390,1391,5,173,0,0,1391,1392,5,88,0,0, + 1392,1393,5,173,0,0,1393,1398,3,10,5,0,1394,1396,5,173,0,0,1395,1394, + 1,0,0,0,1395,1396,1,0,0,0,1396,1397,1,0,0,0,1397,1399,3,42,21,0,1398, + 1395,1,0,0,0,1398,1399,1,0,0,0,1399,1404,1,0,0,0,1400,1402,5,173,0,0, + 1401,1400,1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1405,3,178, + 89,0,1404,1401,1,0,0,0,1404,1405,1,0,0,0,1405,137,1,0,0,0,1406,1407,5, + 58,0,0,1407,1408,5,173,0,0,1408,1413,3,288,144,0,1409,1411,5,173,0,0, + 1410,1409,1,0,0,0,1410,1411,1,0,0,0,1411,1412,1,0,0,0,1412,1414,3,178, + 89,0,1413,1410,1,0,0,0,1413,1414,1,0,0,0,1414,139,1,0,0,0,1415,1416,5, + 118,0,0,1416,1418,5,173,0,0,1417,1415,1,0,0,0,1417,1418,1,0,0,0,1418, + 1419,1,0,0,0,1419,1421,5,106,0,0,1420,1422,5,173,0,0,1421,1420,1,0,0, + 0,1421,1422,1,0,0,0,1422,1423,1,0,0,0,1423,1426,3,180,90,0,1424,1425, + 5,173,0,0,1425,1427,3,178,89,0,1426,1424,1,0,0,0,1426,1427,1,0,0,0,1427, + 1430,1,0,0,0,1428,1429,5,173,0,0,1429,1431,3,142,71,0,1430,1428,1,0,0, + 0,1430,1431,1,0,0,0,1431,141,1,0,0,0,1432,1433,5,93,0,0,1433,1434,5,173, + 0,0,1434,1435,3,144,72,0,1435,143,1,0,0,0,1436,1437,6,72,-1,0,1437,1439, + 5,2,0,0,1438,1440,5,173,0,0,1439,1438,1,0,0,0,1439,1440,1,0,0,0,1440, + 1441,1,0,0,0,1441,1443,3,144,72,0,1442,1444,5,173,0,0,1443,1442,1,0,0, + 0,1443,1444,1,0,0,0,1444,1445,1,0,0,0,1445,1446,5,4,0,0,1446,1449,1,0, + 0,0,1447,1449,3,324,162,0,1448,1436,1,0,0,0,1448,1447,1,0,0,0,1449,1466, + 1,0,0,0,1450,1451,10,4,0,0,1451,1452,5,173,0,0,1452,1453,5,100,0,0,1453, + 1454,5,173,0,0,1454,1465,3,144,72,5,1455,1460,10,3,0,0,1456,1457,5,173, + 0,0,1457,1458,5,110,0,0,1458,1459,5,173,0,0,1459,1461,3,324,162,0,1460, + 1456,1,0,0,0,1461,1462,1,0,0,0,1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463, + 1465,1,0,0,0,1464,1450,1,0,0,0,1464,1455,1,0,0,0,1465,1468,1,0,0,0,1466, + 1464,1,0,0,0,1466,1467,1,0,0,0,1467,145,1,0,0,0,1468,1466,1,0,0,0,1469, + 1471,5,143,0,0,1470,1472,5,173,0,0,1471,1470,1,0,0,0,1471,1472,1,0,0, + 0,1472,1473,1,0,0,0,1473,1474,3,220,110,0,1474,1475,5,173,0,0,1475,1476, + 5,52,0,0,1476,1477,5,173,0,0,1477,1478,3,310,155,0,1478,147,1,0,0,0,1479, + 1481,5,69,0,0,1480,1482,5,173,0,0,1481,1480,1,0,0,0,1481,1482,1,0,0,0, + 1482,1483,1,0,0,0,1483,1484,3,180,90,0,1484,149,1,0,0,0,1485,1487,5,108, + 0,0,1486,1488,5,173,0,0,1487,1486,1,0,0,0,1487,1488,1,0,0,0,1488,1489, + 1,0,0,0,1489,1494,3,180,90,0,1490,1491,5,173,0,0,1491,1493,3,152,76,0, + 1492,1490,1,0,0,0,1493,1496,1,0,0,0,1494,1492,1,0,0,0,1494,1495,1,0,0, + 0,1495,151,1,0,0,0,1496,1494,1,0,0,0,1497,1498,5,116,0,0,1498,1499,5, + 173,0,0,1499,1500,5,106,0,0,1500,1501,5,173,0,0,1501,1508,3,154,77,0, + 1502,1503,5,116,0,0,1503,1504,5,173,0,0,1504,1505,5,69,0,0,1505,1506, + 5,173,0,0,1506,1508,3,154,77,0,1507,1497,1,0,0,0,1507,1502,1,0,0,0,1508, + 153,1,0,0,0,1509,1511,5,131,0,0,1510,1512,5,173,0,0,1511,1510,1,0,0,0, + 1511,1512,1,0,0,0,1512,1513,1,0,0,0,1513,1524,3,156,78,0,1514,1516,5, + 173,0,0,1515,1514,1,0,0,0,1515,1516,1,0,0,0,1516,1517,1,0,0,0,1517,1519, + 5,3,0,0,1518,1520,5,173,0,0,1519,1518,1,0,0,0,1519,1520,1,0,0,0,1520, + 1521,1,0,0,0,1521,1523,3,156,78,0,1522,1515,1,0,0,0,1523,1526,1,0,0,0, + 1524,1522,1,0,0,0,1524,1525,1,0,0,0,1525,155,1,0,0,0,1526,1524,1,0,0, + 0,1527,1529,3,316,158,0,1528,1530,5,173,0,0,1529,1528,1,0,0,0,1529,1530, + 1,0,0,0,1530,1531,1,0,0,0,1531,1533,5,6,0,0,1532,1534,5,173,0,0,1533, + 1532,1,0,0,0,1533,1534,1,0,0,0,1534,1535,1,0,0,0,1535,1536,3,220,110, + 0,1536,157,1,0,0,0,1537,1538,5,77,0,0,1538,1540,5,173,0,0,1539,1537,1, + 0,0,0,1539,1540,1,0,0,0,1540,1541,1,0,0,0,1541,1543,5,74,0,0,1542,1544, + 5,173,0,0,1543,1542,1,0,0,0,1543,1544,1,0,0,0,1544,1545,1,0,0,0,1545, + 1556,3,220,110,0,1546,1548,5,173,0,0,1547,1546,1,0,0,0,1547,1548,1,0, + 0,0,1548,1549,1,0,0,0,1549,1551,5,3,0,0,1550,1552,5,173,0,0,1551,1550, + 1,0,0,0,1551,1552,1,0,0,0,1552,1553,1,0,0,0,1553,1555,3,220,110,0,1554, + 1547,1,0,0,0,1555,1558,1,0,0,0,1556,1554,1,0,0,0,1556,1557,1,0,0,0,1557, + 159,1,0,0,0,1558,1556,1,0,0,0,1559,1560,5,147,0,0,1560,1565,3,164,82, + 0,1561,1563,5,173,0,0,1562,1561,1,0,0,0,1562,1563,1,0,0,0,1563,1564,1, + 0,0,0,1564,1566,3,178,89,0,1565,1562,1,0,0,0,1565,1566,1,0,0,0,1566,161, + 1,0,0,0,1567,1568,5,127,0,0,1568,1569,3,164,82,0,1569,163,1,0,0,0,1570, + 1572,5,173,0,0,1571,1570,1,0,0,0,1571,1572,1,0,0,0,1572,1573,1,0,0,0, + 1573,1575,5,78,0,0,1574,1571,1,0,0,0,1574,1575,1,0,0,0,1575,1576,1,0, + 0,0,1576,1577,5,173,0,0,1577,1580,3,166,83,0,1578,1579,5,173,0,0,1579, + 1581,3,170,85,0,1580,1578,1,0,0,0,1580,1581,1,0,0,0,1581,1584,1,0,0,0, + 1582,1583,5,173,0,0,1583,1585,3,172,86,0,1584,1582,1,0,0,0,1584,1585, + 1,0,0,0,1585,1588,1,0,0,0,1586,1587,5,173,0,0,1587,1589,3,174,87,0,1588, + 1586,1,0,0,0,1588,1589,1,0,0,0,1589,165,1,0,0,0,1590,1601,5,152,0,0,1591, + 1593,5,173,0,0,1592,1591,1,0,0,0,1592,1593,1,0,0,0,1593,1594,1,0,0,0, + 1594,1596,5,3,0,0,1595,1597,5,173,0,0,1596,1595,1,0,0,0,1596,1597,1,0, + 0,0,1597,1598,1,0,0,0,1598,1600,3,168,84,0,1599,1592,1,0,0,0,1600,1603, + 1,0,0,0,1601,1599,1,0,0,0,1601,1602,1,0,0,0,1602,1619,1,0,0,0,1603,1601, + 1,0,0,0,1604,1615,3,168,84,0,1605,1607,5,173,0,0,1606,1605,1,0,0,0,1606, + 1607,1,0,0,0,1607,1608,1,0,0,0,1608,1610,5,3,0,0,1609,1611,5,173,0,0, + 1610,1609,1,0,0,0,1610,1611,1,0,0,0,1611,1612,1,0,0,0,1612,1614,3,168, + 84,0,1613,1606,1,0,0,0,1614,1617,1,0,0,0,1615,1613,1,0,0,0,1615,1616, + 1,0,0,0,1616,1619,1,0,0,0,1617,1615,1,0,0,0,1618,1590,1,0,0,0,1618,1604, + 1,0,0,0,1619,167,1,0,0,0,1620,1621,3,220,110,0,1621,1622,5,173,0,0,1622, + 1623,5,52,0,0,1623,1624,5,173,0,0,1624,1625,3,310,155,0,1625,1628,1,0, + 0,0,1626,1628,3,220,110,0,1627,1620,1,0,0,0,1627,1626,1,0,0,0,1628,169, + 1,0,0,0,1629,1630,5,120,0,0,1630,1631,5,173,0,0,1631,1632,5,57,0,0,1632, + 1633,5,173,0,0,1633,1641,3,176,88,0,1634,1636,5,3,0,0,1635,1637,5,173, + 0,0,1636,1635,1,0,0,0,1636,1637,1,0,0,0,1637,1638,1,0,0,0,1638,1640,3, + 176,88,0,1639,1634,1,0,0,0,1640,1643,1,0,0,0,1641,1639,1,0,0,0,1641,1642, + 1,0,0,0,1642,171,1,0,0,0,1643,1641,1,0,0,0,1644,1645,5,153,0,0,1645,1646, + 5,173,0,0,1646,1647,3,220,110,0,1647,173,1,0,0,0,1648,1649,5,102,0,0, + 1649,1650,5,173,0,0,1650,1651,3,220,110,0,1651,175,1,0,0,0,1652,1657, + 3,220,110,0,1653,1655,5,173,0,0,1654,1653,1,0,0,0,1654,1655,1,0,0,0,1655, + 1656,1,0,0,0,1656,1658,7,1,0,0,1657,1654,1,0,0,0,1657,1658,1,0,0,0,1658, + 177,1,0,0,0,1659,1660,5,146,0,0,1660,1661,5,173,0,0,1661,1662,3,220,110, + 0,1662,179,1,0,0,0,1663,1674,3,182,91,0,1664,1666,5,173,0,0,1665,1664, + 1,0,0,0,1665,1666,1,0,0,0,1666,1667,1,0,0,0,1667,1669,5,3,0,0,1668,1670, + 5,173,0,0,1669,1668,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671, + 1673,3,182,91,0,1672,1665,1,0,0,0,1673,1676,1,0,0,0,1674,1672,1,0,0,0, + 1674,1675,1,0,0,0,1675,181,1,0,0,0,1676,1674,1,0,0,0,1677,1679,3,310, + 155,0,1678,1680,5,173,0,0,1679,1678,1,0,0,0,1679,1680,1,0,0,0,1680,1681, + 1,0,0,0,1681,1683,5,6,0,0,1682,1684,5,173,0,0,1683,1682,1,0,0,0,1683, + 1684,1,0,0,0,1684,1685,1,0,0,0,1685,1686,3,184,92,0,1686,1689,1,0,0,0, + 1687,1689,3,184,92,0,1688,1677,1,0,0,0,1688,1687,1,0,0,0,1689,183,1,0, + 0,0,1690,1691,3,186,93,0,1691,185,1,0,0,0,1692,1699,3,188,94,0,1693,1695, + 5,173,0,0,1694,1693,1,0,0,0,1694,1695,1,0,0,0,1695,1696,1,0,0,0,1696, + 1698,3,190,95,0,1697,1694,1,0,0,0,1698,1701,1,0,0,0,1699,1697,1,0,0,0, + 1699,1700,1,0,0,0,1700,1707,1,0,0,0,1701,1699,1,0,0,0,1702,1703,5,2,0, + 0,1703,1704,3,186,93,0,1704,1705,5,4,0,0,1705,1707,1,0,0,0,1706,1692, + 1,0,0,0,1706,1702,1,0,0,0,1707,187,1,0,0,0,1708,1710,5,2,0,0,1709,1711, + 5,173,0,0,1710,1709,1,0,0,0,1710,1711,1,0,0,0,1711,1716,1,0,0,0,1712, + 1714,3,310,155,0,1713,1715,5,173,0,0,1714,1713,1,0,0,0,1714,1715,1,0, + 0,0,1715,1717,1,0,0,0,1716,1712,1,0,0,0,1716,1717,1,0,0,0,1717,1722,1, + 0,0,0,1718,1720,3,200,100,0,1719,1721,5,173,0,0,1720,1719,1,0,0,0,1720, + 1721,1,0,0,0,1721,1723,1,0,0,0,1722,1718,1,0,0,0,1722,1723,1,0,0,0,1723, + 1728,1,0,0,0,1724,1726,3,196,98,0,1725,1727,5,173,0,0,1726,1725,1,0,0, + 0,1726,1727,1,0,0,0,1727,1729,1,0,0,0,1728,1724,1,0,0,0,1728,1729,1,0, + 0,0,1729,1730,1,0,0,0,1730,1731,5,4,0,0,1731,189,1,0,0,0,1732,1734,3, + 192,96,0,1733,1735,5,173,0,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,1735, + 1736,1,0,0,0,1736,1737,3,188,94,0,1737,191,1,0,0,0,1738,1740,3,330,165, + 0,1739,1741,5,173,0,0,1740,1739,1,0,0,0,1740,1741,1,0,0,0,1741,1742,1, + 0,0,0,1742,1744,3,334,167,0,1743,1745,5,173,0,0,1744,1743,1,0,0,0,1744, + 1745,1,0,0,0,1745,1747,1,0,0,0,1746,1748,3,194,97,0,1747,1746,1,0,0,0, + 1747,1748,1,0,0,0,1748,1750,1,0,0,0,1749,1751,5,173,0,0,1750,1749,1,0, + 0,0,1750,1751,1,0,0,0,1751,1752,1,0,0,0,1752,1753,3,334,167,0,1753,1783, + 1,0,0,0,1754,1756,3,334,167,0,1755,1757,5,173,0,0,1756,1755,1,0,0,0,1756, + 1757,1,0,0,0,1757,1759,1,0,0,0,1758,1760,3,194,97,0,1759,1758,1,0,0,0, + 1759,1760,1,0,0,0,1760,1762,1,0,0,0,1761,1763,5,173,0,0,1762,1761,1,0, + 0,0,1762,1763,1,0,0,0,1763,1764,1,0,0,0,1764,1766,3,334,167,0,1765,1767, + 5,173,0,0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1768,1,0,0,0,1768, + 1769,3,332,166,0,1769,1783,1,0,0,0,1770,1772,3,334,167,0,1771,1773,5, + 173,0,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1775,1,0,0,0,1774,1776, + 3,194,97,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776,1778,1,0,0,0,1777, + 1779,5,173,0,0,1778,1777,1,0,0,0,1778,1779,1,0,0,0,1779,1780,1,0,0,0, + 1780,1781,3,334,167,0,1781,1783,1,0,0,0,1782,1738,1,0,0,0,1782,1754,1, + 0,0,0,1782,1770,1,0,0,0,1783,193,1,0,0,0,1784,1786,5,7,0,0,1785,1787, + 5,173,0,0,1786,1785,1,0,0,0,1786,1787,1,0,0,0,1787,1792,1,0,0,0,1788, + 1790,3,310,155,0,1789,1791,5,173,0,0,1790,1789,1,0,0,0,1790,1791,1,0, + 0,0,1791,1793,1,0,0,0,1792,1788,1,0,0,0,1792,1793,1,0,0,0,1793,1798,1, + 0,0,0,1794,1796,3,198,99,0,1795,1797,5,173,0,0,1796,1795,1,0,0,0,1796, + 1797,1,0,0,0,1797,1799,1,0,0,0,1798,1794,1,0,0,0,1798,1799,1,0,0,0,1799, + 1804,1,0,0,0,1800,1802,3,204,102,0,1801,1803,5,173,0,0,1802,1801,1,0, + 0,0,1802,1803,1,0,0,0,1803,1805,1,0,0,0,1804,1800,1,0,0,0,1804,1805,1, + 0,0,0,1805,1810,1,0,0,0,1806,1808,3,196,98,0,1807,1809,5,173,0,0,1808, + 1807,1,0,0,0,1808,1809,1,0,0,0,1809,1811,1,0,0,0,1810,1806,1,0,0,0,1810, + 1811,1,0,0,0,1811,1812,1,0,0,0,1812,1813,5,8,0,0,1813,195,1,0,0,0,1814, + 1816,5,9,0,0,1815,1817,5,173,0,0,1816,1815,1,0,0,0,1816,1817,1,0,0,0, + 1817,1851,1,0,0,0,1818,1820,3,318,159,0,1819,1821,5,173,0,0,1820,1819, + 1,0,0,0,1820,1821,1,0,0,0,1821,1822,1,0,0,0,1822,1824,5,157,0,0,1823, + 1825,5,173,0,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,1826,1,0,0,0, + 1826,1828,3,220,110,0,1827,1829,5,173,0,0,1828,1827,1,0,0,0,1828,1829, + 1,0,0,0,1829,1848,1,0,0,0,1830,1832,5,3,0,0,1831,1833,5,173,0,0,1832, + 1831,1,0,0,0,1832,1833,1,0,0,0,1833,1834,1,0,0,0,1834,1836,3,318,159, + 0,1835,1837,5,173,0,0,1836,1835,1,0,0,0,1836,1837,1,0,0,0,1837,1838,1, + 0,0,0,1838,1840,5,157,0,0,1839,1841,5,173,0,0,1840,1839,1,0,0,0,1840, + 1841,1,0,0,0,1841,1842,1,0,0,0,1842,1844,3,220,110,0,1843,1845,5,173, + 0,0,1844,1843,1,0,0,0,1844,1845,1,0,0,0,1845,1847,1,0,0,0,1846,1830,1, + 0,0,0,1847,1850,1,0,0,0,1848,1846,1,0,0,0,1848,1849,1,0,0,0,1849,1852, + 1,0,0,0,1850,1848,1,0,0,0,1851,1818,1,0,0,0,1851,1852,1,0,0,0,1852,1853, + 1,0,0,0,1853,1854,5,10,0,0,1854,197,1,0,0,0,1855,1857,5,157,0,0,1856, + 1858,5,173,0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0, + 1859,1873,3,218,109,0,1860,1862,5,173,0,0,1861,1860,1,0,0,0,1861,1862, + 1,0,0,0,1862,1863,1,0,0,0,1863,1865,5,11,0,0,1864,1866,5,157,0,0,1865, + 1864,1,0,0,0,1865,1866,1,0,0,0,1866,1868,1,0,0,0,1867,1869,5,173,0,0, + 1868,1867,1,0,0,0,1868,1869,1,0,0,0,1869,1870,1,0,0,0,1870,1872,3,218, + 109,0,1871,1861,1,0,0,0,1872,1875,1,0,0,0,1873,1871,1,0,0,0,1873,1874, + 1,0,0,0,1874,199,1,0,0,0,1875,1873,1,0,0,0,1876,1883,3,202,101,0,1877, + 1879,5,173,0,0,1878,1877,1,0,0,0,1878,1879,1,0,0,0,1879,1880,1,0,0,0, + 1880,1882,3,202,101,0,1881,1878,1,0,0,0,1882,1885,1,0,0,0,1883,1881,1, + 0,0,0,1883,1884,1,0,0,0,1884,201,1,0,0,0,1885,1883,1,0,0,0,1886,1888, + 5,157,0,0,1887,1889,5,173,0,0,1888,1887,1,0,0,0,1888,1889,1,0,0,0,1889, + 1890,1,0,0,0,1890,1891,3,216,108,0,1891,203,1,0,0,0,1892,1894,5,152,0, + 0,1893,1895,5,173,0,0,1894,1893,1,0,0,0,1894,1895,1,0,0,0,1895,1902,1, + 0,0,0,1896,1903,5,132,0,0,1897,1898,5,49,0,0,1898,1899,5,173,0,0,1899, + 1903,5,132,0,0,1900,1903,5,138,0,0,1901,1903,5,46,0,0,1902,1896,1,0,0, + 0,1902,1897,1,0,0,0,1902,1900,1,0,0,0,1902,1901,1,0,0,0,1902,1903,1,0, + 0,0,1903,1905,1,0,0,0,1904,1906,5,173,0,0,1905,1904,1,0,0,0,1905,1906, + 1,0,0,0,1906,1921,1,0,0,0,1907,1909,3,212,106,0,1908,1907,1,0,0,0,1908, + 1909,1,0,0,0,1909,1911,1,0,0,0,1910,1912,5,173,0,0,1911,1910,1,0,0,0, + 1911,1912,1,0,0,0,1912,1913,1,0,0,0,1913,1915,5,12,0,0,1914,1916,5,173, + 0,0,1915,1914,1,0,0,0,1915,1916,1,0,0,0,1916,1918,1,0,0,0,1917,1919,3, + 214,107,0,1918,1917,1,0,0,0,1918,1919,1,0,0,0,1919,1922,1,0,0,0,1920, + 1922,3,320,160,0,1921,1908,1,0,0,0,1921,1920,1,0,0,0,1921,1922,1,0,0, + 0,1922,1927,1,0,0,0,1923,1925,5,173,0,0,1924,1923,1,0,0,0,1924,1925,1, + 0,0,0,1925,1926,1,0,0,0,1926,1928,3,206,103,0,1927,1924,1,0,0,0,1927, + 1928,1,0,0,0,1928,205,1,0,0,0,1929,1931,5,2,0,0,1930,1932,5,173,0,0,1931, + 1930,1,0,0,0,1931,1932,1,0,0,0,1932,1933,1,0,0,0,1933,1935,3,310,155, + 0,1934,1936,5,173,0,0,1935,1934,1,0,0,0,1935,1936,1,0,0,0,1936,1937,1, + 0,0,0,1937,1939,5,3,0,0,1938,1940,5,173,0,0,1939,1938,1,0,0,0,1939,1940, + 1,0,0,0,1940,1941,1,0,0,0,1941,1953,3,310,155,0,1942,1944,5,173,0,0,1943, + 1942,1,0,0,0,1943,1944,1,0,0,0,1944,1945,1,0,0,0,1945,1947,5,11,0,0,1946, + 1948,5,173,0,0,1947,1946,1,0,0,0,1947,1948,1,0,0,0,1948,1949,1,0,0,0, + 1949,1951,3,178,89,0,1950,1952,5,173,0,0,1951,1950,1,0,0,0,1951,1952, + 1,0,0,0,1952,1954,1,0,0,0,1953,1943,1,0,0,0,1953,1954,1,0,0,0,1954,1974, + 1,0,0,0,1955,1957,5,173,0,0,1956,1955,1,0,0,0,1956,1957,1,0,0,0,1957, + 1958,1,0,0,0,1958,1960,5,11,0,0,1959,1961,5,173,0,0,1960,1959,1,0,0,0, + 1960,1961,1,0,0,0,1961,1962,1,0,0,0,1962,1964,3,210,105,0,1963,1965,5, + 173,0,0,1964,1963,1,0,0,0,1964,1965,1,0,0,0,1965,1966,1,0,0,0,1966,1968, + 5,3,0,0,1967,1969,5,173,0,0,1968,1967,1,0,0,0,1968,1969,1,0,0,0,1969, + 1970,1,0,0,0,1970,1972,3,208,104,0,1971,1973,5,173,0,0,1972,1971,1,0, + 0,0,1972,1973,1,0,0,0,1973,1975,1,0,0,0,1974,1956,1,0,0,0,1974,1975,1, + 0,0,0,1975,1976,1,0,0,0,1976,1977,5,4,0,0,1977,207,1,0,0,0,1978,1980, + 5,9,0,0,1979,1981,5,173,0,0,1980,1979,1,0,0,0,1980,1981,1,0,0,0,1981, + 1983,1,0,0,0,1982,1984,3,166,83,0,1983,1982,1,0,0,0,1983,1984,1,0,0,0, + 1984,1986,1,0,0,0,1985,1987,5,173,0,0,1986,1985,1,0,0,0,1986,1987,1,0, + 0,0,1987,1988,1,0,0,0,1988,1989,5,10,0,0,1989,209,1,0,0,0,1990,1992,5, + 9,0,0,1991,1993,5,173,0,0,1992,1991,1,0,0,0,1992,1993,1,0,0,0,1993,1995, + 1,0,0,0,1994,1996,3,166,83,0,1995,1994,1,0,0,0,1995,1996,1,0,0,0,1996, + 1998,1,0,0,0,1997,1999,5,173,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0, + 1999,2000,1,0,0,0,2000,2001,5,10,0,0,2001,211,1,0,0,0,2002,2003,5,160, + 0,0,2003,213,1,0,0,0,2004,2005,5,160,0,0,2005,215,1,0,0,0,2006,2007,3, + 324,162,0,2007,217,1,0,0,0,2008,2009,3,324,162,0,2009,219,1,0,0,0,2010, + 2011,3,222,111,0,2011,221,1,0,0,0,2012,2019,3,224,112,0,2013,2014,5,173, + 0,0,2014,2015,5,119,0,0,2015,2016,5,173,0,0,2016,2018,3,224,112,0,2017, + 2013,1,0,0,0,2018,2021,1,0,0,0,2019,2017,1,0,0,0,2019,2020,1,0,0,0,2020, + 223,1,0,0,0,2021,2019,1,0,0,0,2022,2029,3,226,113,0,2023,2024,5,173,0, + 0,2024,2025,5,149,0,0,2025,2026,5,173,0,0,2026,2028,3,226,113,0,2027, + 2023,1,0,0,0,2028,2031,1,0,0,0,2029,2027,1,0,0,0,2029,2030,1,0,0,0,2030, + 225,1,0,0,0,2031,2029,1,0,0,0,2032,2039,3,228,114,0,2033,2034,5,173,0, + 0,2034,2035,5,51,0,0,2035,2036,5,173,0,0,2036,2038,3,228,114,0,2037,2033, + 1,0,0,0,2038,2041,1,0,0,0,2039,2037,1,0,0,0,2039,2040,1,0,0,0,2040,227, + 1,0,0,0,2041,2039,1,0,0,0,2042,2044,5,113,0,0,2043,2045,5,173,0,0,2044, + 2043,1,0,0,0,2044,2045,1,0,0,0,2045,2047,1,0,0,0,2046,2042,1,0,0,0,2047, + 2050,1,0,0,0,2048,2046,1,0,0,0,2048,2049,1,0,0,0,2049,2051,1,0,0,0,2050, + 2048,1,0,0,0,2051,2052,3,230,115,0,2052,229,1,0,0,0,2053,2063,3,234,117, + 0,2054,2056,5,173,0,0,2055,2054,1,0,0,0,2055,2056,1,0,0,0,2056,2057,1, + 0,0,0,2057,2059,3,232,116,0,2058,2060,5,173,0,0,2059,2058,1,0,0,0,2059, + 2060,1,0,0,0,2060,2061,1,0,0,0,2061,2062,3,234,117,0,2062,2064,1,0,0, + 0,2063,2055,1,0,0,0,2063,2064,1,0,0,0,2064,2102,1,0,0,0,2065,2067,3,234, + 117,0,2066,2068,5,173,0,0,2067,2066,1,0,0,0,2067,2068,1,0,0,0,2068,2069, + 1,0,0,0,2069,2071,5,154,0,0,2070,2072,5,173,0,0,2071,2070,1,0,0,0,2071, + 2072,1,0,0,0,2072,2073,1,0,0,0,2073,2074,3,234,117,0,2074,2075,1,0,0, + 0,2075,2076,6,115,-1,0,2076,2102,1,0,0,0,2077,2079,3,234,117,0,2078,2080, + 5,173,0,0,2079,2078,1,0,0,0,2079,2080,1,0,0,0,2080,2081,1,0,0,0,2081, + 2083,3,232,116,0,2082,2084,5,173,0,0,2083,2082,1,0,0,0,2083,2084,1,0, + 0,0,2084,2085,1,0,0,0,2085,2095,3,234,117,0,2086,2088,5,173,0,0,2087, + 2086,1,0,0,0,2087,2088,1,0,0,0,2088,2089,1,0,0,0,2089,2091,3,232,116, + 0,2090,2092,5,173,0,0,2091,2090,1,0,0,0,2091,2092,1,0,0,0,2092,2093,1, + 0,0,0,2093,2094,3,234,117,0,2094,2096,1,0,0,0,2095,2087,1,0,0,0,2096, + 2097,1,0,0,0,2097,2095,1,0,0,0,2097,2098,1,0,0,0,2098,2099,1,0,0,0,2099, + 2100,6,115,-1,0,2100,2102,1,0,0,0,2101,2053,1,0,0,0,2101,2065,1,0,0,0, + 2101,2077,1,0,0,0,2102,231,1,0,0,0,2103,2104,7,2,0,0,2104,233,1,0,0,0, + 2105,2116,3,236,118,0,2106,2108,5,173,0,0,2107,2106,1,0,0,0,2107,2108, + 1,0,0,0,2108,2109,1,0,0,0,2109,2111,5,11,0,0,2110,2112,5,173,0,0,2111, + 2110,1,0,0,0,2111,2112,1,0,0,0,2112,2113,1,0,0,0,2113,2115,3,236,118, + 0,2114,2107,1,0,0,0,2115,2118,1,0,0,0,2116,2114,1,0,0,0,2116,2117,1,0, + 0,0,2117,235,1,0,0,0,2118,2116,1,0,0,0,2119,2130,3,238,119,0,2120,2122, + 5,173,0,0,2121,2120,1,0,0,0,2121,2122,1,0,0,0,2122,2123,1,0,0,0,2123, + 2125,5,18,0,0,2124,2126,5,173,0,0,2125,2124,1,0,0,0,2125,2126,1,0,0,0, + 2126,2127,1,0,0,0,2127,2129,3,238,119,0,2128,2121,1,0,0,0,2129,2132,1, + 0,0,0,2130,2128,1,0,0,0,2130,2131,1,0,0,0,2131,237,1,0,0,0,2132,2130, + 1,0,0,0,2133,2145,3,242,121,0,2134,2136,5,173,0,0,2135,2134,1,0,0,0,2135, + 2136,1,0,0,0,2136,2137,1,0,0,0,2137,2139,3,240,120,0,2138,2140,5,173, + 0,0,2139,2138,1,0,0,0,2139,2140,1,0,0,0,2140,2141,1,0,0,0,2141,2142,3, + 242,121,0,2142,2144,1,0,0,0,2143,2135,1,0,0,0,2144,2147,1,0,0,0,2145, + 2143,1,0,0,0,2145,2146,1,0,0,0,2146,239,1,0,0,0,2147,2145,1,0,0,0,2148, + 2149,7,3,0,0,2149,241,1,0,0,0,2150,2162,3,246,123,0,2151,2153,5,173,0, + 0,2152,2151,1,0,0,0,2152,2153,1,0,0,0,2153,2154,1,0,0,0,2154,2156,3,244, + 122,0,2155,2157,5,173,0,0,2156,2155,1,0,0,0,2156,2157,1,0,0,0,2157,2158, + 1,0,0,0,2158,2159,3,246,123,0,2159,2161,1,0,0,0,2160,2152,1,0,0,0,2161, + 2164,1,0,0,0,2162,2160,1,0,0,0,2162,2163,1,0,0,0,2163,243,1,0,0,0,2164, + 2162,1,0,0,0,2165,2166,7,4,0,0,2166,245,1,0,0,0,2167,2179,3,250,125,0, + 2168,2170,5,173,0,0,2169,2168,1,0,0,0,2169,2170,1,0,0,0,2170,2171,1,0, + 0,0,2171,2173,3,248,124,0,2172,2174,5,173,0,0,2173,2172,1,0,0,0,2173, + 2174,1,0,0,0,2174,2175,1,0,0,0,2175,2176,3,250,125,0,2176,2178,1,0,0, + 0,2177,2169,1,0,0,0,2178,2181,1,0,0,0,2179,2177,1,0,0,0,2179,2180,1,0, + 0,0,2180,247,1,0,0,0,2181,2179,1,0,0,0,2182,2183,7,5,0,0,2183,249,1,0, + 0,0,2184,2195,3,252,126,0,2185,2187,5,173,0,0,2186,2185,1,0,0,0,2186, + 2187,1,0,0,0,2187,2188,1,0,0,0,2188,2190,5,24,0,0,2189,2191,5,173,0,0, + 2190,2189,1,0,0,0,2190,2191,1,0,0,0,2191,2192,1,0,0,0,2192,2194,3,252, + 126,0,2193,2186,1,0,0,0,2194,2197,1,0,0,0,2195,2193,1,0,0,0,2195,2196, + 1,0,0,0,2196,251,1,0,0,0,2197,2195,1,0,0,0,2198,2200,5,155,0,0,2199,2201, + 5,173,0,0,2200,2199,1,0,0,0,2200,2201,1,0,0,0,2201,2203,1,0,0,0,2202, + 2198,1,0,0,0,2203,2206,1,0,0,0,2204,2202,1,0,0,0,2204,2205,1,0,0,0,2205, + 2207,1,0,0,0,2206,2204,1,0,0,0,2207,2212,3,254,127,0,2208,2210,5,173, + 0,0,2209,2208,1,0,0,0,2209,2210,1,0,0,0,2210,2211,1,0,0,0,2211,2213,5, + 156,0,0,2212,2209,1,0,0,0,2212,2213,1,0,0,0,2213,253,1,0,0,0,2214,2222, + 3,264,132,0,2215,2223,3,258,129,0,2216,2218,3,256,128,0,2217,2216,1,0, + 0,0,2218,2219,1,0,0,0,2219,2217,1,0,0,0,2219,2220,1,0,0,0,2220,2223,1, + 0,0,0,2221,2223,3,262,131,0,2222,2215,1,0,0,0,2222,2217,1,0,0,0,2222, + 2221,1,0,0,0,2222,2223,1,0,0,0,2223,255,1,0,0,0,2224,2225,5,173,0,0,2225, + 2227,5,96,0,0,2226,2228,5,173,0,0,2227,2226,1,0,0,0,2227,2228,1,0,0,0, + 2228,2229,1,0,0,0,2229,2244,3,264,132,0,2230,2231,5,7,0,0,2231,2232,3, + 220,110,0,2232,2233,5,8,0,0,2233,2244,1,0,0,0,2234,2236,5,7,0,0,2235, + 2237,3,220,110,0,2236,2235,1,0,0,0,2236,2237,1,0,0,0,2237,2238,1,0,0, + 0,2238,2240,5,157,0,0,2239,2241,3,220,110,0,2240,2239,1,0,0,0,2240,2241, + 1,0,0,0,2241,2242,1,0,0,0,2242,2244,5,8,0,0,2243,2224,1,0,0,0,2243,2230, + 1,0,0,0,2243,2234,1,0,0,0,2244,257,1,0,0,0,2245,2257,3,260,130,0,2246, + 2247,5,173,0,0,2247,2248,5,134,0,0,2248,2249,5,173,0,0,2249,2257,5,147, + 0,0,2250,2251,5,173,0,0,2251,2252,5,82,0,0,2252,2253,5,173,0,0,2253,2257, + 5,147,0,0,2254,2255,5,173,0,0,2255,2257,5,66,0,0,2256,2245,1,0,0,0,2256, + 2246,1,0,0,0,2256,2250,1,0,0,0,2256,2254,1,0,0,0,2257,2259,1,0,0,0,2258, + 2260,5,173,0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2261,1,0,0,0, + 2261,2262,3,264,132,0,2262,259,1,0,0,0,2263,2265,5,173,0,0,2264,2263, + 1,0,0,0,2264,2265,1,0,0,0,2265,2266,1,0,0,0,2266,2267,5,25,0,0,2267,261, + 1,0,0,0,2268,2269,5,173,0,0,2269,2270,5,99,0,0,2270,2271,5,173,0,0,2271, + 2279,5,115,0,0,2272,2273,5,173,0,0,2273,2274,5,99,0,0,2274,2275,5,173, + 0,0,2275,2276,5,113,0,0,2276,2277,5,173,0,0,2277,2279,5,115,0,0,2278, + 2268,1,0,0,0,2278,2272,1,0,0,0,2279,263,1,0,0,0,2280,2287,3,266,133,0, + 2281,2283,5,173,0,0,2282,2281,1,0,0,0,2282,2283,1,0,0,0,2283,2284,1,0, + 0,0,2284,2286,3,304,152,0,2285,2282,1,0,0,0,2286,2289,1,0,0,0,2287,2285, + 1,0,0,0,2287,2288,1,0,0,0,2288,265,1,0,0,0,2289,2287,1,0,0,0,2290,2301, + 3,274,137,0,2291,2301,3,314,157,0,2292,2301,3,306,153,0,2293,2301,3,286, + 143,0,2294,2301,3,288,144,0,2295,2301,3,298,149,0,2296,2301,3,300,150, + 0,2297,2301,3,302,151,0,2298,2301,3,310,155,0,2299,2301,3,268,134,0,2300, + 2290,1,0,0,0,2300,2291,1,0,0,0,2300,2292,1,0,0,0,2300,2293,1,0,0,0,2300, + 2294,1,0,0,0,2300,2295,1,0,0,0,2300,2296,1,0,0,0,2300,2297,1,0,0,0,2300, + 2298,1,0,0,0,2300,2299,1,0,0,0,2301,267,1,0,0,0,2302,2304,5,49,0,0,2303, + 2305,5,173,0,0,2304,2303,1,0,0,0,2304,2305,1,0,0,0,2305,2306,1,0,0,0, + 2306,2308,5,2,0,0,2307,2309,5,173,0,0,2308,2307,1,0,0,0,2308,2309,1,0, + 0,0,2309,2310,1,0,0,0,2310,2312,3,270,135,0,2311,2313,5,173,0,0,2312, + 2311,1,0,0,0,2312,2313,1,0,0,0,2313,2314,1,0,0,0,2314,2315,5,4,0,0,2315, + 2359,1,0,0,0,2316,2318,5,47,0,0,2317,2319,5,173,0,0,2318,2317,1,0,0,0, + 2318,2319,1,0,0,0,2319,2320,1,0,0,0,2320,2322,5,2,0,0,2321,2323,5,173, + 0,0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323,2324,1,0,0,0,2324,2326,3, + 270,135,0,2325,2327,5,173,0,0,2326,2325,1,0,0,0,2326,2327,1,0,0,0,2327, + 2328,1,0,0,0,2328,2329,5,4,0,0,2329,2359,1,0,0,0,2330,2332,5,114,0,0, + 2331,2333,5,173,0,0,2332,2331,1,0,0,0,2332,2333,1,0,0,0,2333,2334,1,0, + 0,0,2334,2336,5,2,0,0,2335,2337,5,173,0,0,2336,2335,1,0,0,0,2336,2337, + 1,0,0,0,2337,2338,1,0,0,0,2338,2340,3,270,135,0,2339,2341,5,173,0,0,2340, + 2339,1,0,0,0,2340,2341,1,0,0,0,2341,2342,1,0,0,0,2342,2343,5,4,0,0,2343, + 2359,1,0,0,0,2344,2346,5,150,0,0,2345,2347,5,173,0,0,2346,2345,1,0,0, + 0,2346,2347,1,0,0,0,2347,2348,1,0,0,0,2348,2350,5,2,0,0,2349,2351,5,173, + 0,0,2350,2349,1,0,0,0,2350,2351,1,0,0,0,2351,2352,1,0,0,0,2352,2354,3, + 270,135,0,2353,2355,5,173,0,0,2354,2353,1,0,0,0,2354,2355,1,0,0,0,2355, + 2356,1,0,0,0,2356,2357,5,4,0,0,2357,2359,1,0,0,0,2358,2302,1,0,0,0,2358, + 2316,1,0,0,0,2358,2330,1,0,0,0,2358,2344,1,0,0,0,2359,269,1,0,0,0,2360, + 2365,3,272,136,0,2361,2363,5,173,0,0,2362,2361,1,0,0,0,2362,2363,1,0, + 0,0,2363,2364,1,0,0,0,2364,2366,3,178,89,0,2365,2362,1,0,0,0,2365,2366, + 1,0,0,0,2366,271,1,0,0,0,2367,2368,3,310,155,0,2368,2369,5,173,0,0,2369, + 2370,5,96,0,0,2370,2371,5,173,0,0,2371,2372,3,220,110,0,2372,273,1,0, + 0,0,2373,2380,3,312,156,0,2374,2380,5,158,0,0,2375,2380,3,276,138,0,2376, + 2380,5,115,0,0,2377,2380,3,278,139,0,2378,2380,3,282,141,0,2379,2373, + 1,0,0,0,2379,2374,1,0,0,0,2379,2375,1,0,0,0,2379,2376,1,0,0,0,2379,2377, + 1,0,0,0,2379,2378,1,0,0,0,2380,275,1,0,0,0,2381,2382,7,6,0,0,2382,277, + 1,0,0,0,2383,2385,5,7,0,0,2384,2386,5,173,0,0,2385,2384,1,0,0,0,2385, + 2386,1,0,0,0,2386,2400,1,0,0,0,2387,2389,3,220,110,0,2388,2390,5,173, + 0,0,2389,2388,1,0,0,0,2389,2390,1,0,0,0,2390,2397,1,0,0,0,2391,2393,3, + 280,140,0,2392,2394,5,173,0,0,2393,2392,1,0,0,0,2393,2394,1,0,0,0,2394, + 2396,1,0,0,0,2395,2391,1,0,0,0,2396,2399,1,0,0,0,2397,2395,1,0,0,0,2397, + 2398,1,0,0,0,2398,2401,1,0,0,0,2399,2397,1,0,0,0,2400,2387,1,0,0,0,2400, + 2401,1,0,0,0,2401,2402,1,0,0,0,2402,2403,5,8,0,0,2403,279,1,0,0,0,2404, + 2406,5,3,0,0,2405,2407,5,173,0,0,2406,2405,1,0,0,0,2406,2407,1,0,0,0, + 2407,2409,1,0,0,0,2408,2410,3,220,110,0,2409,2408,1,0,0,0,2409,2410,1, + 0,0,0,2410,281,1,0,0,0,2411,2413,5,9,0,0,2412,2414,5,173,0,0,2413,2412, + 1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415,2417,3,284,142,0,2416, + 2418,5,173,0,0,2417,2416,1,0,0,0,2417,2418,1,0,0,0,2418,2429,1,0,0,0, + 2419,2421,5,3,0,0,2420,2422,5,173,0,0,2421,2420,1,0,0,0,2421,2422,1,0, + 0,0,2422,2423,1,0,0,0,2423,2425,3,284,142,0,2424,2426,5,173,0,0,2425, + 2424,1,0,0,0,2425,2426,1,0,0,0,2426,2428,1,0,0,0,2427,2419,1,0,0,0,2428, + 2431,1,0,0,0,2429,2427,1,0,0,0,2429,2430,1,0,0,0,2430,2432,1,0,0,0,2431, + 2429,1,0,0,0,2432,2433,5,10,0,0,2433,283,1,0,0,0,2434,2437,3,326,163, + 0,2435,2437,5,158,0,0,2436,2434,1,0,0,0,2436,2435,1,0,0,0,2437,2439,1, + 0,0,0,2438,2440,5,173,0,0,2439,2438,1,0,0,0,2439,2440,1,0,0,0,2440,2441, + 1,0,0,0,2441,2443,5,157,0,0,2442,2444,5,173,0,0,2443,2442,1,0,0,0,2443, + 2444,1,0,0,0,2444,2445,1,0,0,0,2445,2446,3,220,110,0,2446,285,1,0,0,0, + 2447,2449,5,2,0,0,2448,2450,5,173,0,0,2449,2448,1,0,0,0,2449,2450,1,0, + 0,0,2450,2451,1,0,0,0,2451,2453,3,220,110,0,2452,2454,5,173,0,0,2453, + 2452,1,0,0,0,2453,2454,1,0,0,0,2454,2455,1,0,0,0,2455,2456,5,4,0,0,2456, + 287,1,0,0,0,2457,2459,5,68,0,0,2458,2460,5,173,0,0,2459,2458,1,0,0,0, + 2459,2460,1,0,0,0,2460,2461,1,0,0,0,2461,2463,5,2,0,0,2462,2464,5,173, + 0,0,2463,2462,1,0,0,0,2463,2464,1,0,0,0,2464,2465,1,0,0,0,2465,2467,5, + 152,0,0,2466,2468,5,173,0,0,2467,2466,1,0,0,0,2467,2468,1,0,0,0,2468, + 2469,1,0,0,0,2469,2535,5,4,0,0,2470,2472,5,60,0,0,2471,2473,5,173,0,0, + 2472,2471,1,0,0,0,2472,2473,1,0,0,0,2473,2474,1,0,0,0,2474,2476,5,2,0, + 0,2475,2477,5,173,0,0,2476,2475,1,0,0,0,2476,2477,1,0,0,0,2477,2478,1, + 0,0,0,2478,2480,3,292,146,0,2479,2481,5,173,0,0,2480,2479,1,0,0,0,2480, + 2481,1,0,0,0,2481,2492,1,0,0,0,2482,2484,5,52,0,0,2483,2485,5,173,0,0, + 2484,2483,1,0,0,0,2484,2485,1,0,0,0,2485,2486,1,0,0,0,2486,2493,3,98, + 49,0,2487,2489,5,3,0,0,2488,2490,5,173,0,0,2489,2488,1,0,0,0,2489,2490, + 1,0,0,0,2490,2491,1,0,0,0,2491,2493,3,292,146,0,2492,2482,1,0,0,0,2492, + 2487,1,0,0,0,2493,2495,1,0,0,0,2494,2496,5,173,0,0,2495,2494,1,0,0,0, + 2495,2496,1,0,0,0,2496,2497,1,0,0,0,2497,2498,5,4,0,0,2498,2535,1,0,0, + 0,2499,2501,3,290,145,0,2500,2502,5,173,0,0,2501,2500,1,0,0,0,2501,2502, + 1,0,0,0,2502,2503,1,0,0,0,2503,2505,5,2,0,0,2504,2506,5,173,0,0,2505, + 2504,1,0,0,0,2505,2506,1,0,0,0,2506,2511,1,0,0,0,2507,2509,5,78,0,0,2508, + 2510,5,173,0,0,2509,2508,1,0,0,0,2509,2510,1,0,0,0,2510,2512,1,0,0,0, + 2511,2507,1,0,0,0,2511,2512,1,0,0,0,2512,2530,1,0,0,0,2513,2515,3,292, + 146,0,2514,2516,5,173,0,0,2515,2514,1,0,0,0,2515,2516,1,0,0,0,2516,2527, + 1,0,0,0,2517,2519,5,3,0,0,2518,2520,5,173,0,0,2519,2518,1,0,0,0,2519, + 2520,1,0,0,0,2520,2521,1,0,0,0,2521,2523,3,292,146,0,2522,2524,5,173, + 0,0,2523,2522,1,0,0,0,2523,2524,1,0,0,0,2524,2526,1,0,0,0,2525,2517,1, + 0,0,0,2526,2529,1,0,0,0,2527,2525,1,0,0,0,2527,2528,1,0,0,0,2528,2531, + 1,0,0,0,2529,2527,1,0,0,0,2530,2513,1,0,0,0,2530,2531,1,0,0,0,2531,2532, + 1,0,0,0,2532,2533,5,4,0,0,2533,2535,1,0,0,0,2534,2457,1,0,0,0,2534,2470, + 1,0,0,0,2534,2499,1,0,0,0,2535,289,1,0,0,0,2536,2537,3,326,163,0,2537, + 291,1,0,0,0,2538,2540,3,326,163,0,2539,2541,5,173,0,0,2540,2539,1,0,0, + 0,2540,2541,1,0,0,0,2541,2542,1,0,0,0,2542,2543,5,157,0,0,2543,2545,5, + 6,0,0,2544,2546,5,173,0,0,2545,2544,1,0,0,0,2545,2546,1,0,0,0,2546,2548, + 1,0,0,0,2547,2538,1,0,0,0,2547,2548,1,0,0,0,2548,2549,1,0,0,0,2549,2552, + 3,220,110,0,2550,2552,3,294,147,0,2551,2547,1,0,0,0,2551,2550,1,0,0,0, + 2552,293,1,0,0,0,2553,2555,3,296,148,0,2554,2556,5,173,0,0,2555,2554, + 1,0,0,0,2555,2556,1,0,0,0,2556,2557,1,0,0,0,2557,2558,5,155,0,0,2558, + 2560,5,16,0,0,2559,2561,5,173,0,0,2560,2559,1,0,0,0,2560,2561,1,0,0,0, + 2561,2562,1,0,0,0,2562,2564,3,220,110,0,2563,2565,5,173,0,0,2564,2563, + 1,0,0,0,2564,2565,1,0,0,0,2565,295,1,0,0,0,2566,2591,3,326,163,0,2567, + 2569,5,2,0,0,2568,2570,5,173,0,0,2569,2568,1,0,0,0,2569,2570,1,0,0,0, + 2570,2571,1,0,0,0,2571,2573,3,326,163,0,2572,2574,5,173,0,0,2573,2572, + 1,0,0,0,2573,2574,1,0,0,0,2574,2585,1,0,0,0,2575,2577,5,3,0,0,2576,2578, + 5,173,0,0,2577,2576,1,0,0,0,2577,2578,1,0,0,0,2578,2579,1,0,0,0,2579, + 2581,3,326,163,0,2580,2582,5,173,0,0,2581,2580,1,0,0,0,2581,2582,1,0, + 0,0,2582,2584,1,0,0,0,2583,2575,1,0,0,0,2584,2587,1,0,0,0,2585,2583,1, + 0,0,0,2585,2586,1,0,0,0,2586,2588,1,0,0,0,2587,2585,1,0,0,0,2588,2589, + 5,4,0,0,2589,2591,1,0,0,0,2590,2566,1,0,0,0,2590,2567,1,0,0,0,2591,297, + 1,0,0,0,2592,2597,3,188,94,0,2593,2595,5,173,0,0,2594,2593,1,0,0,0,2594, + 2595,1,0,0,0,2595,2596,1,0,0,0,2596,2598,3,190,95,0,2597,2594,1,0,0,0, + 2598,2599,1,0,0,0,2599,2597,1,0,0,0,2599,2600,1,0,0,0,2600,299,1,0,0, + 0,2601,2603,5,83,0,0,2602,2604,5,173,0,0,2603,2602,1,0,0,0,2603,2604, + 1,0,0,0,2604,2605,1,0,0,0,2605,2607,5,9,0,0,2606,2608,5,173,0,0,2607, + 2606,1,0,0,0,2607,2608,1,0,0,0,2608,2609,1,0,0,0,2609,2611,5,106,0,0, + 2610,2612,5,173,0,0,2611,2610,1,0,0,0,2611,2612,1,0,0,0,2612,2613,1,0, + 0,0,2613,2618,3,180,90,0,2614,2616,5,173,0,0,2615,2614,1,0,0,0,2615,2616, + 1,0,0,0,2616,2617,1,0,0,0,2617,2619,3,178,89,0,2618,2615,1,0,0,0,2618, + 2619,1,0,0,0,2619,2621,1,0,0,0,2620,2622,5,173,0,0,2621,2620,1,0,0,0, + 2621,2622,1,0,0,0,2622,2623,1,0,0,0,2623,2624,5,10,0,0,2624,301,1,0,0, + 0,2625,2627,5,68,0,0,2626,2628,5,173,0,0,2627,2626,1,0,0,0,2627,2628, + 1,0,0,0,2628,2629,1,0,0,0,2629,2631,5,9,0,0,2630,2632,5,173,0,0,2631, + 2630,1,0,0,0,2631,2632,1,0,0,0,2632,2633,1,0,0,0,2633,2635,5,106,0,0, + 2634,2636,5,173,0,0,2635,2634,1,0,0,0,2635,2636,1,0,0,0,2636,2637,1,0, + 0,0,2637,2642,3,180,90,0,2638,2640,5,173,0,0,2639,2638,1,0,0,0,2639,2640, + 1,0,0,0,2640,2641,1,0,0,0,2641,2643,3,178,89,0,2642,2639,1,0,0,0,2642, + 2643,1,0,0,0,2643,2645,1,0,0,0,2644,2646,5,173,0,0,2645,2644,1,0,0,0, + 2645,2646,1,0,0,0,2646,2647,1,0,0,0,2647,2648,5,10,0,0,2648,303,1,0,0, + 0,2649,2651,5,5,0,0,2650,2652,5,173,0,0,2651,2650,1,0,0,0,2651,2652,1, + 0,0,0,2652,2655,1,0,0,0,2653,2656,3,318,159,0,2654,2656,5,152,0,0,2655, + 2653,1,0,0,0,2655,2654,1,0,0,0,2656,305,1,0,0,0,2657,2662,5,59,0,0,2658, + 2660,5,173,0,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0,2660,2661,1,0,0,0, + 2661,2663,3,308,154,0,2662,2659,1,0,0,0,2663,2664,1,0,0,0,2664,2662,1, + 0,0,0,2664,2665,1,0,0,0,2665,2680,1,0,0,0,2666,2668,5,59,0,0,2667,2669, + 5,173,0,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2670,1,0,0,0,2670, + 2675,3,220,110,0,2671,2673,5,173,0,0,2672,2671,1,0,0,0,2672,2673,1,0, + 0,0,2673,2674,1,0,0,0,2674,2676,3,308,154,0,2675,2672,1,0,0,0,2676,2677, + 1,0,0,0,2677,2675,1,0,0,0,2677,2678,1,0,0,0,2678,2680,1,0,0,0,2679,2657, + 1,0,0,0,2679,2666,1,0,0,0,2680,2689,1,0,0,0,2681,2683,5,173,0,0,2682, + 2681,1,0,0,0,2682,2683,1,0,0,0,2683,2684,1,0,0,0,2684,2686,5,80,0,0,2685, + 2687,5,173,0,0,2686,2685,1,0,0,0,2686,2687,1,0,0,0,2687,2688,1,0,0,0, + 2688,2690,3,220,110,0,2689,2682,1,0,0,0,2689,2690,1,0,0,0,2690,2692,1, + 0,0,0,2691,2693,5,173,0,0,2692,2691,1,0,0,0,2692,2693,1,0,0,0,2693,2694, + 1,0,0,0,2694,2695,5,81,0,0,2695,307,1,0,0,0,2696,2698,5,145,0,0,2697, + 2699,5,173,0,0,2698,2697,1,0,0,0,2698,2699,1,0,0,0,2699,2700,1,0,0,0, + 2700,2702,3,220,110,0,2701,2703,5,173,0,0,2702,2701,1,0,0,0,2702,2703, + 1,0,0,0,2703,2704,1,0,0,0,2704,2706,5,136,0,0,2705,2707,5,173,0,0,2706, + 2705,1,0,0,0,2706,2707,1,0,0,0,2707,2708,1,0,0,0,2708,2709,3,220,110, + 0,2709,309,1,0,0,0,2710,2711,3,326,163,0,2711,311,1,0,0,0,2712,2715,3, + 322,161,0,2713,2715,3,320,160,0,2714,2712,1,0,0,0,2714,2713,1,0,0,0,2715, + 313,1,0,0,0,2716,2719,5,26,0,0,2717,2720,3,326,163,0,2718,2720,5,160, + 0,0,2719,2717,1,0,0,0,2719,2718,1,0,0,0,2720,315,1,0,0,0,2721,2723,3, + 266,133,0,2722,2724,5,173,0,0,2723,2722,1,0,0,0,2723,2724,1,0,0,0,2724, + 2725,1,0,0,0,2725,2726,3,304,152,0,2726,317,1,0,0,0,2727,2728,3,324,162, + 0,2728,319,1,0,0,0,2729,2730,5,160,0,0,2730,321,1,0,0,0,2731,2732,7,7, + 0,0,2732,323,1,0,0,0,2733,2734,3,326,163,0,2734,325,1,0,0,0,2735,2741, + 5,169,0,0,2736,2737,5,172,0,0,2737,2741,6,163,-1,0,2738,2741,5,161,0, + 0,2739,2741,3,328,164,0,2740,2735,1,0,0,0,2740,2736,1,0,0,0,2740,2738, + 1,0,0,0,2740,2739,1,0,0,0,2741,327,1,0,0,0,2742,2743,7,8,0,0,2743,329, + 1,0,0,0,2744,2745,7,9,0,0,2745,331,1,0,0,0,2746,2747,7,10,0,0,2747,333, + 1,0,0,0,2748,2749,7,11,0,0,2749,335,1,0,0,0,474,338,342,347,351,356,359, + 363,366,389,395,399,402,408,411,415,419,423,428,432,439,443,451,455,465, + 469,473,478,491,495,503,506,514,517,532,537,543,547,550,553,559,563,568, + 571,576,580,584,589,604,608,615,635,639,642,645,648,651,655,660,664,674, + 678,683,688,693,699,703,707,712,719,723,727,730,734,738,757,761,765,769, + 773,776,779,792,796,800,804,808,812,814,818,822,824,839,843,847,851,855, + 860,863,867,871,873,877,881,883,902,909,922,929,935,938,948,951,959,962, + 968,971,977,992,1008,1015,1022,1033,1053,1057,1062,1071,1075,1080,1086, + 1092,1098,1102,1106,1114,1118,1122,1128,1132,1136,1142,1146,1150,1154, + 1158,1164,1168,1172,1176,1180,1184,1190,1197,1202,1208,1213,1230,1234, + 1242,1252,1257,1262,1266,1271,1277,1282,1285,1289,1293,1297,1303,1307, + 1312,1317,1321,1324,1326,1330,1334,1340,1344,1349,1353,1362,1368,1376, + 1380,1384,1388,1395,1398,1401,1404,1410,1413,1417,1421,1426,1430,1439, + 1443,1448,1462,1464,1466,1471,1481,1487,1494,1507,1511,1515,1519,1524, + 1529,1533,1539,1543,1547,1551,1556,1562,1565,1571,1574,1580,1584,1588, + 1592,1596,1601,1606,1610,1615,1618,1627,1636,1641,1654,1657,1665,1669, + 1674,1679,1683,1688,1694,1699,1706,1710,1714,1716,1720,1722,1726,1728, + 1734,1740,1744,1747,1750,1756,1759,1762,1766,1772,1775,1778,1782,1786, + 1790,1792,1796,1798,1802,1804,1808,1810,1816,1820,1824,1828,1832,1836, + 1840,1844,1848,1851,1857,1861,1865,1868,1873,1878,1883,1888,1894,1902, + 1905,1908,1911,1915,1918,1921,1924,1927,1931,1935,1939,1943,1947,1951, + 1953,1956,1960,1964,1968,1972,1974,1980,1983,1986,1992,1995,1998,2019, + 2029,2039,2044,2048,2055,2059,2063,2067,2071,2079,2083,2087,2091,2097, + 2101,2107,2111,2116,2121,2125,2130,2135,2139,2145,2152,2156,2162,2169, + 2173,2179,2186,2190,2195,2200,2204,2209,2212,2219,2222,2227,2236,2240, + 2243,2256,2259,2264,2278,2282,2287,2300,2304,2308,2312,2318,2322,2326, + 2332,2336,2340,2346,2350,2354,2358,2362,2365,2379,2385,2389,2393,2397, + 2400,2406,2409,2413,2417,2421,2425,2429,2436,2439,2443,2449,2453,2459, + 2463,2467,2472,2476,2480,2484,2489,2492,2495,2501,2505,2509,2511,2515, + 2519,2523,2527,2530,2534,2540,2545,2547,2551,2555,2560,2564,2569,2573, + 2577,2581,2585,2590,2594,2599,2603,2607,2611,2615,2618,2621,2627,2631, + 2635,2639,2642,2645,2651,2655,2659,2664,2668,2672,2677,2679,2682,2686, + 2689,2692,2698,2702,2706,2714,2719,2723,2740 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -1374,29 +1332,29 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(346); + setState(336); oC_Cypher(); - setState(357); + setState(347); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(348); + setState(338); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(347); + setState(337); match(CypherParser::SP); } - setState(350); + setState(340); match(CypherParser::T__0); - setState(352); + setState(342); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 1, _ctx)) { case 1: { - setState(351); + setState(341); match(CypherParser::SP); break; } @@ -1404,22 +1362,22 @@ CypherParser::Ku_StatementsContext* CypherParser::ku_Statements() { default: break; } - setState(354); + setState(344); oC_Cypher(); } - setState(359); + setState(349); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 2, _ctx); } - setState(361); + setState(351); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(360); + setState(350); match(CypherParser::SP); } - setState(363); + setState(353); match(CypherParser::EOF); } @@ -1474,41 +1432,41 @@ CypherParser::OC_CypherContext* CypherParser::oC_Cypher() { }); try { enterOuterAlt(_localctx, 1); - setState(366); + setState(356); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::EXPLAIN || _la == CypherParser::PROFILE) { - setState(365); + setState(355); oC_AnyCypherOption(); } - setState(369); + setState(359); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(368); + setState(358); match(CypherParser::SP); } - setState(371); + setState(361); oC_Statement(); - setState(376); + setState(366); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { case 1: { - setState(373); + setState(363); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(372); + setState(362); match(CypherParser::SP); } - setState(375); + setState(365); match(CypherParser::T__0); break; } @@ -1635,152 +1593,152 @@ CypherParser::OC_StatementContext* CypherParser::oC_Statement() { exitRule(); }); try { - setState(399); + setState(389); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(378); + setState(368); oC_Query(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(379); + setState(369); kU_CreateNodeTable(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(380); + setState(370); kU_CreateRelTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(381); + setState(371); kU_CreateRelTableGroup(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(382); + setState(372); kU_CreateSequence(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(383); + setState(373); kU_CreateType(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(384); + setState(374); kU_Drop(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(385); + setState(375); kU_AlterTable(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(386); + setState(376); kU_CopyFrom(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(387); + setState(377); kU_CopyFromByColumn(); break; } case 11: { enterOuterAlt(_localctx, 11); - setState(388); + setState(378); kU_CopyTO(); break; } case 12: { enterOuterAlt(_localctx, 12); - setState(389); + setState(379); kU_StandaloneCall(); break; } case 13: { enterOuterAlt(_localctx, 13); - setState(390); + setState(380); kU_CreateMacro(); break; } case 14: { enterOuterAlt(_localctx, 14); - setState(391); + setState(381); kU_CommentOn(); break; } case 15: { enterOuterAlt(_localctx, 15); - setState(392); + setState(382); kU_Transaction(); break; } case 16: { enterOuterAlt(_localctx, 16); - setState(393); + setState(383); kU_Extension(); break; } case 17: { enterOuterAlt(_localctx, 17); - setState(394); + setState(384); kU_ExportDatabase(); break; } case 18: { enterOuterAlt(_localctx, 18); - setState(395); + setState(385); kU_ImportDatabase(); break; } case 19: { enterOuterAlt(_localctx, 19); - setState(396); + setState(386); kU_AttachDatabase(); break; } case 20: { enterOuterAlt(_localctx, 20); - setState(397); + setState(387); kU_DetachDatabase(); break; } case 21: { enterOuterAlt(_localctx, 21); - setState(398); + setState(388); kU_UseDatabase(); break; } @@ -1857,39 +1815,39 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(401); + setState(391); match(CypherParser::COPY); - setState(402); + setState(392); match(CypherParser::SP); - setState(403); + setState(393); oC_SchemaName(); - setState(412); + setState(402); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 11, _ctx)) { case 1: { - setState(405); + setState(395); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(404); + setState(394); match(CypherParser::SP); } - setState(407); + setState(397); kU_ColumnNames(); - setState(409); + setState(399); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(408); + setState(398); match(CypherParser::SP); } break; } case 2: { - setState(411); + setState(401); match(CypherParser::SP); break; } @@ -1897,26 +1855,26 @@ CypherParser::KU_CopyFromContext* CypherParser::kU_CopyFrom() { default: break; } - setState(414); + setState(404); match(CypherParser::FROM); - setState(415); + setState(405); match(CypherParser::SP); - setState(416); + setState(406); kU_ScanSource(); - setState(421); + setState(411); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { - setState(418); + setState(408); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(417); + setState(407); match(CypherParser::SP); } - setState(420); + setState(410); kU_ParsingOptions(); break; } @@ -1978,57 +1936,57 @@ CypherParser::KU_ColumnNamesContext* CypherParser::kU_ColumnNames() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(423); + setState(413); match(CypherParser::T__1); - setState(425); + setState(415); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(424); + setState(414); match(CypherParser::SP); } - setState(427); + setState(417); oC_SchemaName(); - setState(438); + setState(428); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(429); + setState(419); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(428); + setState(418); match(CypherParser::SP); } - setState(431); + setState(421); match(CypherParser::T__2); - setState(433); + setState(423); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(432); + setState(422); match(CypherParser::SP); } - setState(435); + setState(425); oC_SchemaName(); } - setState(440); + setState(430); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); } - setState(442); + setState(432); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(441); + setState(431); match(CypherParser::SP); } - setState(444); + setState(434); match(CypherParser::T__3); } @@ -2090,65 +2048,65 @@ CypherParser::KU_ScanSourceContext* CypherParser::kU_ScanSource() { exitRule(); }); try { - setState(465); + setState(455); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(446); + setState(436); kU_FilePaths(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(447); + setState(437); match(CypherParser::T__1); - setState(449); + setState(439); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(448); + setState(438); match(CypherParser::SP); } - setState(451); + setState(441); oC_Query(); - setState(453); + setState(443); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(452); + setState(442); match(CypherParser::SP); } - setState(455); + setState(445); match(CypherParser::T__3); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(457); + setState(447); oC_Variable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(458); + setState(448); oC_Variable(); - setState(459); + setState(449); match(CypherParser::T__4); - setState(461); + setState(451); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(460); + setState(450); match(CypherParser::SP); } - setState(463); + setState(453); oC_SchemaName(); break; } @@ -2229,67 +2187,67 @@ CypherParser::KU_CopyFromByColumnContext* CypherParser::kU_CopyFromByColumn() { }); try { enterOuterAlt(_localctx, 1); - setState(467); + setState(457); match(CypherParser::COPY); - setState(468); + setState(458); match(CypherParser::SP); - setState(469); + setState(459); oC_SchemaName(); - setState(470); + setState(460); match(CypherParser::SP); - setState(471); + setState(461); match(CypherParser::FROM); - setState(472); + setState(462); match(CypherParser::SP); - setState(473); + setState(463); match(CypherParser::T__1); - setState(475); + setState(465); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(474); + setState(464); match(CypherParser::SP); } - setState(477); + setState(467); match(CypherParser::StringLiteral); - setState(488); + setState(478); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(479); + setState(469); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(478); + setState(468); match(CypherParser::SP); } - setState(481); + setState(471); match(CypherParser::T__2); - setState(483); + setState(473); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(482); + setState(472); match(CypherParser::SP); } - setState(485); + setState(475); match(CypherParser::StringLiteral); - setState(490); + setState(480); _errHandler->sync(this); _la = _input->LA(1); } - setState(491); + setState(481); match(CypherParser::T__3); - setState(492); + setState(482); match(CypherParser::SP); - setState(493); + setState(483); match(CypherParser::BY); - setState(494); + setState(484); match(CypherParser::SP); - setState(495); + setState(485); match(CypherParser::COLUMN); } @@ -2356,54 +2314,54 @@ CypherParser::KU_CopyTOContext* CypherParser::kU_CopyTO() { }); try { enterOuterAlt(_localctx, 1); - setState(497); + setState(487); match(CypherParser::COPY); - setState(498); + setState(488); match(CypherParser::SP); - setState(499); + setState(489); match(CypherParser::T__1); - setState(501); + setState(491); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(500); + setState(490); match(CypherParser::SP); } - setState(503); + setState(493); oC_Query(); - setState(505); + setState(495); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(504); + setState(494); match(CypherParser::SP); } - setState(507); + setState(497); match(CypherParser::T__3); - setState(508); + setState(498); match(CypherParser::SP); - setState(509); + setState(499); match(CypherParser::TO); - setState(510); + setState(500); match(CypherParser::SP); - setState(511); + setState(501); match(CypherParser::StringLiteral); - setState(516); + setState(506); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) { case 1: { - setState(513); + setState(503); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(512); + setState(502); match(CypherParser::SP); } - setState(515); + setState(505); kU_ParsingOptions(); break; } @@ -2472,30 +2430,30 @@ CypherParser::KU_ExportDatabaseContext* CypherParser::kU_ExportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(518); + setState(508); match(CypherParser::EXPORT); - setState(519); + setState(509); match(CypherParser::SP); - setState(520); + setState(510); match(CypherParser::DATABASE); - setState(521); + setState(511); match(CypherParser::SP); - setState(522); + setState(512); match(CypherParser::StringLiteral); - setState(527); + setState(517); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 32, _ctx)) { case 1: { - setState(524); + setState(514); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(523); + setState(513); match(CypherParser::SP); } - setState(526); + setState(516); kU_ParsingOptions(); break; } @@ -2559,15 +2517,15 @@ CypherParser::KU_ImportDatabaseContext* CypherParser::kU_ImportDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(529); + setState(519); match(CypherParser::IMPORT); - setState(530); + setState(520); match(CypherParser::SP); - setState(531); + setState(521); match(CypherParser::DATABASE); - setState(532); + setState(522); match(CypherParser::SP); - setState(533); + setState(523); match(CypherParser::StringLiteral); } @@ -2642,24 +2600,24 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(535); + setState(525); match(CypherParser::ATTACH); - setState(536); + setState(526); match(CypherParser::SP); - setState(537); + setState(527); match(CypherParser::StringLiteral); - setState(542); + setState(532); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 33, _ctx)) { case 1: { - setState(538); + setState(528); match(CypherParser::SP); - setState(539); + setState(529); match(CypherParser::AS); - setState(540); + setState(530); match(CypherParser::SP); - setState(541); + setState(531); oC_SchemaName(); break; } @@ -2667,48 +2625,48 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { default: break; } - setState(544); + setState(534); match(CypherParser::SP); - setState(545); + setState(535); match(CypherParser::T__1); - setState(547); + setState(537); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(546); + setState(536); match(CypherParser::SP); } - setState(549); + setState(539); match(CypherParser::DBTYPE); - setState(550); + setState(540); match(CypherParser::SP); - setState(551); + setState(541); oC_SymbolicName(); - setState(560); + setState(550); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) { case 1: { - setState(553); + setState(543); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(552); + setState(542); match(CypherParser::SP); } - setState(555); + setState(545); match(CypherParser::T__2); - setState(557); + setState(547); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(556); + setState(546); match(CypherParser::SP); } - setState(559); + setState(549); kU_Options(); break; } @@ -2716,15 +2674,15 @@ CypherParser::KU_AttachDatabaseContext* CypherParser::kU_AttachDatabase() { default: break; } - setState(563); + setState(553); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(562); + setState(552); match(CypherParser::SP); } - setState(565); + setState(555); match(CypherParser::T__3); } @@ -2778,46 +2736,46 @@ CypherParser::KU_OptionContext* CypherParser::kU_Option() { exitRule(); }); try { - setState(586); + setState(576); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(567); + setState(557); oC_SymbolicName(); - setState(581); + setState(571); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 42, _ctx)) { case 1: { - setState(569); + setState(559); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(568); + setState(558); match(CypherParser::SP); } - setState(571); + setState(561); match(CypherParser::T__5); - setState(573); + setState(563); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(572); + setState(562); match(CypherParser::SP); } break; } case 2: { - setState(578); + setState(568); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::SP) { - setState(575); + setState(565); match(CypherParser::SP); - setState(580); + setState(570); _errHandler->sync(this); _la = _input->LA(1); } @@ -2827,14 +2785,14 @@ CypherParser::KU_OptionContext* CypherParser::kU_Option() { default: break; } - setState(583); + setState(573); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(585); + setState(575); oC_SymbolicName(); break; } @@ -2896,35 +2854,35 @@ CypherParser::KU_OptionsContext* CypherParser::kU_Options() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(588); + setState(578); kU_Option(); - setState(599); + setState(589); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(590); + setState(580); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(589); + setState(579); match(CypherParser::SP); } - setState(592); + setState(582); match(CypherParser::T__2); - setState(594); + setState(584); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(593); + setState(583); match(CypherParser::SP); } - setState(596); + setState(586); kU_Option(); } - setState(601); + setState(591); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); } @@ -2976,11 +2934,11 @@ CypherParser::KU_DetachDatabaseContext* CypherParser::kU_DetachDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(602); + setState(592); match(CypherParser::DETACH); - setState(603); + setState(593); match(CypherParser::SP); - setState(604); + setState(594); oC_SchemaName(); } @@ -3030,11 +2988,11 @@ CypherParser::KU_UseDatabaseContext* CypherParser::kU_UseDatabase() { }); try { enterOuterAlt(_localctx, 1); - setState(606); + setState(596); match(CypherParser::USE); - setState(607); + setState(597); match(CypherParser::SP); - setState(608); + setState(598); oC_SchemaName(); } @@ -3096,47 +3054,47 @@ CypherParser::KU_StandaloneCallContext* CypherParser::kU_StandaloneCall() { exitRule(); }); try { - setState(625); + setState(615); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(610); + setState(600); match(CypherParser::CALL); - setState(611); + setState(601); match(CypherParser::SP); - setState(612); + setState(602); oC_SymbolicName(); - setState(614); + setState(604); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(613); + setState(603); match(CypherParser::SP); } - setState(616); + setState(606); match(CypherParser::T__5); - setState(618); + setState(608); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(617); + setState(607); match(CypherParser::SP); } - setState(620); + setState(610); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(622); + setState(612); match(CypherParser::CALL); - setState(623); + setState(613); match(CypherParser::SP); - setState(624); + setState(614); oC_FunctionInvocation(); break; } @@ -3212,27 +3170,27 @@ CypherParser::KU_CommentOnContext* CypherParser::kU_CommentOn() { }); try { enterOuterAlt(_localctx, 1); - setState(627); + setState(617); match(CypherParser::COMMENT); - setState(628); + setState(618); match(CypherParser::SP); - setState(629); + setState(619); match(CypherParser::ON); - setState(630); + setState(620); match(CypherParser::SP); - setState(631); + setState(621); match(CypherParser::TABLE); - setState(632); + setState(622); match(CypherParser::SP); - setState(633); + setState(623); oC_SchemaName(); - setState(634); + setState(624); match(CypherParser::SP); - setState(635); + setState(625); match(CypherParser::IS); - setState(636); + setState(626); match(CypherParser::SP); - setState(637); + setState(627); match(CypherParser::StringLiteral); } @@ -3312,32 +3270,32 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(639); + setState(629); match(CypherParser::CREATE); - setState(640); + setState(630); match(CypherParser::SP); - setState(641); + setState(631); match(CypherParser::MACRO); - setState(642); + setState(632); match(CypherParser::SP); - setState(643); + setState(633); oC_FunctionName(); - setState(645); + setState(635); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(644); + setState(634); match(CypherParser::SP); } - setState(647); + setState(637); match(CypherParser::T__1); - setState(649); + setState(639); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 51, _ctx)) { case 1: { - setState(648); + setState(638); match(CypherParser::SP); break; } @@ -3345,12 +3303,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(652); + setState(642); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 52, _ctx)) { case 1: { - setState(651); + setState(641); kU_PositionalArgs(); break; } @@ -3358,12 +3316,12 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(655); + setState(645); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 53, _ctx)) { case 1: { - setState(654); + setState(644); match(CypherParser::SP); break; } @@ -3371,63 +3329,63 @@ CypherParser::KU_CreateMacroContext* CypherParser::kU_CreateMacro() { default: break; } - setState(658); + setState(648); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & -4761777667909507179) != 0) || ((((_la - 112) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 112)) & 1297602465103738881) != 0)) { - setState(657); + setState(647); kU_DefaultArg(); } - setState(670); + setState(660); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(661); + setState(651); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(660); + setState(650); match(CypherParser::SP); } - setState(663); + setState(653); match(CypherParser::T__2); - setState(665); + setState(655); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(664); + setState(654); match(CypherParser::SP); } - setState(667); + setState(657); kU_DefaultArg(); } - setState(672); + setState(662); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); } - setState(674); + setState(664); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(673); + setState(663); match(CypherParser::SP); } - setState(676); + setState(666); match(CypherParser::T__3); - setState(677); + setState(667); match(CypherParser::SP); - setState(678); + setState(668); match(CypherParser::AS); - setState(679); + setState(669); match(CypherParser::SP); - setState(680); + setState(670); oC_Expression(); } @@ -3483,35 +3441,35 @@ CypherParser::KU_PositionalArgsContext* CypherParser::kU_PositionalArgs() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(682); + setState(672); oC_SymbolicName(); - setState(693); + setState(683); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(684); + setState(674); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(683); + setState(673); match(CypherParser::SP); } - setState(686); + setState(676); match(CypherParser::T__2); - setState(688); + setState(678); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(687); + setState(677); match(CypherParser::SP); } - setState(690); + setState(680); oC_SymbolicName(); } - setState(695); + setState(685); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); } @@ -3572,29 +3530,29 @@ CypherParser::KU_DefaultArgContext* CypherParser::kU_DefaultArg() { }); try { enterOuterAlt(_localctx, 1); - setState(696); + setState(686); oC_SymbolicName(); - setState(698); + setState(688); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(697); + setState(687); match(CypherParser::SP); } - setState(700); + setState(690); match(CypherParser::COLON); - setState(701); + setState(691); match(CypherParser::T__5); - setState(703); + setState(693); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(702); + setState(692); match(CypherParser::SP); } - setState(705); + setState(695); oC_Literal(); } @@ -3652,96 +3610,96 @@ CypherParser::KU_FilePathsContext* CypherParser::kU_FilePaths() { exitRule(); }); try { - setState(740); + setState(730); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__6: { enterOuterAlt(_localctx, 1); - setState(707); + setState(697); match(CypherParser::T__6); - setState(709); + setState(699); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(708); + setState(698); match(CypherParser::SP); } - setState(711); + setState(701); match(CypherParser::StringLiteral); - setState(722); + setState(712); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2 || _la == CypherParser::SP) { - setState(713); + setState(703); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(712); + setState(702); match(CypherParser::SP); } - setState(715); + setState(705); match(CypherParser::T__2); - setState(717); + setState(707); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(716); + setState(706); match(CypherParser::SP); } - setState(719); + setState(709); match(CypherParser::StringLiteral); - setState(724); + setState(714); _errHandler->sync(this); _la = _input->LA(1); } - setState(725); + setState(715); match(CypherParser::T__7); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(726); + setState(716); match(CypherParser::StringLiteral); break; } case CypherParser::GLOB: { enterOuterAlt(_localctx, 3); - setState(727); + setState(717); match(CypherParser::GLOB); - setState(729); + setState(719); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(728); + setState(718); match(CypherParser::SP); } - setState(731); + setState(721); match(CypherParser::T__1); - setState(733); + setState(723); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(732); + setState(722); match(CypherParser::SP); } - setState(735); + setState(725); match(CypherParser::StringLiteral); - setState(737); + setState(727); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(736); + setState(726); match(CypherParser::SP); } - setState(739); + setState(729); match(CypherParser::T__3); break; } @@ -3798,27 +3756,27 @@ CypherParser::KU_ParsingOptionsContext* CypherParser::kU_ParsingOptions() { }); try { enterOuterAlt(_localctx, 1); - setState(742); + setState(732); match(CypherParser::T__1); - setState(744); + setState(734); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(743); + setState(733); match(CypherParser::SP); } - setState(746); + setState(736); kU_Options(); - setState(748); + setState(738); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(747); + setState(737); match(CypherParser::SP); } - setState(750); + setState(740); match(CypherParser::T__3); } @@ -3876,15 +3834,15 @@ CypherParser::KU_IfNotExistsContext* CypherParser::kU_IfNotExists() { }); try { enterOuterAlt(_localctx, 1); - setState(752); + setState(742); match(CypherParser::IF); - setState(753); + setState(743); match(CypherParser::SP); - setState(754); + setState(744); match(CypherParser::NOT); - setState(755); + setState(745); match(CypherParser::SP); - setState(756); + setState(746); match(CypherParser::EXISTS); } @@ -3959,26 +3917,26 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { }); try { enterOuterAlt(_localctx, 1); - setState(758); + setState(748); match(CypherParser::CREATE); - setState(759); + setState(749); match(CypherParser::SP); - setState(760); + setState(750); match(CypherParser::NODE); - setState(761); + setState(751); match(CypherParser::SP); - setState(762); + setState(752); match(CypherParser::TABLE); - setState(763); + setState(753); match(CypherParser::SP); - setState(767); + setState(757); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 74, _ctx)) { case 1: { - setState(764); + setState(754); kU_IfNotExists(); - setState(765); + setState(755); match(CypherParser::SP); break; } @@ -3986,34 +3944,34 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { default: break; } - setState(769); + setState(759); oC_SchemaName(); - setState(771); + setState(761); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(770); + setState(760); match(CypherParser::SP); } - setState(773); + setState(763); match(CypherParser::T__1); - setState(775); + setState(765); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(774); + setState(764); match(CypherParser::SP); } - setState(777); + setState(767); kU_PropertyDefinitions(); - setState(779); + setState(769); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 77, _ctx)) { case 1: { - setState(778); + setState(768); match(CypherParser::SP); break; } @@ -4021,33 +3979,33 @@ CypherParser::KU_CreateNodeTableContext* CypherParser::kU_CreateNodeTable() { default: break; } - setState(786); + setState(776); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(781); + setState(771); match(CypherParser::T__2); - setState(783); + setState(773); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(782); + setState(772); match(CypherParser::SP); } - setState(785); + setState(775); kU_CreateNodeConstraint(); } - setState(789); + setState(779); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(788); + setState(778); match(CypherParser::SP); } - setState(791); + setState(781); match(CypherParser::T__3); } @@ -4126,26 +4084,26 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { }); try { enterOuterAlt(_localctx, 1); - setState(793); + setState(783); match(CypherParser::CREATE); - setState(794); + setState(784); match(CypherParser::SP); - setState(795); + setState(785); match(CypherParser::REL); - setState(796); + setState(786); match(CypherParser::SP); - setState(797); + setState(787); match(CypherParser::TABLE); - setState(798); + setState(788); match(CypherParser::SP); - setState(802); + setState(792); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 81, _ctx)) { case 1: { - setState(799); + setState(789); kU_IfNotExists(); - setState(800); + setState(790); match(CypherParser::SP); break; } @@ -4153,59 +4111,59 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { default: break; } - setState(804); + setState(794); oC_SchemaName(); - setState(806); + setState(796); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(805); + setState(795); match(CypherParser::SP); } - setState(808); + setState(798); match(CypherParser::T__1); - setState(810); + setState(800); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(809); + setState(799); match(CypherParser::SP); } - setState(812); + setState(802); kU_RelTableConnection(); - setState(814); + setState(804); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(813); + setState(803); match(CypherParser::SP); } - setState(824); + setState(814); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) { case 1: { - setState(816); + setState(806); match(CypherParser::T__2); - setState(818); + setState(808); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(817); + setState(807); match(CypherParser::SP); } - setState(820); + setState(810); kU_PropertyDefinitions(); - setState(822); + setState(812); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(821); + setState(811); match(CypherParser::SP); } break; @@ -4214,33 +4172,33 @@ CypherParser::KU_CreateRelTableContext* CypherParser::kU_CreateRelTable() { default: break; } - setState(834); + setState(824); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(826); + setState(816); match(CypherParser::T__2); - setState(828); + setState(818); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(827); + setState(817); match(CypherParser::SP); } - setState(830); + setState(820); oC_SymbolicName(); - setState(832); + setState(822); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(831); + setState(821); match(CypherParser::SP); } } - setState(836); + setState(826); match(CypherParser::T__3); } @@ -4328,30 +4286,30 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou try { size_t alt; enterOuterAlt(_localctx, 1); - setState(838); + setState(828); match(CypherParser::CREATE); - setState(839); + setState(829); match(CypherParser::SP); - setState(840); + setState(830); match(CypherParser::REL); - setState(841); + setState(831); match(CypherParser::SP); - setState(842); + setState(832); match(CypherParser::TABLE); - setState(843); + setState(833); match(CypherParser::SP); - setState(844); + setState(834); match(CypherParser::GROUP); - setState(845); + setState(835); match(CypherParser::SP); - setState(849); + setState(839); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 91, _ctx)) { case 1: { - setState(846); + setState(836); kU_IfNotExists(); - setState(847); + setState(837); match(CypherParser::SP); break; } @@ -4359,53 +4317,53 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: break; } - setState(851); + setState(841); oC_SchemaName(); - setState(853); + setState(843); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(852); + setState(842); match(CypherParser::SP); } - setState(855); + setState(845); match(CypherParser::T__1); - setState(857); + setState(847); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(856); + setState(846); match(CypherParser::SP); } - setState(859); + setState(849); kU_RelTableConnection(); - setState(868); + setState(858); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(861); + setState(851); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(860); + setState(850); match(CypherParser::SP); } - setState(863); + setState(853); match(CypherParser::T__2); - setState(865); + setState(855); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(864); + setState(854); match(CypherParser::SP); } - setState(867); + setState(857); kU_RelTableConnection(); break; } @@ -4413,41 +4371,41 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: throw NoViableAltException(this); } - setState(870); + setState(860); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 96, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(873); + setState(863); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(872); + setState(862); match(CypherParser::SP); } - setState(883); + setState(873); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 100, _ctx)) { case 1: { - setState(875); + setState(865); match(CypherParser::T__2); - setState(877); + setState(867); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(876); + setState(866); match(CypherParser::SP); } - setState(879); + setState(869); kU_PropertyDefinitions(); - setState(881); + setState(871); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(880); + setState(870); match(CypherParser::SP); } break; @@ -4456,33 +4414,33 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou default: break; } - setState(893); + setState(883); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__2) { - setState(885); + setState(875); match(CypherParser::T__2); - setState(887); + setState(877); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(886); + setState(876); match(CypherParser::SP); } - setState(889); + setState(879); oC_SymbolicName(); - setState(891); + setState(881); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(890); + setState(880); match(CypherParser::SP); } } - setState(895); + setState(885); match(CypherParser::T__3); } @@ -4544,19 +4502,19 @@ CypherParser::KU_RelTableConnectionContext* CypherParser::kU_RelTableConnection( }); try { enterOuterAlt(_localctx, 1); - setState(897); + setState(887); match(CypherParser::FROM); - setState(898); + setState(888); match(CypherParser::SP); - setState(899); + setState(889); oC_SchemaName(); - setState(900); + setState(890); match(CypherParser::SP); - setState(901); + setState(891); match(CypherParser::TO); - setState(902); + setState(892); match(CypherParser::SP); - setState(903); + setState(893); oC_SchemaName(); } @@ -4627,22 +4585,22 @@ CypherParser::KU_CreateSequenceContext* CypherParser::kU_CreateSequence() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(905); + setState(895); match(CypherParser::CREATE); - setState(906); + setState(896); match(CypherParser::SP); - setState(907); + setState(897); match(CypherParser::SEQUENCE); - setState(908); + setState(898); match(CypherParser::SP); - setState(912); + setState(902); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 104, _ctx)) { case 1: { - setState(909); + setState(899); kU_IfNotExists(); - setState(910); + setState(900); match(CypherParser::SP); break; } @@ -4650,19 +4608,19 @@ CypherParser::KU_CreateSequenceContext* CypherParser::kU_CreateSequence() { default: break; } - setState(914); + setState(904); oC_SchemaName(); - setState(919); + setState(909); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 105, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(915); + setState(905); match(CypherParser::SP); - setState(916); + setState(906); kU_SequenceOptions(); } - setState(921); + setState(911); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 105, _ctx); } @@ -4730,30 +4688,30 @@ CypherParser::KU_CreateTypeContext* CypherParser::kU_CreateType() { }); try { enterOuterAlt(_localctx, 1); - setState(922); + setState(912); match(CypherParser::CREATE); - setState(923); + setState(913); match(CypherParser::SP); - setState(924); + setState(914); match(CypherParser::TYPE); - setState(925); + setState(915); match(CypherParser::SP); - setState(926); + setState(916); oC_SchemaName(); - setState(927); + setState(917); match(CypherParser::SP); - setState(928); + setState(918); match(CypherParser::AS); - setState(929); + setState(919); match(CypherParser::SP); - setState(930); + setState(920); kU_DataType(0); - setState(932); + setState(922); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) { case 1: { - setState(931); + setState(921); match(CypherParser::SP); break; } @@ -4816,40 +4774,40 @@ CypherParser::KU_SequenceOptionsContext* CypherParser::kU_SequenceOptions() { exitRule(); }); try { - setState(939); + setState(929); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 107, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(934); + setState(924); kU_IncrementBy(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(935); + setState(925); kU_MinValue(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(936); + setState(926); kU_MaxValue(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(937); + setState(927); kU_StartWith(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(938); + setState(928); kU_Cycle(); break; } @@ -4918,29 +4876,29 @@ CypherParser::KU_IncrementByContext* CypherParser::kU_IncrementBy() { }); try { enterOuterAlt(_localctx, 1); - setState(941); + setState(931); match(CypherParser::INCREMENT); - setState(942); + setState(932); match(CypherParser::SP); - setState(945); + setState(935); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::BY) { - setState(943); + setState(933); match(CypherParser::BY); - setState(944); + setState(934); match(CypherParser::SP); } - setState(948); + setState(938); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(947); + setState(937); match(CypherParser::MINUS); } - setState(950); + setState(940); oC_IntegerLiteral(); } @@ -4998,35 +4956,35 @@ CypherParser::KU_MinValueContext* CypherParser::kU_MinValue() { exitRule(); }); try { - setState(961); + setState(951); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(952); + setState(942); match(CypherParser::NO); - setState(953); + setState(943); match(CypherParser::SP); - setState(954); + setState(944); match(CypherParser::MINVALUE); break; } case CypherParser::MINVALUE: { enterOuterAlt(_localctx, 2); - setState(955); + setState(945); match(CypherParser::MINVALUE); - setState(956); + setState(946); match(CypherParser::SP); - setState(958); + setState(948); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(957); + setState(947); match(CypherParser::MINUS); } - setState(960); + setState(950); oC_IntegerLiteral(); break; } @@ -5090,35 +5048,35 @@ CypherParser::KU_MaxValueContext* CypherParser::kU_MaxValue() { exitRule(); }); try { - setState(972); + setState(962); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::NO: { enterOuterAlt(_localctx, 1); - setState(963); + setState(953); match(CypherParser::NO); - setState(964); + setState(954); match(CypherParser::SP); - setState(965); + setState(955); match(CypherParser::MAXVALUE); break; } case CypherParser::MAXVALUE: { enterOuterAlt(_localctx, 2); - setState(966); + setState(956); match(CypherParser::MAXVALUE); - setState(967); + setState(957); match(CypherParser::SP); - setState(969); + setState(959); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(968); + setState(958); match(CypherParser::MINUS); } - setState(971); + setState(961); oC_IntegerLiteral(); break; } @@ -5187,29 +5145,29 @@ CypherParser::KU_StartWithContext* CypherParser::kU_StartWith() { }); try { enterOuterAlt(_localctx, 1); - setState(974); + setState(964); match(CypherParser::START); - setState(975); + setState(965); match(CypherParser::SP); - setState(978); + setState(968); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::WITH) { - setState(976); + setState(966); match(CypherParser::WITH); - setState(977); + setState(967); match(CypherParser::SP); } - setState(981); + setState(971); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::MINUS) { - setState(980); + setState(970); match(CypherParser::MINUS); } - setState(983); + setState(973); oC_IntegerLiteral(); } @@ -5260,17 +5218,17 @@ CypherParser::KU_CycleContext* CypherParser::kU_Cycle() { }); try { enterOuterAlt(_localctx, 1); - setState(987); + setState(977); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::NO) { - setState(985); + setState(975); match(CypherParser::NO); - setState(986); + setState(976); match(CypherParser::SP); } - setState(989); + setState(979); match(CypherParser::CYCLE); } @@ -5320,11 +5278,11 @@ CypherParser::KU_IfExistsContext* CypherParser::kU_IfExists() { }); try { enterOuterAlt(_localctx, 1); - setState(991); + setState(981); match(CypherParser::IF); - setState(992); + setState(982); match(CypherParser::SP); - setState(993); + setState(983); match(CypherParser::EXISTS); } @@ -5391,11 +5349,11 @@ CypherParser::KU_DropContext* CypherParser::kU_Drop() { }); try { enterOuterAlt(_localctx, 1); - setState(995); + setState(985); match(CypherParser::DROP); - setState(996); + setState(986); match(CypherParser::SP); - setState(997); + setState(987); _la = _input->LA(1); if (!(_la == CypherParser::SEQUENCE @@ -5406,16 +5364,16 @@ CypherParser::KU_DropContext* CypherParser::kU_Drop() { _errHandler->reportMatch(this); consume(); } - setState(998); + setState(988); match(CypherParser::SP); - setState(1002); + setState(992); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 117, _ctx)) { case 1: { - setState(999); + setState(989); kU_IfExists(); - setState(1000); + setState(990); match(CypherParser::SP); break; } @@ -5423,7 +5381,7 @@ CypherParser::KU_DropContext* CypherParser::kU_Drop() { default: break; } - setState(1004); + setState(994); oC_SchemaName(); } @@ -5485,19 +5443,19 @@ CypherParser::KU_AlterTableContext* CypherParser::kU_AlterTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1006); + setState(996); match(CypherParser::ALTER); - setState(1007); + setState(997); match(CypherParser::SP); - setState(1008); + setState(998); match(CypherParser::TABLE); - setState(1009); + setState(999); match(CypherParser::SP); - setState(1010); + setState(1000); oC_SchemaName(); - setState(1011); + setState(1001); match(CypherParser::SP); - setState(1012); + setState(1002); kU_AlterOptions(); } @@ -5550,33 +5508,33 @@ CypherParser::KU_AlterOptionsContext* CypherParser::kU_AlterOptions() { exitRule(); }); try { - setState(1018); + setState(1008); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 118, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1014); + setState(1004); kU_AddProperty(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1015); + setState(1005); kU_DropProperty(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1016); + setState(1006); kU_RenameTable(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1017); + setState(1007); kU_RenameProperty(); break; } @@ -5648,18 +5606,18 @@ CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1020); + setState(1010); match(CypherParser::ADD); - setState(1021); + setState(1011); match(CypherParser::SP); - setState(1025); + setState(1015); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 119, _ctx)) { case 1: { - setState(1022); + setState(1012); kU_IfNotExists(); - setState(1023); + setState(1013); match(CypherParser::SP); break; } @@ -5667,20 +5625,20 @@ CypherParser::KU_AddPropertyContext* CypherParser::kU_AddProperty() { default: break; } - setState(1027); + setState(1017); oC_PropertyKeyName(); - setState(1028); + setState(1018); match(CypherParser::SP); - setState(1029); + setState(1019); kU_DataType(0); - setState(1032); + setState(1022); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 120, _ctx)) { case 1: { - setState(1030); + setState(1020); match(CypherParser::SP); - setState(1031); + setState(1021); kU_Default(); break; } @@ -5736,11 +5694,11 @@ CypherParser::KU_DefaultContext* CypherParser::kU_Default() { }); try { enterOuterAlt(_localctx, 1); - setState(1034); + setState(1024); match(CypherParser::DEFAULT); - setState(1035); + setState(1025); match(CypherParser::SP); - setState(1036); + setState(1026); oC_Expression(); } @@ -5798,18 +5756,18 @@ CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1038); + setState(1028); match(CypherParser::DROP); - setState(1039); + setState(1029); match(CypherParser::SP); - setState(1043); + setState(1033); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 121, _ctx)) { case 1: { - setState(1040); + setState(1030); kU_IfExists(); - setState(1041); + setState(1031); match(CypherParser::SP); break; } @@ -5817,7 +5775,7 @@ CypherParser::KU_DropPropertyContext* CypherParser::kU_DropProperty() { default: break; } - setState(1045); + setState(1035); oC_PropertyKeyName(); } @@ -5875,15 +5833,15 @@ CypherParser::KU_RenameTableContext* CypherParser::kU_RenameTable() { }); try { enterOuterAlt(_localctx, 1); - setState(1047); + setState(1037); match(CypherParser::RENAME); - setState(1048); + setState(1038); match(CypherParser::SP); - setState(1049); + setState(1039); match(CypherParser::TO); - setState(1050); + setState(1040); match(CypherParser::SP); - setState(1051); + setState(1041); oC_SchemaName(); } @@ -5945,19 +5903,19 @@ CypherParser::KU_RenamePropertyContext* CypherParser::kU_RenameProperty() { }); try { enterOuterAlt(_localctx, 1); - setState(1053); + setState(1043); match(CypherParser::RENAME); - setState(1054); + setState(1044); match(CypherParser::SP); - setState(1055); + setState(1045); oC_PropertyKeyName(); - setState(1056); + setState(1046); match(CypherParser::SP); - setState(1057); + setState(1047); match(CypherParser::TO); - setState(1058); + setState(1048); match(CypherParser::SP); - setState(1059); + setState(1049); oC_PropertyKeyName(); } @@ -6013,35 +5971,35 @@ CypherParser::KU_ColumnDefinitionsContext* CypherParser::kU_ColumnDefinitions() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1061); + setState(1051); kU_ColumnDefinition(); - setState(1072); + setState(1062); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 124, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1063); + setState(1053); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1062); + setState(1052); match(CypherParser::SP); } - setState(1065); + setState(1055); match(CypherParser::T__2); - setState(1067); + setState(1057); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1066); + setState(1056); match(CypherParser::SP); } - setState(1069); + setState(1059); kU_ColumnDefinition(); } - setState(1074); + setState(1064); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 124, _ctx); } @@ -6093,11 +6051,11 @@ CypherParser::KU_ColumnDefinitionContext* CypherParser::kU_ColumnDefinition() { }); try { enterOuterAlt(_localctx, 1); - setState(1075); + setState(1065); oC_PropertyKeyName(); - setState(1076); + setState(1066); match(CypherParser::SP); - setState(1077); + setState(1067); kU_DataType(0); } @@ -6153,35 +6111,35 @@ CypherParser::KU_PropertyDefinitionsContext* CypherParser::kU_PropertyDefinition try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1079); + setState(1069); kU_PropertyDefinition(); - setState(1090); + setState(1080); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 127, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1081); + setState(1071); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1080); + setState(1070); match(CypherParser::SP); } - setState(1083); + setState(1073); match(CypherParser::T__2); - setState(1085); + setState(1075); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1084); + setState(1074); match(CypherParser::SP); } - setState(1087); + setState(1077); kU_PropertyDefinition(); } - setState(1092); + setState(1082); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 127, _ctx); } @@ -6245,16 +6203,16 @@ CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition( }); try { enterOuterAlt(_localctx, 1); - setState(1093); + setState(1083); kU_ColumnDefinition(); - setState(1096); + setState(1086); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 128, _ctx)) { case 1: { - setState(1094); + setState(1084); match(CypherParser::SP); - setState(1095); + setState(1085); kU_Default(); break; } @@ -6262,18 +6220,18 @@ CypherParser::KU_PropertyDefinitionContext* CypherParser::kU_PropertyDefinition( default: break; } - setState(1102); + setState(1092); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 129, _ctx)) { case 1: { - setState(1098); + setState(1088); match(CypherParser::SP); - setState(1099); + setState(1089); match(CypherParser::PRIMARY); - setState(1100); + setState(1090); match(CypherParser::SP); - setState(1101); + setState(1091); match(CypherParser::KEY); break; } @@ -6338,41 +6296,41 @@ CypherParser::KU_CreateNodeConstraintContext* CypherParser::kU_CreateNodeConstra }); try { enterOuterAlt(_localctx, 1); - setState(1104); + setState(1094); match(CypherParser::PRIMARY); - setState(1105); + setState(1095); match(CypherParser::SP); - setState(1106); + setState(1096); match(CypherParser::KEY); - setState(1108); + setState(1098); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1107); + setState(1097); match(CypherParser::SP); } - setState(1110); + setState(1100); match(CypherParser::T__1); - setState(1112); + setState(1102); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1111); + setState(1101); match(CypherParser::SP); } - setState(1114); + setState(1104); oC_PropertyKeyName(); - setState(1116); + setState(1106); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1115); + setState(1105); match(CypherParser::SP); } - setState(1118); + setState(1108); match(CypherParser::T__3); } @@ -6467,195 +6425,195 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1194); + setState(1184); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 149, _ctx)) { case 1: { - setState(1121); + setState(1111); oC_SymbolicName(); break; } case 2: { - setState(1122); + setState(1112); match(CypherParser::UNION); - setState(1124); + setState(1114); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1123); + setState(1113); match(CypherParser::SP); } - setState(1126); + setState(1116); match(CypherParser::T__1); - setState(1128); + setState(1118); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1127); + setState(1117); match(CypherParser::SP); } - setState(1130); + setState(1120); kU_ColumnDefinitions(); - setState(1132); + setState(1122); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1131); + setState(1121); match(CypherParser::SP); } - setState(1134); + setState(1124); match(CypherParser::T__3); break; } case 3: { - setState(1136); + setState(1126); oC_SymbolicName(); - setState(1138); + setState(1128); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1137); + setState(1127); match(CypherParser::SP); } - setState(1140); + setState(1130); match(CypherParser::T__1); - setState(1142); + setState(1132); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1141); + setState(1131); match(CypherParser::SP); } - setState(1144); + setState(1134); kU_ColumnDefinitions(); - setState(1146); + setState(1136); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1145); + setState(1135); match(CypherParser::SP); } - setState(1148); + setState(1138); match(CypherParser::T__3); break; } case 4: { - setState(1150); + setState(1140); oC_SymbolicName(); - setState(1152); + setState(1142); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1151); + setState(1141); match(CypherParser::SP); } - setState(1154); + setState(1144); match(CypherParser::T__1); - setState(1156); + setState(1146); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1155); + setState(1145); match(CypherParser::SP); } - setState(1158); + setState(1148); kU_DataType(0); - setState(1160); + setState(1150); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1159); + setState(1149); match(CypherParser::SP); } - setState(1162); + setState(1152); match(CypherParser::T__2); - setState(1164); + setState(1154); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1163); + setState(1153); match(CypherParser::SP); } - setState(1166); + setState(1156); kU_DataType(0); - setState(1168); + setState(1158); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1167); + setState(1157); match(CypherParser::SP); } - setState(1170); + setState(1160); match(CypherParser::T__3); break; } case 5: { - setState(1172); + setState(1162); match(CypherParser::DECIMAL); - setState(1174); + setState(1164); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1173); + setState(1163); match(CypherParser::SP); } - setState(1176); + setState(1166); match(CypherParser::T__1); - setState(1178); + setState(1168); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1177); + setState(1167); match(CypherParser::SP); } - setState(1180); + setState(1170); oC_IntegerLiteral(); - setState(1182); + setState(1172); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1181); + setState(1171); match(CypherParser::SP); } - setState(1184); + setState(1174); match(CypherParser::T__2); - setState(1186); + setState(1176); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1185); + setState(1175); match(CypherParser::SP); } - setState(1188); + setState(1178); oC_IntegerLiteral(); - setState(1190); + setState(1180); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1189); + setState(1179); match(CypherParser::SP); } - setState(1192); + setState(1182); match(CypherParser::T__3); break; } @@ -6664,7 +6622,7 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { break; } _ctx->stop = _input->LT(-1); - setState(1200); + setState(1190); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 150, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { @@ -6674,13 +6632,13 @@ CypherParser::KU_DataTypeContext* CypherParser::kU_DataType(int precedence) { previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_DataType); - setState(1196); + setState(1186); if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(1197); + setState(1187); kU_ListIdentifiers(); } - setState(1202); + setState(1192); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 150, _ctx); } @@ -6727,17 +6685,17 @@ CypherParser::KU_ListIdentifiersContext* CypherParser::kU_ListIdentifiers() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1203); + setState(1193); kU_ListIdentifier(); - setState(1207); + setState(1197); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 151, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1204); + setState(1194); kU_ListIdentifier(); } - setState(1209); + setState(1199); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 151, _ctx); } @@ -6782,17 +6740,17 @@ CypherParser::KU_ListIdentifierContext* CypherParser::kU_ListIdentifier() { }); try { enterOuterAlt(_localctx, 1); - setState(1210); + setState(1200); match(CypherParser::T__6); - setState(1212); + setState(1202); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(1211); + setState(1201); oC_IntegerLiteral(); } - setState(1214); + setState(1204); match(CypherParser::T__7); } @@ -6837,19 +6795,19 @@ CypherParser::OC_AnyCypherOptionContext* CypherParser::oC_AnyCypherOption() { exitRule(); }); try { - setState(1218); + setState(1208); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::EXPLAIN: { enterOuterAlt(_localctx, 1); - setState(1216); + setState(1206); oC_Explain(); break; } case CypherParser::PROFILE: { enterOuterAlt(_localctx, 2); - setState(1217); + setState(1207); oC_Profile(); break; } @@ -6905,16 +6863,16 @@ CypherParser::OC_ExplainContext* CypherParser::oC_Explain() { }); try { enterOuterAlt(_localctx, 1); - setState(1220); + setState(1210); match(CypherParser::EXPLAIN); - setState(1223); + setState(1213); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 154, _ctx)) { case 1: { - setState(1221); + setState(1211); match(CypherParser::SP); - setState(1222); + setState(1212); match(CypherParser::LOGICAL); break; } @@ -6962,7 +6920,7 @@ CypherParser::OC_ProfileContext* CypherParser::oC_Profile() { }); try { enterOuterAlt(_localctx, 1); - setState(1225); + setState(1215); match(CypherParser::PROFILE); } @@ -7035,56 +6993,56 @@ CypherParser::KU_TransactionContext* CypherParser::kU_Transaction() { exitRule(); }); try { - setState(1240); + setState(1230); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 155, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1227); + setState(1217); match(CypherParser::BEGIN); - setState(1228); + setState(1218); match(CypherParser::SP); - setState(1229); + setState(1219); match(CypherParser::TRANSACTION); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1230); + setState(1220); match(CypherParser::BEGIN); - setState(1231); + setState(1221); match(CypherParser::SP); - setState(1232); + setState(1222); match(CypherParser::TRANSACTION); - setState(1233); + setState(1223); match(CypherParser::SP); - setState(1234); + setState(1224); match(CypherParser::READ); - setState(1235); + setState(1225); match(CypherParser::SP); - setState(1236); + setState(1226); match(CypherParser::ONLY); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1237); + setState(1227); match(CypherParser::COMMIT); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(1238); + setState(1228); match(CypherParser::ROLLBACK); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(1239); + setState(1229); match(CypherParser::CHECKPOINT); break; } @@ -7135,19 +7093,19 @@ CypherParser::KU_ExtensionContext* CypherParser::kU_Extension() { exitRule(); }); try { - setState(1244); + setState(1234); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::LOAD: { enterOuterAlt(_localctx, 1); - setState(1242); + setState(1232); kU_LoadExtension(); break; } case CypherParser::INSTALL: { enterOuterAlt(_localctx, 2); - setState(1243); + setState(1233); kU_InstallExtension(); break; } @@ -7215,19 +7173,19 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1246); + setState(1236); match(CypherParser::LOAD); - setState(1247); + setState(1237); match(CypherParser::SP); - setState(1248); + setState(1238); match(CypherParser::EXTENSION); - setState(1249); + setState(1239); match(CypherParser::SP); - setState(1252); + setState(1242); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::StringLiteral: { - setState(1250); + setState(1240); match(CypherParser::StringLiteral); break; } @@ -7286,7 +7244,7 @@ CypherParser::KU_LoadExtensionContext* CypherParser::kU_LoadExtension() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1251); + setState(1241); oC_Variable(); break; } @@ -7342,11 +7300,11 @@ CypherParser::KU_InstallExtensionContext* CypherParser::kU_InstallExtension() { }); try { enterOuterAlt(_localctx, 1); - setState(1254); + setState(1244); match(CypherParser::INSTALL); - setState(1255); + setState(1245); match(CypherParser::SP); - setState(1256); + setState(1246); oC_Variable(); } @@ -7369,14 +7327,6 @@ CypherParser::OC_RegularQueryContext* CypherParser::OC_QueryContext::oC_RegularQ return getRuleContext(0); } -CypherParser::KU_ProjectGraphContext* CypherParser::OC_QueryContext::kU_ProjectGraph() { - return getRuleContext(0); -} - -tree::TerminalNode* CypherParser::OC_QueryContext::SP() { - return getToken(CypherParser::SP, 0); -} - size_t CypherParser::OC_QueryContext::getRuleIndex() const { return CypherParser::RuleOC_Query; @@ -7386,7 +7336,6 @@ size_t CypherParser::OC_QueryContext::getRuleIndex() const { CypherParser::OC_QueryContext* CypherParser::oC_Query() { OC_QueryContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 118, CypherParser::RuleOC_Query); - size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7397,28 +7346,7 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { }); try { enterOuterAlt(_localctx, 1); - setState(1262); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 159, _ctx)) { - case 1: { - setState(1258); - kU_ProjectGraph(); - setState(1260); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1259); - match(CypherParser::SP); - } - break; - } - - default: - break; - } - setState(1264); + setState(1248); oC_RegularQuery(); } @@ -7431,45 +7359,49 @@ CypherParser::OC_QueryContext* CypherParser::oC_Query() { return _localctx; } -//----------------- KU_ProjectGraphContext ------------------------------------------------------------------ +//----------------- OC_RegularQueryContext ------------------------------------------------------------------ -CypherParser::KU_ProjectGraphContext::KU_ProjectGraphContext(ParserRuleContext *parent, size_t invokingState) +CypherParser::OC_RegularQueryContext::OC_RegularQueryContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* CypherParser::KU_ProjectGraphContext::PROJECT() { - return getToken(CypherParser::PROJECT, 0); +CypherParser::OC_SingleQueryContext* CypherParser::OC_RegularQueryContext::oC_SingleQuery() { + return getRuleContext(0); } -std::vector CypherParser::KU_ProjectGraphContext::SP() { - return getTokens(CypherParser::SP); +std::vector CypherParser::OC_RegularQueryContext::oC_Union() { + return getRuleContexts(); } -tree::TerminalNode* CypherParser::KU_ProjectGraphContext::SP(size_t i) { - return getToken(CypherParser::SP, i); +CypherParser::OC_UnionContext* CypherParser::OC_RegularQueryContext::oC_Union(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* CypherParser::KU_ProjectGraphContext::GRAPH() { - return getToken(CypherParser::GRAPH, 0); +std::vector CypherParser::OC_RegularQueryContext::SP() { + return getTokens(CypherParser::SP); } -CypherParser::OC_SchemaNameContext* CypherParser::KU_ProjectGraphContext::oC_SchemaName() { - return getRuleContext(0); +tree::TerminalNode* CypherParser::OC_RegularQueryContext::SP(size_t i) { + return getToken(CypherParser::SP, i); +} + +std::vector CypherParser::OC_RegularQueryContext::oC_Return() { + return getRuleContexts(); } -CypherParser::KU_GraphProjectionTableItemsContext* CypherParser::KU_ProjectGraphContext::kU_GraphProjectionTableItems() { - return getRuleContext(0); +CypherParser::OC_ReturnContext* CypherParser::OC_RegularQueryContext::oC_Return(size_t i) { + return getRuleContext(i); } -size_t CypherParser::KU_ProjectGraphContext::getRuleIndex() const { - return CypherParser::RuleKU_ProjectGraph; +size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { + return CypherParser::RuleOC_RegularQuery; } -CypherParser::KU_ProjectGraphContext* CypherParser::kU_ProjectGraph() { - KU_ProjectGraphContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, CypherParser::RuleKU_ProjectGraph); +CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { + OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 120, CypherParser::RuleOC_RegularQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -7480,244 +7412,53 @@ CypherParser::KU_ProjectGraphContext* CypherParser::kU_ProjectGraph() { exitRule(); }); try { - enterOuterAlt(_localctx, 1); - setState(1266); - match(CypherParser::PROJECT); - setState(1267); - match(CypherParser::SP); - setState(1268); - match(CypherParser::GRAPH); - setState(1269); - match(CypherParser::SP); - setState(1270); - oC_SchemaName(); - setState(1272); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1271); - match(CypherParser::SP); - } - setState(1274); - match(CypherParser::T__1); - setState(1276); + size_t alt; + setState(1271); _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1275); - match(CypherParser::SP); - } - setState(1278); - kU_GraphProjectionTableItems(); - setState(1280); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1279); - match(CypherParser::SP); - } - setState(1282); - match(CypherParser::T__3); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- KU_GraphProjectionTableItemsContext ------------------------------------------------------------------ - -CypherParser::KU_GraphProjectionTableItemsContext::KU_GraphProjectionTableItemsContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector CypherParser::KU_GraphProjectionTableItemsContext::kU_GraphProjectionTableItem() { - return getRuleContexts(); -} - -CypherParser::KU_GraphProjectionTableItemContext* CypherParser::KU_GraphProjectionTableItemsContext::kU_GraphProjectionTableItem(size_t i) { - return getRuleContext(i); -} - -std::vector CypherParser::KU_GraphProjectionTableItemsContext::SP() { - return getTokens(CypherParser::SP); -} - -tree::TerminalNode* CypherParser::KU_GraphProjectionTableItemsContext::SP(size_t i) { - return getToken(CypherParser::SP, i); -} - - -size_t CypherParser::KU_GraphProjectionTableItemsContext::getRuleIndex() const { - return CypherParser::RuleKU_GraphProjectionTableItems; -} - - -CypherParser::KU_GraphProjectionTableItemsContext* CypherParser::kU_GraphProjectionTableItems() { - KU_GraphProjectionTableItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, CypherParser::RuleKU_GraphProjectionTableItems); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(1284); - kU_GraphProjectionTableItem(); - setState(1295); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 165, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(1286); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1285); - match(CypherParser::SP); - } - setState(1288); - match(CypherParser::T__2); - setState(1290); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1289); - match(CypherParser::SP); - } - setState(1292); - kU_GraphProjectionTableItem(); - } - setState(1297); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 165, _ctx); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- OC_RegularQueryContext ------------------------------------------------------------------ - -CypherParser::OC_RegularQueryContext::OC_RegularQueryContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -CypherParser::OC_SingleQueryContext* CypherParser::OC_RegularQueryContext::oC_SingleQuery() { - return getRuleContext(0); -} - -std::vector CypherParser::OC_RegularQueryContext::oC_Union() { - return getRuleContexts(); -} - -CypherParser::OC_UnionContext* CypherParser::OC_RegularQueryContext::oC_Union(size_t i) { - return getRuleContext(i); -} - -std::vector CypherParser::OC_RegularQueryContext::SP() { - return getTokens(CypherParser::SP); -} - -tree::TerminalNode* CypherParser::OC_RegularQueryContext::SP(size_t i) { - return getToken(CypherParser::SP, i); -} - -std::vector CypherParser::OC_RegularQueryContext::oC_Return() { - return getRuleContexts(); -} - -CypherParser::OC_ReturnContext* CypherParser::OC_RegularQueryContext::oC_Return(size_t i) { - return getRuleContext(i); -} - - -size_t CypherParser::OC_RegularQueryContext::getRuleIndex() const { - return CypherParser::RuleOC_RegularQuery; -} - - -CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { - OC_RegularQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, CypherParser::RuleOC_RegularQuery); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - setState(1319); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 170, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(1298); - oC_SingleQuery(); - setState(1305); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(1300); - _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 162, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(1250); + oC_SingleQuery(); + setState(1257); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 159, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(1252); + _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1299); + setState(1251); match(CypherParser::SP); } - setState(1302); + setState(1254); oC_Union(); } - setState(1307); + setState(1259); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 167, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 159, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1312); + setState(1264); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1308); + setState(1260); oC_Return(); - setState(1310); + setState(1262); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1309); + setState(1261); match(CypherParser::SP); } break; @@ -7726,11 +7467,11 @@ CypherParser::OC_RegularQueryContext* CypherParser::oC_RegularQuery() { default: throw NoViableAltException(this); } - setState(1314); + setState(1266); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 169, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 161, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1316); + setState(1268); oC_SingleQuery(); notifyReturnNotAtEnd(_localctx->start); break; @@ -7784,7 +7525,7 @@ size_t CypherParser::OC_UnionContext::getRuleIndex() const { CypherParser::OC_UnionContext* CypherParser::oC_Union() { OC_UnionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, CypherParser::RuleOC_Union); + enterRule(_localctx, 122, CypherParser::RuleOC_Union); size_t _la = 0; #if __cplusplus > 201703L @@ -7795,43 +7536,43 @@ CypherParser::OC_UnionContext* CypherParser::oC_Union() { exitRule(); }); try { - setState(1333); + setState(1285); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 173, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 165, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1321); + setState(1273); match(CypherParser::UNION); - setState(1322); + setState(1274); match(CypherParser::SP); - setState(1323); + setState(1275); match(CypherParser::ALL); - setState(1325); + setState(1277); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1324); + setState(1276); match(CypherParser::SP); } - setState(1327); + setState(1279); oC_SingleQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1328); + setState(1280); match(CypherParser::UNION); - setState(1330); + setState(1282); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1329); + setState(1281); match(CypherParser::SP); } - setState(1332); + setState(1284); oC_SingleQuery(); break; } @@ -7872,7 +7613,7 @@ size_t CypherParser::OC_SingleQueryContext::getRuleIndex() const { CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { OC_SingleQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, CypherParser::RuleOC_SingleQuery); + enterRule(_localctx, 124, CypherParser::RuleOC_SingleQuery); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7882,19 +7623,19 @@ CypherParser::OC_SingleQueryContext* CypherParser::oC_SingleQuery() { exitRule(); }); try { - setState(1337); + setState(1289); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 174, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 166, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1335); + setState(1287); oC_SinglePartQuery(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1336); + setState(1288); oC_MultiPartQuery(); break; } @@ -7955,7 +7696,7 @@ size_t CypherParser::OC_SinglePartQueryContext::getRuleIndex() const { CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { OC_SinglePartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, CypherParser::RuleOC_SinglePartQuery); + enterRule(_localctx, 126, CypherParser::RuleOC_SinglePartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -7967,92 +7708,92 @@ CypherParser::OC_SinglePartQueryContext* CypherParser::oC_SinglePartQuery() { }); try { size_t alt; - setState(1374); + setState(1326); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 183, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 175, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1345); + setState(1297); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 1099512709129) != 0)) { - setState(1339); + ((1ULL << (_la - 103)) & 1099511660553) != 0)) { + setState(1291); oC_ReadingClause(); - setState(1341); + setState(1293); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1340); + setState(1292); match(CypherParser::SP); } - setState(1347); + setState(1299); _errHandler->sync(this); _la = _input->LA(1); } - setState(1348); + setState(1300); oC_Return(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1355); + setState(1307); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 1099512709129) != 0)) { - setState(1349); + ((1ULL << (_la - 103)) & 1099511660553) != 0)) { + setState(1301); oC_ReadingClause(); - setState(1351); + setState(1303); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1350); + setState(1302); match(CypherParser::SP); } - setState(1357); + setState(1309); _errHandler->sync(this); _la = _input->LA(1); } - setState(1358); + setState(1310); oC_UpdatingClause(); - setState(1365); + setState(1317); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 180, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1360); + setState(1312); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1359); + setState(1311); match(CypherParser::SP); } - setState(1362); + setState(1314); oC_UpdatingClause(); } - setState(1367); + setState(1319); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 180, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 172, _ctx); } - setState(1372); + setState(1324); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 182, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 174, _ctx)) { case 1: { - setState(1369); + setState(1321); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1368); + setState(1320); match(CypherParser::SP); } - setState(1371); + setState(1323); oC_Return(); break; } @@ -8111,7 +7852,7 @@ size_t CypherParser::OC_MultiPartQueryContext::getRuleIndex() const { CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { OC_MultiPartQueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, CypherParser::RuleOC_MultiPartQuery); + enterRule(_localctx, 128, CypherParser::RuleOC_MultiPartQuery); size_t _la = 0; #if __cplusplus > 201703L @@ -8124,20 +7865,20 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1380); + setState(1332); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1376); + setState(1328); kU_QueryPart(); - setState(1378); + setState(1330); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1377); + setState(1329); match(CypherParser::SP); } break; @@ -8146,11 +7887,11 @@ CypherParser::OC_MultiPartQueryContext* CypherParser::oC_MultiPartQuery() { default: throw NoViableAltException(this); } - setState(1382); + setState(1334); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 185, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 177, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); - setState(1384); + setState(1336); oC_SinglePartQuery(); } @@ -8205,7 +7946,7 @@ size_t CypherParser::KU_QueryPartContext::getRuleIndex() const { CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { KU_QueryPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, CypherParser::RuleKU_QueryPart); + enterRule(_localctx, 130, CypherParser::RuleKU_QueryPart); size_t _la = 0; #if __cplusplus > 201703L @@ -8217,45 +7958,45 @@ CypherParser::KU_QueryPartContext* CypherParser::kU_QueryPart() { }); try { enterOuterAlt(_localctx, 1); - setState(1392); + setState(1344); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::CALL || ((((_la - 103) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 103)) & 1099512709129) != 0)) { - setState(1386); + ((1ULL << (_la - 103)) & 1099511660553) != 0)) { + setState(1338); oC_ReadingClause(); - setState(1388); + setState(1340); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1387); + setState(1339); match(CypherParser::SP); } - setState(1394); + setState(1346); _errHandler->sync(this); _la = _input->LA(1); } - setState(1401); + setState(1353); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 69) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 69)) & 4611686568183202081) != 0)) { - setState(1395); + setState(1347); oC_UpdatingClause(); - setState(1397); + setState(1349); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1396); + setState(1348); match(CypherParser::SP); } - setState(1403); + setState(1355); _errHandler->sync(this); _la = _input->LA(1); } - setState(1404); + setState(1356); oC_With(); } @@ -8298,7 +8039,7 @@ size_t CypherParser::OC_UpdatingClauseContext::getRuleIndex() const { CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { OC_UpdatingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, CypherParser::RuleOC_UpdatingClause); + enterRule(_localctx, 132, CypherParser::RuleOC_UpdatingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8308,26 +8049,26 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { exitRule(); }); try { - setState(1410); + setState(1362); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::CREATE: { enterOuterAlt(_localctx, 1); - setState(1406); + setState(1358); oC_Create(); break; } case CypherParser::MERGE: { enterOuterAlt(_localctx, 2); - setState(1407); + setState(1359); oC_Merge(); break; } case CypherParser::SET: { enterOuterAlt(_localctx, 3); - setState(1408); + setState(1360); oC_Set(); break; } @@ -8335,7 +8076,7 @@ CypherParser::OC_UpdatingClauseContext* CypherParser::oC_UpdatingClause() { case CypherParser::DELETE: case CypherParser::DETACH: { enterOuterAlt(_localctx, 4); - setState(1409); + setState(1361); oC_Delete(); break; } @@ -8384,7 +8125,7 @@ size_t CypherParser::OC_ReadingClauseContext::getRuleIndex() const { CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { OC_ReadingClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, CypherParser::RuleOC_ReadingClause); + enterRule(_localctx, 134, CypherParser::RuleOC_ReadingClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8394,35 +8135,34 @@ CypherParser::OC_ReadingClauseContext* CypherParser::oC_ReadingClause() { exitRule(); }); try { - setState(1416); + setState(1368); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::MATCH: case CypherParser::OPTIONAL: { enterOuterAlt(_localctx, 1); - setState(1412); + setState(1364); oC_Match(); break; } case CypherParser::UNWIND: { enterOuterAlt(_localctx, 2); - setState(1413); + setState(1365); oC_Unwind(); break; } - case CypherParser::CALL: - case CypherParser::PROJECT: { + case CypherParser::CALL: { enterOuterAlt(_localctx, 3); - setState(1414); + setState(1366); kU_InQueryCall(); break; } case CypherParser::LOAD: { enterOuterAlt(_localctx, 4); - setState(1415); + setState(1367); kU_LoadFrom(); break; } @@ -8495,7 +8235,7 @@ size_t CypherParser::KU_LoadFromContext::getRuleIndex() const { CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { KU_LoadFromContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, CypherParser::RuleKU_LoadFrom); + enterRule(_localctx, 136, CypherParser::RuleKU_LoadFrom); size_t _la = 0; #if __cplusplus > 201703L @@ -8507,50 +8247,50 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { }); try { enterOuterAlt(_localctx, 1); - setState(1418); + setState(1370); match(CypherParser::LOAD); - setState(1436); + setState(1388); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 195, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 187, _ctx)) { case 1: { - setState(1419); + setState(1371); match(CypherParser::SP); - setState(1420); + setState(1372); match(CypherParser::WITH); - setState(1421); + setState(1373); match(CypherParser::SP); - setState(1422); + setState(1374); match(CypherParser::HEADERS); - setState(1424); + setState(1376); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1423); + setState(1375); match(CypherParser::SP); } - setState(1426); + setState(1378); match(CypherParser::T__1); - setState(1428); + setState(1380); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1427); + setState(1379); match(CypherParser::SP); } - setState(1430); + setState(1382); kU_ColumnDefinitions(); - setState(1432); + setState(1384); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1431); + setState(1383); match(CypherParser::SP); } - setState(1434); + setState(1386); match(CypherParser::T__3); break; } @@ -8558,28 +8298,28 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1438); + setState(1390); match(CypherParser::SP); - setState(1439); + setState(1391); match(CypherParser::FROM); - setState(1440); + setState(1392); match(CypherParser::SP); - setState(1441); + setState(1393); kU_ScanSource(); - setState(1446); + setState(1398); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 197, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 189, _ctx)) { case 1: { - setState(1443); + setState(1395); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1442); + setState(1394); match(CypherParser::SP); } - setState(1445); + setState(1397); kU_ParsingOptions(); break; } @@ -8587,20 +8327,20 @@ CypherParser::KU_LoadFromContext* CypherParser::kU_LoadFrom() { default: break; } - setState(1452); + setState(1404); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 199, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 191, _ctx)) { case 1: { - setState(1449); + setState(1401); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1448); + setState(1400); match(CypherParser::SP); } - setState(1451); + setState(1403); oC_Where(); break; } @@ -8641,10 +8381,6 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::KU_InQueryCallContext: return getRuleContext(0); } -CypherParser::KU_ProjectGraphContext* CypherParser::KU_InQueryCallContext::kU_ProjectGraph() { - return getRuleContext(0); -} - CypherParser::OC_WhereContext* CypherParser::KU_InQueryCallContext::oC_Where() { return getRuleContext(0); } @@ -8657,7 +8393,7 @@ size_t CypherParser::KU_InQueryCallContext::getRuleIndex() const { CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { KU_InQueryCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, CypherParser::RuleKU_InQueryCall); + enterRule(_localctx, 138, CypherParser::RuleKU_InQueryCall); size_t _la = 0; #if __cplusplus > 201703L @@ -8669,312 +8405,26 @@ CypherParser::KU_InQueryCallContext* CypherParser::kU_InQueryCall() { }); try { enterOuterAlt(_localctx, 1); - setState(1458); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::PROJECT) { - setState(1454); - kU_ProjectGraph(); - setState(1456); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1455); - match(CypherParser::SP); - } - } - setState(1460); + setState(1406); match(CypherParser::CALL); - setState(1461); + setState(1407); match(CypherParser::SP); - setState(1462); + setState(1408); oC_FunctionInvocation(); - setState(1467); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 203, _ctx)) { - case 1: { - setState(1464); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1463); - match(CypherParser::SP); - } - setState(1466); - oC_Where(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- KU_GraphProjectionTableItemContext ------------------------------------------------------------------ - -CypherParser::KU_GraphProjectionTableItemContext::KU_GraphProjectionTableItemContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -CypherParser::OC_SchemaNameContext* CypherParser::KU_GraphProjectionTableItemContext::oC_SchemaName() { - return getRuleContext(0); -} - -CypherParser::KU_GraphProjectionColumnItemsContext* CypherParser::KU_GraphProjectionTableItemContext::kU_GraphProjectionColumnItems() { - return getRuleContext(0); -} - -std::vector CypherParser::KU_GraphProjectionTableItemContext::SP() { - return getTokens(CypherParser::SP); -} - -tree::TerminalNode* CypherParser::KU_GraphProjectionTableItemContext::SP(size_t i) { - return getToken(CypherParser::SP, i); -} - - -size_t CypherParser::KU_GraphProjectionTableItemContext::getRuleIndex() const { - return CypherParser::RuleKU_GraphProjectionTableItem; -} - - -CypherParser::KU_GraphProjectionTableItemContext* CypherParser::kU_GraphProjectionTableItem() { - KU_GraphProjectionTableItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, CypherParser::RuleKU_GraphProjectionTableItem); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(1469); - oC_SchemaName(); - setState(1483); + setState(1413); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 207, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 193, _ctx)) { case 1: { - setState(1471); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1470); - match(CypherParser::SP); - } - setState(1473); - match(CypherParser::T__8); - setState(1475); + setState(1410); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1474); - match(CypherParser::SP); - } - setState(1477); - kU_GraphProjectionColumnItems(); - setState(1479); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1478); + setState(1409); match(CypherParser::SP); } - setState(1481); - 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; -} - -//----------------- KU_GraphProjectionColumnItemsContext ------------------------------------------------------------------ - -CypherParser::KU_GraphProjectionColumnItemsContext::KU_GraphProjectionColumnItemsContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector CypherParser::KU_GraphProjectionColumnItemsContext::kU_GraphProjectionColumnItem() { - return getRuleContexts(); -} - -CypherParser::KU_GraphProjectionColumnItemContext* CypherParser::KU_GraphProjectionColumnItemsContext::kU_GraphProjectionColumnItem(size_t i) { - return getRuleContext(i); -} - -std::vector CypherParser::KU_GraphProjectionColumnItemsContext::SP() { - return getTokens(CypherParser::SP); -} - -tree::TerminalNode* CypherParser::KU_GraphProjectionColumnItemsContext::SP(size_t i) { - return getToken(CypherParser::SP, i); -} - - -size_t CypherParser::KU_GraphProjectionColumnItemsContext::getRuleIndex() const { - return CypherParser::RuleKU_GraphProjectionColumnItems; -} - - -CypherParser::KU_GraphProjectionColumnItemsContext* CypherParser::kU_GraphProjectionColumnItems() { - KU_GraphProjectionColumnItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, CypherParser::RuleKU_GraphProjectionColumnItems); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(1485); - kU_GraphProjectionColumnItem(); - setState(1496); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 210, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(1487); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1486); - match(CypherParser::SP); - } - setState(1489); - match(CypherParser::T__2); - setState(1491); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == CypherParser::SP) { - setState(1490); - match(CypherParser::SP); - } - setState(1493); - kU_GraphProjectionColumnItem(); - } - setState(1498); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 210, _ctx); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- KU_GraphProjectionColumnItemContext ------------------------------------------------------------------ - -CypherParser::KU_GraphProjectionColumnItemContext::KU_GraphProjectionColumnItemContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -CypherParser::OC_PropertyKeyNameContext* CypherParser::KU_GraphProjectionColumnItemContext::oC_PropertyKeyName() { - return getRuleContext(0); -} - -std::vector CypherParser::KU_GraphProjectionColumnItemContext::SP() { - return getTokens(CypherParser::SP); -} - -tree::TerminalNode* CypherParser::KU_GraphProjectionColumnItemContext::SP(size_t i) { - return getToken(CypherParser::SP, i); -} - -CypherParser::KU_DefaultContext* CypherParser::KU_GraphProjectionColumnItemContext::kU_Default() { - return getRuleContext(0); -} - -CypherParser::OC_WhereContext* CypherParser::KU_GraphProjectionColumnItemContext::oC_Where() { - return getRuleContext(0); -} - - -size_t CypherParser::KU_GraphProjectionColumnItemContext::getRuleIndex() const { - return CypherParser::RuleKU_GraphProjectionColumnItem; -} - - -CypherParser::KU_GraphProjectionColumnItemContext* CypherParser::kU_GraphProjectionColumnItem() { - KU_GraphProjectionColumnItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, CypherParser::RuleKU_GraphProjectionColumnItem); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(1499); - oC_PropertyKeyName(); - setState(1502); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 211, _ctx)) { - case 1: { - setState(1500); - match(CypherParser::SP); - setState(1501); - kU_Default(); - break; - } - - default: - break; - } - setState(1506); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 212, _ctx)) { - case 1: { - setState(1504); - match(CypherParser::SP); - setState(1505); + setState(1412); oC_Where(); break; } @@ -9035,7 +8485,7 @@ size_t CypherParser::OC_MatchContext::getRuleIndex() const { CypherParser::OC_MatchContext* CypherParser::oC_Match() { OC_MatchContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, CypherParser::RuleOC_Match); + enterRule(_localctx, 140, CypherParser::RuleOC_Match); size_t _la = 0; #if __cplusplus > 201703L @@ -9047,36 +8497,36 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { }); try { enterOuterAlt(_localctx, 1); - setState(1510); + setState(1417); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::OPTIONAL) { - setState(1508); + setState(1415); match(CypherParser::OPTIONAL); - setState(1509); + setState(1416); match(CypherParser::SP); } - setState(1512); + setState(1419); match(CypherParser::MATCH); - setState(1514); + setState(1421); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1513); + setState(1420); match(CypherParser::SP); } - setState(1516); + setState(1423); oC_Pattern(); - setState(1519); + setState(1426); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 215, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 196, _ctx)) { case 1: { - setState(1517); + setState(1424); match(CypherParser::SP); - setState(1518); + setState(1425); oC_Where(); break; } @@ -9084,14 +8534,14 @@ CypherParser::OC_MatchContext* CypherParser::oC_Match() { default: break; } - setState(1523); + setState(1430); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 216, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 197, _ctx)) { case 1: { - setState(1521); + setState(1428); match(CypherParser::SP); - setState(1522); + setState(1429); kU_Hint(); break; } @@ -9136,7 +8586,7 @@ size_t CypherParser::KU_HintContext::getRuleIndex() const { CypherParser::KU_HintContext* CypherParser::kU_Hint() { KU_HintContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, CypherParser::RuleKU_Hint); + enterRule(_localctx, 142, CypherParser::RuleKU_Hint); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9147,11 +8597,11 @@ CypherParser::KU_HintContext* CypherParser::kU_Hint() { }); try { enterOuterAlt(_localctx, 1); - setState(1525); + setState(1432); match(CypherParser::HINT); - setState(1526); + setState(1433); match(CypherParser::SP); - setState(1527); + setState(1434); kU_JoinNode(0); } @@ -9223,8 +8673,8 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { CypherParser::KU_JoinNodeContext *_localctx = _tracker.createInstance(_ctx, parentState); CypherParser::KU_JoinNodeContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 154; - enterRecursionRule(_localctx, 154, CypherParser::RuleKU_JoinNode, precedence); + size_t startState = 144; + enterRecursionRule(_localctx, 144, CypherParser::RuleKU_JoinNode, precedence); size_t _la = 0; @@ -9238,31 +8688,31 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1541); + setState(1448); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::T__1: { - setState(1530); + setState(1437); match(CypherParser::T__1); - setState(1532); + setState(1439); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1531); + setState(1438); match(CypherParser::SP); } - setState(1534); + setState(1441); kU_JoinNode(0); - setState(1536); + setState(1443); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1535); + setState(1442); match(CypherParser::SP); } - setState(1538); + setState(1445); match(CypherParser::T__3); break; } @@ -9321,7 +8771,7 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(1540); + setState(1447); oC_SchemaName(); break; } @@ -9330,30 +8780,30 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { throw NoViableAltException(this); } _ctx->stop = _input->LT(-1); - setState(1559); + setState(1466); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 222, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 203, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; - setState(1557); + setState(1464); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 221, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 202, _ctx)) { case 1: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_JoinNode); - setState(1543); + setState(1450); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(1544); + setState(1451); match(CypherParser::SP); - setState(1545); + setState(1452); match(CypherParser::JOIN); - setState(1546); + setState(1453); match(CypherParser::SP); - setState(1547); + setState(1454); kU_JoinNode(5); break; } @@ -9361,22 +8811,22 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { case 2: { _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RuleKU_JoinNode); - setState(1548); + setState(1455); if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(1553); + setState(1460); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(1549); + setState(1456); match(CypherParser::SP); - setState(1550); + setState(1457); match(CypherParser::MULTI_JOIN); - setState(1551); + setState(1458); match(CypherParser::SP); - setState(1552); + setState(1459); oC_SchemaName(); break; } @@ -9384,9 +8834,9 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { default: throw NoViableAltException(this); } - setState(1555); + setState(1462); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 220, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 201, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -9395,9 +8845,9 @@ CypherParser::KU_JoinNodeContext* CypherParser::kU_JoinNode(int precedence) { break; } } - setState(1561); + setState(1468); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 222, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 203, _ctx); } } catch (RecognitionException &e) { @@ -9446,7 +8896,7 @@ size_t CypherParser::OC_UnwindContext::getRuleIndex() const { CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { OC_UnwindContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, CypherParser::RuleOC_Unwind); + enterRule(_localctx, 146, CypherParser::RuleOC_Unwind); size_t _la = 0; #if __cplusplus > 201703L @@ -9458,25 +8908,25 @@ CypherParser::OC_UnwindContext* CypherParser::oC_Unwind() { }); try { enterOuterAlt(_localctx, 1); - setState(1562); + setState(1469); match(CypherParser::UNWIND); - setState(1564); + setState(1471); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1563); + setState(1470); match(CypherParser::SP); } - setState(1566); + setState(1473); oC_Expression(); - setState(1567); + setState(1474); match(CypherParser::SP); - setState(1568); + setState(1475); match(CypherParser::AS); - setState(1569); + setState(1476); match(CypherParser::SP); - setState(1570); + setState(1477); oC_Variable(); } @@ -9515,7 +8965,7 @@ size_t CypherParser::OC_CreateContext::getRuleIndex() const { CypherParser::OC_CreateContext* CypherParser::oC_Create() { OC_CreateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, CypherParser::RuleOC_Create); + enterRule(_localctx, 148, CypherParser::RuleOC_Create); size_t _la = 0; #if __cplusplus > 201703L @@ -9527,17 +8977,17 @@ CypherParser::OC_CreateContext* CypherParser::oC_Create() { }); try { enterOuterAlt(_localctx, 1); - setState(1572); + setState(1479); match(CypherParser::CREATE); - setState(1574); + setState(1481); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1573); + setState(1480); match(CypherParser::SP); } - setState(1576); + setState(1483); oC_Pattern(); } @@ -9588,7 +9038,7 @@ size_t CypherParser::OC_MergeContext::getRuleIndex() const { CypherParser::OC_MergeContext* CypherParser::oC_Merge() { OC_MergeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, CypherParser::RuleOC_Merge); + enterRule(_localctx, 150, CypherParser::RuleOC_Merge); size_t _la = 0; #if __cplusplus > 201703L @@ -9601,31 +9051,31 @@ CypherParser::OC_MergeContext* CypherParser::oC_Merge() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1578); + setState(1485); match(CypherParser::MERGE); - setState(1580); + setState(1487); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1579); + setState(1486); match(CypherParser::SP); } - setState(1582); + setState(1489); oC_Pattern(); - setState(1587); + setState(1494); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 226, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 207, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1583); + setState(1490); match(CypherParser::SP); - setState(1584); + setState(1491); oC_MergeAction(); } - setState(1589); + setState(1496); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 226, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 207, _ctx); } } @@ -9676,7 +9126,7 @@ size_t CypherParser::OC_MergeActionContext::getRuleIndex() const { CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { OC_MergeActionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, CypherParser::RuleOC_MergeAction); + enterRule(_localctx, 152, CypherParser::RuleOC_MergeAction); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -9686,35 +9136,35 @@ CypherParser::OC_MergeActionContext* CypherParser::oC_MergeAction() { exitRule(); }); try { - setState(1600); + setState(1507); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 227, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 208, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1590); + setState(1497); match(CypherParser::ON); - setState(1591); + setState(1498); match(CypherParser::SP); - setState(1592); + setState(1499); match(CypherParser::MATCH); - setState(1593); + setState(1500); match(CypherParser::SP); - setState(1594); + setState(1501); oC_Set(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1595); + setState(1502); match(CypherParser::ON); - setState(1596); + setState(1503); match(CypherParser::SP); - setState(1597); + setState(1504); match(CypherParser::CREATE); - setState(1598); + setState(1505); match(CypherParser::SP); - setState(1599); + setState(1506); oC_Set(); break; } @@ -9767,7 +9217,7 @@ size_t CypherParser::OC_SetContext::getRuleIndex() const { CypherParser::OC_SetContext* CypherParser::oC_Set() { OC_SetContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, CypherParser::RuleOC_Set); + enterRule(_localctx, 154, CypherParser::RuleOC_Set); size_t _la = 0; #if __cplusplus > 201703L @@ -9780,47 +9230,47 @@ CypherParser::OC_SetContext* CypherParser::oC_Set() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1602); + setState(1509); match(CypherParser::SET); - setState(1604); + setState(1511); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1603); + setState(1510); match(CypherParser::SP); } - setState(1606); + setState(1513); oC_SetItem(); - setState(1617); + setState(1524); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 231, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 212, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1608); + setState(1515); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1607); + setState(1514); match(CypherParser::SP); } - setState(1610); + setState(1517); match(CypherParser::T__2); - setState(1612); + setState(1519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1611); + setState(1518); match(CypherParser::SP); } - setState(1614); + setState(1521); oC_SetItem(); } - setState(1619); + setState(1526); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 231, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 212, _ctx); } } @@ -9863,7 +9313,7 @@ size_t CypherParser::OC_SetItemContext::getRuleIndex() const { CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { OC_SetItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, CypherParser::RuleOC_SetItem); + enterRule(_localctx, 156, CypherParser::RuleOC_SetItem); size_t _la = 0; #if __cplusplus > 201703L @@ -9875,27 +9325,27 @@ CypherParser::OC_SetItemContext* CypherParser::oC_SetItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1620); + setState(1527); oC_PropertyExpression(); - setState(1622); + setState(1529); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1621); + setState(1528); match(CypherParser::SP); } - setState(1624); + setState(1531); match(CypherParser::T__5); - setState(1626); + setState(1533); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1625); + setState(1532); match(CypherParser::SP); } - setState(1628); + setState(1535); oC_Expression(); } @@ -9946,7 +9396,7 @@ size_t CypherParser::OC_DeleteContext::getRuleIndex() const { CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { OC_DeleteContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, CypherParser::RuleOC_Delete); + enterRule(_localctx, 158, CypherParser::RuleOC_Delete); size_t _la = 0; #if __cplusplus > 201703L @@ -9959,57 +9409,57 @@ CypherParser::OC_DeleteContext* CypherParser::oC_Delete() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1632); + setState(1539); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DETACH) { - setState(1630); + setState(1537); match(CypherParser::DETACH); - setState(1631); + setState(1538); match(CypherParser::SP); } - setState(1634); + setState(1541); match(CypherParser::DELETE); - setState(1636); + setState(1543); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1635); + setState(1542); match(CypherParser::SP); } - setState(1638); + setState(1545); oC_Expression(); - setState(1649); + setState(1556); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 238, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 219, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1640); + setState(1547); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1639); + setState(1546); match(CypherParser::SP); } - setState(1642); + setState(1549); match(CypherParser::T__2); - setState(1644); + setState(1551); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1643); + setState(1550); match(CypherParser::SP); } - setState(1646); + setState(1553); oC_Expression(); } - setState(1651); + setState(1558); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 238, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 219, _ctx); } } @@ -10052,7 +9502,7 @@ size_t CypherParser::OC_WithContext::getRuleIndex() const { CypherParser::OC_WithContext* CypherParser::oC_With() { OC_WithContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, CypherParser::RuleOC_With); + enterRule(_localctx, 160, CypherParser::RuleOC_With); size_t _la = 0; #if __cplusplus > 201703L @@ -10064,24 +9514,24 @@ CypherParser::OC_WithContext* CypherParser::oC_With() { }); try { enterOuterAlt(_localctx, 1); - setState(1652); + setState(1559); match(CypherParser::WITH); - setState(1653); + setState(1560); oC_ProjectionBody(); - setState(1658); + setState(1565); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 240, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 221, _ctx)) { case 1: { - setState(1655); + setState(1562); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1654); + setState(1561); match(CypherParser::SP); } - setState(1657); + setState(1564); oC_Where(); break; } @@ -10122,7 +9572,7 @@ size_t CypherParser::OC_ReturnContext::getRuleIndex() const { CypherParser::OC_ReturnContext* CypherParser::oC_Return() { OC_ReturnContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, CypherParser::RuleOC_Return); + enterRule(_localctx, 162, CypherParser::RuleOC_Return); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10133,9 +9583,9 @@ CypherParser::OC_ReturnContext* CypherParser::oC_Return() { }); try { enterOuterAlt(_localctx, 1); - setState(1660); + setState(1567); match(CypherParser::RETURN); - setState(1661); + setState(1568); oC_ProjectionBody(); } @@ -10190,7 +9640,7 @@ size_t CypherParser::OC_ProjectionBodyContext::getRuleIndex() const { CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { OC_ProjectionBodyContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, CypherParser::RuleOC_ProjectionBody); + enterRule(_localctx, 164, CypherParser::RuleOC_ProjectionBody); size_t _la = 0; #if __cplusplus > 201703L @@ -10202,20 +9652,20 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { }); try { enterOuterAlt(_localctx, 1); - setState(1667); + setState(1574); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 242, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 223, _ctx)) { case 1: { - setState(1664); + setState(1571); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1663); + setState(1570); match(CypherParser::SP); } - setState(1666); + setState(1573); match(CypherParser::DISTINCT); break; } @@ -10223,18 +9673,18 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1669); + setState(1576); match(CypherParser::SP); - setState(1670); + setState(1577); oC_ProjectionItems(); - setState(1673); + setState(1580); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 243, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 224, _ctx)) { case 1: { - setState(1671); + setState(1578); match(CypherParser::SP); - setState(1672); + setState(1579); oC_Order(); break; } @@ -10242,14 +9692,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1677); + setState(1584); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 244, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 225, _ctx)) { case 1: { - setState(1675); + setState(1582); match(CypherParser::SP); - setState(1676); + setState(1583); oC_Skip(); break; } @@ -10257,14 +9707,14 @@ CypherParser::OC_ProjectionBodyContext* CypherParser::oC_ProjectionBody() { default: break; } - setState(1681); + setState(1588); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 245, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 226, _ctx)) { case 1: { - setState(1679); + setState(1586); match(CypherParser::SP); - setState(1680); + setState(1587); oC_Limit(); break; } @@ -10317,7 +9767,7 @@ size_t CypherParser::OC_ProjectionItemsContext::getRuleIndex() const { CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { OC_ProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, CypherParser::RuleOC_ProjectionItems); + enterRule(_localctx, 166, CypherParser::RuleOC_ProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -10329,42 +9779,42 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { }); try { size_t alt; - setState(1711); + setState(1618); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::STAR: { enterOuterAlt(_localctx, 1); - setState(1683); + setState(1590); match(CypherParser::STAR); - setState(1694); + setState(1601); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 248, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 229, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1685); + setState(1592); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1684); + setState(1591); match(CypherParser::SP); } - setState(1687); + setState(1594); match(CypherParser::T__2); - setState(1689); + setState(1596); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1688); + setState(1595); match(CypherParser::SP); } - setState(1691); + setState(1598); oC_ProjectionItem(); } - setState(1696); + setState(1603); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 248, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 229, _ctx); } break; } @@ -10444,37 +9894,37 @@ CypherParser::OC_ProjectionItemsContext* CypherParser::oC_ProjectionItems() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(1697); + setState(1604); oC_ProjectionItem(); - setState(1708); + setState(1615); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 232, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1699); + setState(1606); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1698); + setState(1605); match(CypherParser::SP); } - setState(1701); + setState(1608); match(CypherParser::T__2); - setState(1703); + setState(1610); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1702); + setState(1609); match(CypherParser::SP); } - setState(1705); + setState(1612); oC_ProjectionItem(); } - setState(1710); + setState(1617); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 251, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 232, _ctx); } break; } @@ -10527,7 +9977,7 @@ size_t CypherParser::OC_ProjectionItemContext::getRuleIndex() const { CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { OC_ProjectionItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, CypherParser::RuleOC_ProjectionItem); + enterRule(_localctx, 168, CypherParser::RuleOC_ProjectionItem); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10537,27 +9987,27 @@ CypherParser::OC_ProjectionItemContext* CypherParser::oC_ProjectionItem() { exitRule(); }); try { - setState(1720); + setState(1627); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 253, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 234, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1713); + setState(1620); oC_Expression(); - setState(1714); + setState(1621); match(CypherParser::SP); - setState(1715); + setState(1622); match(CypherParser::AS); - setState(1716); + setState(1623); match(CypherParser::SP); - setState(1717); + setState(1624); oC_Variable(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1719); + setState(1626); oC_Expression(); break; } @@ -10614,7 +10064,7 @@ size_t CypherParser::OC_OrderContext::getRuleIndex() const { CypherParser::OC_OrderContext* CypherParser::oC_Order() { OC_OrderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, CypherParser::RuleOC_Order); + enterRule(_localctx, 170, CypherParser::RuleOC_Order); size_t _la = 0; #if __cplusplus > 201703L @@ -10626,33 +10076,33 @@ CypherParser::OC_OrderContext* CypherParser::oC_Order() { }); try { enterOuterAlt(_localctx, 1); - setState(1722); + setState(1629); match(CypherParser::ORDER); - setState(1723); + setState(1630); match(CypherParser::SP); - setState(1724); + setState(1631); match(CypherParser::BY); - setState(1725); + setState(1632); match(CypherParser::SP); - setState(1726); + setState(1633); oC_SortItem(); - setState(1734); + setState(1641); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1727); + setState(1634); match(CypherParser::T__2); - setState(1729); + setState(1636); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1728); + setState(1635); match(CypherParser::SP); } - setState(1731); + setState(1638); oC_SortItem(); - setState(1736); + setState(1643); _errHandler->sync(this); _la = _input->LA(1); } @@ -10693,7 +10143,7 @@ size_t CypherParser::OC_SkipContext::getRuleIndex() const { CypherParser::OC_SkipContext* CypherParser::oC_Skip() { OC_SkipContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, CypherParser::RuleOC_Skip); + enterRule(_localctx, 172, CypherParser::RuleOC_Skip); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10704,11 +10154,11 @@ CypherParser::OC_SkipContext* CypherParser::oC_Skip() { }); try { enterOuterAlt(_localctx, 1); - setState(1737); + setState(1644); match(CypherParser::L_SKIP); - setState(1738); + setState(1645); match(CypherParser::SP); - setState(1739); + setState(1646); oC_Expression(); } @@ -10747,7 +10197,7 @@ size_t CypherParser::OC_LimitContext::getRuleIndex() const { CypherParser::OC_LimitContext* CypherParser::oC_Limit() { OC_LimitContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, CypherParser::RuleOC_Limit); + enterRule(_localctx, 174, CypherParser::RuleOC_Limit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10758,11 +10208,11 @@ CypherParser::OC_LimitContext* CypherParser::oC_Limit() { }); try { enterOuterAlt(_localctx, 1); - setState(1741); + setState(1648); match(CypherParser::LIMIT); - setState(1742); + setState(1649); match(CypherParser::SP); - setState(1743); + setState(1650); oC_Expression(); } @@ -10813,7 +10263,7 @@ size_t CypherParser::OC_SortItemContext::getRuleIndex() const { CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { OC_SortItemContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, CypherParser::RuleOC_SortItem); + enterRule(_localctx, 176, CypherParser::RuleOC_SortItem); size_t _la = 0; #if __cplusplus > 201703L @@ -10825,22 +10275,22 @@ CypherParser::OC_SortItemContext* CypherParser::oC_SortItem() { }); try { enterOuterAlt(_localctx, 1); - setState(1745); + setState(1652); oC_Expression(); - setState(1750); + setState(1657); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 257, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 238, _ctx)) { case 1: { - setState(1747); + setState(1654); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1746); + setState(1653); match(CypherParser::SP); } - setState(1749); + setState(1656); _la = _input->LA(1); if (!(((((_la - 53) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 53)) & 12582915) != 0))) { @@ -10893,7 +10343,7 @@ size_t CypherParser::OC_WhereContext::getRuleIndex() const { CypherParser::OC_WhereContext* CypherParser::oC_Where() { OC_WhereContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, CypherParser::RuleOC_Where); + enterRule(_localctx, 178, CypherParser::RuleOC_Where); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -10904,11 +10354,11 @@ CypherParser::OC_WhereContext* CypherParser::oC_Where() { }); try { enterOuterAlt(_localctx, 1); - setState(1752); + setState(1659); match(CypherParser::WHERE); - setState(1753); + setState(1660); match(CypherParser::SP); - setState(1754); + setState(1661); oC_Expression(); } @@ -10951,7 +10401,7 @@ size_t CypherParser::OC_PatternContext::getRuleIndex() const { CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { OC_PatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, CypherParser::RuleOC_Pattern); + enterRule(_localctx, 180, CypherParser::RuleOC_Pattern); size_t _la = 0; #if __cplusplus > 201703L @@ -10964,37 +10414,37 @@ CypherParser::OC_PatternContext* CypherParser::oC_Pattern() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1756); + setState(1663); oC_PatternPart(); - setState(1767); + setState(1674); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 260, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 241, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1758); + setState(1665); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1757); + setState(1664); match(CypherParser::SP); } - setState(1760); + setState(1667); match(CypherParser::T__2); - setState(1762); + setState(1669); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1761); + setState(1668); match(CypherParser::SP); } - setState(1764); + setState(1671); oC_PatternPart(); } - setState(1769); + setState(1676); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 260, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 241, _ctx); } } @@ -11037,7 +10487,7 @@ size_t CypherParser::OC_PatternPartContext::getRuleIndex() const { CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { OC_PatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, CypherParser::RuleOC_PatternPart); + enterRule(_localctx, 182, CypherParser::RuleOC_PatternPart); size_t _la = 0; #if __cplusplus > 201703L @@ -11048,7 +10498,7 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { exitRule(); }); try { - setState(1781); + setState(1688); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -11106,34 +10556,34 @@ CypherParser::OC_PatternPartContext* CypherParser::oC_PatternPart() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(1770); + setState(1677); oC_Variable(); - setState(1772); + setState(1679); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1771); + setState(1678); match(CypherParser::SP); } - setState(1774); + setState(1681); match(CypherParser::T__5); - setState(1776); + setState(1683); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1775); + setState(1682); match(CypherParser::SP); } - setState(1778); + setState(1685); oC_AnonymousPatternPart(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(1780); + setState(1687); oC_AnonymousPatternPart(); break; } @@ -11170,7 +10620,7 @@ size_t CypherParser::OC_AnonymousPatternPartContext::getRuleIndex() const { CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternPart() { OC_AnonymousPatternPartContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, CypherParser::RuleOC_AnonymousPatternPart); + enterRule(_localctx, 184, CypherParser::RuleOC_AnonymousPatternPart); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -11181,7 +10631,7 @@ CypherParser::OC_AnonymousPatternPartContext* CypherParser::oC_AnonymousPatternP }); try { enterOuterAlt(_localctx, 1); - setState(1783); + setState(1690); oC_PatternElement(); } @@ -11232,7 +10682,7 @@ size_t CypherParser::OC_PatternElementContext::getRuleIndex() const { CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { OC_PatternElementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, CypherParser::RuleOC_PatternElement); + enterRule(_localctx, 186, CypherParser::RuleOC_PatternElement); size_t _la = 0; #if __cplusplus > 201703L @@ -11244,43 +10694,43 @@ CypherParser::OC_PatternElementContext* CypherParser::oC_PatternElement() { }); try { size_t alt; - setState(1799); + setState(1706); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 266, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 247, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1785); + setState(1692); oC_NodePattern(); - setState(1792); + setState(1699); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 265, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 246, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1787); + setState(1694); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1786); + setState(1693); match(CypherParser::SP); } - setState(1789); + setState(1696); oC_PatternElementChain(); } - setState(1794); + setState(1701); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 265, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 246, _ctx); } break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1795); + setState(1702); match(CypherParser::T__1); - setState(1796); + setState(1703); oC_PatternElement(); - setState(1797); + setState(1704); match(CypherParser::T__3); break; } @@ -11333,7 +10783,7 @@ size_t CypherParser::OC_NodePatternContext::getRuleIndex() const { CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { OC_NodePatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, CypherParser::RuleOC_NodePattern); + enterRule(_localctx, 188, CypherParser::RuleOC_NodePattern); size_t _la = 0; #if __cplusplus > 201703L @@ -11345,67 +10795,67 @@ CypherParser::OC_NodePatternContext* CypherParser::oC_NodePattern() { }); try { enterOuterAlt(_localctx, 1); - setState(1801); + setState(1708); match(CypherParser::T__1); - setState(1803); + setState(1710); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1802); + setState(1709); match(CypherParser::SP); } - setState(1809); + setState(1716); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & -4761777667909507179) != 0) || ((((_la - 112) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 112)) & 1297602465103738881) != 0)) { - setState(1805); + setState(1712); oC_Variable(); - setState(1807); + setState(1714); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1806); + setState(1713); match(CypherParser::SP); } } - setState(1815); + setState(1722); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1811); + setState(1718); oC_NodeLabels(); - setState(1813); + setState(1720); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1812); + setState(1719); match(CypherParser::SP); } } - setState(1821); + setState(1728); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(1817); + setState(1724); kU_Properties(); - setState(1819); + setState(1726); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1818); + setState(1725); match(CypherParser::SP); } } - setState(1823); + setState(1730); match(CypherParser::T__3); } @@ -11444,7 +10894,7 @@ size_t CypherParser::OC_PatternElementChainContext::getRuleIndex() const { CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChain() { OC_PatternElementChainContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, CypherParser::RuleOC_PatternElementChain); + enterRule(_localctx, 190, CypherParser::RuleOC_PatternElementChain); size_t _la = 0; #if __cplusplus > 201703L @@ -11456,17 +10906,17 @@ CypherParser::OC_PatternElementChainContext* CypherParser::oC_PatternElementChai }); try { enterOuterAlt(_localctx, 1); - setState(1825); + setState(1732); oC_RelationshipPattern(); - setState(1827); + setState(1734); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1826); + setState(1733); match(CypherParser::SP); } - setState(1829); + setState(1736); oC_NodePattern(); } @@ -11521,7 +10971,7 @@ size_t CypherParser::OC_RelationshipPatternContext::getRuleIndex() const { CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPattern() { OC_RelationshipPatternContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, CypherParser::RuleOC_RelationshipPattern); + enterRule(_localctx, 192, CypherParser::RuleOC_RelationshipPattern); size_t _la = 0; #if __cplusplus > 201703L @@ -11532,29 +10982,29 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter exitRule(); }); try { - setState(1875); + setState(1782); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 286, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 267, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(1831); + setState(1738); oC_LeftArrowHead(); - setState(1833); + setState(1740); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1832); + setState(1739); match(CypherParser::SP); } - setState(1835); + setState(1742); oC_Dash(); - setState(1837); + setState(1744); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 276, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 257, _ctx)) { case 1: { - setState(1836); + setState(1743); match(CypherParser::SP); break; } @@ -11562,37 +11012,37 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1840); + setState(1747); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1839); + setState(1746); oC_RelationshipDetail(); } - setState(1843); + setState(1750); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1842); + setState(1749); match(CypherParser::SP); } - setState(1845); + setState(1752); oC_Dash(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(1847); + setState(1754); oC_Dash(); - setState(1849); + setState(1756); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 279, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 260, _ctx)) { case 1: { - setState(1848); + setState(1755); match(CypherParser::SP); break; } @@ -11600,47 +11050,47 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1852); + setState(1759); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1851); + setState(1758); oC_RelationshipDetail(); } - setState(1855); + setState(1762); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1854); + setState(1761); match(CypherParser::SP); } - setState(1857); + setState(1764); oC_Dash(); - setState(1859); + setState(1766); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1858); + setState(1765); match(CypherParser::SP); } - setState(1861); + setState(1768); oC_RightArrowHead(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(1863); + setState(1770); oC_Dash(); - setState(1865); + setState(1772); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 283, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 264, _ctx)) { case 1: { - setState(1864); + setState(1771); match(CypherParser::SP); break; } @@ -11648,23 +11098,23 @@ CypherParser::OC_RelationshipPatternContext* CypherParser::oC_RelationshipPatter default: break; } - setState(1868); + setState(1775); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__6) { - setState(1867); + setState(1774); oC_RelationshipDetail(); } - setState(1871); + setState(1778); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1870); + setState(1777); match(CypherParser::SP); } - setState(1873); + setState(1780); oC_Dash(); break; } @@ -11721,7 +11171,7 @@ size_t CypherParser::OC_RelationshipDetailContext::getRuleIndex() const { CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail() { OC_RelationshipDetailContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, CypherParser::RuleOC_RelationshipDetail); + enterRule(_localctx, 194, CypherParser::RuleOC_RelationshipDetail); size_t _la = 0; #if __cplusplus > 201703L @@ -11733,83 +11183,83 @@ CypherParser::OC_RelationshipDetailContext* CypherParser::oC_RelationshipDetail( }); try { enterOuterAlt(_localctx, 1); - setState(1877); + setState(1784); match(CypherParser::T__6); - setState(1879); + setState(1786); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1878); + setState(1785); match(CypherParser::SP); } - setState(1885); + setState(1792); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & -4761777667909507179) != 0) || ((((_la - 112) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 112)) & 1297602465103738881) != 0)) { - setState(1881); + setState(1788); oC_Variable(); - setState(1883); + setState(1790); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1882); + setState(1789); match(CypherParser::SP); } } - setState(1891); + setState(1798); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1887); + setState(1794); oC_RelationshipTypes(); - setState(1889); + setState(1796); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1888); + setState(1795); match(CypherParser::SP); } } - setState(1897); + setState(1804); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::STAR) { - setState(1893); + setState(1800); oC_RangeLiteral(); - setState(1895); + setState(1802); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1894); + setState(1801); match(CypherParser::SP); } } - setState(1903); + setState(1810); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__8) { - setState(1899); + setState(1806); kU_Properties(); - setState(1901); + setState(1808); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1900); + setState(1807); match(CypherParser::SP); } } - setState(1905); + setState(1812); match(CypherParser::T__7); } @@ -11868,7 +11318,7 @@ size_t CypherParser::KU_PropertiesContext::getRuleIndex() const { CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { KU_PropertiesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, CypherParser::RuleKU_Properties); + enterRule(_localctx, 196, CypherParser::RuleKU_Properties); size_t _la = 0; #if __cplusplus > 201703L @@ -11880,103 +11330,103 @@ CypherParser::KU_PropertiesContext* CypherParser::kU_Properties() { }); try { enterOuterAlt(_localctx, 1); - setState(1907); + setState(1814); match(CypherParser::T__8); - setState(1909); + setState(1816); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1908); + setState(1815); match(CypherParser::SP); } - setState(1944); + setState(1851); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & -4761777667909507179) != 0) || ((((_la - 112) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 112)) & 1297602465103738881) != 0)) { - setState(1911); + setState(1818); oC_PropertyKeyName(); - setState(1913); + setState(1820); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1912); + setState(1819); match(CypherParser::SP); } - setState(1915); + setState(1822); match(CypherParser::COLON); - setState(1917); + setState(1824); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1916); + setState(1823); match(CypherParser::SP); } - setState(1919); + setState(1826); oC_Expression(); - setState(1921); + setState(1828); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1920); + setState(1827); match(CypherParser::SP); } - setState(1941); + setState(1848); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(1923); + setState(1830); match(CypherParser::T__2); - setState(1925); + setState(1832); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1924); + setState(1831); match(CypherParser::SP); } - setState(1927); + setState(1834); oC_PropertyKeyName(); - setState(1929); + setState(1836); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1928); + setState(1835); match(CypherParser::SP); } - setState(1931); + setState(1838); match(CypherParser::COLON); - setState(1933); + setState(1840); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1932); + setState(1839); match(CypherParser::SP); } - setState(1935); + setState(1842); oC_Expression(); - setState(1937); + setState(1844); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1936); + setState(1843); match(CypherParser::SP); } - setState(1943); + setState(1850); _errHandler->sync(this); _la = _input->LA(1); } } - setState(1946); + setState(1853); match(CypherParser::T__9); } @@ -12027,7 +11477,7 @@ size_t CypherParser::OC_RelationshipTypesContext::getRuleIndex() const { CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() { OC_RelationshipTypesContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 208, CypherParser::RuleOC_RelationshipTypes); + enterRule(_localctx, 198, CypherParser::RuleOC_RelationshipTypes); size_t _la = 0; #if __cplusplus > 201703L @@ -12040,55 +11490,55 @@ CypherParser::OC_RelationshipTypesContext* CypherParser::oC_RelationshipTypes() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1948); + setState(1855); match(CypherParser::COLON); - setState(1950); + setState(1857); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1949); + setState(1856); match(CypherParser::SP); } - setState(1952); + setState(1859); oC_RelTypeName(); - setState(1966); + setState(1873); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 291, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1954); + setState(1861); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1953); + setState(1860); match(CypherParser::SP); } - setState(1956); + setState(1863); match(CypherParser::T__10); - setState(1958); + setState(1865); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::COLON) { - setState(1957); + setState(1864); match(CypherParser::COLON); } - setState(1961); + setState(1868); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1960); + setState(1867); match(CypherParser::SP); } - setState(1963); + setState(1870); oC_RelTypeName(); } - setState(1968); + setState(1875); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 310, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 291, _ctx); } } @@ -12131,7 +11581,7 @@ size_t CypherParser::OC_NodeLabelsContext::getRuleIndex() const { CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { OC_NodeLabelsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 210, CypherParser::RuleOC_NodeLabels); + enterRule(_localctx, 200, CypherParser::RuleOC_NodeLabels); size_t _la = 0; #if __cplusplus > 201703L @@ -12144,27 +11594,27 @@ CypherParser::OC_NodeLabelsContext* CypherParser::oC_NodeLabels() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(1969); + setState(1876); oC_NodeLabel(); - setState(1976); + setState(1883); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 312, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 293, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(1971); + setState(1878); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1970); + setState(1877); match(CypherParser::SP); } - setState(1973); + setState(1880); oC_NodeLabel(); } - setState(1978); + setState(1885); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 312, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 293, _ctx); } } @@ -12203,7 +11653,7 @@ size_t CypherParser::OC_NodeLabelContext::getRuleIndex() const { CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { OC_NodeLabelContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 212, CypherParser::RuleOC_NodeLabel); + enterRule(_localctx, 202, CypherParser::RuleOC_NodeLabel); size_t _la = 0; #if __cplusplus > 201703L @@ -12215,17 +11665,17 @@ CypherParser::OC_NodeLabelContext* CypherParser::oC_NodeLabel() { }); try { enterOuterAlt(_localctx, 1); - setState(1979); + setState(1886); match(CypherParser::COLON); - setState(1981); + setState(1888); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(1980); + setState(1887); match(CypherParser::SP); } - setState(1983); + setState(1890); oC_LabelName(); } @@ -12296,7 +11746,7 @@ size_t CypherParser::OC_RangeLiteralContext::getRuleIndex() const { CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { OC_RangeLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 214, CypherParser::RuleOC_RangeLiteral); + enterRule(_localctx, 204, CypherParser::RuleOC_RangeLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -12308,14 +11758,14 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(1985); + setState(1892); match(CypherParser::STAR); - setState(1987); + setState(1894); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 314, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 295, _ctx)) { case 1: { - setState(1986); + setState(1893); match(CypherParser::SP); break; } @@ -12323,33 +11773,33 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1995); + setState(1902); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::SHORTEST: { - setState(1989); + setState(1896); match(CypherParser::SHORTEST); break; } case CypherParser::ALL: { - setState(1990); + setState(1897); match(CypherParser::ALL); - setState(1991); + setState(1898); match(CypherParser::SP); - setState(1992); + setState(1899); match(CypherParser::SHORTEST); break; } case CypherParser::TRAIL: { - setState(1993); + setState(1900); match(CypherParser::TRAIL); break; } case CypherParser::ACYCLIC: { - setState(1994); + setState(1901); match(CypherParser::ACYCLIC); break; } @@ -12366,12 +11816,12 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(1998); + setState(1905); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 316, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 297, _ctx)) { case 1: { - setState(1997); + setState(1904); match(CypherParser::SP); break; } @@ -12379,35 +11829,35 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(2014); + setState(1921); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 321, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 302, _ctx)) { case 1: { - setState(2001); + setState(1908); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2000); + setState(1907); oC_LowerBound(); } - setState(2004); + setState(1911); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2003); + setState(1910); match(CypherParser::SP); } - setState(2006); + setState(1913); match(CypherParser::T__11); - setState(2008); + setState(1915); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 319, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 300, _ctx)) { case 1: { - setState(2007); + setState(1914); match(CypherParser::SP); break; } @@ -12415,19 +11865,19 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(2011); + setState(1918); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DecimalInteger) { - setState(2010); + setState(1917); oC_UpperBound(); } break; } case 2: { - setState(2013); + setState(1920); oC_IntegerLiteral(); break; } @@ -12435,20 +11885,20 @@ CypherParser::OC_RangeLiteralContext* CypherParser::oC_RangeLiteral() { default: break; } - setState(2020); + setState(1927); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 323, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 304, _ctx)) { case 1: { - setState(2017); + setState(1924); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2016); + setState(1923); match(CypherParser::SP); } - setState(2019); + setState(1926); kU_RecursiveRelationshipComprehension(); break; } @@ -12509,7 +11959,7 @@ size_t CypherParser::KU_RecursiveRelationshipComprehensionContext::getRuleIndex( CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_RecursiveRelationshipComprehension() { KU_RecursiveRelationshipComprehensionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 216, CypherParser::RuleKU_RecursiveRelationshipComprehension); + enterRule(_localctx, 206, CypherParser::RuleKU_RecursiveRelationshipComprehension); size_t _la = 0; #if __cplusplus > 201703L @@ -12521,69 +11971,69 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec }); try { enterOuterAlt(_localctx, 1); - setState(2022); + setState(1929); match(CypherParser::T__1); - setState(2024); + setState(1931); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2023); + setState(1930); match(CypherParser::SP); } - setState(2026); + setState(1933); oC_Variable(); - setState(2028); + setState(1935); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2027); + setState(1934); match(CypherParser::SP); } - setState(2030); + setState(1937); match(CypherParser::T__2); - setState(2032); + setState(1939); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2031); + setState(1938); match(CypherParser::SP); } - setState(2034); + setState(1941); oC_Variable(); - setState(2046); + setState(1953); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 330, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 311, _ctx)) { case 1: { - setState(2036); + setState(1943); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2035); + setState(1942); match(CypherParser::SP); } - setState(2038); + setState(1945); match(CypherParser::T__10); - setState(2040); + setState(1947); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2039); + setState(1946); match(CypherParser::SP); } - setState(2042); + setState(1949); oC_Where(); - setState(2044); + setState(1951); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 329, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 310, _ctx)) { case 1: { - setState(2043); + setState(1950); match(CypherParser::SP); break; } @@ -12597,61 +12047,61 @@ CypherParser::KU_RecursiveRelationshipComprehensionContext* CypherParser::kU_Rec default: break; } - setState(2067); + setState(1974); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::T__10 || _la == CypherParser::SP) { - setState(2049); + setState(1956); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2048); + setState(1955); match(CypherParser::SP); } - setState(2051); + setState(1958); match(CypherParser::T__10); - setState(2053); + setState(1960); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2052); + setState(1959); match(CypherParser::SP); } - setState(2055); + setState(1962); kU_IntermediateRelProjectionItems(); - setState(2057); + setState(1964); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2056); + setState(1963); match(CypherParser::SP); } - setState(2059); + setState(1966); match(CypherParser::T__2); - setState(2061); + setState(1968); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2060); + setState(1967); match(CypherParser::SP); } - setState(2063); + setState(1970); kU_IntermediateNodeProjectionItems(); - setState(2065); + setState(1972); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2064); + setState(1971); match(CypherParser::SP); } } - setState(2069); + setState(1976); match(CypherParser::T__3); } @@ -12690,7 +12140,7 @@ size_t CypherParser::KU_IntermediateNodeProjectionItemsContext::getRuleIndex() c CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_IntermediateNodeProjectionItems() { KU_IntermediateNodeProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 218, CypherParser::RuleKU_IntermediateNodeProjectionItems); + enterRule(_localctx, 208, CypherParser::RuleKU_IntermediateNodeProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -12702,14 +12152,14 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm }); try { enterOuterAlt(_localctx, 1); - setState(2071); + setState(1978); match(CypherParser::T__8); - setState(2073); + setState(1980); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 337, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 318, _ctx)) { case 1: { - setState(2072); + setState(1979); match(CypherParser::SP); break; } @@ -12717,7 +12167,7 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm default: break; } - setState(2076); + setState(1983); _errHandler->sync(this); _la = _input->LA(1); @@ -12725,18 +12175,18 @@ CypherParser::KU_IntermediateNodeProjectionItemsContext* CypherParser::kU_Interm ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454633646125) != 0)) { - setState(2075); + setState(1982); oC_ProjectionItems(); } - setState(2079); + setState(1986); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2078); + setState(1985); match(CypherParser::SP); } - setState(2081); + setState(1988); match(CypherParser::T__9); } @@ -12775,7 +12225,7 @@ size_t CypherParser::KU_IntermediateRelProjectionItemsContext::getRuleIndex() co CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_IntermediateRelProjectionItems() { KU_IntermediateRelProjectionItemsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 220, CypherParser::RuleKU_IntermediateRelProjectionItems); + enterRule(_localctx, 210, CypherParser::RuleKU_IntermediateRelProjectionItems); size_t _la = 0; #if __cplusplus > 201703L @@ -12787,14 +12237,14 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme }); try { enterOuterAlt(_localctx, 1); - setState(2083); + setState(1990); match(CypherParser::T__8); - setState(2085); + setState(1992); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 340, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 321, _ctx)) { case 1: { - setState(2084); + setState(1991); match(CypherParser::SP); break; } @@ -12802,7 +12252,7 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme default: break; } - setState(2088); + setState(1995); _errHandler->sync(this); _la = _input->LA(1); @@ -12810,18 +12260,18 @@ CypherParser::KU_IntermediateRelProjectionItemsContext* CypherParser::kU_Interme ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454633646125) != 0)) { - setState(2087); + setState(1994); oC_ProjectionItems(); } - setState(2091); + setState(1998); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2090); + setState(1997); match(CypherParser::SP); } - setState(2093); + setState(2000); match(CypherParser::T__9); } @@ -12852,7 +12302,7 @@ size_t CypherParser::OC_LowerBoundContext::getRuleIndex() const { CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { OC_LowerBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 222, CypherParser::RuleOC_LowerBound); + enterRule(_localctx, 212, CypherParser::RuleOC_LowerBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12863,7 +12313,7 @@ CypherParser::OC_LowerBoundContext* CypherParser::oC_LowerBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2095); + setState(2002); match(CypherParser::DecimalInteger); } @@ -12894,7 +12344,7 @@ size_t CypherParser::OC_UpperBoundContext::getRuleIndex() const { CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { OC_UpperBoundContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 224, CypherParser::RuleOC_UpperBound); + enterRule(_localctx, 214, CypherParser::RuleOC_UpperBound); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12905,7 +12355,7 @@ CypherParser::OC_UpperBoundContext* CypherParser::oC_UpperBound() { }); try { enterOuterAlt(_localctx, 1); - setState(2097); + setState(2004); match(CypherParser::DecimalInteger); } @@ -12936,7 +12386,7 @@ size_t CypherParser::OC_LabelNameContext::getRuleIndex() const { CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { OC_LabelNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 226, CypherParser::RuleOC_LabelName); + enterRule(_localctx, 216, CypherParser::RuleOC_LabelName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12947,7 +12397,7 @@ CypherParser::OC_LabelNameContext* CypherParser::oC_LabelName() { }); try { enterOuterAlt(_localctx, 1); - setState(2099); + setState(2006); oC_SchemaName(); } @@ -12978,7 +12428,7 @@ size_t CypherParser::OC_RelTypeNameContext::getRuleIndex() const { CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { OC_RelTypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 228, CypherParser::RuleOC_RelTypeName); + enterRule(_localctx, 218, CypherParser::RuleOC_RelTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -12989,7 +12439,7 @@ CypherParser::OC_RelTypeNameContext* CypherParser::oC_RelTypeName() { }); try { enterOuterAlt(_localctx, 1); - setState(2101); + setState(2008); oC_SchemaName(); } @@ -13020,7 +12470,7 @@ size_t CypherParser::OC_ExpressionContext::getRuleIndex() const { CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { OC_ExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 230, CypherParser::RuleOC_Expression); + enterRule(_localctx, 220, CypherParser::RuleOC_Expression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13031,7 +12481,7 @@ CypherParser::OC_ExpressionContext* CypherParser::oC_Expression() { }); try { enterOuterAlt(_localctx, 1); - setState(2103); + setState(2010); oC_OrExpression(); } @@ -13082,7 +12532,7 @@ size_t CypherParser::OC_OrExpressionContext::getRuleIndex() const { CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { OC_OrExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 232, CypherParser::RuleOC_OrExpression); + enterRule(_localctx, 222, CypherParser::RuleOC_OrExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13094,25 +12544,25 @@ CypherParser::OC_OrExpressionContext* CypherParser::oC_OrExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2105); + setState(2012); oC_XorExpression(); - setState(2112); + setState(2019); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 343, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 324, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2106); + setState(2013); match(CypherParser::SP); - setState(2107); + setState(2014); match(CypherParser::OR); - setState(2108); + setState(2015); match(CypherParser::SP); - setState(2109); + setState(2016); oC_XorExpression(); } - setState(2114); + setState(2021); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 343, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 324, _ctx); } } @@ -13163,7 +12613,7 @@ size_t CypherParser::OC_XorExpressionContext::getRuleIndex() const { CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { OC_XorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 234, CypherParser::RuleOC_XorExpression); + enterRule(_localctx, 224, CypherParser::RuleOC_XorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13175,25 +12625,25 @@ CypherParser::OC_XorExpressionContext* CypherParser::oC_XorExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2115); + setState(2022); oC_AndExpression(); - setState(2122); + setState(2029); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 344, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 325, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2116); + setState(2023); match(CypherParser::SP); - setState(2117); + setState(2024); match(CypherParser::XOR); - setState(2118); + setState(2025); match(CypherParser::SP); - setState(2119); + setState(2026); oC_AndExpression(); } - setState(2124); + setState(2031); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 344, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 325, _ctx); } } @@ -13244,7 +12694,7 @@ size_t CypherParser::OC_AndExpressionContext::getRuleIndex() const { CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { OC_AndExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 236, CypherParser::RuleOC_AndExpression); + enterRule(_localctx, 226, CypherParser::RuleOC_AndExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -13256,25 +12706,25 @@ CypherParser::OC_AndExpressionContext* CypherParser::oC_AndExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2125); + setState(2032); oC_NotExpression(); - setState(2132); + setState(2039); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 326, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2126); + setState(2033); match(CypherParser::SP); - setState(2127); + setState(2034); match(CypherParser::AND); - setState(2128); + setState(2035); match(CypherParser::SP); - setState(2129); + setState(2036); oC_NotExpression(); } - setState(2134); + setState(2041); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 326, _ctx); } } @@ -13321,7 +12771,7 @@ size_t CypherParser::OC_NotExpressionContext::getRuleIndex() const { CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { OC_NotExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 238, CypherParser::RuleOC_NotExpression); + enterRule(_localctx, 228, CypherParser::RuleOC_NotExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13333,25 +12783,25 @@ CypherParser::OC_NotExpressionContext* CypherParser::oC_NotExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2141); + setState(2048); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::NOT) { - setState(2135); + setState(2042); match(CypherParser::NOT); - setState(2137); + setState(2044); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2136); + setState(2043); match(CypherParser::SP); } - setState(2143); + setState(2050); _errHandler->sync(this); _la = _input->LA(1); } - setState(2144); + setState(2051); oC_ComparisonExpression(); } @@ -13406,7 +12856,7 @@ size_t CypherParser::OC_ComparisonExpressionContext::getRuleIndex() const { CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpression() { OC_ComparisonExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 240, CypherParser::RuleOC_ComparisonExpression); + enterRule(_localctx, 230, CypherParser::RuleOC_ComparisonExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13418,37 +12868,37 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress }); try { size_t alt; - setState(2194); + setState(2101); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 358, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 339, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2146); + setState(2053); kU_BitwiseOrOperatorExpression(); - setState(2156); + setState(2063); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 350, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 331, _ctx)) { case 1: { - setState(2148); + setState(2055); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2147); + setState(2054); match(CypherParser::SP); } - setState(2150); + setState(2057); kU_ComparisonOperator(); - setState(2152); + setState(2059); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2151); + setState(2058); match(CypherParser::SP); } - setState(2154); + setState(2061); kU_BitwiseOrOperatorExpression(); break; } @@ -13461,28 +12911,28 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 2: { enterOuterAlt(_localctx, 2); - setState(2158); + setState(2065); kU_BitwiseOrOperatorExpression(); - setState(2160); + setState(2067); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2159); + setState(2066); match(CypherParser::SP); } - setState(2162); + setState(2069); antlrcpp::downCast(_localctx)->invalid_not_equalToken = match(CypherParser::INVALID_NOT_EQUAL); - setState(2164); + setState(2071); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2163); + setState(2070); match(CypherParser::SP); } - setState(2166); + setState(2073); kU_BitwiseOrOperatorExpression(); notifyInvalidNotEqualOperator(antlrcpp::downCast(_localctx)->invalid_not_equalToken); break; @@ -13490,53 +12940,53 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress case 3: { enterOuterAlt(_localctx, 3); - setState(2170); + setState(2077); kU_BitwiseOrOperatorExpression(); - setState(2172); + setState(2079); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2171); + setState(2078); match(CypherParser::SP); } - setState(2174); + setState(2081); kU_ComparisonOperator(); - setState(2176); + setState(2083); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2175); + setState(2082); match(CypherParser::SP); } - setState(2178); + setState(2085); kU_BitwiseOrOperatorExpression(); - setState(2188); + setState(2095); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2180); + setState(2087); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2179); + setState(2086); match(CypherParser::SP); } - setState(2182); + setState(2089); kU_ComparisonOperator(); - setState(2184); + setState(2091); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2183); + setState(2090); match(CypherParser::SP); } - setState(2186); + setState(2093); kU_BitwiseOrOperatorExpression(); break; } @@ -13544,9 +12994,9 @@ CypherParser::OC_ComparisonExpressionContext* CypherParser::oC_ComparisonExpress default: throw NoViableAltException(this); } - setState(2190); + setState(2097); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 357, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 338, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); notifyNonBinaryComparison(_localctx->start); break; @@ -13580,7 +13030,7 @@ size_t CypherParser::KU_ComparisonOperatorContext::getRuleIndex() const { CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator() { KU_ComparisonOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 242, CypherParser::RuleKU_ComparisonOperator); + enterRule(_localctx, 232, CypherParser::RuleKU_ComparisonOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -13592,7 +13042,7 @@ CypherParser::KU_ComparisonOperatorContext* CypherParser::kU_ComparisonOperator( }); try { enterOuterAlt(_localctx, 1); - setState(2196); + setState(2103); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 254016) != 0))) { @@ -13643,7 +13093,7 @@ size_t CypherParser::KU_BitwiseOrOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrOperatorExpression() { KU_BitwiseOrOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 244, CypherParser::RuleKU_BitwiseOrOperatorExpression); + enterRule(_localctx, 234, CypherParser::RuleKU_BitwiseOrOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13656,37 +13106,37 @@ CypherParser::KU_BitwiseOrOperatorExpressionContext* CypherParser::kU_BitwiseOrO try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2198); + setState(2105); kU_BitwiseAndOperatorExpression(); - setState(2209); + setState(2116); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 361, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 342, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2200); + setState(2107); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2199); + setState(2106); match(CypherParser::SP); } - setState(2202); + setState(2109); match(CypherParser::T__10); - setState(2204); + setState(2111); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2203); + setState(2110); match(CypherParser::SP); } - setState(2206); + setState(2113); kU_BitwiseAndOperatorExpression(); } - setState(2211); + setState(2118); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 361, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 342, _ctx); } } @@ -13729,7 +13179,7 @@ size_t CypherParser::KU_BitwiseAndOperatorExpressionContext::getRuleIndex() cons CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAndOperatorExpression() { KU_BitwiseAndOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 246, CypherParser::RuleKU_BitwiseAndOperatorExpression); + enterRule(_localctx, 236, CypherParser::RuleKU_BitwiseAndOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13742,37 +13192,37 @@ CypherParser::KU_BitwiseAndOperatorExpressionContext* CypherParser::kU_BitwiseAn try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2212); + setState(2119); kU_BitShiftOperatorExpression(); - setState(2223); + setState(2130); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 364, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2214); + setState(2121); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2213); + setState(2120); match(CypherParser::SP); } - setState(2216); + setState(2123); match(CypherParser::T__17); - setState(2218); + setState(2125); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2217); + setState(2124); match(CypherParser::SP); } - setState(2220); + setState(2127); kU_BitShiftOperatorExpression(); } - setState(2225); + setState(2132); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 364, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 345, _ctx); } } @@ -13823,7 +13273,7 @@ size_t CypherParser::KU_BitShiftOperatorExpressionContext::getRuleIndex() const CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOperatorExpression() { KU_BitShiftOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 248, CypherParser::RuleKU_BitShiftOperatorExpression); + enterRule(_localctx, 238, CypherParser::RuleKU_BitShiftOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13836,37 +13286,37 @@ CypherParser::KU_BitShiftOperatorExpressionContext* CypherParser::kU_BitShiftOpe try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2226); + setState(2133); oC_AddOrSubtractExpression(); - setState(2238); + setState(2145); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 367, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 348, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2228); + setState(2135); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2227); + setState(2134); match(CypherParser::SP); } - setState(2230); + setState(2137); kU_BitShiftOperator(); - setState(2232); + setState(2139); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2231); + setState(2138); match(CypherParser::SP); } - setState(2234); + setState(2141); oC_AddOrSubtractExpression(); } - setState(2240); + setState(2147); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 367, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 348, _ctx); } } @@ -13893,7 +13343,7 @@ size_t CypherParser::KU_BitShiftOperatorContext::getRuleIndex() const { CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { KU_BitShiftOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 250, CypherParser::RuleKU_BitShiftOperator); + enterRule(_localctx, 240, CypherParser::RuleKU_BitShiftOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -13905,7 +13355,7 @@ CypherParser::KU_BitShiftOperatorContext* CypherParser::kU_BitShiftOperator() { }); try { enterOuterAlt(_localctx, 1); - setState(2241); + setState(2148); _la = _input->LA(1); if (!(_la == CypherParser::T__18 @@ -13965,7 +13415,7 @@ size_t CypherParser::OC_AddOrSubtractExpressionContext::getRuleIndex() const { CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractExpression() { OC_AddOrSubtractExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 252, CypherParser::RuleOC_AddOrSubtractExpression); + enterRule(_localctx, 242, CypherParser::RuleOC_AddOrSubtractExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -13978,37 +13428,37 @@ CypherParser::OC_AddOrSubtractExpressionContext* CypherParser::oC_AddOrSubtractE try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2243); + setState(2150); oC_MultiplyDivideModuloExpression(); - setState(2255); + setState(2162); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 370, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 351, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2245); + setState(2152); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2244); + setState(2151); match(CypherParser::SP); } - setState(2247); + setState(2154); kU_AddOrSubtractOperator(); - setState(2249); + setState(2156); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2248); + setState(2155); match(CypherParser::SP); } - setState(2251); + setState(2158); oC_MultiplyDivideModuloExpression(); } - setState(2257); + setState(2164); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 370, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 351, _ctx); } } @@ -14039,7 +13489,7 @@ size_t CypherParser::KU_AddOrSubtractOperatorContext::getRuleIndex() const { CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOperator() { KU_AddOrSubtractOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 254, CypherParser::RuleKU_AddOrSubtractOperator); + enterRule(_localctx, 244, CypherParser::RuleKU_AddOrSubtractOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -14051,7 +13501,7 @@ CypherParser::KU_AddOrSubtractOperatorContext* CypherParser::kU_AddOrSubtractOpe }); try { enterOuterAlt(_localctx, 1); - setState(2258); + setState(2165); _la = _input->LA(1); if (!(_la == CypherParser::T__20 || _la == CypherParser::MINUS)) { _errHandler->recoverInline(this); @@ -14109,7 +13559,7 @@ size_t CypherParser::OC_MultiplyDivideModuloExpressionContext::getRuleIndex() co CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_MultiplyDivideModuloExpression() { OC_MultiplyDivideModuloExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 256, CypherParser::RuleOC_MultiplyDivideModuloExpression); + enterRule(_localctx, 246, CypherParser::RuleOC_MultiplyDivideModuloExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14122,37 +13572,37 @@ CypherParser::OC_MultiplyDivideModuloExpressionContext* CypherParser::oC_Multipl try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2260); + setState(2167); oC_PowerOfExpression(); - setState(2272); + setState(2179); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 373, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 354, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2262); + setState(2169); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2261); + setState(2168); match(CypherParser::SP); } - setState(2264); + setState(2171); kU_MultiplyDivideModuloOperator(); - setState(2266); + setState(2173); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2265); + setState(2172); match(CypherParser::SP); } - setState(2268); + setState(2175); oC_PowerOfExpression(); } - setState(2274); + setState(2181); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 373, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 354, _ctx); } } @@ -14183,7 +13633,7 @@ size_t CypherParser::KU_MultiplyDivideModuloOperatorContext::getRuleIndex() cons CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyDivideModuloOperator() { KU_MultiplyDivideModuloOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 258, CypherParser::RuleKU_MultiplyDivideModuloOperator); + enterRule(_localctx, 248, CypherParser::RuleKU_MultiplyDivideModuloOperator); size_t _la = 0; #if __cplusplus > 201703L @@ -14195,7 +13645,7 @@ CypherParser::KU_MultiplyDivideModuloOperatorContext* CypherParser::kU_MultiplyD }); try { enterOuterAlt(_localctx, 1); - setState(2275); + setState(2182); _la = _input->LA(1); if (!(_la == CypherParser::T__21 @@ -14247,7 +13697,7 @@ size_t CypherParser::OC_PowerOfExpressionContext::getRuleIndex() const { CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() { OC_PowerOfExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 260, CypherParser::RuleOC_PowerOfExpression); + enterRule(_localctx, 250, CypherParser::RuleOC_PowerOfExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14260,37 +13710,37 @@ CypherParser::OC_PowerOfExpressionContext* CypherParser::oC_PowerOfExpression() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2277); + setState(2184); oC_UnaryAddSubtractOrFactorialExpression(); - setState(2288); + setState(2195); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 376, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 357, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2279); + setState(2186); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2278); + setState(2185); match(CypherParser::SP); } - setState(2281); + setState(2188); match(CypherParser::T__23); - setState(2283); + setState(2190); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2282); + setState(2189); match(CypherParser::SP); } - setState(2285); + setState(2192); oC_UnaryAddSubtractOrFactorialExpression(); } - setState(2290); + setState(2197); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 376, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 357, _ctx); } } @@ -14341,7 +13791,7 @@ size_t CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext::getRuleInd CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_UnaryAddSubtractOrFactorialExpression() { OC_UnaryAddSubtractOrFactorialExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 262, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); + enterRule(_localctx, 252, CypherParser::RuleOC_UnaryAddSubtractOrFactorialExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14353,40 +13803,40 @@ CypherParser::OC_UnaryAddSubtractOrFactorialExpressionContext* CypherParser::oC_ }); try { enterOuterAlt(_localctx, 1); - setState(2297); + setState(2204); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::MINUS) { - setState(2291); + setState(2198); match(CypherParser::MINUS); - setState(2293); + setState(2200); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2292); + setState(2199); match(CypherParser::SP); } - setState(2299); + setState(2206); _errHandler->sync(this); _la = _input->LA(1); } - setState(2300); + setState(2207); oC_StringListNullOperatorExpression(); - setState(2305); + setState(2212); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 380, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 361, _ctx)) { case 1: { - setState(2302); + setState(2209); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2301); + setState(2208); match(CypherParser::SP); } - setState(2304); + setState(2211); match(CypherParser::FACTORIAL); break; } @@ -14439,7 +13889,7 @@ size_t CypherParser::OC_StringListNullOperatorExpressionContext::getRuleIndex() CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_StringListNullOperatorExpression() { OC_StringListNullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 264, CypherParser::RuleOC_StringListNullOperatorExpression); + enterRule(_localctx, 254, CypherParser::RuleOC_StringListNullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14451,26 +13901,26 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2307); + setState(2214); oC_PropertyOrLabelsExpression(); - setState(2315); + setState(2222); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 382, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 363, _ctx)) { case 1: { - setState(2308); + setState(2215); oC_StringOperatorExpression(); break; } case 2: { - setState(2310); + setState(2217); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2309); + setState(2216); oC_ListOperatorExpression(); break; } @@ -14478,15 +13928,15 @@ CypherParser::OC_StringListNullOperatorExpressionContext* CypherParser::oC_Strin default: throw NoViableAltException(this); } - setState(2312); + setState(2219); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 381, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 362, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 3: { - setState(2314); + setState(2221); oC_NullOperatorExpression(); break; } @@ -14547,7 +13997,7 @@ size_t CypherParser::OC_ListOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExpression() { OC_ListOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 266, CypherParser::RuleOC_ListOperatorExpression); + enterRule(_localctx, 256, CypherParser::RuleOC_ListOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14558,44 +14008,44 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp exitRule(); }); try { - setState(2336); + setState(2243); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 386, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 367, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2317); + setState(2224); match(CypherParser::SP); - setState(2318); + setState(2225); match(CypherParser::IN); - setState(2320); + setState(2227); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2319); + setState(2226); match(CypherParser::SP); } - setState(2322); + setState(2229); oC_PropertyOrLabelsExpression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2323); + setState(2230); match(CypherParser::T__6); - setState(2324); + setState(2231); oC_Expression(); - setState(2325); + setState(2232); match(CypherParser::T__7); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2327); + setState(2234); match(CypherParser::T__6); - setState(2329); + setState(2236); _errHandler->sync(this); _la = _input->LA(1); @@ -14603,12 +14053,12 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454616868909) != 0)) { - setState(2328); + setState(2235); oC_Expression(); } - setState(2331); + setState(2238); match(CypherParser::COLON); - setState(2333); + setState(2240); _errHandler->sync(this); _la = _input->LA(1); @@ -14616,10 +14066,10 @@ CypherParser::OC_ListOperatorExpressionContext* CypherParser::oC_ListOperatorExp ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454616868909) != 0)) { - setState(2332); + setState(2239); oC_Expression(); } - setState(2335); + setState(2242); match(CypherParser::T__7); break; } @@ -14684,7 +14134,7 @@ size_t CypherParser::OC_StringOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperatorExpression() { OC_StringOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 268, CypherParser::RuleOC_StringOperatorExpression); + enterRule(_localctx, 258, CypherParser::RuleOC_StringOperatorExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14696,43 +14146,43 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato }); try { enterOuterAlt(_localctx, 1); - setState(2349); + setState(2256); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 387, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 368, _ctx)) { case 1: { - setState(2338); + setState(2245); oC_RegularExpression(); break; } case 2: { - setState(2339); + setState(2246); match(CypherParser::SP); - setState(2340); + setState(2247); match(CypherParser::STARTS); - setState(2341); + setState(2248); match(CypherParser::SP); - setState(2342); + setState(2249); match(CypherParser::WITH); break; } case 3: { - setState(2343); + setState(2250); match(CypherParser::SP); - setState(2344); + setState(2251); match(CypherParser::ENDS); - setState(2345); + setState(2252); match(CypherParser::SP); - setState(2346); + setState(2253); match(CypherParser::WITH); break; } case 4: { - setState(2347); + setState(2254); match(CypherParser::SP); - setState(2348); + setState(2255); match(CypherParser::CONTAINS); break; } @@ -14740,15 +14190,15 @@ CypherParser::OC_StringOperatorExpressionContext* CypherParser::oC_StringOperato default: break; } - setState(2352); + setState(2259); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2351); + setState(2258); match(CypherParser::SP); } - setState(2354); + setState(2261); oC_PropertyOrLabelsExpression(); } @@ -14779,7 +14229,7 @@ size_t CypherParser::OC_RegularExpressionContext::getRuleIndex() const { CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() { OC_RegularExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 270, CypherParser::RuleOC_RegularExpression); + enterRule(_localctx, 260, CypherParser::RuleOC_RegularExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14791,15 +14241,15 @@ CypherParser::OC_RegularExpressionContext* CypherParser::oC_RegularExpression() }); try { enterOuterAlt(_localctx, 1); - setState(2357); + setState(2264); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2356); + setState(2263); match(CypherParser::SP); } - setState(2359); + setState(2266); match(CypherParser::T__24); } @@ -14846,7 +14296,7 @@ size_t CypherParser::OC_NullOperatorExpressionContext::getRuleIndex() const { CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExpression() { OC_NullOperatorExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 272, CypherParser::RuleOC_NullOperatorExpression); + enterRule(_localctx, 262, CypherParser::RuleOC_NullOperatorExpression); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -14856,35 +14306,35 @@ CypherParser::OC_NullOperatorExpressionContext* CypherParser::oC_NullOperatorExp exitRule(); }); try { - setState(2371); + setState(2278); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 390, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 371, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2361); + setState(2268); match(CypherParser::SP); - setState(2362); + setState(2269); match(CypherParser::IS); - setState(2363); + setState(2270); match(CypherParser::SP); - setState(2364); + setState(2271); match(CypherParser::NULL_); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2365); + setState(2272); match(CypherParser::SP); - setState(2366); + setState(2273); match(CypherParser::IS); - setState(2367); + setState(2274); match(CypherParser::SP); - setState(2368); + setState(2275); match(CypherParser::NOT); - setState(2369); + setState(2276); match(CypherParser::SP); - setState(2370); + setState(2277); match(CypherParser::NULL_); break; } @@ -14937,7 +14387,7 @@ size_t CypherParser::OC_PropertyOrLabelsExpressionContext::getRuleIndex() const CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrLabelsExpression() { OC_PropertyOrLabelsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 274, CypherParser::RuleOC_PropertyOrLabelsExpression); + enterRule(_localctx, 264, CypherParser::RuleOC_PropertyOrLabelsExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -14950,27 +14400,27 @@ CypherParser::OC_PropertyOrLabelsExpressionContext* CypherParser::oC_PropertyOrL try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2373); + setState(2280); oC_Atom(); - setState(2380); + setState(2287); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 392, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 373, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { - setState(2375); + setState(2282); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2374); + setState(2281); match(CypherParser::SP); } - setState(2377); + setState(2284); oC_PropertyLookup(); } - setState(2382); + setState(2289); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 392, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 373, _ctx); } } @@ -15037,7 +14487,7 @@ size_t CypherParser::OC_AtomContext::getRuleIndex() const { CypherParser::OC_AtomContext* CypherParser::oC_Atom() { OC_AtomContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 276, CypherParser::RuleOC_Atom); + enterRule(_localctx, 266, CypherParser::RuleOC_Atom); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15047,75 +14497,75 @@ CypherParser::OC_AtomContext* CypherParser::oC_Atom() { exitRule(); }); try { - setState(2393); + setState(2300); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 393, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 374, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2383); + setState(2290); oC_Literal(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2384); + setState(2291); oC_Parameter(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2385); + setState(2292); oC_CaseExpression(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(2386); + setState(2293); oC_ParenthesizedExpression(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(2387); + setState(2294); oC_FunctionInvocation(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(2388); + setState(2295); oC_PathPatterns(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(2389); + setState(2296); oC_ExistSubquery(); break; } case 8: { enterOuterAlt(_localctx, 8); - setState(2390); + setState(2297); kU_CountSubquery(); break; } case 9: { enterOuterAlt(_localctx, 9); - setState(2391); + setState(2298); oC_Variable(); break; } case 10: { enterOuterAlt(_localctx, 10); - setState(2392); + setState(2299); oC_Quantifier(); break; } @@ -15176,7 +14626,7 @@ size_t CypherParser::OC_QuantifierContext::getRuleIndex() const { CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { OC_QuantifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 278, CypherParser::RuleOC_Quantifier); + enterRule(_localctx, 268, CypherParser::RuleOC_Quantifier); size_t _la = 0; #if __cplusplus > 201703L @@ -15187,153 +14637,153 @@ CypherParser::OC_QuantifierContext* CypherParser::oC_Quantifier() { exitRule(); }); try { - setState(2451); + setState(2358); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ALL: { enterOuterAlt(_localctx, 1); - setState(2395); + setState(2302); match(CypherParser::ALL); - setState(2397); + setState(2304); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2396); + setState(2303); match(CypherParser::SP); } - setState(2399); + setState(2306); match(CypherParser::T__1); - setState(2401); + setState(2308); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2400); + setState(2307); match(CypherParser::SP); } - setState(2403); + setState(2310); oC_FilterExpression(); - setState(2405); + setState(2312); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2404); + setState(2311); match(CypherParser::SP); } - setState(2407); + setState(2314); match(CypherParser::T__3); break; } case CypherParser::ANY: { enterOuterAlt(_localctx, 2); - setState(2409); + setState(2316); match(CypherParser::ANY); - setState(2411); + setState(2318); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2410); + setState(2317); match(CypherParser::SP); } - setState(2413); + setState(2320); match(CypherParser::T__1); - setState(2415); + setState(2322); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2414); + setState(2321); match(CypherParser::SP); } - setState(2417); + setState(2324); oC_FilterExpression(); - setState(2419); + setState(2326); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2418); + setState(2325); match(CypherParser::SP); } - setState(2421); + setState(2328); match(CypherParser::T__3); break; } case CypherParser::NONE: { enterOuterAlt(_localctx, 3); - setState(2423); + setState(2330); match(CypherParser::NONE); - setState(2425); + setState(2332); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2424); + setState(2331); match(CypherParser::SP); } - setState(2427); + setState(2334); match(CypherParser::T__1); - setState(2429); + setState(2336); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2428); + setState(2335); match(CypherParser::SP); } - setState(2431); + setState(2338); oC_FilterExpression(); - setState(2433); + setState(2340); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2432); + setState(2339); match(CypherParser::SP); } - setState(2435); + setState(2342); match(CypherParser::T__3); break; } case CypherParser::SINGLE: { enterOuterAlt(_localctx, 4); - setState(2437); + setState(2344); match(CypherParser::SINGLE); - setState(2439); + setState(2346); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2438); + setState(2345); match(CypherParser::SP); } - setState(2441); + setState(2348); match(CypherParser::T__1); - setState(2443); + setState(2350); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2442); + setState(2349); match(CypherParser::SP); } - setState(2445); + setState(2352); oC_FilterExpression(); - setState(2447); + setState(2354); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2446); + setState(2353); match(CypherParser::SP); } - setState(2449); + setState(2356); match(CypherParser::T__3); break; } @@ -15378,7 +14828,7 @@ size_t CypherParser::OC_FilterExpressionContext::getRuleIndex() const { CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { OC_FilterExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 280, CypherParser::RuleOC_FilterExpression); + enterRule(_localctx, 270, CypherParser::RuleOC_FilterExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -15390,22 +14840,22 @@ CypherParser::OC_FilterExpressionContext* CypherParser::oC_FilterExpression() { }); try { enterOuterAlt(_localctx, 1); - setState(2453); + setState(2360); oC_IdInColl(); - setState(2458); + setState(2365); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 408, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 389, _ctx)) { case 1: { - setState(2455); + setState(2362); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2454); + setState(2361); match(CypherParser::SP); } - setState(2457); + setState(2364); oC_Where(); break; } @@ -15458,7 +14908,7 @@ size_t CypherParser::OC_IdInCollContext::getRuleIndex() const { CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { OC_IdInCollContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 282, CypherParser::RuleOC_IdInColl); + enterRule(_localctx, 272, CypherParser::RuleOC_IdInColl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15469,15 +14919,15 @@ CypherParser::OC_IdInCollContext* CypherParser::oC_IdInColl() { }); try { enterOuterAlt(_localctx, 1); - setState(2460); + setState(2367); oC_Variable(); - setState(2461); + setState(2368); match(CypherParser::SP); - setState(2462); + setState(2369); match(CypherParser::IN); - setState(2463); + setState(2370); match(CypherParser::SP); - setState(2464); + setState(2371); oC_Expression(); } @@ -15528,7 +14978,7 @@ size_t CypherParser::OC_LiteralContext::getRuleIndex() const { CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { OC_LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 284, CypherParser::RuleOC_Literal); + enterRule(_localctx, 274, CypherParser::RuleOC_Literal); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -15538,21 +14988,21 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { exitRule(); }); try { - setState(2472); + setState(2379); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::DecimalInteger: case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2466); + setState(2373); oC_NumberLiteral(); break; } case CypherParser::StringLiteral: { enterOuterAlt(_localctx, 2); - setState(2467); + setState(2374); match(CypherParser::StringLiteral); break; } @@ -15560,28 +15010,28 @@ CypherParser::OC_LiteralContext* CypherParser::oC_Literal() { case CypherParser::FALSE: case CypherParser::TRUE: { enterOuterAlt(_localctx, 3); - setState(2468); + setState(2375); oC_BooleanLiteral(); break; } case CypherParser::NULL_: { enterOuterAlt(_localctx, 4); - setState(2469); + setState(2376); match(CypherParser::NULL_); break; } case CypherParser::T__6: { enterOuterAlt(_localctx, 5); - setState(2470); + setState(2377); oC_ListLiteral(); break; } case CypherParser::T__8: { enterOuterAlt(_localctx, 6); - setState(2471); + setState(2378); kU_StructLiteral(); break; } @@ -15622,7 +15072,7 @@ size_t CypherParser::OC_BooleanLiteralContext::getRuleIndex() const { CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { OC_BooleanLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 286, CypherParser::RuleOC_BooleanLiteral); + enterRule(_localctx, 276, CypherParser::RuleOC_BooleanLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -15634,7 +15084,7 @@ CypherParser::OC_BooleanLiteralContext* CypherParser::oC_BooleanLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2474); + setState(2381); _la = _input->LA(1); if (!(_la == CypherParser::FALSE @@ -15690,7 +15140,7 @@ size_t CypherParser::OC_ListLiteralContext::getRuleIndex() const { CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { OC_ListLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 288, CypherParser::RuleOC_ListLiteral); + enterRule(_localctx, 278, CypherParser::RuleOC_ListLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -15702,17 +15152,17 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2476); + setState(2383); match(CypherParser::T__6); - setState(2478); + setState(2385); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2477); + setState(2384); match(CypherParser::SP); } - setState(2493); + setState(2400); _errHandler->sync(this); _la = _input->LA(1); @@ -15720,36 +15170,36 @@ CypherParser::OC_ListLiteralContext* CypherParser::oC_ListLiteral() { ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454616868909) != 0)) { - setState(2480); + setState(2387); oC_Expression(); - setState(2482); + setState(2389); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2481); + setState(2388); match(CypherParser::SP); } - setState(2490); + setState(2397); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2484); + setState(2391); kU_ListEntry(); - setState(2486); + setState(2393); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2485); + setState(2392); match(CypherParser::SP); } - setState(2492); + setState(2399); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2495); + setState(2402); match(CypherParser::T__7); } @@ -15784,7 +15234,7 @@ size_t CypherParser::KU_ListEntryContext::getRuleIndex() const { CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { KU_ListEntryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 290, CypherParser::RuleKU_ListEntry); + enterRule(_localctx, 280, CypherParser::RuleKU_ListEntry); size_t _la = 0; #if __cplusplus > 201703L @@ -15796,14 +15246,14 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { }); try { enterOuterAlt(_localctx, 1); - setState(2497); + setState(2404); match(CypherParser::T__2); - setState(2499); + setState(2406); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 415, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 396, _ctx)) { case 1: { - setState(2498); + setState(2405); match(CypherParser::SP); break; } @@ -15811,7 +15261,7 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { default: break; } - setState(2502); + setState(2409); _errHandler->sync(this); _la = _input->LA(1); @@ -15819,7 +15269,7 @@ CypherParser::KU_ListEntryContext* CypherParser::kU_ListEntry() { ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454616868909) != 0)) { - setState(2501); + setState(2408); oC_Expression(); } @@ -15863,7 +15313,7 @@ size_t CypherParser::KU_StructLiteralContext::getRuleIndex() const { CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { KU_StructLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 292, CypherParser::RuleKU_StructLiteral); + enterRule(_localctx, 282, CypherParser::RuleKU_StructLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -15875,55 +15325,55 @@ CypherParser::KU_StructLiteralContext* CypherParser::kU_StructLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2504); + setState(2411); match(CypherParser::T__8); - setState(2506); + setState(2413); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2505); + setState(2412); match(CypherParser::SP); } - setState(2508); + setState(2415); kU_StructField(); - setState(2510); + setState(2417); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2509); + setState(2416); match(CypherParser::SP); } - setState(2522); + setState(2429); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2512); + setState(2419); match(CypherParser::T__2); - setState(2514); + setState(2421); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2513); + setState(2420); match(CypherParser::SP); } - setState(2516); + setState(2423); kU_StructField(); - setState(2518); + setState(2425); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2517); + setState(2424); match(CypherParser::SP); } - setState(2524); + setState(2431); _errHandler->sync(this); _la = _input->LA(1); } - setState(2525); + setState(2432); match(CypherParser::T__9); } @@ -15974,7 +15424,7 @@ size_t CypherParser::KU_StructFieldContext::getRuleIndex() const { CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { KU_StructFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 294, CypherParser::RuleKU_StructField); + enterRule(_localctx, 284, CypherParser::RuleKU_StructField); size_t _la = 0; #if __cplusplus > 201703L @@ -15986,7 +15436,7 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { }); try { enterOuterAlt(_localctx, 1); - setState(2529); + setState(2436); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -16043,13 +15493,13 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2527); + setState(2434); oC_SymbolicName(); break; } case CypherParser::StringLiteral: { - setState(2528); + setState(2435); match(CypherParser::StringLiteral); break; } @@ -16057,25 +15507,25 @@ CypherParser::KU_StructFieldContext* CypherParser::kU_StructField() { default: throw NoViableAltException(this); } - setState(2532); + setState(2439); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2531); + setState(2438); match(CypherParser::SP); } - setState(2534); + setState(2441); match(CypherParser::COLON); - setState(2536); + setState(2443); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2535); + setState(2442); match(CypherParser::SP); } - setState(2538); + setState(2445); oC_Expression(); } @@ -16114,7 +15564,7 @@ size_t CypherParser::OC_ParenthesizedExpressionContext::getRuleIndex() const { CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedExpression() { OC_ParenthesizedExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 296, CypherParser::RuleOC_ParenthesizedExpression); + enterRule(_localctx, 286, CypherParser::RuleOC_ParenthesizedExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -16126,27 +15576,27 @@ CypherParser::OC_ParenthesizedExpressionContext* CypherParser::oC_ParenthesizedE }); try { enterOuterAlt(_localctx, 1); - setState(2540); + setState(2447); match(CypherParser::T__1); - setState(2542); + setState(2449); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2541); + setState(2448); match(CypherParser::SP); } - setState(2544); + setState(2451); oC_Expression(); - setState(2546); + setState(2453); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2545); + setState(2452); match(CypherParser::SP); } - setState(2548); + setState(2455); match(CypherParser::T__3); } @@ -16217,7 +15667,7 @@ size_t CypherParser::OC_FunctionInvocationContext::getRuleIndex() const { CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation() { OC_FunctionInvocationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 298, CypherParser::RuleOC_FunctionInvocation); + enterRule(_localctx, 288, CypherParser::RuleOC_FunctionInvocation); size_t _la = 0; #if __cplusplus > 201703L @@ -16228,109 +15678,109 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( exitRule(); }); try { - setState(2627); + setState(2534); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 446, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 427, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2550); + setState(2457); match(CypherParser::COUNT); - setState(2552); + setState(2459); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2551); + setState(2458); match(CypherParser::SP); } - setState(2554); + setState(2461); match(CypherParser::T__1); - setState(2556); + setState(2463); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2555); + setState(2462); match(CypherParser::SP); } - setState(2558); + setState(2465); match(CypherParser::STAR); - setState(2560); + setState(2467); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2559); + setState(2466); match(CypherParser::SP); } - setState(2562); + setState(2469); match(CypherParser::T__3); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2563); + setState(2470); match(CypherParser::CAST); - setState(2565); + setState(2472); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2564); + setState(2471); match(CypherParser::SP); } - setState(2567); + setState(2474); match(CypherParser::T__1); - setState(2569); + setState(2476); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2568); + setState(2475); match(CypherParser::SP); } - setState(2571); + setState(2478); kU_FunctionParameter(); - setState(2573); + setState(2480); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2572); + setState(2479); match(CypherParser::SP); } - setState(2585); + setState(2492); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::AS: { - setState(2575); + setState(2482); match(CypherParser::AS); - setState(2577); + setState(2484); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2576); + setState(2483); match(CypherParser::SP); } - setState(2579); + setState(2486); kU_DataType(0); break; } case CypherParser::T__2: { - setState(2580); + setState(2487); match(CypherParser::T__2); - setState(2582); + setState(2489); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2581); + setState(2488); match(CypherParser::SP); } - setState(2584); + setState(2491); kU_FunctionParameter(); break; } @@ -16338,58 +15788,58 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( default: throw NoViableAltException(this); } - setState(2588); + setState(2495); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2587); + setState(2494); match(CypherParser::SP); } - setState(2590); + setState(2497); match(CypherParser::T__3); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(2592); + setState(2499); oC_FunctionName(); - setState(2594); + setState(2501); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2593); + setState(2500); match(CypherParser::SP); } - setState(2596); + setState(2503); match(CypherParser::T__1); - setState(2598); + setState(2505); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2597); + setState(2504); match(CypherParser::SP); } - setState(2604); + setState(2511); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::DISTINCT) { - setState(2600); + setState(2507); match(CypherParser::DISTINCT); - setState(2602); + setState(2509); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2601); + setState(2508); match(CypherParser::SP); } } - setState(2623); + setState(2530); _errHandler->sync(this); _la = _input->LA(1); @@ -16397,46 +15847,46 @@ CypherParser::OC_FunctionInvocationContext* CypherParser::oC_FunctionInvocation( ((1ULL << _la) & -4641100153426541948) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & -572029811628137251) != 0) || ((((_la - 128) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 128)) & 21454616868909) != 0)) { - setState(2606); + setState(2513); kU_FunctionParameter(); - setState(2608); + setState(2515); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2607); + setState(2514); match(CypherParser::SP); } - setState(2620); + setState(2527); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2610); + setState(2517); match(CypherParser::T__2); - setState(2612); + setState(2519); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2611); + setState(2518); match(CypherParser::SP); } - setState(2614); + setState(2521); kU_FunctionParameter(); - setState(2616); + setState(2523); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2615); + setState(2522); match(CypherParser::SP); } - setState(2622); + setState(2529); _errHandler->sync(this); _la = _input->LA(1); } } - setState(2625); + setState(2532); match(CypherParser::T__3); break; } @@ -16473,7 +15923,7 @@ size_t CypherParser::OC_FunctionNameContext::getRuleIndex() const { CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { OC_FunctionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 300, CypherParser::RuleOC_FunctionName); + enterRule(_localctx, 290, CypherParser::RuleOC_FunctionName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -16484,7 +15934,7 @@ CypherParser::OC_FunctionNameContext* CypherParser::oC_FunctionName() { }); try { enterOuterAlt(_localctx, 1); - setState(2629); + setState(2536); oC_SymbolicName(); } @@ -16535,7 +15985,7 @@ size_t CypherParser::KU_FunctionParameterContext::getRuleIndex() const { CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() { KU_FunctionParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 302, CypherParser::RuleKU_FunctionParameter); + enterRule(_localctx, 292, CypherParser::RuleKU_FunctionParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -16546,36 +15996,36 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() exitRule(); }); try { - setState(2644); + setState(2551); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 450, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 431, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(2640); + setState(2547); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 449, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 430, _ctx)) { case 1: { - setState(2631); + setState(2538); oC_SymbolicName(); - setState(2633); + setState(2540); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2632); + setState(2539); match(CypherParser::SP); } - setState(2635); + setState(2542); match(CypherParser::COLON); - setState(2636); + setState(2543); match(CypherParser::T__5); - setState(2638); + setState(2545); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2637); + setState(2544); match(CypherParser::SP); } break; @@ -16584,14 +16034,14 @@ CypherParser::KU_FunctionParameterContext* CypherParser::kU_FunctionParameter() default: break; } - setState(2642); + setState(2549); oC_Expression(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(2643); + setState(2550); kU_LambdaParameter(); break; } @@ -16644,7 +16094,7 @@ size_t CypherParser::KU_LambdaParameterContext::getRuleIndex() const { CypherParser::KU_LambdaParameterContext* CypherParser::kU_LambdaParameter() { KU_LambdaParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 304, CypherParser::RuleKU_LambdaParameter); + enterRule(_localctx, 294, CypherParser::RuleKU_LambdaParameter); size_t _la = 0; #if __cplusplus > 201703L @@ -16656,36 +16106,36 @@ CypherParser::KU_LambdaParameterContext* CypherParser::kU_LambdaParameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2646); + setState(2553); kU_LambdaVars(); - setState(2648); + setState(2555); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2647); + setState(2554); match(CypherParser::SP); } - setState(2650); + setState(2557); match(CypherParser::MINUS); - setState(2651); + setState(2558); match(CypherParser::T__15); - setState(2653); + setState(2560); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2652); + setState(2559); match(CypherParser::SP); } - setState(2655); + setState(2562); oC_Expression(); - setState(2657); + setState(2564); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 453, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 434, _ctx)) { case 1: { - setState(2656); + setState(2563); match(CypherParser::SP); break; } @@ -16734,7 +16184,7 @@ size_t CypherParser::KU_LambdaVarsContext::getRuleIndex() const { CypherParser::KU_LambdaVarsContext* CypherParser::kU_LambdaVars() { KU_LambdaVarsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 306, CypherParser::RuleKU_LambdaVars); + enterRule(_localctx, 296, CypherParser::RuleKU_LambdaVars); size_t _la = 0; #if __cplusplus > 201703L @@ -16745,7 +16195,7 @@ CypherParser::KU_LambdaVarsContext* CypherParser::kU_LambdaVars() { exitRule(); }); try { - setState(2683); + setState(2590); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -16803,62 +16253,62 @@ CypherParser::KU_LambdaVarsContext* CypherParser::kU_LambdaVars() { case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2659); + setState(2566); oC_SymbolicName(); break; } case CypherParser::T__1: { enterOuterAlt(_localctx, 2); - setState(2660); + setState(2567); match(CypherParser::T__1); - setState(2662); + setState(2569); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2661); + setState(2568); match(CypherParser::SP); } - setState(2664); + setState(2571); oC_SymbolicName(); - setState(2666); + setState(2573); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2665); + setState(2572); match(CypherParser::SP); } - setState(2678); + setState(2585); _errHandler->sync(this); _la = _input->LA(1); while (_la == CypherParser::T__2) { - setState(2668); + setState(2575); match(CypherParser::T__2); - setState(2670); + setState(2577); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2669); + setState(2576); match(CypherParser::SP); } - setState(2672); + setState(2579); oC_SymbolicName(); - setState(2674); + setState(2581); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2673); + setState(2580); match(CypherParser::SP); } - setState(2680); + setState(2587); _errHandler->sync(this); _la = _input->LA(1); } - setState(2681); + setState(2588); match(CypherParser::T__3); break; } @@ -16911,7 +16361,7 @@ size_t CypherParser::OC_PathPatternsContext::getRuleIndex() const { CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { OC_PathPatternsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 308, CypherParser::RuleOC_PathPatterns); + enterRule(_localctx, 298, CypherParser::RuleOC_PathPatterns); size_t _la = 0; #if __cplusplus > 201703L @@ -16924,23 +16374,23 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2685); + setState(2592); oC_NodePattern(); - setState(2690); + setState(2597); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2687); + setState(2594); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2686); + setState(2593); match(CypherParser::SP); } - setState(2689); + setState(2596); oC_PatternElementChain(); break; } @@ -16948,9 +16398,9 @@ CypherParser::OC_PathPatternsContext* CypherParser::oC_PathPatterns() { default: throw NoViableAltException(this); } - setState(2692); + setState(2599); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 461, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 442, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); } @@ -17001,7 +16451,7 @@ size_t CypherParser::OC_ExistSubqueryContext::getRuleIndex() const { CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { OC_ExistSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 310, CypherParser::RuleOC_ExistSubquery); + enterRule(_localctx, 300, CypherParser::RuleOC_ExistSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -17013,52 +16463,52 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2694); + setState(2601); match(CypherParser::EXISTS); - setState(2696); + setState(2603); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2695); + setState(2602); match(CypherParser::SP); } - setState(2698); + setState(2605); match(CypherParser::T__8); - setState(2700); + setState(2607); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2699); + setState(2606); match(CypherParser::SP); } - setState(2702); + setState(2609); match(CypherParser::MATCH); - setState(2704); + setState(2611); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2703); + setState(2610); match(CypherParser::SP); } - setState(2706); + setState(2613); oC_Pattern(); - setState(2711); + setState(2618); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 466, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 447, _ctx)) { case 1: { - setState(2708); + setState(2615); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2707); + setState(2614); match(CypherParser::SP); } - setState(2710); + setState(2617); oC_Where(); break; } @@ -17066,15 +16516,15 @@ CypherParser::OC_ExistSubqueryContext* CypherParser::oC_ExistSubquery() { default: break; } - setState(2714); + setState(2621); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2713); + setState(2620); match(CypherParser::SP); } - setState(2716); + setState(2623); match(CypherParser::T__9); } @@ -17125,7 +16575,7 @@ size_t CypherParser::KU_CountSubqueryContext::getRuleIndex() const { CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { KU_CountSubqueryContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 312, CypherParser::RuleKU_CountSubquery); + enterRule(_localctx, 302, CypherParser::RuleKU_CountSubquery); size_t _la = 0; #if __cplusplus > 201703L @@ -17137,52 +16587,52 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { }); try { enterOuterAlt(_localctx, 1); - setState(2718); + setState(2625); match(CypherParser::COUNT); - setState(2720); + setState(2627); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2719); + setState(2626); match(CypherParser::SP); } - setState(2722); + setState(2629); match(CypherParser::T__8); - setState(2724); + setState(2631); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2723); + setState(2630); match(CypherParser::SP); } - setState(2726); + setState(2633); match(CypherParser::MATCH); - setState(2728); + setState(2635); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2727); + setState(2634); match(CypherParser::SP); } - setState(2730); + setState(2637); oC_Pattern(); - setState(2735); + setState(2642); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 472, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 453, _ctx)) { case 1: { - setState(2732); + setState(2639); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2731); + setState(2638); match(CypherParser::SP); } - setState(2734); + setState(2641); oC_Where(); break; } @@ -17190,15 +16640,15 @@ CypherParser::KU_CountSubqueryContext* CypherParser::kU_CountSubquery() { default: break; } - setState(2738); + setState(2645); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2737); + setState(2644); match(CypherParser::SP); } - setState(2740); + setState(2647); match(CypherParser::T__9); } @@ -17237,7 +16687,7 @@ size_t CypherParser::OC_PropertyLookupContext::getRuleIndex() const { CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { OC_PropertyLookupContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 314, CypherParser::RuleOC_PropertyLookup); + enterRule(_localctx, 304, CypherParser::RuleOC_PropertyLookup); size_t _la = 0; #if __cplusplus > 201703L @@ -17249,17 +16699,17 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { }); try { enterOuterAlt(_localctx, 1); - setState(2742); + setState(2649); match(CypherParser::T__4); - setState(2744); + setState(2651); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2743); + setState(2650); match(CypherParser::SP); } - setState(2748); + setState(2655); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -17316,13 +16766,13 @@ CypherParser::OC_PropertyLookupContext* CypherParser::oC_PropertyLookup() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2746); + setState(2653); oC_PropertyKeyName(); break; } case CypherParser::STAR: { - setState(2747); + setState(2654); match(CypherParser::STAR); break; } @@ -17391,7 +16841,7 @@ size_t CypherParser::OC_CaseExpressionContext::getRuleIndex() const { CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { OC_CaseExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 316, CypherParser::RuleOC_CaseExpression); + enterRule(_localctx, 306, CypherParser::RuleOC_CaseExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -17404,27 +16854,27 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(2772); + setState(2679); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 481, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 462, _ctx)) { case 1: { - setState(2750); + setState(2657); match(CypherParser::CASE); - setState(2755); + setState(2662); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2752); + setState(2659); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2751); + setState(2658); match(CypherParser::SP); } - setState(2754); + setState(2661); oC_CaseAlternative(); break; } @@ -17432,41 +16882,41 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2757); + setState(2664); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 477, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 458, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } case 2: { - setState(2759); + setState(2666); match(CypherParser::CASE); - setState(2761); + setState(2668); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2760); + setState(2667); match(CypherParser::SP); } - setState(2763); + setState(2670); oC_Expression(); - setState(2768); + setState(2675); _errHandler->sync(this); alt = 1; do { switch (alt) { case 1: { - setState(2765); + setState(2672); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2764); + setState(2671); match(CypherParser::SP); } - setState(2767); + setState(2674); oC_CaseAlternative(); break; } @@ -17474,9 +16924,9 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: throw NoViableAltException(this); } - setState(2770); + setState(2677); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 480, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 461, _ctx); } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); break; } @@ -17484,30 +16934,30 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2782); + setState(2689); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 484, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 465, _ctx)) { case 1: { - setState(2775); + setState(2682); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2774); + setState(2681); match(CypherParser::SP); } - setState(2777); + setState(2684); match(CypherParser::ELSE); - setState(2779); + setState(2686); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2778); + setState(2685); match(CypherParser::SP); } - setState(2781); + setState(2688); oC_Expression(); break; } @@ -17515,15 +16965,15 @@ CypherParser::OC_CaseExpressionContext* CypherParser::oC_CaseExpression() { default: break; } - setState(2785); + setState(2692); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2784); + setState(2691); match(CypherParser::SP); } - setState(2787); + setState(2694); match(CypherParser::END); } @@ -17574,7 +17024,7 @@ size_t CypherParser::OC_CaseAlternativeContext::getRuleIndex() const { CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { OC_CaseAlternativeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 318, CypherParser::RuleOC_CaseAlternative); + enterRule(_localctx, 308, CypherParser::RuleOC_CaseAlternative); size_t _la = 0; #if __cplusplus > 201703L @@ -17586,37 +17036,37 @@ CypherParser::OC_CaseAlternativeContext* CypherParser::oC_CaseAlternative() { }); try { enterOuterAlt(_localctx, 1); - setState(2789); + setState(2696); match(CypherParser::WHEN); - setState(2791); + setState(2698); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2790); + setState(2697); match(CypherParser::SP); } - setState(2793); + setState(2700); oC_Expression(); - setState(2795); + setState(2702); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2794); + setState(2701); match(CypherParser::SP); } - setState(2797); + setState(2704); match(CypherParser::THEN); - setState(2799); + setState(2706); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2798); + setState(2705); match(CypherParser::SP); } - setState(2801); + setState(2708); oC_Expression(); } @@ -17647,7 +17097,7 @@ size_t CypherParser::OC_VariableContext::getRuleIndex() const { CypherParser::OC_VariableContext* CypherParser::oC_Variable() { OC_VariableContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 320, CypherParser::RuleOC_Variable); + enterRule(_localctx, 310, CypherParser::RuleOC_Variable); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17658,7 +17108,7 @@ CypherParser::OC_VariableContext* CypherParser::oC_Variable() { }); try { enterOuterAlt(_localctx, 1); - setState(2803); + setState(2710); oC_SymbolicName(); } @@ -17693,7 +17143,7 @@ size_t CypherParser::OC_NumberLiteralContext::getRuleIndex() const { CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { OC_NumberLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 322, CypherParser::RuleOC_NumberLiteral); + enterRule(_localctx, 312, CypherParser::RuleOC_NumberLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17703,20 +17153,20 @@ CypherParser::OC_NumberLiteralContext* CypherParser::oC_NumberLiteral() { exitRule(); }); try { - setState(2807); + setState(2714); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ExponentDecimalReal: case CypherParser::RegularDecimalReal: { enterOuterAlt(_localctx, 1); - setState(2805); + setState(2712); oC_DoubleLiteral(); break; } case CypherParser::DecimalInteger: { enterOuterAlt(_localctx, 2); - setState(2806); + setState(2713); oC_IntegerLiteral(); break; } @@ -17757,7 +17207,7 @@ size_t CypherParser::OC_ParameterContext::getRuleIndex() const { CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { OC_ParameterContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 324, CypherParser::RuleOC_Parameter); + enterRule(_localctx, 314, CypherParser::RuleOC_Parameter); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17768,9 +17218,9 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { }); try { enterOuterAlt(_localctx, 1); - setState(2809); + setState(2716); match(CypherParser::T__25); - setState(2812); + setState(2719); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::ADD: @@ -17827,13 +17277,13 @@ CypherParser::OC_ParameterContext* CypherParser::oC_Parameter() { case CypherParser::HexLetter: case CypherParser::UnescapedSymbolicName: case CypherParser::EscapedSymbolicName: { - setState(2810); + setState(2717); oC_SymbolicName(); break; } case CypherParser::DecimalInteger: { - setState(2811); + setState(2718); match(CypherParser::DecimalInteger); break; } @@ -17878,7 +17328,7 @@ size_t CypherParser::OC_PropertyExpressionContext::getRuleIndex() const { CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression() { OC_PropertyExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 326, CypherParser::RuleOC_PropertyExpression); + enterRule(_localctx, 316, CypherParser::RuleOC_PropertyExpression); size_t _la = 0; #if __cplusplus > 201703L @@ -17890,17 +17340,17 @@ CypherParser::OC_PropertyExpressionContext* CypherParser::oC_PropertyExpression( }); try { enterOuterAlt(_localctx, 1); - setState(2814); + setState(2721); oC_Atom(); - setState(2816); + setState(2723); _errHandler->sync(this); _la = _input->LA(1); if (_la == CypherParser::SP) { - setState(2815); + setState(2722); match(CypherParser::SP); } - setState(2818); + setState(2725); oC_PropertyLookup(); } @@ -17931,7 +17381,7 @@ size_t CypherParser::OC_PropertyKeyNameContext::getRuleIndex() const { CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { OC_PropertyKeyNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 328, CypherParser::RuleOC_PropertyKeyName); + enterRule(_localctx, 318, CypherParser::RuleOC_PropertyKeyName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17942,7 +17392,7 @@ CypherParser::OC_PropertyKeyNameContext* CypherParser::oC_PropertyKeyName() { }); try { enterOuterAlt(_localctx, 1); - setState(2820); + setState(2727); oC_SchemaName(); } @@ -17973,7 +17423,7 @@ size_t CypherParser::OC_IntegerLiteralContext::getRuleIndex() const { CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { OC_IntegerLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 330, CypherParser::RuleOC_IntegerLiteral); + enterRule(_localctx, 320, CypherParser::RuleOC_IntegerLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -17984,7 +17434,7 @@ CypherParser::OC_IntegerLiteralContext* CypherParser::oC_IntegerLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2822); + setState(2729); match(CypherParser::DecimalInteger); } @@ -18019,7 +17469,7 @@ size_t CypherParser::OC_DoubleLiteralContext::getRuleIndex() const { CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { OC_DoubleLiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 332, CypherParser::RuleOC_DoubleLiteral); + enterRule(_localctx, 322, CypherParser::RuleOC_DoubleLiteral); size_t _la = 0; #if __cplusplus > 201703L @@ -18031,7 +17481,7 @@ CypherParser::OC_DoubleLiteralContext* CypherParser::oC_DoubleLiteral() { }); try { enterOuterAlt(_localctx, 1); - setState(2824); + setState(2731); _la = _input->LA(1); if (!(_la == CypherParser::ExponentDecimalReal @@ -18071,7 +17521,7 @@ size_t CypherParser::OC_SchemaNameContext::getRuleIndex() const { CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { OC_SchemaNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 334, CypherParser::RuleOC_SchemaName); + enterRule(_localctx, 324, CypherParser::RuleOC_SchemaName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18082,7 +17532,7 @@ CypherParser::OC_SchemaNameContext* CypherParser::oC_SchemaName() { }); try { enterOuterAlt(_localctx, 1); - setState(2826); + setState(2733); oC_SymbolicName(); } @@ -18125,7 +17575,7 @@ size_t CypherParser::OC_SymbolicNameContext::getRuleIndex() const { CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { OC_SymbolicNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 336, CypherParser::RuleOC_SymbolicName); + enterRule(_localctx, 326, CypherParser::RuleOC_SymbolicName); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -18135,19 +17585,19 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { exitRule(); }); try { - setState(2833); + setState(2740); _errHandler->sync(this); switch (_input->LA(1)) { case CypherParser::UnescapedSymbolicName: { enterOuterAlt(_localctx, 1); - setState(2828); + setState(2735); match(CypherParser::UnescapedSymbolicName); break; } case CypherParser::EscapedSymbolicName: { enterOuterAlt(_localctx, 2); - setState(2829); + setState(2736); antlrcpp::downCast(_localctx)->escapedsymbolicnameToken = match(CypherParser::EscapedSymbolicName); if ((antlrcpp::downCast(_localctx)->escapedsymbolicnameToken != nullptr ? antlrcpp::downCast(_localctx)->escapedsymbolicnameToken->getText() : "") == "``") { notifyEmptyToken(antlrcpp::downCast(_localctx)->escapedsymbolicnameToken); } break; @@ -18155,7 +17605,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::HexLetter: { enterOuterAlt(_localctx, 3); - setState(2831); + setState(2738); match(CypherParser::HexLetter); break; } @@ -18212,7 +17662,7 @@ CypherParser::OC_SymbolicNameContext* CypherParser::oC_SymbolicName() { case CypherParser::DECIMAL: case CypherParser::L_SKIP: { enterOuterAlt(_localctx, 4); - setState(2832); + setState(2739); kU_NonReservedKeywords(); break; } @@ -18449,7 +17899,7 @@ size_t CypherParser::KU_NonReservedKeywordsContext::getRuleIndex() const { CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeywords() { KU_NonReservedKeywordsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 338, CypherParser::RuleKU_NonReservedKeywords); + enterRule(_localctx, 328, CypherParser::RuleKU_NonReservedKeywords); size_t _la = 0; #if __cplusplus > 201703L @@ -18461,7 +17911,7 @@ CypherParser::KU_NonReservedKeywordsContext* CypherParser::kU_NonReservedKeyword }); try { enterOuterAlt(_localctx, 1); - setState(2835); + setState(2742); _la = _input->LA(1); if (!(((((_la - 48) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 48)) & -4761777667909507179) != 0) || ((((_la - 112) & ~ 0x3fULL) == 0) && @@ -18497,7 +17947,7 @@ size_t CypherParser::OC_LeftArrowHeadContext::getRuleIndex() const { CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { OC_LeftArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 340, CypherParser::RuleOC_LeftArrowHead); + enterRule(_localctx, 330, CypherParser::RuleOC_LeftArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -18509,7 +17959,7 @@ CypherParser::OC_LeftArrowHeadContext* CypherParser::oC_LeftArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2837); + setState(2744); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 2013282304) != 0))) { @@ -18544,7 +17994,7 @@ size_t CypherParser::OC_RightArrowHeadContext::getRuleIndex() const { CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { OC_RightArrowHeadContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 342, CypherParser::RuleOC_RightArrowHead); + enterRule(_localctx, 332, CypherParser::RuleOC_RightArrowHead); size_t _la = 0; #if __cplusplus > 201703L @@ -18556,7 +18006,7 @@ CypherParser::OC_RightArrowHeadContext* CypherParser::oC_RightArrowHead() { }); try { enterOuterAlt(_localctx, 1); - setState(2839); + setState(2746); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 32212320256) != 0))) { @@ -18595,7 +18045,7 @@ size_t CypherParser::OC_DashContext::getRuleIndex() const { CypherParser::OC_DashContext* CypherParser::oC_Dash() { OC_DashContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 344, CypherParser::RuleOC_Dash); + enterRule(_localctx, 334, CypherParser::RuleOC_Dash); size_t _la = 0; #if __cplusplus > 201703L @@ -18607,7 +18057,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { }); try { enterOuterAlt(_localctx, 1); - setState(2841); + setState(2748); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70334384439296) != 0) || _la == CypherParser::MINUS)) { @@ -18631,7 +18081,7 @@ CypherParser::OC_DashContext* CypherParser::oC_Dash() { bool CypherParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { case 49: return kU_DataTypeSempred(antlrcpp::downCast(context), predicateIndex); - case 77: return kU_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); + case 72: return kU_JoinNodeSempred(antlrcpp::downCast(context), predicateIndex); default: break; diff --git a/third_party/antlr4_cypher/include/cypher_parser.h b/third_party/antlr4_cypher/include/cypher_parser.h index d162e0b22c7..5669e0dae7b 100644 --- a/third_party/antlr4_cypher/include/cypher_parser.h +++ b/third_party/antlr4_cypher/include/cypher_parser.h @@ -67,46 +67,44 @@ class CypherParser : public antlr4::Parser { RuleKU_ListIdentifier = 51, RuleOC_AnyCypherOption = 52, RuleOC_Explain = 53, RuleOC_Profile = 54, RuleKU_Transaction = 55, RuleKU_Extension = 56, RuleKU_LoadExtension = 57, RuleKU_InstallExtension = 58, RuleOC_Query = 59, - RuleKU_ProjectGraph = 60, RuleKU_GraphProjectionTableItems = 61, RuleOC_RegularQuery = 62, - RuleOC_Union = 63, RuleOC_SingleQuery = 64, RuleOC_SinglePartQuery = 65, - RuleOC_MultiPartQuery = 66, RuleKU_QueryPart = 67, RuleOC_UpdatingClause = 68, - RuleOC_ReadingClause = 69, RuleKU_LoadFrom = 70, RuleKU_InQueryCall = 71, - RuleKU_GraphProjectionTableItem = 72, RuleKU_GraphProjectionColumnItems = 73, - RuleKU_GraphProjectionColumnItem = 74, RuleOC_Match = 75, RuleKU_Hint = 76, - RuleKU_JoinNode = 77, RuleOC_Unwind = 78, RuleOC_Create = 79, RuleOC_Merge = 80, - RuleOC_MergeAction = 81, RuleOC_Set = 82, RuleOC_SetItem = 83, RuleOC_Delete = 84, - RuleOC_With = 85, RuleOC_Return = 86, RuleOC_ProjectionBody = 87, RuleOC_ProjectionItems = 88, - RuleOC_ProjectionItem = 89, RuleOC_Order = 90, RuleOC_Skip = 91, RuleOC_Limit = 92, - RuleOC_SortItem = 93, RuleOC_Where = 94, RuleOC_Pattern = 95, RuleOC_PatternPart = 96, - RuleOC_AnonymousPatternPart = 97, RuleOC_PatternElement = 98, RuleOC_NodePattern = 99, - RuleOC_PatternElementChain = 100, RuleOC_RelationshipPattern = 101, - RuleOC_RelationshipDetail = 102, RuleKU_Properties = 103, RuleOC_RelationshipTypes = 104, - RuleOC_NodeLabels = 105, RuleOC_NodeLabel = 106, RuleOC_RangeLiteral = 107, - RuleKU_RecursiveRelationshipComprehension = 108, RuleKU_IntermediateNodeProjectionItems = 109, - RuleKU_IntermediateRelProjectionItems = 110, RuleOC_LowerBound = 111, - RuleOC_UpperBound = 112, RuleOC_LabelName = 113, RuleOC_RelTypeName = 114, - RuleOC_Expression = 115, RuleOC_OrExpression = 116, RuleOC_XorExpression = 117, - RuleOC_AndExpression = 118, RuleOC_NotExpression = 119, RuleOC_ComparisonExpression = 120, - RuleKU_ComparisonOperator = 121, RuleKU_BitwiseOrOperatorExpression = 122, - RuleKU_BitwiseAndOperatorExpression = 123, RuleKU_BitShiftOperatorExpression = 124, - RuleKU_BitShiftOperator = 125, RuleOC_AddOrSubtractExpression = 126, - RuleKU_AddOrSubtractOperator = 127, RuleOC_MultiplyDivideModuloExpression = 128, - RuleKU_MultiplyDivideModuloOperator = 129, RuleOC_PowerOfExpression = 130, - RuleOC_UnaryAddSubtractOrFactorialExpression = 131, RuleOC_StringListNullOperatorExpression = 132, - RuleOC_ListOperatorExpression = 133, RuleOC_StringOperatorExpression = 134, - RuleOC_RegularExpression = 135, RuleOC_NullOperatorExpression = 136, - RuleOC_PropertyOrLabelsExpression = 137, RuleOC_Atom = 138, RuleOC_Quantifier = 139, - RuleOC_FilterExpression = 140, RuleOC_IdInColl = 141, RuleOC_Literal = 142, - RuleOC_BooleanLiteral = 143, RuleOC_ListLiteral = 144, RuleKU_ListEntry = 145, - RuleKU_StructLiteral = 146, RuleKU_StructField = 147, RuleOC_ParenthesizedExpression = 148, - RuleOC_FunctionInvocation = 149, RuleOC_FunctionName = 150, RuleKU_FunctionParameter = 151, - RuleKU_LambdaParameter = 152, RuleKU_LambdaVars = 153, RuleOC_PathPatterns = 154, - RuleOC_ExistSubquery = 155, RuleKU_CountSubquery = 156, RuleOC_PropertyLookup = 157, - RuleOC_CaseExpression = 158, RuleOC_CaseAlternative = 159, RuleOC_Variable = 160, - RuleOC_NumberLiteral = 161, RuleOC_Parameter = 162, RuleOC_PropertyExpression = 163, - RuleOC_PropertyKeyName = 164, RuleOC_IntegerLiteral = 165, RuleOC_DoubleLiteral = 166, - RuleOC_SchemaName = 167, RuleOC_SymbolicName = 168, RuleKU_NonReservedKeywords = 169, - RuleOC_LeftArrowHead = 170, RuleOC_RightArrowHead = 171, RuleOC_Dash = 172 + RuleOC_RegularQuery = 60, RuleOC_Union = 61, RuleOC_SingleQuery = 62, + RuleOC_SinglePartQuery = 63, RuleOC_MultiPartQuery = 64, RuleKU_QueryPart = 65, + RuleOC_UpdatingClause = 66, RuleOC_ReadingClause = 67, RuleKU_LoadFrom = 68, + RuleKU_InQueryCall = 69, RuleOC_Match = 70, RuleKU_Hint = 71, RuleKU_JoinNode = 72, + RuleOC_Unwind = 73, RuleOC_Create = 74, RuleOC_Merge = 75, RuleOC_MergeAction = 76, + RuleOC_Set = 77, RuleOC_SetItem = 78, RuleOC_Delete = 79, RuleOC_With = 80, + RuleOC_Return = 81, RuleOC_ProjectionBody = 82, RuleOC_ProjectionItems = 83, + RuleOC_ProjectionItem = 84, RuleOC_Order = 85, RuleOC_Skip = 86, RuleOC_Limit = 87, + RuleOC_SortItem = 88, RuleOC_Where = 89, RuleOC_Pattern = 90, RuleOC_PatternPart = 91, + RuleOC_AnonymousPatternPart = 92, RuleOC_PatternElement = 93, RuleOC_NodePattern = 94, + RuleOC_PatternElementChain = 95, RuleOC_RelationshipPattern = 96, RuleOC_RelationshipDetail = 97, + RuleKU_Properties = 98, RuleOC_RelationshipTypes = 99, RuleOC_NodeLabels = 100, + RuleOC_NodeLabel = 101, RuleOC_RangeLiteral = 102, RuleKU_RecursiveRelationshipComprehension = 103, + RuleKU_IntermediateNodeProjectionItems = 104, RuleKU_IntermediateRelProjectionItems = 105, + RuleOC_LowerBound = 106, RuleOC_UpperBound = 107, RuleOC_LabelName = 108, + RuleOC_RelTypeName = 109, RuleOC_Expression = 110, RuleOC_OrExpression = 111, + RuleOC_XorExpression = 112, RuleOC_AndExpression = 113, RuleOC_NotExpression = 114, + RuleOC_ComparisonExpression = 115, RuleKU_ComparisonOperator = 116, + RuleKU_BitwiseOrOperatorExpression = 117, RuleKU_BitwiseAndOperatorExpression = 118, + RuleKU_BitShiftOperatorExpression = 119, RuleKU_BitShiftOperator = 120, + RuleOC_AddOrSubtractExpression = 121, RuleKU_AddOrSubtractOperator = 122, + RuleOC_MultiplyDivideModuloExpression = 123, RuleKU_MultiplyDivideModuloOperator = 124, + RuleOC_PowerOfExpression = 125, RuleOC_UnaryAddSubtractOrFactorialExpression = 126, + RuleOC_StringListNullOperatorExpression = 127, RuleOC_ListOperatorExpression = 128, + RuleOC_StringOperatorExpression = 129, RuleOC_RegularExpression = 130, + RuleOC_NullOperatorExpression = 131, RuleOC_PropertyOrLabelsExpression = 132, + RuleOC_Atom = 133, RuleOC_Quantifier = 134, RuleOC_FilterExpression = 135, + RuleOC_IdInColl = 136, RuleOC_Literal = 137, RuleOC_BooleanLiteral = 138, + RuleOC_ListLiteral = 139, RuleKU_ListEntry = 140, RuleKU_StructLiteral = 141, + RuleKU_StructField = 142, RuleOC_ParenthesizedExpression = 143, RuleOC_FunctionInvocation = 144, + RuleOC_FunctionName = 145, RuleKU_FunctionParameter = 146, RuleKU_LambdaParameter = 147, + RuleKU_LambdaVars = 148, RuleOC_PathPatterns = 149, RuleOC_ExistSubquery = 150, + RuleKU_CountSubquery = 151, RuleOC_PropertyLookup = 152, RuleOC_CaseExpression = 153, + RuleOC_CaseAlternative = 154, RuleOC_Variable = 155, RuleOC_NumberLiteral = 156, + RuleOC_Parameter = 157, RuleOC_PropertyExpression = 158, RuleOC_PropertyKeyName = 159, + RuleOC_IntegerLiteral = 160, RuleOC_DoubleLiteral = 161, RuleOC_SchemaName = 162, + RuleOC_SymbolicName = 163, RuleKU_NonReservedKeywords = 164, RuleOC_LeftArrowHead = 165, + RuleOC_RightArrowHead = 166, RuleOC_Dash = 167 }; explicit CypherParser(antlr4::TokenStream *input); @@ -186,8 +184,6 @@ class CypherParser : public antlr4::Parser { class KU_LoadExtensionContext; class KU_InstallExtensionContext; class OC_QueryContext; - class KU_ProjectGraphContext; - class KU_GraphProjectionTableItemsContext; class OC_RegularQueryContext; class OC_UnionContext; class OC_SingleQueryContext; @@ -198,9 +194,6 @@ class CypherParser : public antlr4::Parser { class OC_ReadingClauseContext; class KU_LoadFromContext; class KU_InQueryCallContext; - class KU_GraphProjectionTableItemContext; - class KU_GraphProjectionColumnItemsContext; - class KU_GraphProjectionColumnItemContext; class OC_MatchContext; class KU_HintContext; class KU_JoinNodeContext; @@ -1229,44 +1222,12 @@ class CypherParser : public antlr4::Parser { OC_QueryContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; OC_RegularQueryContext *oC_RegularQuery(); - KU_ProjectGraphContext *kU_ProjectGraph(); - antlr4::tree::TerminalNode *SP(); }; OC_QueryContext* oC_Query(); - class KU_ProjectGraphContext : public antlr4::ParserRuleContext { - public: - KU_ProjectGraphContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *PROJECT(); - std::vector SP(); - antlr4::tree::TerminalNode* SP(size_t i); - antlr4::tree::TerminalNode *GRAPH(); - OC_SchemaNameContext *oC_SchemaName(); - KU_GraphProjectionTableItemsContext *kU_GraphProjectionTableItems(); - - - }; - - KU_ProjectGraphContext* kU_ProjectGraph(); - - class KU_GraphProjectionTableItemsContext : public antlr4::ParserRuleContext { - public: - KU_GraphProjectionTableItemsContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector kU_GraphProjectionTableItem(); - KU_GraphProjectionTableItemContext* kU_GraphProjectionTableItem(size_t i); - std::vector SP(); - antlr4::tree::TerminalNode* SP(size_t i); - - - }; - - KU_GraphProjectionTableItemsContext* kU_GraphProjectionTableItems(); - class OC_RegularQueryContext : public antlr4::ParserRuleContext { public: OC_RegularQueryContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -1416,7 +1377,6 @@ class CypherParser : public antlr4::Parser { std::vector SP(); antlr4::tree::TerminalNode* SP(size_t i); OC_FunctionInvocationContext *oC_FunctionInvocation(); - KU_ProjectGraphContext *kU_ProjectGraph(); OC_WhereContext *oC_Where(); @@ -1424,49 +1384,6 @@ class CypherParser : public antlr4::Parser { KU_InQueryCallContext* kU_InQueryCall(); - class KU_GraphProjectionTableItemContext : public antlr4::ParserRuleContext { - public: - KU_GraphProjectionTableItemContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - OC_SchemaNameContext *oC_SchemaName(); - KU_GraphProjectionColumnItemsContext *kU_GraphProjectionColumnItems(); - std::vector SP(); - antlr4::tree::TerminalNode* SP(size_t i); - - - }; - - KU_GraphProjectionTableItemContext* kU_GraphProjectionTableItem(); - - class KU_GraphProjectionColumnItemsContext : public antlr4::ParserRuleContext { - public: - KU_GraphProjectionColumnItemsContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector kU_GraphProjectionColumnItem(); - KU_GraphProjectionColumnItemContext* kU_GraphProjectionColumnItem(size_t i); - std::vector SP(); - antlr4::tree::TerminalNode* SP(size_t i); - - - }; - - KU_GraphProjectionColumnItemsContext* kU_GraphProjectionColumnItems(); - - class KU_GraphProjectionColumnItemContext : public antlr4::ParserRuleContext { - public: - KU_GraphProjectionColumnItemContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - OC_PropertyKeyNameContext *oC_PropertyKeyName(); - std::vector SP(); - antlr4::tree::TerminalNode* SP(size_t i); - KU_DefaultContext *kU_Default(); - OC_WhereContext *oC_Where(); - - - }; - - KU_GraphProjectionColumnItemContext* kU_GraphProjectionColumnItem(); - class OC_MatchContext : public antlr4::ParserRuleContext { public: OC_MatchContext(antlr4::ParserRuleContext *parent, size_t invokingState);